登录站点

用户名

密码

電子鐘

已有 263 次阅读  2009-09-10 17:35

此電子鐘是我用計數器改裝的,經測試15天快3秒

S_1EQU30H;秒寄存器


M_1EQU31H;分寄存器


H_1EQU32H;時寄存器


ORG00H


LJMPSTART


ORG0BH;定時中斷入口


LJMPTIMER


ORG30H


START:


MOVS_1,#0;秒、分、時寄存器清0


MOVM_1,#0


MOVH_1,#0


MOV20H,#10;0.5秒鐘中斷次數,0.5s=500ms=50msx10


MOV21H,#2;2個0.5秒即為1秒


MOVSP,#40H;堆棧指針設置


MOVIE,#82H;開定時器0中斷及總中斷


MOVTMOD,#01H;定時器0模式1


MOVTH0,#03CH;50ms初值


MOVTL0,#0B0H


SETBTR0;啟動定時器0


LOOP:


ACALLDISP;調用顯示


JNBP3.4,MT;查詢分調整鍵


JNBP3.5,HT;查詢時調整鍵


AJMPLOOP


MT:;分調整


ACALLDISP


JNBP3.4,MT;鍵消抖


INCM_1;分加1


MOVA,M_1


CJNEA,#60,LOOP;沒到60分返回,到60分清0


MOVM_1,#0


AJMPLOOP


HT:;時調整


ACALLDISP


JNBP3.5,HT


INCH_1


MOVA,H_1


CJNEA,#24,LOOP


MOVH_1,#0


AJMPLOOP


DISP:;顯示子程序


MOVDPTR,#NUMTAB;表地址送數據指針


MOVA,M_1;分送A


MOVB,#10


DIVAB;十進制調整


ADDA,R0;查表偏移量調整


MOVCA,@A+DPTR;查表


MOVP1,A;分十位送p1口顯示


CLRP3.2;開分十位顯示


ACALLD1MS;延時1ms


SETBP3.2;關顯示


MOVA,B;分個位p1口顯示


ADDA,R0


MOVCA,@A+DPTR


MOVP1,A


CLRP3.3


ACALLD1MS


SETBP3.3


MOVA,H_1;時送A


MOVB,#10


DIVAB


ADDA,R0


MOVCA,@A+DPTR


MOVP1,A


CLRP3.0;顯示時十位


ACALLD1MS


SETBP3.0


MOVA,B


ADDA,R0


MOVCA,@A+DPTR


MOVP1,A


CLRP3.1;顯示時個位


ACALLD1MS


SETBP3.1


RET;返回


TIMER:;定時中斷程序


PUSHACC;數據保護


PUSHPSW


MOVTL0,#0B9H;重置50ms定時值


MOVTH0,#03CH


DJNZ20H,RETI_1;到0.5秒了嗎?


MOV20H,#10


CPL25H.0;取反秒點閃爍標志位


JNB25H.0,T_1;標志位為0轉T_1


MOVR0,#0;查表偏移量寄存器置0(不顯示秒點)


AJMPT_2


T_1:


MOVR0,#10;查表偏移量寄存器置10(顯示秒點,秒點每秒閃爍1次)

 

T_2:


DJNZ21H,RETI_1;到1秒了嗎?


MOV21H,#2


INCS_1;秒加1


MOVA,S_1


CJNEA,#60,RETI_1;到60秒了嗎?


MOVS_1,#0;到60秒清0


INCM_1;分加1


MOVA,M_1


CJNEA,#60,RETI_1;到60分了嗎?


MOVM_1,#0


INCH_1;時加1


MOVA,H_1


CJNEA,#24,RETI_1;到24小時了嗎?


MOVH_1,#0


RETI_1:


POPPSW


POPACC


RETI


D1MS:;1毫秒延時


MOVR7,#2


D_1:


MOVR6,#250


DJNZR6,$


DJNZR7,D_1


RET


NUMTAB:


DB10H,0D3H,48H,41H,83H,21H,20H,53H,00H,01H;不顯示秒點


DB14H,0D7H,4CH,45H,87H,25H,24H,57H,04H,05H;顯示秒點


END

上一篇: 功率单位mw和dbm的换算表 下一篇: 上拉电阻和下拉电阻的选择

分享 举报