⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xdlkz.aqd

📁 这是一个时钟程序
💻 AQD
字号:
ORG 00H
JMP START ;开机跳至初始化程序
ORG 0BH
LJMP TIMEO ;跳至定时器0中断服务子程序
ORG 01BH
LJMP TIMEI ;跳至定时器中断服务子程序
START:MOV TMOD,#11H ;设定两定时器为定时模式,工作方式1
SETB EA ;开总中断
SETB ET1 ;开定时器1中断
SETB ET0 ;开定时器0中断
SETB PT0 ;设定定时器0为优先中断
MOV TH0,#3CH ;定时器装
MOV TL0,#0B0H ;入初值
MOV 44H,#0AH
MOV 45H,#0AH
MOV 46H,#0AH
MOV 47H,#0AH
MOV 48H,#0
MOV 49H,#0
MOV 4AH,#0
MOV 4BH,#0
MOV 4CH,#6
MOV 4DH,#0
MOV 4EH,#14
MOV 4FH,#0
MOV 50H,#22
MOV 51H,#0
MOV 52H,#30H
MOV 53H,#1
MOV 54H,#1
MOV 55H,#1
MOV 56H,#0
MOV P1,#0FBH
MOV SP,#71H
MOV 23H,#20 ;设定20次中断
SETB TR0 ;开定时器0
; 按键识别程序
KEY1:JB P3.2,KEY2 ;P3.2等于0?是则调用KEYQHCX,否则跳至KEY2
LCALL DELAY
LCALL KEYQHCX
JNB P3.2,$
KEY2:JB P3.5,KEY3 ;P3.5=1?是则跳至KEY3,否则调用KEYHJY
LCALL DELAY ;调用延时子程序
LCALL KEYHJY
JNB P3.5,$
KEY3:JB P3.6,KEY4
LCALL DELAY
LCALL KEYMJY
JNB P3.6,$
KEY4:JB P3.7,X6 ;P3.7=1?是则至X6,否则调用KEYGNXZ
LCALL DELAY
LCALL KEYGNXZ
JNB P3.7,$
X6:LCALL JY ;调用调压子程序
;比较定时程序
MOV A,48H
CJNE A,51H,DISPLAY
MOV A,49H
CJNE A,4BH,DS2
MOV A,4AH
CJNE A,4CH,DS2
LCALL YLKZ
DS2:MOV A,49H
CJNE A,4DH,DS3
MOV A,4AH
CJNE A,4EH,DS3
LCALL ELKZ
DS3:MOV A,49H
CJNE A,4FH,DISPLAY
MOV A,4AH
CJNE A,50H,DISPLAY
LCALL SLKZ
;显示程序
DISPLAY:MOV R0,52H ;要显示的值首地址存52H
MOV R2,#7FH ;从P2.7开始扫描
PLAY:MOV A,@R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
INC R0
MOV A,R2
MOV P2,A
LCALL DELAY
MOV A,R2
JNB ACC.4,KEY1 ;四位显示完了,是则重新开始显示,否则断续显示
RR A
MOV R2,A
JMP PLAY
TIMEO:PUSH ACC
PUSH B
PUSH PSW
CLR TR0 ;关定时器0
MOV TH0,#3CH ;重新装入初值
MOV TL0,#0A4H
SETB TR0 ;开定时器0
DJNZ 23H,BACK ;20次中断完了吗?是则P2.3求反,重新设定中断次数,秒加1,否则继续计时
CPL P2.3
MOV 23H,#20
MOV A,48H
ADD A,#1
MOV 48H,A
CJNE A,#60,BACK ;60秒到了吗?是则秒寄存器清零,分加1,否则返回
MOV 48H,#00H
MOV A,49H
ADD A,#1
MOV 49H,A
CJNE A,#60,BACK ;60分到了吗?是则分寄存器清零,时加1,否则返回
MOV 49H,#00H
MOV A,4AH
ADD A,#1
MOV 4AH,A
CJNE A,#24,BACK ;24时到了?是则时寄存器清零,否则返回
MOV 4AH,#00H
BACK:POP PSW
POP B
POP ACC
RETI
;显示切换程序
KEYQHCX:MOV A,53H
ADD A,#1
CJNE A,#6,Y1
MOV A,#0
Y1:MOV 53H,A
MOV 54H,A
MOV 55H,A
CJNE A,#0,Y2
SETB P1.0
SETB P1.1
SETB P1.2
MOV 52H,#44H
RET
Y2:CJNE A,#1,Y3
SETB P1.0
SETB P1.1
CLR P1.2
MOV 52H,#30H
RET
Y3:CJNE A,#2,Y4
SETB P1.0
CLR P1.1
SETB P1.2
MOV 52H,#34H
RET
Y4:CJNE A,#3,Y5
SETB P1.0
CLR P1.1
CLR P1.2
MOV 52H,#38H
Y5:CJNE A,#4,Y6
CLR P1.0
SETB P1.1
SETB P1.2
MOV 52H,#3CH
RET
Y6:CJNE A,#5,Y7
CLR P1.0
SETB P1.1
CLR P1.2
MOV 52H,#40H
Y7:RET
;时加一程序
KEYHJY:MOV A,54H
CJNE A,#0,N1
CPL P1.6
RET
N1:CJNE A,#1,N2
MOV A,4AH
ADD A,#1
CJNE A,#24,K1
MOV A,#0
K1:MOV 4AH,A
RET
N2:CJNE A,#2,N3
MOV A,51H
ADD A,#1
CJNE A,#60,K2
MOV A,#0
K2:MOV 51H,A
RET
N3:CJNE A,#3,N4
MOV A,4CH
ADD A,#1
CJNE A,#24,K3
MOV A,#0
K3:MOV 4CH,A
RET
N4:CJNE A,#4,N5
MOV A,4EH
ADD A,#1
CJNE A,#24,K4
MOV A,#0
K4:MOV 4EH,A
RET
N5:CJNE A,#5,N6
MOV A,50H
ADD A,#1
CJNE A,#24,K5
MOV A,#0
K5:MOV 50H,A
N6:RET
;分加一程序
KEYMJY:MOV A,55H
CJNE A,#0,M1
CPL P1.7
RET
M1:CJNE A,#1,M2
MOV A,49H
ADD A,#1
CJNE A,#60,E1
MOV A,#0
E1:MOV 49H,A
RET
M2:CJNE A,#2,M3
MOV A,48H
ADD A,#1
CJNE A,#60,E2
MOV A,#0
E2:MOV 48H,A
RET
M3:CJNE A,#3,M4
MOV A,4BH
ADD A,#1
CJNE A,#60,E3
MOV A,#0
E3:MOV 4BH,A
RET
M4:CJNE A,#4,M5
MOV A,4DH
ADD A,#1
CJNE A,#60,E4
MOV A,#0
E4:MOV 4DH,A
RET
M5:CJNE A,#5,M6
MOV A,4FH
ADD A,#1
CJNE A,#60,E5
MOV A,#0
E5:MOV 4FH,A
M6:RET
;功能选择程序
KEYGNXZ:MOV A,56H
ADD A,#1
CJNE A,#8,G1
MOV A,#0
G1:MOV 56H,A
CJNE A,#0,S1
SETB P1.6
SETB P1.7
SETB P1.3
SETB P1.4
SETB P1.5
RET
S1:CJNE A,#1,S2
SETB P1.6
SETB P1.7
SETB P1.3
SETB P1.4
CLR P1.5
RET
S2:CJNE A,#2,S3
SETB P1.6
SETB P1.7
SETB P1.3
CLR P1.4
SETB P1.5
RET
S3:CJNE A,#3,S4
SETB P1.6
SETB P1.7
SETB  P1.3
CLR P1.4
CLR P1.5
RET
S4:CJNE A,#4,S5
SETB P1.6
SETB P1.7
CLR P1.3
SETB P1.4
SETB P1.5
RET
S5:CJNE A,#5,S6
CLR P1.6
CLR P1.7
CLR P1.3
SETB P1.4
CLR P1.5
RET
S6:CJNE A,#6,S7
SETB P1.6
SETB P1.7
CLR P1.3
CLR P1.4
SETB P1.5
RET
S7:CJNE A,#7,S8
SETB P1.6
SETB P1.7
CLR P1.3
CLR P1.4
CLR P1.5
S8:RET
;定时器1控制
YLKZ:MOV A,56H
CJNE A,#0,K11
LCALL ALARM
RET
K11:CJNE A,#1,K12
CLR P1.6
LCALL ALARM
RET
K12:CJNE A,#2,K13
CLR P1.6
LCALL ALARM
RET
K13:CJNE A,#3,K14
CLR P1.6
RET
K14:CJNE A,#4,K15
CLR P1.6
RET
K15:CJNE A,#5,K16
SETB P1.6
RET
K16:CJNE A,#6,K17
CLR P1.6
RET
K17:CJNE A,#7,K18
CLR P1.6
LCALL ALARM
K18:RET
;定时器2
ELKZ:MOV A,56H
CJNE A,#0,K21
LCALL ALARM
RET
K21:CJNE A,#1,K22
SETB P1.6
LCALL ALARM
RET
K22:CJNE A,#2,K23
CLR P1.7
LCALL ALARM
RET
K23:CJNE A,#3,K24
SETB P1.6
RET
K24:CJNE A,#4,K25
CLR P1.7
RET
K25:CJNE A,#5,K26
SETB P1.7
RET
K26:CJNE A,#6,K27
CLR P1.7
RET
K27:CJNE A,#7,K28
CLR P1.7
LCALL ALARM
K28:RET
;定时器3
SLKZ:MOV A,56H
CJNE A,#0,K31
LCALL ALARM
RET
K31:CJNE A,#1,K32
LCALL ALARM
RET
K32:CJNE A,#2,K33
LCALL ALARM
RET
K33:CJNE A,#6,K34
SETB P1.6
SETB P1.7
RET
K34:CJNE A,#7,K35
SETB P1.6
SETB P1.7
LCALL ALARM
K35:RET
JY:MOV A,51H
MOV B,#10
DIV AB
MOV 34H,B
MOV 35H,A
MOV A,48H
MOV B,#10
DIV AB
MOV 36H,B
MOV 37H,A
MOV A,49H
MOV B,#10
DIV AB
MOV 32H,B
MOV 33H,A
MOV A,4AH
MOV B,#10
DIV AB
MOV 30H,B
MOV 31H,A
MOV A,4CH  ;解码程序
MOV B,#10
DIV AB
MOV 38H,B
MOV 39H,A
MOV A,4BH
MOV B,#10
DIV AB
MOV 3AH,B
MOV 3BH,A
MOV A,4EH
MOV B,#10
DIV AB
MOV 3CH,B
MOV 3DH,A
MOV A,4DH
MOV B,#10
DIV AB
MOV 3EH,B
MOV 3FH,A
MOV A,50H
MOV B,#10
DIV AB
MOV 40H,B
MOV 41H,A
MOV A,4FH
MOV B,#10
DIV AB
MOV 42H,B
MOV 43H,A
RET
ALARM:MOV 57H,#00  ;音乐程序(兰花草)
NEXT:MOV A,57H
MOV DPTR,#TABLE2
MOVC A,@A+DPTR    ;音乐程序参考《单片机实践与应用》,有所改动
MOV 58H,A
JZ END0
ANL A,#0FH
MOV R5,A
MOV A,58H
SWAP A
ANL A,#0FH
JNZ SING
CLR TR1
JMP X1
SING:DEC A
MOV 22H,A
RL A
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV TH1,A
MOV 21H,A
MOV A,22H
RL A
INC A
MOVC A,@A+DPTR
MOV TL1,A
MOV 20H,A
SETB TR1
X1:CALL DELAY1
INC 57H
JMP NEXT
END0:CLR TR1
SETB P2.0
RET
TIMEI:PUSH  ACC
PUSH B
PUSH PSW
MOV TL1,20H
MOV TH1,21H
CPL P2.0
POP PSW
POP B
POP ACC
RETI
DELAY:MOV 59H,#11
X4:MOV 5AH,#250
DJNZ 5AH,$
DJNZ 59H,X4
RET
DELAY1:MOV R7,#2
X2:MOV R4,#187
X3:MOV R3,#248
DJNZ R3,$
DJNZ R4,X3
DJNZ R7,X2
DJNZ R5,DELAY1
RET
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
TABLE1:DW 64021,64103,64260,64400
DW 64524,64580,64684,64777
DW 64820,64898,64968,65030
DW 64934
TABLE2:
DB 42H,82H,82H,82H,84H,02H,72H
DB 62H,72H,62H,52H,48H
DB 0B2H,0B2H,0B2H,0B2H,0B4H,02H,0A2H
DB 12H,0A2H,0D2H,92H,88H
DB 82H,0B2H,0B2H,0A2H,84H,02H,72H
DB 62H,72H,62H,52H,44H,02H,12H
DB 12H,62H,62H,52H,44H,02H,82H
DB 72H,62H,52H,32H,48H
DB 00H
END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -