📄 mcuclock.txt
字号:
新:实用单片机电子钟的制作(汇编程序)
查看作者主页 发表时间:2006-5-18 17:12:37 点击:514
ORG 0000H
LJMP START
ORG 0003H
RETI
ORG 000BH
LJMP INTT0
ORG 0013H
RETI
ORG 001BH
LJMP INTT1
ORG 0023H
RETI
ORG 002BH
RETI
;&&&&&&&&&&&&&&&&&&&&&&&&&&
;主程序
;&&&&&&&&&&&&&&&&&&&&&&&&&&
START:
LCALL DL1S
CLR A
MOV 66H,A
MOV 67H,A
MOV 68H,A
MOV 69H,A
CLR 00H
CLR 01H
CLR 02H
CLR 03H
CLR 04H
CLR 05H
MOV SP,#27H
MOV R0,#70H
MOV R7,#0BH
;MOV 20H,#00H
CLEARDISP:
MOV @R0,#00H
INC R0
DJNZ R7,CLEARDISP
MOV 7AH,#0AH
; MOV 7AH,#0AH
MOV TMOD,#11H
MOV TL0,#0B0H
MOV TH0,#3CH
MOV TL1,#0B0H
MOV TH1,#3CH
SETB EA
SETB ET0
SETB TR0
MOV R4,#14H
START1:
LCALL DISPLAY;调显示
JNB P3.7,SETMM1
JNB 05H,START1
DINGSHIDAO:
JNB 05H,START1
JNB 05H,START1
CLR P1.7
MOV P3,#0F0H
LCALL BDL1S
SETB P1.7
CLR 05H
SJMP START1
SETMM1:
LJMP SETMM;SAOJIAN
;&&&&&&&&&&&&&&&&&&&&&&&&&&
;1秒定时
;&&&&&&&&&&&&&&&&&&&&&&&&&&
INTT0:
PUSH ACC
PUSH PSW
CLR ET0
CLR TR0
MOV A,#0B7H
ADD A,TL0
MOV TL0,A
MOV A,#3CH
ADD A,TH0
MOV TH0,A
SETB TR0
DJNZ R4,OUTT0
ADDSS:
MOV R4,#14H
MOV R0,#71H
ACALL ADD1
MOV A,R3
CLR C
CJNE A,#60H,ADDMM
ADDMM:
JC OUTT0
ACALL CLR0
MOV R0,#77H
ACALL ADD1
;---------------------------
MOV A,76H
CLR C
SUBB A,66H
JC ADDMM1
JNZ ADDMM1
MOV A,77H
CLR C
SUBB A,67H
JC ADDMM1
JNZ ADDMM1
MOV A,78H
CLR C
SUBB A,68H
JC ADDMM1
JNZ ADDMM1
MOV A,79H
CLR C
SUBB A,69H
JC ADDMM1
JNZ ADDMM1
SETB 05H
;---------------------------
ADDMM1:
MOV A,R3
CLR C
CJNE A,#60H,ADDHH
ADDHH:
JC OUTT0
ACALL CLR0
MOV R0,#79H
ACALL ADD1
MOV A,R3
CLR C
CJNE A,#24H,HOUR
HOUR:
JC OUTT0
ACALL CLR0
OUTT0:
JB 03H,OUTT01
JB 04H,OUTT01
MOV 72H,76H
MOV 73H,77H
MOV 74H,78H
MOV 75H,79H
AJMP OUTT02
OUTT01:
MOV 72H,66H
MOV 73H,67H
MOV 74H,68H
MOV 75H,69H
OUTT02:
POP PSW
POP ACC
SETB ET0
RETI
;&&&&&&&&&&&&&&&&&&&&&&&&&&
;生成闪烁……
;&&&&&&&&&&&&&&&&&&&&&&&&&&
INTT1:
PUSH ACC
PUSH PSW
MOV TL1,#0B0H
MOV TH1,#3CH
DJNZ R2,INTT1OUT
MOV R2,#07H
CPL 02H
NOP
NOP
NOP
NOP
JB 02H,FLASH1
NOP
NOP
JB 00H,FLASHH1
NOP
NOP
JB 01H,FLASHH1
MOV 72H,66H
MOV 73H,67H
MOV 74H,68H
MOV 75H,69H
AJMP INTT1OUT
FLASHH1:
MOV 72H,76H
MOV 73H,77H
MOV 74H,78H
MOV 75H,79H
INTT1OUT:
POP PSW
POP ACC
RETI
FLASH1:
JNB 00H,FLASH2
MOV 72H,7AH
MOV 73H,7AH
MOV 74H,78H
MOV 75H,79H
AJMP INTT1OUT
FLASH2:
JNB 01H,FLASH3
MOV 72H,76H
MOV 73H,77H
MOV 74H,7AH
MOV 75H,7AH
AJMP INTT1OUT
FLASH3:
JNB 03H,FLASH4
MOV 72H,7AH
MOV 73H,7AH
MOV 74H,68H
MOV 75H,69H
AJMP INTT1OUT
FLASH4:
JNB 04H,INTT1OUT
MOV 72H,66H
MOV 73H,67H
MOV 74H,7AH
MOV 75H,7AH
AJMP INTT1OUT
;&&&&&&&&&&&&&&&&&&&&&&&&&&
;秒加1程序
;&&&&&&&&&&&&&&&&&&&&&&&&&&
ADD1:
MOV A,@R0
DEC R0
SWAP A
ORL A,@R0
ADD A,#01H
DA A
MOV R3,A
ANL A,#0FH
MOV @R0,A
MOV A,R3
INC R0
SWAP A
ANL A,#0FH
MOV @R0,A
RET
;&&&&&&&&&&&&&&&&&&&&&&&&&&
;清零程序
;&&&&&&&&&&&&&&&&&&&&&&&&&&
CLR0:
CLR A
MOV @R0,A
DEC R0
MOV @R0,A
RET
;&&&&&&&&&&&&&&&&&&&&&&&&&&
;按键调整 时间 或 定时
;&&&&&&&&&&&&&&&&&&&&&&&&&&
;==========================
;以下为调整时间程序
;==========================
START2:
LJMP START1
SETMM:
LCALL DL1S
JB P3.7,START2
SETMMM:
JNB P3.7,SETMMM
CLR ET0
CLR TR0
SAOJ: ;CLR ET0
;CLR TR0
MOV P3,#0F0H
MOV P1,#80H
MOV 72H,#01H
MOV 73H,#00H
MOV 74H,#0BH
MOV 75H,#0AH
LCALL DISPLAY
NOP
MOV P3,#0F0H
MOV P1,#80H
NOP
NOP
NOP
NOP
JNB P3.5,ZFANY
JNB P3.4,QUD
JB P3.7,SAOJ
LCALL DS20MS
JB P3.7,SAOJ
SAOJOUT:
JNB P3.7,SAOJOUT
SETB ET0
SETB TR0
AJMP START1
ZFANY: AJMP FANY
;-------------------------
QUD:
LCALL DS20MS
JB P3.4,SAOJ
QUDD:
JNB P3.4,QUDD
MOV R2,#0AH
MOV 72H,76H
MOV 73H,77H
MOV 74H,78H
MOV 75H,79H
SETB ET1
SETB TR1
QUDD1:
CLR 01H
SETB 00H
QUDSAO: LCALL DISPLAY
JNB P3.7,QUDEND
JNB P3.5,QUDF
JB P3.4,QUDSAO
QUDJ:
LCALL DS20MS
JB P3.4,QUDSAO
QUDJ1: LCALL DISPLAY
JNB P3.4,QUDJ1
MOV R0,#77H
LCALL ADD1
MOV A,R3
CLR C
CJNE A,#60H,QUDJ2
QUDJ2:
JC QUDSAO
LCALL CLR0
CLR C
AJMP QUDSAO
;-------------------------------
QUDF:
LCALL DS20MS
JB P3.5,QUDSAO
QUDF1:
JNB P3.5,QUDF1
CLR 00H
SETB 01H
QUDFSAO:
LCALL DISPLAY
JNB P3.7,QUDEND
JNB P3.5,QUDFF
JB P3.4,QUDFSAO
QUDJF:
LCALL DS20MS
JB P3.4,QUDFSAO
QUDJF1: LCALL DISPLAY
JNB P3.4,QUDJF1
MOV R0,#79H
LCALL ADD1
MOV A,R3
CLR C
CJNE A,#24H,QUDJF2
QUDJF2:
JC QUDFSAO
LCALL CLR0
CLR C
AJMP QUDFSAO
QUDFF:
LCALL DS20MS
JB P3.5,QUDFSAO
QUDFF1:
JNB P3.5,QUDFF1
AJMP QUDD1
QUDEND:
LCALL DS20MS
JB P3.7,QUDSAO
QUDEND1:
JNB P3.7,QUDEND1
CLR 01H
CLR 00H
CLR 02H
CLR ET1
CLR TR1
AJMP SAOJ
;============================
;以下为定时程序段
;============================
ZFANY1: AJMP FANY1
ZSAOJ: AJMP SAOJ
FANY: LCALL DS20MS
JB P3.5,ZSAOJ
FANYY:
JNB P3.5,FANYY
SAOJ1:
MOV 72H,#02H
MOV 73H,#00H
MOV 74H,#0BH
MOV 75H,#0AH
LCALL DISPLAY
NOP
JNB P3.5,ZFANY1
JNB P3.4,QUD1
JB P3.7,SAOJ1
LCALL DL1S
JB P3.7,SAOJ1
SAOJOUT1:
JNB P3.7,SAOJOUT1
AJMP START1
QUD1:
LCALL DS20MS
JB P3.4,SAOJ1
DQUDD:
JNB P3.4,DQUDD
MOV R2,#0AH
MOV 72H,66H
MOV 73H,67H
MOV 74H,68H
MOV 75H,69H
SETB ET1
SETB TR1
DQUDD1:
CLR 04H
SETB 03H
DQUDSAO: LCALL DISPLAY
JNB P3.7,DQUDEND
JNB P3.5,DQUDF
JB P3.4,DQUDSAO
DQUDJ:
LCALL DS20MS
JB P3.4,DQUDSAO
DQUDJ1: LCALL DISPLAY
JNB P3.4,DQUDJ1
MOV R0,#67H
LCALL ADD1
MOV A,R3
CLR C
CJNE A,#60H,DQUDJ2
DQUDJ2:
JC DQUDSAO
LCALL CLR0
CLR C
AJMP DQUDSAO
;-------------------------------
DQUDF:
LCALL DS20MS
JB P3.5,DQUDSAO
DQUDF1:
JNB P3.5,DQUDF1
CLR 03H
SETB 04H
DQUDFSAO:
LCALL DISPLAY
JNB P3.7,DQUDEND
JNB P3.5,DQUDFF
JB P3.4,DQUDFSAO
DQUDJF:
LCALL DS20MS
JB P3.4,DQUDFSAO
DQUDJF1: LCALL DISPLAY
JNB P3.4,DQUDJF1
MOV R0,#69H
LCALL ADD1
MOV A,R3
CLR C
CJNE A,#24H,DQUDJF2
DQUDJF2:
JC DQUDFSAO
LCALL CLR0
CLR C
AJMP DQUDFSAO
DQUDFF:
LCALL DS20MS
JB P3.5,DQUDFSAO
DQUDFF1:
JNB P3.5,DQUDFF1
AJMP DQUDD1
DQUDEND:
LCALL DS20MS
JB P3.7,DQUDSAO
DQUDEND1:
JNB P3.7,DQUDEND1
CLR 03H
CLR 04H
CLR 02H
CLR ET1
CLR TR1
AJMP SAOJ
ZSAOJ1: AJMP SAOJ1
FANY1:
LCALL DS20MS
JB P3.5,ZSAOJ1
FANY1Y:
JNB P3.5,FANY1Y
AJMP SAOJ
;&&&&&&&&&&&&&&&&&&&&&&&&&&
;显示程序
;&&&&&&&&&&&&&&&&&&&&&&&&&&
DISPLAY:
MOV R1,#72H
MOV R5,#01H
PLAYA:
MOV A,R5
ORL A,#0F0H
MOV P3,A
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
NOP
LCALL DL1MS
MOV P1,#80H
NOP
MOV P3,#0F0H
NOP
INC R1
MOV A,R5
ANL A,#0FH
JB ACC.3,ENDOUT
RL A
MOV R5,A
AJMP PLAYA
ENDOUT:
MOV P3,#0F0H
MOV P1,#80H
RET
TAB:
DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH,80H,0F9H
;&&&&&&&&&&&&&&&&&&&&&&&&&&
;延时程序
;&&&&&&&&&&&&&&&&&&&&&&&&&&
DL1MS:
MOV R6,#14H
DL1:
MOV R7,#19H
DL2:
DJNZ R7,DL2
DJNZ R6,DL1
RET
;--------------------------
DS20MS:
ACALL DISPLAY
ACALL DISPLAY
ACALL DISPLAY
RET
;--------------------------
DL1S:
LCALL DL05S
LCALL DL05S
RET
;--------------------------
DL05S:
MOV R3,#20H
DL05S1:
LCALL DISPLAY
DJNZ R3,DL05S1
RET
;--------------------------
BDL1S:
MOV R6,#0FFH
BDL1:
MOV R7,#0FFH
BDL2: NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R7,BDL2
DJNZ R6,BDL1
RET
;&&&&&&&&&&&&&&&&&&&&&&&&&&
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -