湖南铁路科技职业技术学院单片机课程设计说明书
LCALL KS
JNZ K4
MOV R3,#07H CLR A MOV R0,#30H MOV R1,#31H MM1: MOV A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R3,MM1 POP ACC MOV @R0,A
RET
NEXT1: INC R4 ;列扫描 MOV A,R2 JNB ACC.3,N2 LJMP N1 N2: LJMP KEY
N1: RL A MOV R2,A LJMP K3
KS: MOV A,#0F0H ;判断P1口 MOV P1,A NOP NOP MOV A,P1 CPL A ANL A,#0F0H
RET
DELAY1:SETB RS0 DL: MOV R5,#0AH DL2: MOV R6,#63 DL3: NOP NOP
DJNZ R6,DL3
DJNZ R5,DL2 CLR RS0 RET
INITIL: ;30H-37H初值为零
MOV R3,#08H MOV R0,#30H M1: MOV @R0,#00H INC R0 DJNZ R3,M1
RET
MODD: ;显示 MOV P0,#8EH
CALL
DISPLAY MOV A,37H
MOV DPTR,#TABLE3 MOVC A,@A+DPTR CALL WRITE2 RET
KAIJI: MOV A,37H ;开机提示字
CJNE
A,#0FH,DFF
MOV P0,#80H ;设光标地址 CALL DISPLAY
MOV DPTR,#TABLE1;写数据 CALL WRITE1
DFF: RET ;按键值播放歌曲 SOP: MOV A,37H CJNE A,#01H,A11 LCALL
MODD
MOV 52H,#HIGH TABLE10 MOV 53H,#LOW TABLE10 LCALL INITILE2 LCALL MAIN0 A11: CJNE A,#02H,A22 LCALL MODD
35
- - 湖南铁路科技职业技术学院单片机课程设计说明书
MOV 52H,#HIGH TABLE20 MOV 53H,#LOW TABLE20 LCALL INITILE2 lcall MAIN0 A22: CJNE A,#03H,A33 LCALL
MODD
MOV 52H,#HIGH TABLE30 MOV 53H,#LOW TABLE30 LCALL INITILE2 lcall MAIN0 A33: CJNE A,#04H,A44 LCALL
MODD
MOV 52H,#HIGH TABLE40 MOV 53H,#LOW TABLE40 LCALL INITILE2 lcall MAIN0 A44: CJNE A,#05H,A55 LCALL
MODD
MOV 52H,#HIGH TABLE50 MOV 53H,#LOW TABLE50 LCALL INITILE2 lcall MAIN0 A55: CJNE A,#06H,A66 LCALL
MODD
MOV 52H,#HIGH TABLE60 MOV 53H,#LOW TABLE60 LCALL INITILE2 lcall MAIN0 A66: CJNE A,#07H,A77 LCALL
MODD
MOV 52H,#HIGH TABLE70 MOV 53H,#LOW TABLE70 LCALL INITILE2 lcall MAIN0 A77: CJNE A,#08H,A88 LCALL MODD
MOV 52H,#HIGH TABLE80 MOV 53H,#LOW TABLE80 LCALL INITILE2 lcall MAIN0 A88: CJNE A,#09H,A99 LCALL
MODD
MOV 52H,#HIGH TABLE90 MOV 53H,#LOW TABLE90 LCALL INITILE2 lcall MAIN0 A99: CJNE A,#0AH,AAA LCALL
MODD
MOV 52H,#HIGH TABLE100 MOV 53H,#LOW TABLE100 LCALL INITILE2 lcall MAIN0
AAA: RET
INITILE2:
MOV L50MS,#20 MOV L1MS,#00H MOV L250MS,#00H MOV SEC,#00H MOV MIN,#00H MOV HOU,#00H MOV A,HOU MOV B,#10 DIV AB
ADD A,#30H ;将BCD吗转化为ASIIC码 MOV
P0,#0C8H ;显示小时十位
CALL DISPLAY CALL WRITE2
MOV A,B ADD A,#30H MOV P0,#0C9H ;显示小时个位 CALL DISPLAY
36
- - 湖南铁路科技职业技术学院单片机课程设计说明书
CALL WRITE2
MOV A,#3AH
MOV P0,#0DH ;显示冒号 CALL DISPLAY CALL
WRITE2
MOV A,MIN MOV B,#10 DIV AB ADD A,#30H MOV P0,#0CBH ;显示分十位 CALL DISPLAY CALL WRITE2
MOV A,B ADD A,#30H MOV P0,#0CCH ;显示分个位 CALL DISPLAY CALL WRITE2
MOV A,#3AH
MOV P0,#0CDH ;显示冒号 CALL DISPLAY CALL
WRITE2
MOV A,SEC MOV B,#10 DIV AB ADD A,#30H MOV P0,#0CEH ;显示秒十位 CALL DISPLAY CALL WRITE2
MOV A,B ADD A,#30H MOV P0,#0CFH ;显示秒个位 CALL DISPLAY CALL WRITE2
MOV P0,#0C0H ;设光标地址 CALL DISPLAY
MOV DPTR,#TABLE2;写数据
CALL WRITE1
RET DISPLAY: CLR RS ;写指令 CLR RW CLR E LCALL DELAY
SETB E
RET WRITE1: MOV R1,#00H ;写数据 A1: MOV A,R1 MOVC A,@A+DPTR CALL WRITE2 INC R1
CJNE A,#0FEH,A1 ;未到字符
串末尾继续 RET WRITE2: MOV P0,A SETB RS CLR RW CLR E CALL DELAY SETB E
RET DELAY: MOV R4,#05 D1: MOV R5,#0FFH DJNZ R5,$ DJNZ R4,D1 RET TAB:
DB
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB
80H,90H,88H,83H,0C6H,0A1H,86H,8EH TAB1: DB 89H,86H,0C7H,0C7H,0C0H TAB2: DB 0C6H,88H,0C0H
TABLE1: DB 'WELCOM HERE',0FEH TABLE2: DB 'DFF WB ',0FEH 37
- - 湖南铁路科技职业技术学院单片机课程设计说明书
TABLE4: DB 'CAU',0FEH
INC A
TABLE3: DB 30H,31H,32H,33h MOVC A,@A+DPTR DB 34H,35H,36H,37H MOV TL0,A DB 38h,39H,41H,42H MOV 20H,A DB 43H,44H,45H,46H
SETB TR0
SETB TR1 MAIN0:
MOV TMOD,#11H ;播放歌曲程序 W1: LCALL
DELAY30
MOV IE,#8aH
INC 40H MOV TH1, #3cH LCALL
KS
MOV TL1, #0b0H 出 LCALL KS
JNZ STOP JNZ TTM12 LJMP NEXT20 MOV 40H,#00H STOP: CLR TR0
NEXT20: MOV A,40H
CLR TR1 MOV DPH,52H LJMP MAIN0 MOV DPL,53H TTM12: LCALL K2 MOVC A,@A+DPTR MOV A,37H MOV R2,A CJNE A,#0EH,TTM13 JZ STOP
CLR TR1
ANL A,#0FH LCALL DELAY1 MOV R1,A TTM120: LCALL KS MOV A,R2 LCALL
DELAY1 SWAP A
JZ TTM120
ANL A,#0FH LCALL K2
JNZ SING MOV A,37H CLR TR0 CJNE A,#0EH,TTM120 JMP W1
SETB TR1
SING: DEC A LJMP NEXT20 MOV 22H,A TTM13: CJNE A,#0CH,TTM14 RL A
MOV A,52H MOV DPTR,#TABLE00 INC A MOVC A,@A+DPTR MOV 52H,A MOV TH0,A MOV A,53H MOV 21H,A INC A MOV A,22H MOV 53H,A RL A
MOV A,36H
38
- - 有键跳
;湖南铁路科技职业技术学院单片机课程设计说明书
INC A MOV 37H,A LJMP TTM2
CJNE A,#0DH,TTM2 MOV A,52H DEC A MOV 52H,A MOV A,53H DEC A MOV 53H,A MOV A,36H DEC A MOV 37H,A
RET
ACC ;定时器中断子程序0
CALL MOV A,B 位
CALL
DISPLAY
CALL WRITE2 MOV A,SEC
INC A
MOV SEC,A
XRL A,#60
JNZ OUT
X4: 显示一次
MOV A,MIN MOV MIN,A
INC A MOV B,#10 DIV AB ADD A,#30H MOV
P0,#0CBH ;显示分十位
DISPLAY
CALL
ADD A,#30H
P0,#0CFH ;显示秒个
MOV
DISPLAY
WRITE2
CALL
TTM14:
TTM2:
MINSET: MOV SEC,#00H ; *每分钟刷新分
TT0: PUSH
PUSH PSW
MOV TL0,20H MOV TH0,21H CPL P3.7 POP PSW POP ACC RETI
;定时器中断子程序1
T1INT: MOV TH1, #3CH ;定时器中断子程序1
MOV TL1, #0B0H
DJNZ
L50MS,X4
MOV L50MS,#20
SECSET: ;每秒种时钟刷新秒显示一次 MOV A,SEC
MOV B,#10
DIV AB
P0,#0CEH ;显示秒十
ADD A,#30H MOV 位
CALL WRITE2 MOV A,B
ADD A,#30H MOV 位
CALL
DISPLAY
CALL WRITE2 MOV A,MIN MOV B,#3 MUL AB MOV B,#100
DIV AB
MOV R2,A - - 39
P0,#0CCH ;显示分个