第5章定时器计数器汇编.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
#define X (-50000) ;不能写成-100000/2,why? CNT_HUND_MS data 0x20 //100ms计数变量 second data 0x30 //秒变量 minute data 0x31 //分钟变量 Hour data 0x32 //小时变量 ORG 0000H LJMP START ORG 001BH LJMP T1Interrupt START: MOV SP,#60H MOV CNT_HUND_MS,#10 LCALL InitTimer1 LOOP: ;add your code here! LJMP LOOP InitTimer1: MOV TMOD,#10H MOV TL1,#low X //T1初值 MOV TH1,#high X SETB EA SETB ET1 SETB TR1 RET ;T0中断开始,产生时间。用工作寄存器1组 T1Interrupt: PUSH ACC PUSH PSW MOV TL1,#low X //T0初值 MOV TH1,#high X SETB RS0 //切换到寄存器组1 DJNZ CNT_HUND_MS,RETURN MOV CNT_HUND_MS,#10 //100ms计数器重新设为10,准备下一轮计数 MOV A,SECOND //对SECOND按BCD码加1 ADD A,#1 DA A MOV SECOND,A CJNE A,#0x60,RETURN MOV SECOND,#0x0 //SECOND清0 MOV A,MINUTE //对MINUTE按BCD码加1 ADD A,#1 DA A MOV MINUTE,A CJNE A,#0x60,RETURN MOV MINUTE,#0x0 //MINUTE清0 MOV A,HOUR //对HOUR按BCD码加1 ADD A,#1 DA A MOV HOUR,A CJNE A,#0x24,RETURN MOV HOUR,#0x0 //HOUR清0 RETURN: POP PSW POP ACC RETI end #include reg51.h const long X=-100000/2; unsigned char cnt_hund_ms,second,minute,hour; t1interrupt() interrupt 3 { TL1=X%256; //T1初值 TH1=X/256; cnt_hund_ms++; if(cnt_hund_ms=10){cnt_hund_ms=0;second++; if(second==60){ second=0;minute++; if(minute==60){minute=0;hour++; if(hour==24)hour=0; } } } } main() { TMOD=0x10; TL1=X%256; //T1初值 TH1=X/256; EA=1; ET1=1; TR1=1; while(1); } //测正脉冲宽度程序 #define GATE P3.3 MAIN: MOV TMOD, ;T1定时,方式1,GATE = 1 MOV TLl, #00H ;置TL1计数初值 MOV THl, #00H ;置THl计数初值 LOOP: JB GATE ,LOOP ;等待(/INT1)变低 SETB TR1 ;为启动T1作好准备 LOOPl:JNB GATE ,LOOP1 ;等待正脉冲到,并开始计数 LOOP2:JB

您可能关注的文档

文档评论(0)

花仙子 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档