此電子鐘是我用計數器改裝的,經測試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
专业无线总汇
QQ:1002421875 无线技术交流群(群号81069762(满)65332649)
MSN:yunjiakeji@hotmail.com
Skype:yunjiakeji EMAIL:myb33695@163.com
PHONE:13430970167 http://shop35991384.taobao.com
文章评论(0条评论)
登录后参与讨论