单片机 电子时钟 6位数码管.docx
《单片机 电子时钟 6位数码管.docx》由会员分享,可在线阅读,更多相关《单片机 电子时钟 6位数码管.docx(10页珍藏版)》请在冰豆网上搜索。
![单片机 电子时钟 6位数码管.docx](https://file1.bdocx.com/fileroot1/2023-1/31/a3a64b71-265f-44b3-80dc-68f061d4a15d/a3a64b71-265f-44b3-80dc-68f061d4a15d1.gif)
单片机电子时钟6位数码管
org00h
;显示缓冲单元在70H—75H,70H—71H显示秒,72H—73H显示分,74H—75H显示时
;时间计数单元在70H—71H(秒)、76H—77H(分)、78H—79H(时),7AH单元放熄灭符(#0AH)
;计数单元采用BCD码计数,定时器T0设置为50MS溢出中断,为秒计数用,定时器T1为调整时闪烁用
;P3.2为调整按钮,P1口为字符输出口,采用共阳显示管。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;中断入口程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
ORG0000H
LJMPSTART
ORG0003H
RETI
ORG000BH
LJMPINTT0
ORG0013H
RETI
ORG001BH
LJMPINTT1
ORG0023H
RETI
ORG002BH
RETI
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;主程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
START:
MOVR0,#70H
MOVR7,#0BH
MOV20H,#00H
CLEARDISP:
MOV@R0,#00H
INCR0
DJNZR7,CLEARDISP
MOV7AH,#0AH
MOVTMOD,#11H
MOVTL0,#0B0H
MOVTH0,#3CH
MOVTL1,#0B0H
MOVTH1,#3CH
SETBEA
SETBET0
SETBTR0
MOVR4,#14H
start1:
LCALLDISPLAY
JNBP3.2,SETMM1
SJMPStart1
SETMM1:
LJMPSETMM
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;1秒定时程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
INTT0:
PUSHACC
PUSHPSW
CLRET0
CLRTR0
MOVA,#0B7H;中断同步修正
ADDA,TL0
MOVTL0,A
MOVA,#3CH
ADDA,TH0
MOVTH0,A
SETBTR0
DJNZR4,OUTT0
ADDSS:
MOVR4,#14H
MOVR0,#71H
ACALLADD1;加1程序
MOVA,R3
CLRC
CJNEA,#60H,ADDMM
ADDMM:
JCOUTT0
ACALLCLR0
MOVR0,#77H
ACALLADD1
MOVA,R3
CLRC
CJNEA,#60H,ADDHH
ADDHH:
JCOUTT0
ACALLCLR0
MOVR0,#79H
ACALLADD1
MOVA,R3
CLRC
CJNEA,#24H,HOUR
HOUR:
JCOUTT0
ACALLCLR0
OUTT0:
MOV72H,76H
MOV73H,77H
MOV74H,78H
MOV75H,79H
POPPSW
POPACC
SETBET0
RETI
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;闪动调时程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
INTT1:
PUSHACC
PUSHPSW
MOVTL1,#0B0H
MOVTH1,#3CH
DJNZR2,INTT1OUT
MOVR2,#06H
CPL02H
JB02H,FLASH1
MOV72H,76H
MOV73H,77H
MOV74H,78H
MOV75H,79H
INTT1OUT:
POPPSW
POPACC
RETI
FLASH1:
JB01H,FLASH2
MOV72H,7AH
MOV73H,7AH
MOV74H,78H
MOV75H,79H
AJMPINTT1OUT
FLASH2:
MOV72H,76H
MOV73H,77H
MOV74H,7AH
MOV75H,7AH
AJMPINTT1OUT
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;加1程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
ADD1:
MOVA,@R0
DECR0
SWAPA
ORLA,@R0
ADDA,#01H
DAA
MOVR3,A
ANLA,#0FH
MOV@R0,A
MOVA,R3
INCR0
SWAPA
ANLA,#0FH
MOV@R0,A
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;清零程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
CLR0:
CLRA
MOV@R0,A
DECR0
MOV@R0,A
RET
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;时钟调整程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
SETMM:
cLRET0
CLRTR0
LCALLDL1S
JBP3.2,CLOSEDIS
MOVR2,#06H
SETBET1
SETBTR1
SET2:
JNBP3.2,SET1
SETB00H
SET4:
JBP3.2,SET3
LCALLDL05S
JNBP3.2,SETHH
MOVR0,#77H;加1分程序
LCALLADD1
MOVA,R3
CLRC
CJNEA,#60H,HHH
HHH:
JCSET4
LCALLCLR0
CLRC
AJMPSET4
CLOSEDIS:
SETBET0
SETBTR0
CLOSE:
JBP3.2,CLOSE
LCALLDISPLAY
JBP3.2,CLOSE
WAITH:
JNBP3.2,WAITH
LJMPSTART1
SETHH:
CLR00H
SETHH1:
JNBP3.2,SET5
SETB01H
SET6:
JBP3.2,SET7
LCALLDL05S
JNBP3.2,SETOUT
MOVR0,#79H
LCALLADD1
MOVA,R3
CLRC
CJNEA,#24H,HOUU
HOUU:
JCSET6
LCALLCLR0
AJMPSET6
SETOUT:
JNBP3.2,SETOUT1
LCALLDISPLAY
JNBP3.2,SETOUT
CLR01H
CLR00H
CLR02H
CLRTR1
CLRET1
SETBTR0
SETBET0
LJMPSTART1
SET1:
LCALLDISPLAY
AJMPSET2
SET3:
LCALLDISPLAY
AJMPSET4
SET5:
LCALLDISPLAY
AJMPSETHH1
SET7:
LCALLDISPLAY
AJMPSET6
SETOUT1:
LCALLDISPLAY
AJMPSETOUT
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;显示程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
DISPLAY:
MOVR1,#70H
MOVR5,#0BFH
PLAY:
MOVA,R5
MOVP2,A
MOVA,@R1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
LCALLDL1MS
INCR1
MOVA,R5
JNBACC.1,ENDOUT
RRA
MOVR5,A
AJMPPLAY
ENDOUT:
SETBP2.1
MOVP0,#0FFH
RET
TAB:
DB28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;延时程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
DL1MS:
MOVR6,#14H
DL1:
MOVR7,#19H
DL2:
DJNZR7,DL2
DJNZR6,DL1
RET
;
DS20MS:
ACALLDISPLAY
ACALLDISPLAY
ACALLDISPLAY
RET
DL1S:
LCALLDL05S
LCALLDL05S
RET
DL05S:
MOVR3,#20H
DL05S1:
LCALLDISPLAY
DJNZR3,DL05S1
RET
END