电子课程设计电子钟程序代码.docx
《电子课程设计电子钟程序代码.docx》由会员分享,可在线阅读,更多相关《电子课程设计电子钟程序代码.docx(12页珍藏版)》请在冰豆网上搜索。
电子课程设计电子钟程序代码
该程序可以实现手动定时计数,也可以在3X4键盘上定时计数,还可以实现复位、重启定时操作,完全可以满足课程设计的要求。
;初始化***************************************
Hourequ20h
Minuteequ21h
Secondequ22h
K1EQUP1.0
K2EQUP1.1
K3EQUP1.2
ORG0000h
LJMPMAIN
ORG000bh
LJMPIN0
;主程序入口************************************
MAIN:
movp1,#0ffh
movsp,#67h
movdptr,#0ff23h;写控制口
movA,#81h
movx@dptr,A
movHour,#0
movMinute,#0
movSecond,#0
MOVTH0,#2CH
MOVTL0,#12H;定时50ms
MOVP2,#0FFH
MOV7EH,#00H;6个显缓单元,
MOV7DH,#00H
MOV7CH,#00H
MOV7BH,#00H
MOV7AH,#00H
MOV79H,#00H
MOVR0,#59H
MOVA,#7EH;01111110B
MOVX@R0,A
LCALLLCK0
LCALLPTDS0
MOVR7,#100
movIE,#82h;EA=1,ET0=1
setbTR0;定时器0计数
;用拨动开关进行调时*****************************
MLoop:
JNBK3,LP0
LCALLDEL1
JNBK3,MLoop
LP5:
JNBK1,LP1
LCALLDEL1
JNBK1,MLoop
LP2:
JBK1,LP2
LCALLDEL1
JBK1,LP2
INCMinute
MOVA,Minute
CJNEA,#3ch,LP11
LP11:
JCLP1
MOVMinute,#00H
LP1:
ACALLDISplay
JNBK2,MLoop
LCALLDEL1
JNBK2,LP1
LP6:
JBK2,LP6
LCALLDEL1
JBK2,LP6
MOVA,#00H
MOVDPTR,#0FF20H
MOVX@DPTR,A
INCHOUR
MOVA,HOUR
CJNEA,#18h,LP81
LP81:
JCLP0
MOVHOUR,#00H
LP8:
ACALLDISplay
MOVDPTR,#0FF20H
MOVA,#0FFH
MOVX@DPTR,A
LJMPMLoop
LP0:
ACALLDISplay
LJMPMLoop
;中断服务子程序*************************************
IN0:
pushPSW
pushACC
MOVTH0,#2CH
MOVTL0,#12H
CLRTR0
DJNZR7,Exit1
MOVR7,#100
incSecond
mova,Second
cjnea,#60,Exit1
movSecond,#0
incMinute
mova,Minute
cjnea,#60,Exit1
movMinute,#0
incHour
mova,Hour
cjnea,#24,Exit1
movHour,#0
Exit1:
SETBTR0
popACC
popPSW
reti
;字形码*********************************************
LEDBufequ60h;显示缓冲
LEDMAP:
;八段管显示码
db0c0h,0f9h,0a4h,0b0h,99h,92h,82h
db0f8h,80h,90h
;延时200us子程序************************************
del1:
movr5,#10
del:
movr6,#10
del6:
djnzr6,del6
djnzr5,del
ret
;六段数码管显示子程序*******************************
DisplayLED:
movr3,#0feh
movr0,#LEDBuf+1;r0为显示缓冲区
loop:
movdptr,#0ff20h;a口
mova,r3
movx@dptr,a
mova,@r0
movdptr,#0ff21h;b口
movx@dptr,a
acalldel1
incr0
mova,r3
jnbacc.5,ld1
rla
movr3,a
sjmploop
ld1:
ret
;查表子程序*****************************************
ToLED:
movdptr,#LEDMap;显示程序
movca,@a+dptr
ret
;秒、分、时送以61H为首的显缓单元*********************
DISplay:
mova,Second
movb,#10
divab
callToLED
movLEDBuf+2,a
mova,b
callToLED
movLEDBuf+1,a
mova,Minute
movb,#10
divab
callToLED
movLEDBuf+4,a
mova,b
callToLED
movLEDBuf+3,a
mova,Hour
movb,#10
divab
callToLED
movLEDBuf+6,a
mova,b
callToLED
movLEDBuf+5,a
callDisplayLED
RET
X3:
MOVR4,A
MOVR0,#59H
MOVXA,@R0
MOVR1,A
MOVA,R4
MOV@R1,A
CLRA
POPDPH
POPDPL
MOVCA,@A+DPTR
INCDPTR
CJNEA,01H,X30
CLRA
MOVCA,@A+DPTR
X31:
MOVX@R0,A
INCDPTR
PUSHDPL
PUSHDPH
RET
X30:
DECR1
MOVA,R1
SJMPX31
X2:
MOVR6,#50H
X0:
ACALLXLE
JNBACC.5,XX0
DJNZR6,X0
MOVR6,#20H
MOVR0,#59H
MOVXA,@R0
MOVR0,A
MOVA,@R0
MOVR7,A
MOVA,#10H
MOV@R0,A
X1:
ACALLXLE
JNBACC.5,XX1
DJNZR6,X1
MOVA,R7
MOV@R0,A
SJMPX2
XX1:
MOVR6,A
MOVA,R7
MOV@R0,A
MOVA,R6
XX0:
RET
XLE:
ACALLDIS
ACALLKEY
MOVR4,A
MOVR1,#48H
MOVXA,@R1
MOVR2,A
INCR1
MOVXA,@R1
MOVR3,A
MOVA,R4
XRLA,R3
MOVR3,04H
MOVR4,02H
JZX10
MOVR2,#88H
MOVR4,#88H
X10:
DECR4
MOVA,R4
XRLA,#82H
JZX11
MOVA,R4
XRLA,#0EH
JZX11
MOVA,R4
ORLA,R4
JZX12
MOVR4,#20H
DECR2
SJMPX13
X12:
MOVR4,#0FH
x11:
MOVR2,04H
MOVR4,03H
X13:
MOVR1,#48H
MOVA,R2
MOVX@R1,A
INCR1
MOVA,R3
MOVX@R1,A
MOVA,R4
RET
LS3:
DB07H,04H,08H,05H,09H,06H,0AH
DB0BH,01H,00H,02H,0FH,03H,0EH
DB0CH,0DH
DIS:
PUSHDPH
PUSHDPL
SETBRS1
MOVR0,#7EH
MOVR2,#20H
MOVR3,#00H
MOVDPTR,#LS0
LS2:
MOVA,@R0
MOVCA,@A+DPTR
MOVR1,#21H
MOVX@R1,A
MOVA,R2
CPLA
DECR1
MOVX@R1,A
CPLA
DECR0
LS1:
DJNZR3,LS1
CLRC
RRCA
MOVR2,A
JNZLS2
INCR1
MOVA,#0FFH
MOVX@R1,A
CLRRS1
POPDPL
POPDPH
RET
LS0:
DB0C0H,0F9H,0A4H,0B0H,99H,92H
DB82H,0F8H,80H,90H,88H,83H,0C6H
DB0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH
KEY:
SETBRS1
MOVR2,#0FEH
MOVR3,#08H
MOVR0,#00H
L1:
MOVA,R2
MOVR1,#20H
MOVX@R1,A
RLA
MOVR2,A
MOVR1,#22H
MOVXA,@R1
CPLA
ANLA,#0FH
JNZL0
INCR0
DJNZR3,L1
MOVXA,@R1
JBACC.4,XP33
MOVA,#20H
SJMPXP3
XP33:
MOVA,#20H
XP3:
CLRRS1
RET
L0:
CPLA
JBACC.0,XP0
MOVA,#00H
SJMPLPP
XP0:
JBACC.1,XP1
MOVA,#08H
SJMPLPP
XP1:
JBACC.2,XP2
MOVA,#10H
SJMPLPP
XP2:
JBACC.3,XP33
MOVA,#18H
LPP:
ADDA,R0
CLRRS1
CJNEA,#10H,LX0
LX0:
JNCXP35
MOVDPTR,#LS3
MOVCA,@A+DPTR
XP35:
RET
LCK0:
LCALLX2
JNCLCK1
LCALLX3
MOVR1,#7EH
SJMPLCK0
LCK1:
CJNEA,#16H,LCK0
MOVA,7AH
SWAPA
ORLA,79H
MOV22H,A
CJNEA,#60H,LCK2
LCK2:
JNCEXIT
MOVA,7CH
SWAPA
ORLA,7BH
MOV21H,A
CJNEA,#60H,CLK3
CLK3:
JNCEXIT
MOVA,7EH
SWAPA
ORLA,7DH
MOV20H,A
CJNEA,#24H,CLK4
CLK4:
JNCEXIT
RET
EXIT:
AJMPLCK0
PTDS0:
MOVR0,#79H
MOVA,22H
ACALLPTDS
MOVA,21H
ACALLPTDS
MOVA,20H
ACALLPTDS
RET
PTDS:
MOVR1,A
LCALLPTDS1
MOVA,R1
SWAPA
PTDS1:
ANLA,#0FH
MOV@R0,A
INCR0
RET
END