版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7章 单片机的定时/计数器 本章介绍的主要内容本章介绍的主要内容 寄存器寄存器 片内有二个片内有二个十六位十六位定时定时/ /计数器:计数器:T0T0和和T1T1。 都有都有定时或事件计数定时或事件计数的功能的功能T0T0由由2 2个个8 8位位寄存器寄存器TH0TH0和和TL0TL0构成,构成, T1T1由由2 2个个8 8位位寄存寄存TH1TH1和和TL1TL1构成。构成。都可由软件设置为定时工作方式或都可由软件设置为定时工作方式或 计数工作方式。计数工作方式。T0和和T1受受TMODTMOD和和TCONTCON控制。控制。 1. 定时工作方式定时工作方式 数多少个机器周期数多少个机器周
2、期 设置为定时工作方式时,定时器计数的脉设置为定时工作方式时,定时器计数的脉冲是由冲是由51单片机片内振荡器经单片机片内振荡器经12分频分频后产生后产生的。的。 每经过每经过一个机器周期一个机器周期定时器定时器(T0或或T1)的数的数值值加加1直至计数满产生溢出。直至计数满产生溢出。如:当如:当8051采用采用12MHz晶体时,每个机器周晶体时,每个机器周期为期为1s,计,计5 个机器周期即为个机器周期即为5 s,即定时,即定时5 s 。定时的时间一般为定时的时间一般为n个机器周期个机器周期 2. 计数工作方式计数工作方式 数引脚的下降沿数引脚的下降沿 通过引脚通过引脚T0(P3T0(P34
3、4) )和和T1(P3T1(P35)5)对外部脉冲信号计对外部脉冲信号计数。数。 当输入当输入T0T0或或T1T1的脉冲信号产生由的脉冲信号产生由1 1至至0 0的的下降沿下降沿时,时,则计数器则计数器加加1 1。直到。直到计数溢出计数溢出,则设置标志位,则设置标志位TFO, TFO, TF1,TF1,产生产生中断中断。 由于检测一个由于检测一个1 1至至0 0的跳变需要二个机器周期,故的跳变需要二个机器周期,故最高计数频率为振荡频率的二十四分之一。最高计数频率为振荡频率的二十四分之一。 定时器或者计数器启动后,就开始自己工作,不定时器或者计数器启动后,就开始自己工作,不占用占用CPU, CP
4、U, 直到溢出中断,才报告给直到溢出中断,才报告给CPUCPU寄存器寄存器定时器共有两个控制寄存器:定时器共有两个控制寄存器: 定时器控制定时器控制TCON(88H) 定时器工作模式寄存器定时器工作模式寄存器TMOD(89H)1. 工作模式寄存器工作模式寄存器TMOD(89H) TMOD D7D6D5D4 D3D2D1 D0 (89H)GATE C/T M1 M0GATE C/TM1 M0定时器定时器T0 定时器定时器T1 GATE:门控信号:门控信号 GATE=0: TRx=1时启动定时器,自启动;时启动定时器,自启动; GATE=1: TRx=1,INTx=1启动,外启动。启动,外启动。
5、C/T:定时器:定时器/计数器选择位计数器选择位 C/T=1,为计数器方式;,为计数器方式; C/T=0,为定时器方式。,为定时器方式。 M1 M0 工作模式选择位工作模式选择位 M1M0=00 工作方式工作方式0(13位方式)。位方式)。 M1M0=01 工作方式工作方式1(16位方式)。位方式)。 M1M0=10 工作方式工作方式2(8位自动再装入方式)。位自动再装入方式)。 M1M0=11 工作方式工作方式3(T0为为2个个8位方式)。位方式)。例如:设置 T1工作于定时,自启动,方式2,设置T0工作于计数,外启动,方式0,TMOD设置成多少? TF1 TR1TF0 TR0 IE1IT1
6、 IE0IT0T1 请求请求有有/无无 T1工作工作启启/停停 T0 请求请求有有/无无 T0 工作工作启启/停停 INT1 请求请求有有/无无 INT1方式方式下沿下沿/ 低低电平电平 INT0请求请求有有/无无 INT0方式方式下沿下沿/低低电平电平 2. 控制寄存器控制寄存器TCON(88H) TR0:T0运行控制位。运行控制位。 TR0=1,启动,启动T0工作。工作。 TR0=0,停止,停止T0工作。工作。TR1: T1运行控制位。运行控制位。 TR1=1,启动,启动T1工作。工作。 TR1=0,停止,停止T1工作。工作。定时计数器的内部逻辑电路结构定时计数器的内部逻辑电路结构 &am
7、p;1C/TC/T7.3 定时器的四种工作方式定时器的四种工作方式 方式方式 13位位定时、计数方式。定时、计数方式。计数:最大计数值为计数:最大计数值为 213 8192个脉冲个脉冲定时:定时时间为:定时:定时时间为: t(213一一T0初值初值) 时钟周期时钟周期12TH占高占高8位。其中位。其中TL占低占低5位位, TL的高的高3位未用。位未用。0000 0000 xxx0 0000当当TL的低的低5位溢出时向位溢出时向TH进位进位,而而TH溢出溢出时硬件时硬件置位置位TF0,并申请,并申请中断中断。 通过查询通过查询TF0是否置位,可知定时或计数的中断是否产是否置位,可知定时或计数的中
8、断是否产生。生。 2 .方式方式1 ( M1M0=01 )16位定时计数方式。位定时计数方式。寄存器寄存器TH0和和TL0是以全是以全16位参与操作,位参与操作,计数计数: 最大计数最大计数 21665536(个外部脉冲个外部脉冲) 定时定时: 定时时间为:定时时间为: t(216一一T0初值初值) 时钟周期时钟周期12 16寄存器寄存器(THx和和TLx) 中中THx提供高提供高8位、位、TLx提供低提供低8位计数初值位计数初值 3. 3. 方式方式2 ( 2 ( M1M0=10M1M0=10) )8 8位的可自动装入方式位的可自动装入方式1616位被拆成两个位被拆成两个8 8位,其中位,其
9、中TL0TL0用作用作8 8位计数器位计数器, TH0TH0用用以保持以保持计数初值计数初值。当当TL0TL0计数溢出,置计数溢出,置TF0TF0,TH0TH0中的初值自动装入中的初值自动装入TL0TL0,继续计数,循环重复计数。继续计数,循环重复计数。计数:最大计数值为:计数:最大计数值为:2 28 8256(256(个外部脉冲个外部脉冲) )。 定时:其定时时间为;定时:其定时时间为; t t(2(28 8TH0TH0初值初值) )振荡周期振荡周期1212这种工作方式可这种工作方式可省去用户重装常数省去用户重装常数的程序,并可产生精的程序,并可产生精确的定时时间,特别适用作确的定时时间,特
10、别适用作串行口波待率发生器串行口波待率发生器。 4. 4.方式方式3 3 ( M1M0=11 M1M0=11 )TL0TL0和和TH0TH0被分成为两个互相被分成为两个互相独立独立的的8 8位计数器位计数器。 TL0TL0可工作为可工作为定时定时方式或方式或计数计数方式。方式。占用原占用原T0T0的各控制位、引脚和中断源。的各控制位、引脚和中断源。即即C CT T、GATEGATE、TR0TR0、TF0TF0和和T0 (P3.4)T0 (P3.4)引脚、引脚、INT0 (P3.2)INT0 (P3.2)引脚。引脚。 TH0TH0只可用作只可用作定时定时功能,占用功能,占用T1T1的的TR1TR
11、1和和T1T1的中断标志位的中断标志位TF1TF1,其启动和关闭仅受,其启动和关闭仅受TRlTRl的控制。的控制。T1T1无方式无方式 3 3, , 如果如果TOTO用方式用方式3 3,T1T1可工作于方式可工作于方式0 0、1 1、2 2,但不能使用中,但不能使用中断方式。断方式。 7.4 定时计数器的应用程序设计定时计数器的应用程序设计7.4.1 7.4.1 计数初值计数初值C C的计算和装入的计算和装入定时计数时定时计数时 +1 - +1 - 计数初值应为负值计数初值应为负值- - 补码补码 计数初值(计数初值(C C)的求法如下:)的求法如下:(1)(1)求求MC: MC: 计时器的最
12、小单位计时器的最小单位一个机器周期是多长时间?一个机器周期是多长时间?MC=12/foscMC=12/fosc 当采用当采用12MHZ12MHZ晶振时,晶振时,MC=1usMC=1us; 当采用当采用6MHZ6MHZ晶振时,晶振时,MC=2usMC=2us。(2 2)定时或计数的时间是)定时或计数的时间是MCMC的多少倍的多少倍? N N(3 3)求)求 N (N (补码补码) )用多少位补码表示呢?(看使用哪种方式)用多少位补码表示呢?(看使用哪种方式)方式0( 13位方式): C=(-64H)补 = 1F9CH 1F9CH0001 1111 1001 1100 B 13位中的低五位低五位x
13、xx1 1100Bxxx1 1100B - TL0 - TL013位中的高八位1111 1100B 1111 1100B - TH0- TH0TL0 = 0 x9c; TL1 = 0 x1f;TL0 = 0 x9c; TL1 = 0 x1f;方式方式1(161(16位方式位方式) ): C=C=(-64H-64H)补补= FF9CH= FF9CH 用指令装入计数初值用指令装入计数初值:低低8 8位位-TL0, -TL0, 高高8 8位位-TL1-TL1TL0 = 0 x9c; TL1 = 0 xff;TL0 = 0 x9c; TL1 = 0 xff;例例 要计要计100个脉冲的计数初值个脉冲的
14、计数初值方式方式2(8位自动再装入方式)位自动再装入方式) C=(64H)补)补 = 9CH 初值既要装入初值既要装入TH0,也要装入,也要装入TL0:TH0 = 0 x9c;TL0 = 0 x9c;7.4.2 定时计数器的初始化编程定时计数器的初始化编程 定时计数器的初始化编程步骤定时计数器的初始化编程步骤:1)计算计数器初值)计算计数器初值C;2)工作方式控制字送)工作方式控制字送TMOD寄存器;寄存器;3)送计数初值的高八位和低八位到)送计数初值的高八位和低八位到THX和和TLX;4)启动定时(或计数),即将)启动定时(或计数),即将TRX置位。置位。 如果工作于中断方式,需要置位如果工
15、作于中断方式,需要置位EA(中断总开关)(中断总开关)及及ETX(允许定时(允许定时/计数器中断)。并编中断服务程序。计数器中断)。并编中断服务程序。例例7-1 如图如图7-2所示,所示,P1中接有八个发光二极中接有八个发光二极管,编程使八个管轮流管,编程使八个管轮流点亮,每个管亮点亮,每个管亮100ms,设晶振为设晶振为6MHz。7.4.3 7.4.3 应用编程举例应用编程举例分析分析 利用利用T1T1完成完成100ms100ms的定时,当的定时,当P1P1口线输出口线输出“1 1”时,发光二极管亮,每隔时,发光二极管亮,每隔100ms100ms”1 1”左移一次,采用左移一次,采用定时方式
16、定时方式1 1,先计算计数初值:,先计算计数初值: C= t / MCC= t / MC补补 MC =2 MC =2s s 100ms/2100ms/2s =50000=C350H s =50000=C350H (C350HC350H)补补 =3CB0H=3CB0H 查询方式查询方式:#include #include void void main(voidmain(void) ) P1=0 x01; / P1=0 x01; / * *第一只第一只LEDLED亮亮* */ / TMOD=0 x10 TMOD=0 x10 ; / / * *定时器定时器1 1方式方式1 1* */ / TR1=1
17、 TR1=1; / /* *启动启动T/C0 T/C0 * */ /* * * * * * * * * * * * * *用用C C语言编程语言编程* * * * * * * * * * * * * *for(;)for(;) TH1=0 x3c TH1=0 x3c;TL1=0 xb0TL1=0 xb0; / /* *装载计数初值装载计数初值* */ / do dowhilewhile(!(!TF1TF1););/ /* *查询等待查询等待TF1TF1置位置位* */ / P1=1 P1=1; / /* *定时时间到,下一只定时时间到,下一只LEDLED亮亮* */ / TF1=0TF1=0;
18、 / /* *软件清软件清TF1TF1* */ / void void main(voidmain(void) TMOD=0 x10; / TMOD=0 x10; /* *T1T1工作在定时方式工作在定时方式1 1* */ / P1=0 x01; / P1=0 x01; /* *第一只第一只LEDLED亮亮* */ / TH1=0 x3c;TL1=0 xb0;/ TH1=0 x3c;TL1=0 xb0;/* *预置计数初值预置计数初值* */ / EA=1;ET1=1; /EA=1;ET1=1; /* *CPUCPU开中断,允许开中断,允许T1T1中中* */ / TR1=1; / TR1=1
19、; /* *启动启动T1T1开始定时开始定时* */ / do while(1); do while(1); / /* *等待中断等待中断* */ /中断方式:中断方式:#include #include Timer1( )interrupt 3 /Timer1( )interrupt 3 /* *T1T1中断服务程序中断服务程序* */ / P1=1; / P1=1; /* *下一只下一只LEDLED亮亮* */ / TH1=0 x3c;TL1=0 xb0;/TH1=0 x3c;TL1=0 xb0;/* *计数初值重载计数初值重载* */ / 两种方法的比较两种方法的比较 都需要设置P1,
20、TMOD, TR, 装载初值装载初值 查询方式:查询方式:不停的查看TF等待,直到TF置位,说明定时到了,亮下一个灯。中断方式:中断方式:设置EA, ET,开中断,不用查看TF,TF置位时,自动跳入中断函数,在中断函数里亮下一灯,并再装初值。 查询方式要清TF, 中断方式不用清(硬件完成) 练习: 时钟频率为12MHZ, 利用定时器T0使P1.2每隔350us,输出一个50us的脉宽正脉冲 MC=2us;方式2,TH0=TL0=0 xE7;char i;Timer0 ( ) interrupt 1 i+;if(i= =7)P12=1; else if (i= =8)P12=0; i=0; TH
21、0=0XE7; TL0=0 xE7;main()TMOD=0X01; TH0=0XE7; TL0=0 xE7;TR0=1;i=0; P12=1;while(1)方法方法1: 1: TO TO 定时定时: 100ms: 100ms,方式方式1(16位)位)X= 补补=3CB0H,对对P1.0每每100ms取反一次取反一次T1计数:计数:5次,方式次,方式2(8位)位)X = 5补补=FBH当当P1.0下降沿,下降沿,T1加加11622101003例例7-2 7-2 在在P1.7P1.7端接一个发光二极管端接一个发光二极管LEDLED,要求利用定时控,要求利用定时控制使制使LEDLED亮一秒灭一秒
22、周而复始,设亮一秒灭一秒周而复始,设foscfosc=6MHZ=6MHZ。解解: 16: 16位定时最大为位定时最大为 * *2us=131.072ms2us=131.072ms,不能满足。,不能满足。T0T0定时定时100ms100ms初值初值=100=1001000/2=500001000/2=50000,即初值为,即初值为 -50000-50000。T1T1计数计数5 5个脉冲工作于方式个脉冲工作于方式2 2,计数初值为,计数初值为-5-5,T0T0和和T1T1均采用中断方式。程序如下:均采用中断方式。程序如下:#include#include sbitsbit P1_0=P1 P1_0
23、=P10 0; sbitsbit P1_7=P1 P1_7=P17 7;timer0timer0()()interrupt 1 interrupt 1 * *T0T0中断服务程序中断服务程序* */ / P1_0=P1_0P1_0=P1_0; / /* *100ms100ms到到P1.0P1.0反向反向* */ / TH0=-50000/256 TH0=-50000/256; / /* *重载计数初值重载计数初值* */ / TL0=-50000%256 TL0=-50000%256;timer1()interrupt 3 /timer1()interrupt 3 /* *T1T1中断服务中断
24、服务* */ / P1_P1_!P1_7; P1_7; / /* *1s1s到,灯变状态到,灯变状态* */ /main()main() P1_7=0; / P1_7=0; /* *置灯初始灭置灯初始灭* */ / P1_0= P1_0=; ; / /* *输入写输入写1 1* */ / TMOD=0 x61; /TMOD=0 x61; /* *T0T0方式定时,方式定时,T1T1方式计数方式计数* */ / TH0=-50000/256; TL0=-50000%256; TH1=-5; TL1=-5; * *预置计数初值预置计数初值* */ / IP=0 x08; /IP=0 x08; /*
25、 *置优先级置优先级, ,让让T1T1高于高于T0T0* */ / EA=1;ET0=1; ET1=1; / EA=1;ET0=1; ET1=1; /* *开中断开中断* */ / TR0=1;TR1=1; / TR0=1;TR1=1; /* *启动定时计数器启动定时计数器* */ / for(;) for(;) / /* *等待中断等待中断* */ / 7 6 小小 结结 定时计数器应用非常广泛,如定时采定时计数器应用非常广泛,如定时采样、时间测量、产生音响、作脉冲源、制样、时间测量、产生音响、作脉冲源、制作日历时钟、测量波形的频率和占空比、作日历时钟、测量波形的频率和占空比、检测电机转速等。因此应很好掌握。检测电机转速等。因此应很好掌握。 51系列单片机既有两个系列单片机既有两个16位的定时计位的定时计数器,有四种不同的工作方式,归纳于下数器,有四种不同的工作方式,归纳于下表:表:28=256=100H28=256=100H216=65536=10000H213=8192=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铆工岗位责任制培训
- 2026年国际软件开发外包协议
- 2026年广东岭南职业技术学院单招职业倾向性测试题库含答案详解(预热题)
- 电气设备安全运行管理规定培训
- 2026年广东生态工程职业学院单招职业适应性测试题库带答案详解(达标题)
- 2025《游园》景物描写烘托课件
- 小型防爆电气管理制度培训
- 2026年山西省晋城市单招职业倾向性测试题库带答案详解(能力提升)
- 2026年广州城市职业学院单招职业技能测试题库附答案详解ab卷
- 2026年山西省太原市单招职业倾向性考试题库及答案详解(考点梳理)
- 2026年扬州工业职业技术学院单招职业技能考试题库带答案详解
- (2025年)院感岗前培训试题(附答案)
- 2026年室内装修水电合同(1篇)
- GB/T 24015-2026环境管理环境尽职调查评估指南
- 康复医学XX康复康复医学实习生实习报告
- 2026广东江门市新会银湖产业投资集团有限公司招聘15人考试参考试题及答案解析
- 2026年佳木斯职业学院单招综合素质考试题库含答案详解(完整版)
- 2026年九江职业大学单招职业技能测试题库附参考答案详解(达标题)
- 中国地质调查局局属单位2026年度公开招聘工作人员(第一批)【714人】考试参考题库及答案解析
- 医疗设备维修与售后服务规范
- 2025-2026学年成都市武侯区九年级上一诊英语期末考试题(含答案和音频)
评论
0/150
提交评论