AT89C51的定时器计数器.ppt
《AT89C51的定时器计数器.ppt》由会员分享,可在线阅读,更多相关《AT89C51的定时器计数器.ppt(46页珍藏版)》请在三一办公上搜索。
1、第6章 AT89C51的定时器/计数器 6.1 定时器/计数器的结构两个可编程的定时器/计数器T1、T0。结构如图6-1所示 2种工作模式:(1)计数器工作模式(2)定时器工作模式4种工作方式(方式0-方式3)。TMOD:选择定时器/计数器T0、T1的工作模式和工作 方式。TCON:控制T0、T1的启动和停止计数,同时包含了 T0、T1的状态。,单片机复位时,两个寄存器都清0。6.1.1 工作方式控制寄存器TMOD,图6-1,图6-2,8位分为两组,高4位控制T1,低4位控制T0。(1)GATE门控位 0:仅以TRX(X=0,1)来启动定时器/计数器运行。1:用引脚INT0*(或INT1*)上
2、的高电平和TRX两个条 件来控制定时器/计数器的运行。(2)M1、M0工作方式选择位 表6-1 M1、M0工作方式选择 M1 M0 工 作 方 式 0 0 方式0,13位定时器/计数器。0 1方式1,16位定时器/计数器。1 0 方式2,8位常数自动重新装载 1 1 方式3,仅适用于T0,T0分成两个8 位计数器,T1停止计数。(3)C/T*计数器模式和定时器模式选择位,0:定时器模式。1:计数器模式。6.1.2 定时器/计数器控制寄存器TCON字节地址为88H,可位寻址,位地址为88H8FH。TCON的格式如图6-3所示。,图6-3,低4位与外部中断有关,已介绍。高4位的功能如下:(1)TF
3、1、TF0计数溢出标志位(2)TR1、TR0计数运行控制位 1:启动定时器/计数器工作的必要条件。0:停止定时器/计数器工作,6.2 定时器/计数器的4种工作方式 6.2.1 方式0 M1、M0为00,定时器/计数器的框图:,图6-4,为13位的计数器,C/T*位决定工作模式:0:开关打在上面,为定时器工作模式;1:开关打在下面,为计数器工作模式,计数脉冲为P3.4、P3.5引脚上的外部输入脉冲,当引脚上发生负跳变时,计数器加1。GATE位:决定定时器/计数器的运行取决于TRx一个条件还是TRx和INTx*引脚两个条件。(1)0:A点(见图6-2)是否计数,仅取决于TRx的状态。(2)1:B点
4、电位由INTX*的输入电平和TRX的状态这两个条件来确定。是否计数是由TRx和INTx*二个条件来控制的。,6.2.2 方式1 M1、M0=01,16位的计数器。6.2.3 方式2 计数满后自动装入计数初值。M1、M0=10,等效框图如下:,图6-5,TLX作为常数缓冲器,当TLX计数溢出时,在置“1”溢出标志TFX的同时,还自动的将THX中的初值送至TLX,使TLX从初值开始重新计数。定时器/计数器的方式2工作过程如图6-7(X=0,1)。,图6-6,省去用户软件中重装初值的程序,来精确定时。6.2.4 方式3 增加一个附加的8位定时器/计数器,从而具有3个定时器/计数器。,图6-7,只适用
5、于定时器/计数器T0。T1不能工作在方式3。T1方式3时相当于TR1=0,停止计数(此时T1可用来作串行口波特率产生器)。1工作方式3下的T0T0分为两个独立的8位计数器:TL0和TH0。TL0使用T0的状态控制位C/T*、GATE、TR0、,而TH0被固定为一个8位定时器(不能作外部计数模式),并使用定时器T1的状态控制位TR1和TF1,同时占用定时器T1的中断请求源TF1。各引脚与T0的逻辑关系如图6-8所示:,图6-8(a),图6-8(b),2T0工作在方式3下T1的各种工作方式 当T1用作串行口的波特率发生器时,T0才工作在方式3。T0为方式3时,T1可定为方式0、方式1和方式2,用来
6、作为串行口的波特率发生器,或不需要中断的场合。(1)T1工作在方式0,图6-9,(2)T1工作在方式1(3)T1工作在方式2,图6-10,图6-11,(4)T1工作在方式3。T1的控制字中M1、M0=11时,T1停止计数。在T0为方式3时,T1运行的控制条件只有两个,即C/T*和M1、M0。C/T*选择定时器模式或计数器模式,M1、M0选择T1运行的工作方式。,6.3 计数器模式对输入信号的要求 外部计数脉冲的最高频率为系统振荡器频率的1/24,例如选用12MHz频率的晶体,则可输入500KHz的外部脉冲。输入信号的高、低电平至少要保持一个机器周期。如图6-12所示,图中Tcy为机器周期。,图
7、6-12,6.4 定时器/计数器的编程和应用 4种工作方式中,方式0与方式1基本相同,由于方式0是为兼容MCS-48而设,初值计算复杂,在实际应用中,一般不用方式0,而采用方式1。6.4.1 方式1应用 例6-1 假设系统时钟频率采用6MHz,要在P1.0上输出一个周期为2ms的方波,如图6-13所示。,图6-13,方波的周期用T0来确定,让T0每隔1ms计数溢出1次(每1ms产生一次中断),CPU响应中断后,在中断服务程序中对P1.0取反。(1)计算初值X 设初值为X,则有:(216-X)210-6=110-3 216-X=500 X=65036 X化为16进制,即 所以,T0的初值为:TH
8、0=0FEH TL0=0CH(2)初始化程序设计,对寄存器IP、IE、TCON、TMOD的相应位进行正确设置,将计数初值送入定时器中。(3)程序设计 中断服务程序除产生方波外,还要注意将计数初值重新装入定时器中,为下一次中断作准备。参考程序:ORG 0000HRESET:AJMP MAIN;转主程序 ORG 000BH;T0的中断入口 AJMP IT0P;转T0中断处理程序IT0P ORG 0100HMAIN:MOV SP,#60H;设堆栈指针 MOV TMOD,#01H;设置T0为方式1,ACALL PT0M0;调用子程序PT0M0HERE:AJMP HERE;自身跳转PT0M0:MOV T
9、L0,#0CH;T0中断服务程序,T0重新置初值 MOV TH0,#0FEH SETB TR0;启动T0 SETB ET0;允许T0中断 SETB EA;CPU开中断 RETITOP:MOV TL0,#0CH;T0中断服务子程序,T0置初值 MOV TH0,#0FEH CPL P1.0;P1.0的状态取反 RETI查询方式的参考程序:MOV TMOD,#01H;设置T0为方式1,SETB TR0;接通T0LOOP:MOV TH0,#0FEH;T0置初值 MOV TL0,#0CHLOOP1:JNB TF0,LOOP1;查询TF0标志 CLR TR0;T0溢出,关闭T0 CPL P1.0;P1.0
10、的状态求反 SJMP LOOP例6-2 假设系统时钟为6MHz,编写定时器T0产生1秒定时的程序。(1)T0工作方式的确定定时时间较长,采用哪一种工作方式?由各种工作方式的特性,可计算出:方式0最长可定时16.384ms;,方式1最长可定时131.072ms;方式2最长可定时512s。选方式1,每隔100ms中断一次,中断10次为1s。(2)计算计数初值 因为:(216-X)210-6=10-1 所以:X=15536=3CB0H 因此:TH0=3CH,TL0=B0H(3)10次计数的实现 采用循环程序法。(4)程序设计 参考程序:,ORG 0000HRESET:LJMP MAIN;上电,转主程
11、序入口MAIN ORG 000BH;T0的中断入口 LJMP IT0P;转T0中断处理程序IT0P ORG 1000H MAIN:MOV SP,#60H;设堆栈指针 MOV B,#0AH;设循环次数10次 MOV TMOD,#01H;设T0工作在方式1 MOV TL0,#0B0H;给T0设初值 MOV TH0,#3CH SETB TR0;启动T0 SETB ET0;允许T0中断,SETB EA;CPU开放中断 HERE:SJMP HERE;等待中断 ITOP:MOV TL0,#0B0H;T0中断子程序,重装初值 MOV TH0,#3CH;DJNZ B,LOOP CLR TR0;1s定时时间到,
12、停止T0工作 LOOP:RETI 6.4.2 方式2的应用省去程序中重装初值的指令,并可产生相当精确的定时时间。例6-3 当T0(P3.4)引脚上发生负跳变时,从P1.0引脚上输出一个周期为1ms的方波,如图6-13所示。(假设时钟为6MHz),(1)工作方式选择T0为方式1计数,初值 0FFFFH,即外部计数输入端T0(P3.4)发生一次负跳变时,T0加1且溢出,溢出标志TF0置“1”,发中断请求。在进入T0中断程序后,把F0标志置“1”,说明T0脚已接收了负跳变信号。,图6-14,T1定义为方式2定时。在T0脚发生一次负跳变后,启动T1每500s产生一次中断,在中断服务程序中对P1.0求反
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AT89C51 定时器 计数器
链接地址:https://www.31ppt.com/p-5415945.html