定时计数器全解.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
定时计数器全解

中断方式 # include reg51.h //包含特殊功能寄存器库 sbit P10=P1^0; //定义P1.0口 void main() //主函数 {TMOD=0x01; //设定时器T0工作方式1 TH0=0x0fe; TL0=0x0c; //设初值 EA=1; ET0=1; //开中断 TR0=1; //启动计数 while(1); //无限循环,结束主函数} void time0_int(void) interrupt 1 //中断函数 { TH0=0x0fe; TL0=0x0c; P10=!P10;} 查询方式参考程序: MOV TMOD,#01H ;设置T0为方式1 MOV TH0,#0FEH ;T0置初值 MOV TL0,# 0CH SETB TR0 ;接通T0 LOOP1:JNB TF0,LOOP1 CLR TR0 ;T0溢出, 关断T0 CPL P1.0 ;P1.0的状态求反 SJMP LOOP 结论:查询程序虽简单,但CPU必须要不断查询TF0标志,工作效率低。 * LOOP: ;TF0 =0, T0未溢出;TF0 =1, T0溢出 #include reg51.h sbit P2_0=P2^0; void main(void) { TMOD=0x01; //T0工作在定时器方式l TH0= (65536-500)/256; //计数初值 TL0=(65536-500)%256; TR0=1; //启动T0 while(1) { TH0= (65536-500)/256; //计数初值 TL0=(65536-500)%256; while (!TF0); P2_0 = ! P2_0; TF0 = 0; } } 使用查询方式进行编程: 查询TF0是否为‘1’,如果为‘1’则说明溢出(定时时间到) MCU P2.0 2ms,占空比50% 2ms,占空比75% 1ms 1ms 1.5ms 0.5ms 例3:设单片机fosc=6MHz,要求在P2.0引脚上输出周期为2ms,占空比为75%的矩形波。在上例基础上应作何修改? 2ms,占空比75% 解:采用定时器T0的方式1进行编程 思路:采用定时间隔0.5ms,并设置一个全局变量i对定时器的中断次数进行计数,小于等于3时输出高电平,等于4时输出低电平,以此循环。 0.5ms i = 1 0.5ms i = 2 0.5ms i = 3 0.5ms i = 4 例3:设单片机fosc=6MHz,要求在P2.0引脚上输出周期为2ms,占空比为75%的矩形波。在上例基础上应作何修改? #include reg51.h sbit P1_0=P1^0; unsigned char i; void TIMER0_ISR (void) interrupt 1 { TH0=(65536-250)/256; TL0=(65536- 250)%256; i++; if(i = 3) { P1_0=1; } if(I = = 4) { P1_0=0; i=0; } } void main (void) { TMOD=0x01; TH0=(65536- 250)/256; TL0=(65536- 250)%256; ET0=1; EA=1; TR0=1; i = 0; P1_0 = 1; while (1) { ; } } 例3:设单片机fosc=6MHz,要求在P2.0引脚上输出周期为2ms,占空比为75%的矩形波。在上例基础上应作何修改? 方式0和方式1的最大特点是计数溢出后,计数器为全0。 因此就存在用指令反复装入计数初值的问题。这不仅影响定时精度,也给程序设计带来麻烦。方式2就是针对此问题而设置的。 设定M1、M0为10,方式2为自动恢复初值(初值自动装入)的8位定时器/计数器。 THx(x?=?0,1)作为常数缓冲器,当TLx计数溢出时,在溢出标志TFx置“1”的同时,还自动将THx中的初值送至TLx,使TLx

文档评论(0)

ee88870 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档