资源描述:
《绝对真实电子时钟的程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、程序12-8:电子时钟的程序(对应图12-33) S_SETBITP1.0;SECOND按钮位M_SETBITP1.1;MINUTE按钮位H_SETBITP1.2;HOUR按钮位SECONDEQU30H;秒计数值变量 MINUTEEQU31H;分计数值变量 HOUREQU32H;小时计数值变量 TCNTEQU34H;1秒定时计数器ORG00H;起始地址JMPSTARTORG0BH;Timer0中断向量地址JMPINT_T0START:MOVDPTR,#TABLE;装七段数码管段码数据表TABLEMOVHOUR,#0;计数值全部清0M
2、OVMINUTE,#0MOVSECOND,#0MOVTCNT,#0MOVTMOD,#01H;Timer0作定时器,模式1MOVTH0,#(65536-50000)/256;定时50毫秒MOVTL0,#(65536-50000)MOD256MOVIE,#82H;中断使能SETBTR0;启动Timer0;以下是判断SECOND、MINUTE、HOUR按钮是否被按下A1:CALLDISPLAYJNBS_SET,S1;判断SECOND按钮JNBM_SET,S2;判断MINUTE按钮JNBH_SET,S3;判断HOUR按钮JMPA1;循环检测S1
3、:CALLDELAY;去抖动JBS_SET,A1INCSECOND;秒位计数值加1MOVA,SECOND;A=SECONDCJNEA,#60,J0;判断是否到60秒MOVSECOND,#0;如果到了就清0秒位计数值JMPK1;跳到K1段S2:CALLDELAYJBM_SET,A1K1:INCMINUTE;分位计数值加1MOVA,MINUTE;A=MINUTECJNEA,#60,J1;判断是否到60分MOVMINUTE,#0;如果到了就清0分位计数值JMPK2S3:CALLDELAYJBH_SET,A1K2:INCHOUR;小时计数值加1
4、MOVA,HOUR;A=HOURCJNEA,#24,J2;判断是否到24小时MOVHOUR,#0;如果到了就清0秒、分、小时位计数值MOVMINUTE,#0MOVSECOND,#0JMPA1;以下程序等待SECOND、MINUTE、HOUR按钮放开J0:JBS_SET,A1CALLDISPLAYJMPJ0J1:JBM_SET,A1CALLDISPLAYJMPJ1J2:JBH_SET,A1CALLDISPLAYJMPJ2;Timer0中断服务子程序,进行秒、分、小时的计时INT_T0:MOVTH0,#(65536-50000)/256;装
5、计数初始值MOVTL0,#(65536-50000)MOD256INCTCNT;1秒计数器增加1MOVA,TCNT;A=TCNTCJNEA,#20,RETUNE;计时1秒INCSECOND;秒计数器增加1MOVTCNT,#0;清零TCNTMOVA,SECOND;A=SECONDCJNEA,#60,RETUNE;计时60秒INCMINUTE;分计数器增加1MOVSECOND,#0;清零SECONDMOVA,MINUTE;A=MINUTECJNEA,#60,RETUNE;计时60分INCHOUR;小时计数器增加1MOVMINUTE,#0;清
6、零MINUTEMOVA,HOUR;A=HOURCJNEA,#24,RETUNE;计时24小时 MOVHOUR,#0;秒、分、小时计数值清0MOVMINUTE,#0MOVSECOND,#0MOVTCNT,#0RETUNE:RETI;中断服务子程序结束;以下为七段数码管显示的子程序DISPLAY:MOVA,SECOND;A=SECOND,显示秒MOVB,#10;B=10DIVAB;A除以BCLRP3.6;清零P3.6MOVCA,@A+DPTR;七段数码管段码数据装入AMOVP0,A;从P0口输出CALLDELAYSETBP3.6;P3.6置
7、1MOVA,B;A=BCLRP3.7;P3.7清0MOVCA,@A+DPTR;七段数码管段码数据装入AMOVP0,A;从P0口输出CALLDELAYSETBP3.7;P3.7置1CLRP3.5;P3.5清0MOVP0,#40H;显示短线分隔符CALLDELAYSETBP3.5;P3.5置1MOVA,MINUTE;A=MINUTE,显示分MOVB,#10;B=10DIVAB;A除以BCLRP3.3;P3.3清0MOVCA,@A+DPTR;七段数码管段码数据装入AMOVP0,A;从P0口输出CALLDELAYSETBP3.3;P3.3置1M
8、OVA,B;A=BCLRP3.4;P3.4清0MOVCA,@A+DPTR;七段数码管段码数据装入AMOVP0,A;从P0口输出CALLDELAYSETBP3.4;P3.4置1CLRP3.2;P3.2清0MO