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

📄 闹钟的程序.gz.txt

📁 没写头!只写了个主体!用汇编语言编一个闹钟的程序!
💻 TXT
字号:
ORG 0000H ;上电入口 
AJMP MAIN 
ORG 000BH ;定时器T0中断入口地址 
AJMP TIM0 
ORG 001BH ;定时器T1中断入口地址 
AJMP TIM1 
MAIN: 
MOV SP,#5AH ;设置堆栈指针栈底地址 
MOV P1,#0FFH ;P1口初始化 
MOV SCON,#00H ;串行控制字0方式通讯 
MOV TMOD,#00H ;设定定时器T0、T1均为方式0 
MOV TH1,#3CH ;赋予时间常数 
MOV TL1, #0B0H 
MOV TH0, #3CH 
MOV TL0, #0B0H 
MOV 20H, #0FFH ;设置标志位 
MOV 21H, #00H 
MOV 10H, #0BH ;赋初值 
MOV 11H, #0BH 
MOV 12H, #0BH 
MOV 13H, #0AH 
MOV 14H, #13H ;动态存储单元 
MOV 22H, #00H ;显存地址初始化 
MOV 23H, #00H 
MOV 24H, #00H 
MOV 25H, #00H 
MOV 26H, #00H ;循环变量赋初值 
MOV 35H, #1FH 
MOV 50H, #02H 
SETB ET0 ;开T0中断 
SETB ET1 ;开T1中断 
SETB EA ;开总中断 
WW0: ACALL DISP0 
AA: JB P1.0, AA 
ACALL DELAY 
MOV 21H,#00H 
JB P1.0, WORK1 
AJMP AA00 
WORK1: AJMP WORK 
AA00: 
MOV 10H,23H ;显缓赋值 
MOV 11H, 24H 
MOV 12H, 25H 
MOV 13H, 26H 
SETB TR0 ;启动定时器T0 
SETB TR1 ;启动定时器T1 
SETB EA 
MOV 21H,#00H 
AA3: 
JNB 08H, AA1 
AJMP ADDA ;转增数程序 
AA1: 
JNB 09H, AA2 
AJMP MOVE ;转移位程序 
AA2: 
JNB 0AH, AA3 
AJMP EXIT ;转退出程序 
TIM1: 
MOV TH1, #03CH 
MOV TL1, #0B0H 
DJNZ 35H, MM2 
MOV 35H, #1FH 
JNB 0EH,MM0 
DJNZ 50H,MM2 
MOV 50H,#02H 
SETB 0DH 
AJMP MM2 
MM0: 
JNB 0BH, MM 
AJMP MM1 
MM: 
MOV R0, #14H 
MOV A, @R0 
MOV R0, A 
MOV A, #0BH 
MOV @R0, A 
SETB 0BH 
MM1: CLR 0BH 
MM3: 
ACALL DISP 
MOV 10H, 23H 
MOV 11H, 24H 
MOV 12H, 25H 
MOV 13H, 26H 
MM2: RETI 
DISP: 
MOV DPTR , #PAWT ;送断码首址 
MOV R1, #10H ;赋显缓首址 
MOV R4, #04H ;循环计数次数 
LOOP: 
MOV A, @R1 
MOVC A, @A+DPTR 
MOV R5, A 
MOV A, R1 
CJNE A, #12H, GG 
MOV A, R5 
ANL A, #0FEH 
MOV R5, A 
GG: 
MOV A, R5 
MOV SBUF, A ;输出断码 
LL: 
JNB TI, LL ;循环判位 
CLR TI 
INC R1 
DJNZ R4,LOOP 
rET ;子程序返回 
PAWT: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H,31H,0FFH ;断码表1 
DISP0: MOV DPTR , #PAWT0 
MOV R1, #10H 
MOV R4, #04H 
LOOP0: MOV A, @R1 
MOVC A, @A+DPTR 
MOV SBUF, A 
LL0: JNB TI, LL0 
CLR TI 
INC R1 
DJNZ R4, LOOP0 
RET 
PAWT0: DB 03H,9FH, 5H,0DH,99H,49H,41H,1FH,01H,09H,31H,0FFH ;断码表2 
ADDA: CLR 08H ;加数子程序 
MOV R0, #14H 
MOV A, @R0 
MOV R0, A 
MOV A, @R0 
INC A 
CJNE A, #0AH, BB 
MOV A, #00H 
BB: MOV @R0, A 
MOV A,10H 
CJNE A,#0AH , L1 
L1: JC L2 
CLR A 
L2: MOV 23H,A 
MOV A,11H 
CJNE A,#06H , L3 
L3: JC L4 
CLR A 
L4: MOV 24H,A 
MOV A,13H 
CJNE A,#02H , L5 
MOV 26H,A 
MOV A,12H 
CJNE A,#04H , L6 
L6: JC L7 
CLR A 
L7: MOV 25H,A 
AJMP AA3 
L5: JC L8 
CLR A 
L8: MOV 26H,A 
MOV A,12H 
CJNE A,#0AH , L9 
L9: JC L10 
CLR A 
L10: MOV 25H,A 
AJMP AA3 
MOVE: CLR 09H 
MOV R0, #14H 
MOV A, @R0 
INC A 
CJNE A, #14H , WW 
MOV A,#10H 
WW: MOV @R0,A 
AJMP AA3 
TIM0: MOV TL0,#3CH ;赋时间常数 
MOV TL1,#0BH 
MOV C, P1.0 ;设置P1.0标志位 
MOV 00H,C 
MOV C,01H 
ANL C,/00H 
JNC QQ 
SETB 08H 
QQ: MOV C,P1.0 
MOV 01H,C 
MOV C,P1.1 
MOV 02H,C 
MOV C,03H 
ANL C,/02H 
JNC QQ1 
SETB 09H 
QQ1: MOV C,P1.1 ;设置P1.1标志位 
MOV 03H,C 
MOV C,P1.2 
MOV 04H,C 
MOV C,05H 
ANL C,/04H 
JNC QQ2 
SETB 0AH 
QQ2: MOV C,P1.2 ;设置P1.2标志位 
MOV 05H,C 
RETI 
DELAY: MOV 36H,#0FFH ;执行延时子程序 
CC2: MOV 37H,#0FFH 
CC1: MOV 38H,#0AH 
CC: DJNZ 38H,CC 
DJNZ 37H,CC1 
DJNZ 36H,CC2 
RET 
EXIT: MOV 23H,10H ;退出子程序 
MOV 24H,11H 
MOV 25H,12H 
MOV 26H,13H 
MOV 10H,#0BH 
MOV 11H,#0BH 
MOV 12H,#0BH 
MOV 13H,#0AH 
CLR TR0 
CLR TR1 
CLR 0AH 
AJMP WW0 
WORK: MOV 10H, 23H 
MOV 11H, 24H 
MOV 12H, 25H 
MOV 13H, 26H 
SETB 0EH ;工作子程序 
CLR ET0 ;关T0中断 
SETB TR1 ;启动定时器T1 
WORK2: JB P1.2 , RR1 ;判退出键 
AJMP EXIT 
RR1: JNB 0DH , WORK2 ;判分钟定时 
CLR 0DH 
MOV R0,#11H 
ACALL ADD1 
MOV A,R3 
CLR C 
CJNE A,#60H,ADDM 
ADDM: JC OUT_TO 
ACALL CLR_0 
MOV R0,#13H 
ACALL ADD1 
MOV A,R3 
CLR C 
CJNE A,#24H,ADDM1 
ADDM1: JC OUT_TO 
ACALL CLR_0 
OUT_TO: MOV 23H,10H ;WORK退出 
MOV 24H,11H 
MOV 25H,12H 
MOV 26H,13H 
ACALL DISP 
AJMP WORK2 
ADD1: MOV A,@R0 ;WORK加一程序 
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 
ANL A,#0F0H 
SWAP A 
MOV @R0,A 
RET 
CLR_0: CLR A ;WORK清零程序 
MOV @R0,A 
DEC R0 
MOV @R0,A 
RET 
END

⌨️ 快捷键说明

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