单片机原理及应用 教学课件 ppt 作者 陈桂友 孙同景 第8章 定时计数器

上传人:E**** 文档编号:89503756 上传时间:2019-05-26 格式:PPT 页数:45 大小:464.50KB
返回 下载 相关 举报
单片机原理及应用 教学课件 ppt 作者 陈桂友 孙同景 第8章  定时计数器_第1页
第1页 / 共45页
单片机原理及应用 教学课件 ppt 作者 陈桂友 孙同景 第8章  定时计数器_第2页
第2页 / 共45页
单片机原理及应用 教学课件 ppt 作者 陈桂友 孙同景 第8章  定时计数器_第3页
第3页 / 共45页
单片机原理及应用 教学课件 ppt 作者 陈桂友 孙同景 第8章  定时计数器_第4页
第4页 / 共45页
单片机原理及应用 教学课件 ppt 作者 陈桂友 孙同景 第8章  定时计数器_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《单片机原理及应用 教学课件 ppt 作者 陈桂友 孙同景 第8章 定时计数器》由会员分享,可在线阅读,更多相关《单片机原理及应用 教学课件 ppt 作者 陈桂友 孙同景 第8章 定时计数器(45页珍藏版)》请在金锄头文库上搜索。

1、第8章 定时/计数器,8.1 8051单片机的定时/计数器,8.2 MSC1211的定时器与脉宽调制,在计算机控制中可供选择的定时方法,(1)软件定时 执行一个循环程序来实现。 (2)硬件定时 定时全部由硬件电路完成,不占用CPU时间,但需要通过改变电路的元件参数来调节定时时间,在使用控制上不够方便,同时增加了开发成本。 (3)可编程定时器定时 由单片机内部的定时模块单元完成。,8.1 8051单片机的定时/计数器,1、定时/计数器的结构,单片机中的微处理器、寄存器TCON和TMOD与定时/计数器T0、T1之间的关系,2、定时/计数器方式和控制寄存器,定时器工作方式控制寄存器TMOD,M0,M

2、1,C/,GATE,M0,M1,C/,GATE,00H,定时器0,定时器1,89H,复位值,D0,D1,D2,D3,D4,D5,D6,D7,地址,定时器控制寄存器 TCON,00H,IT0,IE0,IT1,IE1,TR0,TF0,TR1,TF1,88H,复位值,D0,D1,D2,D3,D4,D5,D6,D7,地址,3、定时/计数器的工作方式,方式0,方式1,方式2,方式3,定时时间为:TC=XTP。其中,TP为机器周期,TC为定时时间。 则应装入计数/定时器的初值为,当工作于定时状态时,定时/计数器是对机器周期进行计数,每个机器周期包括12个振荡周期,若晶振频率为6MHz。则 1个机器周期=

3、= s=2s,4、定时/计数器量程的扩展,8051单片机中提供的定时/计数器可以使用户很方便地实现定时和对外部事件计数。但是在实际应用中,需要的定时时间或计数值可能超过定时/计数器的定时或计数能力,特别是8051单片机的系统时钟频率较高时,定时能力就更为有限。为了满足需要,有时需要对8051单片机的定时计数能力进行扩展。定时能力和计数能力扩展的方法相同,在此主要对定时能力的扩展进行讨论,计数能力的扩展可参考定时能力扩展的方法进行。,=,(注:M =2n,TP为机器周期,TC为定时时间),系统时钟频率为6MHz时定时器的最大定时能力,扩展方法:,(1)软件扩展方法 扩展方法是在定时器中断服务程序

4、中对定时器中断请求进行计数,当中断请求的次数达到要求的值时才进行相应的处理。,(2)硬件扩展方法 硬件扩展方法可以使用外接通用定时器芯片对8051单片机的定时能力进行扩展,如使用定时/计数器芯片8253,也可以利用8051单片机自身的资源对定时能力进行扩展。,5、定时/计数器编程举例,一般情况下,定时/计数器初始化部分的步骤大致如下: 1)设置工作方式,将控制字写入TMOD寄存器; 2)把定时/计数初值装入TLX、THX寄存器; 3)置位TRX以启动定时/计数; 4)置位ETX允许定时/计数器中断(如果需要); 5)置位EA使CPU开放中断。,【例8-l】 设计利用定时计数器T0、T1端作为外

5、部中断源输入线进行外部中断源扩充的程序。 解:为了扩充外部中断源,可以利用定时计数器工作于计数状态时,T0(P3.4)或T1(P3.5)引脚上发生负跳变,计数器增1这一特性,把P3.4、P3.5作为外部中断源请求输入线,使计数器的计数值为-1(即0FFH),则外部T0、T1输入一个脉冲即计数溢出,从而置位相应的中断请求标志,以此来申请中断,则相当于扩充了一根/INT线。 编程时,将T0置为方式2计数,计数初值0FFH,计数输入端T0(P3.4)发生一次负跳变,计数器加1并产生溢出标志向CPU申请中断,中断处理程序使累加器A内容减1,送P1口,然后返回主程序。汇编语言程序清单如下:,ORG 00

6、00H LJMP MAIN ;转主程序 ORG 000BH ;定时器T0中断服务程序入口地址 LJMP INT_T0 ;转中断服务程序 ORG 0100H ;主程序的存放起始地址 MAIN: MOV SP,#60H ;给栈指针赋初值 MOV TMOD,#06H ;定时器T0工作于方式2 MOV TL0,#0FFH ;送时间常数 MOV TH0,#0FFH SETB TR0 ;启动T0计数器 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 HERE: LJMP HERE ;等待 INT_T0: DEC A ;T0中断服务程序 MOV P1,A ;累加器A内容减1送P1口 RET

7、I END,对应的C语言程序如下: #include “REG51.H” unsigned char cnt; void timer0_ISR (void) interrupt 1 /T0中断函数 cnt = cnt- -; /在C语言程序中,使用变量cnt代替汇编语言中的累加器A P1 = cnt; void main(void) cnt=0xff; TMOD=0x06; /定时器0工作于方式2 TL0=0xff; TH0=0xff; TR0=1; ET0=1; EA =1; while(1); /等待中断 ,【例8-2】 设系统时钟频率为6MHz,利用定时器T0定时,每隔1s将P1.0的状

8、态取反。,思路:将定时器的定时时间设为50ms,在中断服务程序中对定时器溢出中断请求进行计数,当计够20次时,将P1.0的状态取反,否则直接返回主程序。 选择定时器T0的工作方式:软件启动、定时方式、16位定时器,方式字为01H。由于系统时钟频率为6MHz,所以一个机器周期为2s。定时器T0的装入初值为,汇编语言程序代码如下: ORG 0000H LJMP MAIN ;转主程序 ORG 000BH ;T0中断服务程序入口地址 LJMP T0_ISR ORG 0100H MAIN: MOV SP,#60H ;设置堆栈指针 MOV TMOD,#01H ;T0初始化 MOV TL0,#58H MOV

9、 TH0,#9EH MOV A,#20 ;累加器A置20 SETB TR0 ;启动T0计数 SETB ET0 ;允外T0中断 SETB EA ;CPU开中断 SJMP $ ;等待 T0_ISR: MOV TL0,#58H MOV TH0,#9EH DEC A ;累加器A内容减1 JNZ EXIT CPL P1.0 MOV A,#20 ;累加器A重载20 EXIT: RETI END,对应的C语言程序如下: #include “reg51.h” /包含8051单片机的头文件 sbit P10=P10; /声明P1.0的位变量 unsigned char i; /声明计数变量。在C语言程序中,不能

10、使用ACC void timer0_ISR (void) interrupt 1 /定时器T0中断函数 TL0=0x58; /重新装入时间常数 TH0=0x9E; i-; /计数变量减1 if(i=0) /若减到0,则将P1.0取反 P10 = !P10; i = 20; /重新给计数变量赋值 void main (void) /SP=0x60; /使用C语言设计程序时,可以不设置堆栈指针 TMOD=0x01; TL0=0x58; TH0=0x9E; i=20; /计数变量赋初值 TR0=1; /启动T0计数 ET0=1; /允许T0中断 EA = 1; /开放总的中断 while(1); /

11、等待中断 ,解:以T0为例,下面列出实现这一方法的关键代码,完整的程序,请读者自行编写。 MOV TMOD,#09H ; T0初始化,T0工作于方式1、定时、GATE置1 MOV TL0,#00H MOV TH0,#00H JNB P3.2,$ ;等待升高 SETB TR0 JB P3.2,$ ;等待下降 CLR TR0 ;关T0 MOV A,TL0 ;T0内容高8位送B,低8位送A MOV B,TH0 ;计算脉宽或送显示器显示,【例8-5】 当GATE=1,TRX=1,只有/INTX引脚输入高电平时,TX才被允许计数,利用这一特点,可测量/INTX引脚上正脉冲的宽度,如下图所示。,8.2 M

12、SC1211的定时器与脉宽调制,时钟分配,1、系统定时器,MSC1211单片机中的系统定时器,包括:微秒定时器、毫秒定时器、百毫秒定时器、秒定时器和看门狗定时器。,1)微秒定时器,微秒定时器(USEC)各位的定义,2)毫秒定时器,毫秒定时器低字节(MSECL)的各位定义,毫秒定时器高字节(MSECH)的各位定义,周期为1ms的时钟信号 : 1ms=(MSECH256+MSECL+1)tCLK,毫秒定时器的中断 毫秒定时器中断是用户程序可以使用的辅助中断之一。毫秒定时器的触发频率由毫秒定时器中断寄存器MSINT来控制。读MSINT寄存器将清除中断。MSINT各位的定义如下:,毫秒定时器中断的触发

13、时间=MSINT+1ms,3)百毫秒定时器,特殊功能寄存器HMSEC用于设置百毫秒定时器,其各位定义如下:,百毫秒定时器输出时钟周期=HMSEC+1毫秒时钟周期,4)秒定时器,秒定时器主要用于秒定时器中断。秒定时器中断是一个辅助中断,它的触发频率由秒定时器中断寄存器SECINT来控制。和毫秒定时器中断寄存器类似,SECINT寄存器用来设置秒定时器中断时间间隔。读此寄存器将清除秒定时器中断。SECINT寄存器的各位定义如下:,秒定时器中断的触发时间=SECINT+1100ms,5)看门狗定时器,看门狗定时器是保障系统正常运行的一个重要部分。看门狗定时器的输入时钟是百毫秒时钟。通过WDTCON(F

14、FH)寄存器对百毫秒时钟分频即可得到看门狗定时器时钟,所以百毫秒时钟的周期直接决定看门狗定时器的定时时间的长短。,6 ) 系统时钟分频寄存器SYSCLK,缺省情况下,使用晶体振荡器作为系统的时钟,即fCLK=fOSC。通过设置系统时钟分频寄存器SYSCLK,可以将fOSC进行分频而得到系统时钟fCLK。经过分频后,处理器的速度以及所有的定时器都会受到影响。系统时钟分频寄存器SYSCLK的位定义如下:,DIVMOD1DIVMOD0:时钟分频模式。参见教材P188表8-3和表8-4,00H,DIV0,DIV1,DIV2,0,DIVMOD0,DIVMOD1,0,0,C7H,复位值,D0,D1,D2,

15、D3,D4,D5,D6,D7,地址,DIV2DIV0:时钟分频设定。参见教材P188表8-5,【例】 毫秒定时器的使用。设系统时钟频率为11.0592MHz,利用毫秒定时器定时,每隔0.5s将P2.4的状态取反。利用该程序模块,可以实现报警指示功能。电路采用灌电流方式,参考P39图3-3b 解:程序代码如下: #include sbit AlarmOUT= P24; /报警闪烁显示 unsigned char ms_cnt; /ms_cnt用于百毫秒计数 void Auxinterrupt(void) interrupt 6 /辅助中断子程序 unsigned char x; if (AISTAT ,2、通用定时器,MSC1211的通用定时器与8051单片机的定时器类似 。,1)定时器0和1

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

当前位置:首页 > 高等教育 > 大学课件

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