单片机C语言学习笔记

上传人:re****.1 文档编号:487536133 上传时间:2023-11-24 格式:DOCX 页数:34 大小:111.63KB
返回 下载 相关 举报
单片机C语言学习笔记_第1页
第1页 / 共34页
单片机C语言学习笔记_第2页
第2页 / 共34页
单片机C语言学习笔记_第3页
第3页 / 共34页
单片机C语言学习笔记_第4页
第4页 / 共34页
单片机C语言学习笔记_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《单片机C语言学习笔记》由会员分享,可在线阅读,更多相关《单片机C语言学习笔记(34页珍藏版)》请在金锄头文库上搜索。

1、一、定时器/计数器1. 定时器/计数器结构芯片型号8051计数器/定时器2个寄存器组成备注T0TH0+TL021321628T1TH1+TL12. 寄存器TCON:定时器/计数启动和停止2.1 TCON的高4位控制定时器/计数器的启动和中断申请,低4位与外部中断有关。位序8F8E8D8C8B8A8988位符号TF1TR1TF0TR02.1.1 TF1/TF0:定时器/计数器T1和T0的益处标志位,定时器/计数器有溢出时, 会将TF1或TF0位置“1”,表示定时器/计数器有中断请求。2.1.2 TR1或TR0:定时器/计数器T1和T0的启动/停止位TR1或TR0设置为“1”定 时器/计数器T1和

2、T0的启动,若设置为“0”,相应的定时器/计数器就停止工作。3. 寄存器TMOD:设置定时器/计数工作方式(用于计数或定时)。3.1 TMOD:定时器/计数器工作方式工作方式T1T0位序B8B7B6B5B4B3B2B1位符号GATEC/TM1M0GATEC/TM1M03.2 TMOD寄存器中高4位控制T1,低4位控制T0。他们对定时器/计数器工作T0、T1 的控制功能是一样。(下面以低4位控制定时器/计数器T0为例,说明各位的具体控制 功能)3.2.1 GATE:门控位,控制定时器/计数器的启动模式。GATE=0时,只要用软件使TCON中的TR0置“1”,就可以启动定时器/计数器工作。 GAT

3、E=1时,将TR0置“1”夕卜,还需要外部中断引脚INT0也为高电平,才能启动定时器 /计数器工作。3.2.2 C/T:定时器/计数器模式选择位C/T=0时,定时器/计数器被设置为定时器工作方式,C/T=1时,定时器/计数器被 设置为计数器工作方式。3.2.3 M0、M1:定时器/计数器工作方式设置位。M1M0工作方式功能说明00013位定时器,TH0的8位和TL0的低5位,最大计数值213=819201116位定时器,TH0的8位和TL0的低8位,最大计数值216=65535102带自动重装功能的8位计数器,最大计数28=256113T0分成两个独立的8位计数器,T1在方式3时停止工作备注:

4、T0、T1 工作于定时或者计数时都不占CPUX作时间。4. 定时器/计数器的初始值计算4.1 T1和T0都是增量计数器,因此不能直接将要计数的值作为初值放入寄存器中,而 是将计数的最大值减去实际要计数的值的差存入寄存器中,定时器/计数器初值计算公 式:定时器/计数器初值=2计数值(n为工作方式决定的计数器位数,213、216、28) 例:当T0工作于方式0时(T0为13位定时器),最大计数值为213=8192,若要计数1000 次,初值为8192-1000=7192。如果单片机工作晶振为11.0592MHz,则计数1次需要时 间(12分频后的1个脉冲周期),T=12:11.0592MHz=1.

5、085us。所以计数1000次实际上 就相当于计时1.085X1000=1085us。(定时器/计数器初值的计算是一样的5. 定时器/计数器应用举例5.1用定时器T0查询方式控制P2 口 8位LED灯闪烁使用定时器T0的查询方式TF0来控制P2 口 8位LED闪烁,T0工作于方式1,LED灯 闪烁周期100ms,即亮50 ms,熄灭50 ms 0。5.1.1定时器T0工作方式的设置用指令对T0的工作方式进行设置:TMOD=0X01; 即TMOD=0000 0001B,低4位 GATE=0, C/T=0, M1M0=01上述设置中,低4位C/T=0,使丁0工作于计时方式。GATE=0,使TR0=

6、1时即可启动T0 开始工作。M1M0=01,使丁0工作于方式1。5.1.2 定时器初值的设定单片机晶振为11.0592MHz,所以经12分频后送到T0的脉冲频率是f=11.0592/12MHz,周期 T=1/f=12/11.0592=1.085 us。即每个脉冲计时 1.085 us,要计时 50 ms (即50000 us),需要计的脉冲数为50000/1.085=46038(次)。则定时器的初始应设置为65536-46083=19453。这个数需要T0的高8位寄存器(TH0)和低8位寄存器(TL0)来分别存储,这两个寄 存器初始值的设置方法如下:TH0=(65536-46083)/256;

7、 /定时器T0的高8位赋初值TL0= (65536-46083)%256; /定时器T0的低8位赋初值5.1.3定时器T0开始工作后,可通过编程让单片机不断查询益出标志位TF0是否为1, 若为1,则表示计时时间到,否则等待。5.1.4程序设计 实例42:用定时器T0查询方式P2 口 8位控制LED闪烁#include /包含51单片机寄存器定义的头文件/ “ /个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个函数功能:主函数“/ 个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个

8、个个个个个个个个个个个个个个个个个/void main(void)开总中断/定时器T0中断允许/TMOD=0000 0001B,使用定时器T0的模式1/定时器T0的高8位赋初值/定时器T0的低8位赋初值启动定时器T0/定时器T0溢出标志位用软件清零/先定义P2 口为高电平,LED灯不亮无限循环等待查询/ EA=1;/ET0=1;TMOD=0x01;TH0=(65536-46083)/256;TL0=(65536-46083)%256;TR0=1;TF0=0;P2=0xff;while(1)while(TF0=0)/查询标志位是否溢出/空指令/若计时时间到TF0=1,需用软件将其清0/将P2按位

9、取反,实现LED灯闪烁JTF0=0;P2=P2;TH0=(65536-46083)/256; /定时器T0的高8位重新赋初值TL0=(65536-46083)%256; /定时器T0的低8位重新赋初值5.2用定时器T1查询方式控制单片机发出1KHz音频5.2.1定时器T1X作方式的设置用指令对T1的工作方式进行设置:TMOD=0X10; 即TMOD=0001 0000B,高4位GATE=0, C/T=0, M1M0=01上述设置中,高4位C/T=0,使T1工作于计时方式。GATE=0,使TR1=1时即可启 动T1开始工作。M1M0=01,使口工作于方式1。5.2.2定时器T1初值的设定要发出1

10、 KHz音频,让单片机送给蜂鸣器(接P3.7引脚)的电平信号,每隔音频 的半个周期取反一次即可。音频的周期为1/1000=0.001s,即1000us,则要计数的脉冲数 为1000/1.0852=921 (次),定时器T1的初值设置如下:TH1=(65536-921)/256; /定时器T0的高8位赋初值TL1= (65536-921)%256; /定时器T0的低8位赋初值5.2.3程序设计实例43:用定时器T1查询方式控制单片机发出1KHz音频#include /包含51单片机寄存器定义的头文件sbit sound=P3*7;将 sound 位定义为 P3.7 引脚/ “ /个个个个个个个个

11、个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个函数功能:主函数“/ 个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个/void main(void)/ EA=1;/ET0=1;TMOD=0x10;TH1=(65536-921)/256;TL1=(65536-921)%256;TR1=1;TF1=0;while(1)while(TF1=0);TF1=0;sound=sound;TH1=(65536-921)/256;TL1=(65536-921)%256;开总

12、中断/定时器T0中断允许/ TMOD=0001 0000B,使用定时器T1的模式1/定时器T1的高8位赋初值/定时器T1的低8位赋初值启动定时器T1/定时器T1溢出标志位用软件清零无限循环等待查询/查询标志位是否溢出/空指令/若计时时间到TF0=1,需用软件将其清0将P3.7引脚输出电平取反/定时器T0的高8位重新赋初值/定时器T0的低8位重新赋初值二、中断1.中断优先响应级别:中断号n优先级中断源中断入口地址01(最高)外部中断0( INTO P3. 2)0003H12定时器0000BH23外部中断1 (INTI P3. 3)0013H34定时器10018H45 (最低)串行【10023H2

13、. Void Time0(void) interrupt 1 using0注解:interrupt 1为外部INT0中断using0为使用0组工作寄存器(不声明,默认为0组)3. 中断号要与定时器(中断源)相对应,才能正确响应中断。4. 中断启用:只有总开关EA和分支开关均闭合,相应中断才被使用。5. 外部INT1/INT0、定时器/计数器、串口等中断开关说明:1) EA:中断允许总控制位,EA=0时,禁止所有中断,EA= 1时,开启总中断。2) ES:串口允许中断控制位,ES=0时,禁止串口中断,ES=1时,允许串口 中断。3) ET1:定时器/计数器T1的溢出中断允许位,ET1=0时,禁止

14、T1中断, ET1=1时,允许T1中断。4) EX1 :外部中断1中断允许位,EX1=0时,禁止INT1中断,EX1=1时,允 许INT1中断。5) ET0:定时器/计数器T0的溢出中断允许位,ET0=0时,禁止T0中断, ET0=1时,允许T0中断。6) EX0:外部中断0中断允许位,EX0=0时,禁止INT0中断,EX0=1时,允 许INT0中断。6. TR0和TR1:定时器/计数器T0和T1的启动/停止位,TR0/TR1=1,定时器/ 计数器开始工作,TR0/TR1=0,定时器/计数器停止工作。7. TF0和TF1:定时器/计数器T0和T1的中断请求标志。当定时器/计数器T0 和T1 工作产生溢出时,会将TF0或TF1位置1。以定时器T0为例,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号