📄 闹钟.asm
字号:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP SECTION
ORG 000BH
LJMP TIME
ORG 0013H
LJMP SECTION0
ORG 001BH
LJMP T1INT
ORG 0020H
MAIN:RING EQU 46H
MOV SP,#50H
MOV TCON,#05H
MOV 20H,#00H
MOV 21H,#00H
MOV 22H,#00H
MOV 23H,#00H
MOV 30H,#00H
MOV 31H,#00H
MOV 32H,#00H
MOV 33H,#00H
MOV 34H,#00H
MOV 35H,#00H
MOV 24H,#00H
MOV 25H,#00H
MOV 26H,#00H
MOV 27H,#00H
MOV 40H,#00H
MOV 41H,#00H
MOV 42H,#00H
MOV 43H,#00H
MOV 44H,#00H
MOV 45H,#00H
MOV TMOD,#11H
MOV TH0,#03CH
MOV TL0,#0B0H
MOV TH1,#0EFH
MOV TL1,#0FFH
MOV IE,#10001111B
SETB TR0
SETB TR1
MOV R2,#0AH
MOV P2,#0FFH
ML1:LCALL DISP
MOV A,21H
CJNE A,25H,K0
MOV A,22H
CJNE A,26H,K0
SETB RING
K0: JB P1.1,K1
MOV C,P1.1
JC K1
LCALL DELAY
MOV C,P1.1
JC K1
STOP2:MOV C,P1.1
JNC STOP2
LCALL DELAY
MOV C,P1.1
JNC STOP2
ML2: LCALL DISP1
LJMP QQQ
FEAR:LJMP ML1
QQQ: JB 27H.0,ML1
JB P1.0,ML2
MOV C,P1.0
JC ML2
LCALL DELAY
MOV C,P1.0
JC ML2
STOP4:MOV C,P1.0
JNC STOP4
LCALL DELAY
MOV C,P1.0
JNC STOP4
JB 23H.0 ,HOUR1
MIN1:INC 25H
MOV A,25H
CJNE A,#3CH,GO33
MOV 25H,#0
MOV 42H,#0
MOV 43H,#0
SJMP ML2
GO33:MOV B,#0AH
DIV AB
MOV 42H,B
MOV 43H,A
AJMP ML2
HOUR1:INC 26H
MOV A,26H
CJNE A,#18H,GO44
MOV 26H,#0
MOV 44H,#0
MOV 45H,#0
SJMP ML2
GO44:MOV B,#0AH
DIV AB
MOV 44H,B
MOV 45H,A
AJMP ML2
K1:JB P1.0,FEAR
MOV C,P1.0
JC FEAR
LCALL DELAY
MOV C,P1.0
JC FEAR
STOP1:MOV C,P1.0
JNC STOP1
LCALL DELAY
MOV C,P1.0
JNC STOP1
JB 23H.0,HOUR
MIN:INC 21H
MOV A,21H
CJNE A,#3CH,GO11
MOV 21H,#0
MOV 32H,#0
MOV 33H,#0
AJMP FEAR
GO11:MOV B,#0AH
DIV AB
MOV 32H,B
MOV 33H,A
AJMP ML1
HOUR:INC 22H
MOV A,22H
CJNE A,#18H,GO22
MOV 22H,#0
MOV 34H,#0
MOV 35H,#0
AJMP FEAR
GO22:MOV B,#0AH
DIV AB
MOV 34H,B
MOV 35H,A
AJMP FEAR
DELAY:MOV R4,#14H
DL00:MOV R5,#0FFH
DL11:DJNZ R5,DL11
DJNZ R4,DL00
RET
TIME:PUSH ACC
PUSH PSW
MOV TH0,#03CH
MOV TL0,#0B0H
DJNZ R2,RET0
MOV R2,#0AH
MOV A,20H
CLR C
INC A
CJNE A,#3CH,GO1
MOV 20H,#0
MOV 30H,#0
MOV 31H,#0
MOV A,21H
INC A
CJNE A,#3CH,GO2
MOV 21H,#0
MOV 32H,#0
MOV 33H,#0
MOV A,22H
INC A
CJNE A,#18H,GO3
MOV 22H,#0H
MOV 34H,#0
MOV 35H,#0
AJMP RET0
GO1:MOV 20H,A
MOV B,#0AH
DIV AB
MOV 31H,A
MOV 30H,B
AJMP RET0
GO2:MOV 21H,A
MOV B,#0AH
DIV AB
MOV 33H,A
MOV 32H,B
AJMP RET0
GO3:MOV 22H,A
MOV B,#0AH
DIV AB
MOV 35H,A
MOV 34H,B
AJMP RET0
RET0:POP PSW
POP ACC
RETI
DISP:MOV R0,#30H
MOV R3,#0FEH
MOV A,R3
PLAY:MOV P2,A
MOV A,@R0
MOV DPTR,#DSEG1
MOVC A,@A+DPTR
MOV P0,A
LCALL DL1
MOV P2,#0FFH
MOV A,R3
RL A
JNB ACC.6,LD1
INC R0
MOV R3,A
LJMP PLAY
LD1:RET
DISP1:MOV R0,#40H
MOV R3,#0FEH
MOV A,R3
LCALL PLAY
LD2:RET
DL1:MOV R7,#05H
DL:MOV R6,#0FFH
DL6:DJNZ R6,$
DJNZ R7,DL
RET
DSEG1:DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
SECTION:PUSH ACC
PUSH PSW
MOV C,P3.2
JC PPP
ACALL DELAY
MOV C,P3.2
JC PPP
STOP:MOV C,P3.2
JNC STOP
ACALL DELAY
MOV C,P3.2
JNC STOP
CPL 23H.0
PPP:POP PSW
POP ACC
RETI
SECTION0:PUSH ACC
PUSH PSW
MOV C,P3.3
JC WWW
ACALL DELAY
MOV C,P3.3
JC WWW
STOP0:MOV C,P3.3
JNC STOP0
ACALL DELAY
MOV C,P3.3
JNC STOP0
CPL 27H.0
WWW:POP PSW
POP ACC
RETI
;=====T1溢出中断(响铃程序)=====
T1INT: MOV TH1,#0EFH
MOV TL1,#0FFH
JNB RING,OUT;
CPL P3.0 ;RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音
OUT: RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -