增强型8051单片机的定时计数器.ppt

上传人:小飞机 文档编号:5696931 上传时间:2023-08-11 格式:PPT 页数:40 大小:1.81MB
返回 下载 相关 举报
增强型8051单片机的定时计数器.ppt_第1页
第1页 / 共40页
增强型8051单片机的定时计数器.ppt_第2页
第2页 / 共40页
增强型8051单片机的定时计数器.ppt_第3页
第3页 / 共40页
增强型8051单片机的定时计数器.ppt_第4页
第4页 / 共40页
增强型8051单片机的定时计数器.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《增强型8051单片机的定时计数器.ppt》由会员分享,可在线阅读,更多相关《增强型8051单片机的定时计数器.ppt(40页珍藏版)》请在三一办公上搜索。

1、增强型8051单片机的定时/计数器,目 录,1STC11F08XE单片机定时/计数器的结构和工作原理 2STC11F08XE单片机定时/计数器的控制 3STC11F08XE单片机定时/计数器的工作方式 4STC11F08XE单片机定时/计数器的应用举例 5 STC11F08XE单片机的可编程时钟输出功能,1STC11F08XE单片机定时/计数器的结构和工作原理,1.STC11F08XE单片机定时/计数器的结构STC11F08XE单片机内部有两个16位的定时计数器,即T0和T1,与传统的8051单片机的定时计数器完全兼容。,1STC11F08XE单片机定时/计数器的结构和工作原理,2.STC11

2、F08XE单片机定时/计数器的核心电路STC11F08XE单片机定时/计数器的核心电路如图7.2所示,它是一个加1计数器。,1STC11F08XE单片机定时/计数器的结构和工作原理,3.STC11F08XE单片机定时/计数器的工作原理定时功能:当脉冲源为系统时钟(等间隔脉冲序列)时,由于计数脉冲为一时间基准,脉冲数乘以计数脉冲周期(时钟周期或12倍时钟周期)就是定时时间。计数功能:当脉冲源为间隔不等的外部输入脉冲(由T0或T1引脚输入)时,就是外部事件的计数器。寄存器在其对应的外输入端T0或T1有一个负跳变时计数器加1。外部输入信号的速率是不受限制的,但必须保证给出的电平在变化前至少被采样一次

3、。,2STC11F08XE单片机定时/计数器的控制,1.工作方式寄存器TMOD TMOD为T0、T1的工作方式寄存器。,2STC11F08XE单片机定时/计数器的控制,2.定时/计数器控制寄存器TCON TCON的作用是控制定时/计数器的启动与停止,记录定时/计数器的溢出标志以及外部中断的控制。,2STC11F08XE单片机定时/计数器的控制,3.辅助寄存器AUXR辅助寄存器AUXR的T0 x12、T1x12用于设定T0、T1定时计数脉冲的分频系数。,3STC11F08XE单片机定时/计数器的工作方式,1.方式0方式0是一个13位的定时计数器,由TH0的所有8位和TL0的低5位组成,其电路框图

4、如图7.3所示。当TL0的低5位计数器溢出时,向TH0进位,而TH0溢出时,向中断标志TF0进位,同时申请中断。当中断响应后,由内部硬件自动清除TF0标志。当13位定时计数器计满溢出时,TH0的所有8位和TL0的低5位都变为0,要重新定时时,要对13位定时计数器重新赋初值。,3STC11F08XE单片机定时/计数器的工作方式,2方式1定时计数器0在方式1下的电路框图如图7.4所示。方式l和方式0的差别仅仅在于计数器的位数不同。方式l为16位的计数器,由TH0作为高8位,TL0作为低8位。,3STC11F08XE单片机定时/计数器的工作方式,3方式2方式2的电路框图如图7.5所示。方式2是能自动

5、重装初始值的8位定时计数器。方式0、方式1,若用于循环定时时,每次计满溢出,寄存器状态全部清零,第二次计数需要重新装入计数初值。这样不仅编程麻烦,而且影响定时时间的精度。而方式2具有自动恢复初值功能,即初值的自动重装功能,避免了上述的缺陷,适合用作较精确的定时。,3STC11F08XE单片机定时/计数器的工作方式,4.方式3方式3的电路框图如图7.6所示,定时器T0被分解成两个独立的8位定时/计数器TL0和TH0。方式3时,定时/计数器1仍可设置为方式0、方式1或方式2。,4STC11F08XE单片机定时/计数器的应用举例,4.1 STC11F08XE单片机定时/计数器的定时应用 4.2 ST

6、C11F08XE单片机定时/计数器的计数应用,4.1 STC11F08XE单片机定时/计数器的定时应用,例7.3 使信号灯循环点亮,首先按从左至右轮流点亮,再按从右至左轮流点亮,每个信号灯点亮的时间间隔为1秒。要求用单片机定时/计数器定时实现。,4.1 STC11F08XE单片机定时/计数器的定时应用,汇编语言参考程序如下:1)查询方式实现ORG0000HLOOP:MOVR2,#07H;设置左移的次数MOVA,#0FEH;设置信号灯的显示(左移)的起始状态值Left_Shift:MOVP1,A;送显示控制信号ACALLDELAY;利用软件与定时器,实现1s定时 RLA;改变信号灯显示状态,左移

7、DJNZR2,Left_Shift;判断左移流程是否结束,若结束,转入右移控制MOVA,#7FH;设置信号灯的显示(右移)的起始状态值,可省略 MOV R2,#07H;设置左移的次数Right_Shift:MOVP1,A;送显示控制信号RRA;改变信号灯显示状态,右移ACALLDELAY;利用软件与定时器,实现1s定时DJNZR2,Right_Shift;判断左移流程是否结束,若结束,又重新开始SJMPLOOP,4.1 STC11F08XE单片机定时/计数器的定时应用,DELAY:MOV R3,#20;置50ms计数循环初值MOVTMOD,#10H;设定时器1为方式1 MOVTH1,#3CH;

8、置定时器初值MOVTL1,#0B0HSETBTR1;启动T1Check_TF1:JBCTF1,Timer1_Overflow;查询计数溢出SJMPCheck_TF1;未到50ms继续计数Timer1_Overflow:MOVTH1,#3CH;重新置定时器初值MOVTL1,#0B0HDJNZR3,Check_TF1;未到1s继续循环CLR TR1;关闭T1 RET;返回主程序END,4.1 STC11F08XE单片机定时/计数器的定时应用,汇编语言参考程序如下:2)中断方式实现ORG0000H AJMP MAINORG 001BH AJMP Timer1_ISRMAIN:MOV R3,#20;置

9、50ms计数循环初值 MOV TMOD,#10H;设定时器1为方式1 MOVTH1,#3CH;置50ms定时器初值 MOVTL1,#0B0H MOVR2,#07H;设置左移的次数 MOVP1,#0FEH;设置信号灯的显示(左移)的起始状态值 MOVA,#0FEH;设置信号灯的显示(左移)的起始状态值 CLR 00H;设置左、右移标志位,为0左移,为1右移 SETP TR1;启动T1定时器 SJMP$,4.1 STC11F08XE单片机定时/计数器的定时应用,Timer1_ISR:MOVTH1,#3CH;置50ms定时器初值 MOVTL1,#0B0H DJNZR3,Exit_Timer1_ISR

10、;定时时间到,执行移位,否则中断结束 MOV R3,#20 JB 00H,Right_Shift;判断左、右移控制 RL A;左移控制 MOV P1,A DJNZR2,Exit_Timer1_ISR;判断左移流程是否结束,若结束,转入右移控制 SETB 00H;置位左、右移控制标志 MOV R2,#07H;重新设置移位次数 SJMP Exit_Timer1_ISR,4.1 STC11F08XE单片机定时/计数器的定时应用,Right_Shift:RR A;右移控制 MOV P1,A DJNZR2,Exit_Timer1_ISR;判断左移流程是否结束,若结束,转入右移控制 CLR 00H;清0左

11、、右移控制标志 MOV R2,#07H;重新设置移位次数Exit_Timer1_ISR:RETI END,4.1 STC11F08XE单片机定时/计数器的定时应用,C51参考程序如下:1)查询方式实现#include/包含52标准文件头#include/包含循环左移、右移子函数#define uchar unsigned char#define uint unsigned intuchar LED=0 xfe;,4.1 STC11F08XE单片机定时/计数器的定时应用,/*-利用T1实现定时的子函数-*/void DELAY(void)/延时函数 1S uint i=0;TMOD=0 x10;

12、/T1工作模式1 TH1=0 x3c;TL1=0 xb0;TR1=1;while(i20)if(TF1=1)/查询T1溢出标志 TF1=0;TH1=0 x3c;TL1=0 xb0;i+;,4.1 STC11F08XE单片机定时/计数器的定时应用,/*-循环左移子函数-*/void Left_Shift(void)P1=LED;DELAY();/延时一秒 LED=_crol_(LED,1);/循环左移一位/*-循环右移子函数-*/void Right_Shift(void)LED=_cror_(LED,1);/循环右移一位 P1=LED;DELAY();/延时一秒,4.1 STC11F08XE单

13、片机定时/计数器的定时应用,/*-主函数-*/void main(void)uchar j;while(1)for(j=0;j7;i+)Next();for(j=0;j7;i+)Next1();,4.1 STC11F08XE单片机定时/计数器的定时应用,C51参考程序如下:2)中断方式实现#include/包含52标准文件头#include/包含循环左移、右移子函数#define uchar unsigned char#define uint unsigned char/*-定义全局变量-*/uchar LED=0 xfe;uchar i=0;uchar t=0;,4.1 STC11F08XE

14、单片机定时/计数器的定时应用,/*-T1初始化子函数-*/void Timer1_init(void)TMOD=0 x10;/T1工作模式1 TH1=0 x3c;TL1=0 xb0;ET1=1;EA=1;TR1=1;,4.1 STC11F08XE单片机定时/计数器的定时应用,/*-LED循环显示子函数-*/void Shift(void)P1=LED;t+;if(t=7)LED=_crol_(LED,1);/循环左移一位 else if(t15)LED=_cror_(LED,1);/循环右移一位 else t=0;,4.1 STC11F08XE单片机定时/计数器的定时应用,/*-T1中断服务子

15、函数-*/void Timer1_int(void)interrupt 3 using 1/定时T1中断服务程序 TH1=0 x3c;TL1=0 xb0;i+;if(i=20)i=0;Next();,4.1 STC11F08XE单片机定时/计数器的定时应用,/*-主函数-*/void main(void)/主函数 Timer1_init();/T1初始化 while(1);,4.2 STC11F08XE单片机定时/计数器的计数应用,例7.4 连续输入5个单次脉冲使单片机控制的LED灯状态翻转一次。要求用单片机定时/计数器计数功能实现实现。,4.2 STC11F08XE单片机定时/计数器的计数应

16、用,汇编语言参考程序如下:1)查询方式实现ORG0000H MOV TMOD,#60H;设定定时器1模式2,计数功能 MOV TH1,#0FBH MOV TL1,#0FBH;设置计数器初值(2565)SETB TR1;启动计数Check_TF1:JBC TF1,Timer1_Overflow;查询是否计数溢出 AJMP Check_TF1 Timer1_Overflow:CPL P1.0;当统计5个脉冲,LED灯状态翻转 AJMP Check_TF1 END,4.2 STC11F08XE单片机定时/计数器的计数应用,汇编语言参考程序如下:2)中断方式实现 ORG0000H AJMP MAIN

17、ORG001BH AJMP Timer1_ISRMAIN:MOV TMOD,#60H;设定定时器1模式2,计数功能 MOV TH1,#0FBH MOV TL1,#0FBH;设置计数器初值(2565)SETB TR1;启动计数 SJMP$Timer1_ISR:CPL P1.0;当统计5个脉冲,LED灯状态翻转 RETI END,4.2 STC11F08XE单片机定时/计数器的计数应用,C51参考程序如下:1)查询方式实现#include sbit led=P10;void timer_initial(void)TMOD=0 x60;/设定定时器1模式2,计数功能TH1=0 xfb;/5个脉冲以后

18、溢出TL1=0 xfb;TR1=1;/开始计数器,4.2 STC11F08XE单片机定时/计数器的计数应用,void main(void)timer_initial();while(1)while(TF1=0);TF1=0;Led=led;/不断查询是否溢出,没有溢出,就等待溢出了;溢出了,/清空溢出标志,led取反,4.2 STC11F08XE单片机定时/计数器的计数应用,C51参考程序如下:2)中断方式实现#include#define uchar unsigned char#define uint unsigned charsbit LED=P10;/*-T1初始化子函数-*/void

19、Timer1_init(void)TMOD=0 x60;/1设定定时器1模式2,计数功能 TH1=0 xfb;/设置计数器初值(计满溢出值5)TL1=0 xfb;ET1=1;EA=1;TR1=1;/启动计数,4.2 STC11F08XE单片机定时/计数器的计数应用,/*-T1中断服务子函数-*/void Timer1_int(void)interrupt 3 using 1/定时计数T1中断服务程序 LED=LED;/*-主函数-*/void main(void)/主函数 Timer1_init();/定时T1初始化 while(1);,5 STC11F08XE单片机的可编程时钟输出功能,5.

20、1 STC11F08XE单片机的可编程时钟:CLKOUT0、CLKOUT1、CLKOUT2 三个可编程时钟输出由WAKE_CLKO、AUXR和BRT三个特殊功能寄存器进行管理与控制,5 STC11F08XE单片机的可编程时钟输出功能,5.2 STC11F08XE单片机可编程时钟的应用举例 例7.6 编程在P1.0、P3.4、P3.5引脚上分别输出115.2KHZ、51.2KHZ、38.4KHZ的时钟信号。(1)汇编语言参考程序BRT EQU 9CHAUXR EQU 8EH WAKE_CLKO EQU 8FH,5 STC11F08XE单片机的可编程时钟输出功能,ORG 0000H MOV TMO

21、D,#22H;T0、T1工作方式2定时状态 ORL AUXR,80H;T0工作在无分频模式 ORL AUXR,40H;T1工作在无分频模式 ORL AUXR,04H;BRT工作在无分频模式 MOV BRT,#176;设置BRT定时器的初始值 MOV TH0,#76;设置T0定时器的初始值 MOV TL0,#76 MOV TH1,#16;设置T1定时器的初始值 MOV TL1,#16 ORL WAKE_CLKO,07H;允许CLKOUT0、CLKOUT1、CLKOUT2时钟输出 SETB TR0;启动T0 SETB TR1;启动T1 ORL AUXR,#10H;启动BRT SJMP$,5 STC

22、11F08XE单片机的可编程时钟输出功能,5.2 STC11F08XE单片机可编程时钟的应用举例 例7.6 编程在P1.0、P3.4、P3.5引脚上分别输出115.2KHZ、51.2KHZ、38.4KHZ的时钟信号。(2)C51参考程序includesfr WAKE_CLKO=0 x8F;sfr AUXR=0 x8E;sfr BRT=0 x9C;,5 STC11F08XE单片机的可编程时钟输出功能,main()TMOD=0 x22;AUXR=(AUXR|0 x80);/T0工作在无分频模式AUXR=(AUXR|0 x40);/T1工作在无分频模式AUXR=(AUXR|0 x04);/BRT工作在无分频模式BRT=176;/给BRT、T0、T1定时器设置初值TH0=76;TL0=76;TH1=16;TL1=16;WAKE_CLKO(WAKE_CLKO|0 x07);/允许T0、T1、BRT输出时钟信号TR0=1;/启动T0TR1=1;/启动T1AUXR=(AUXR|0 x10);/启动BRTwhile(1);/无限循环,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号