RSBIT P2.0; 定义液晶显示端口标号
RWBIT P2.1 E BITP2.2
;********************
L50MSEQU 60H
L1MSEQU 61H
L250MSEQU 62H
SECEQU 65H
MINEQU 64H
HOUEQU 63H
;*********************
ORG0000H
LJMPMAIN
ORG000BH
LJMPTT0
ORG001BH
LJMPT1INT
ORG1000H
MAIN:液晶初始化
MOVSP,#70H
MOVP0,#01H ;清屏
LCALLENABLE
MOVP0,#38H ;8位,2行显示
LCALLENABLE
MOVP0,#0FH ;屏显ON,光标ON,闪烁ON
LCALLENABLE
MOVP0,#06H ;计数地址加1,显示幕ON
LCALLENABLE 内存初始化
LCALLINITIL
KEY1:
LCALLKEY
LCALLMODD
LJMPKEY1键盘扫描
KEY:
NOP
NOP
LCALLKS
JNZ K1 有按键转到K1
LCALLKAIJI
LCALLSOP
XN:
LJMPKEY
K1:
LCALLMODD
LCALLMODD
LCALLKS
JNZK2
LJMPKEY
K2:
MOVR2,#0FEH ;读键盘
MOVR4,#00H
K3:
MOVA,R2
MOVP1,A
MOVA,P1
JBACC.4,L1;为1跳转,第一行无按键
MOVA,#00H
LJMPLK
L1:
JBACC.5,L2
MOVA,#04H
LJMPLK
L2:
JBACC.6,L3
MOVA,#08H
LJMPLK
L3:
JBACC.7,NEXT1
MOVA,#0CH
LK:
ADDA,R4
PUSHACC
K4:
LCALLDELAY1 ;若同时有其他按键,则等待
LCALLKS
JNZK4
MOVR3,#07H
CLR A
MOVR0,#30H
MOVR1,#31H
MM1:
MOVA,@R1
MOV @R0,A
INCR0
INCR1
DJNZR3,MM1
POPACC
MOV@R0,A
RET
NEXT1:
INCR4 ;列扫描
MOVA,R2
JNBACC.3,N2
LJMPN1
N2:
LJMPKEY
N1:
RL A
MOVR2,A
LJMPK3
KS:
MOVA,#0F0H ;判断P1口
MOVP1,A
NOP
NOP
MOVA,P1
CPL A
ANLA,#0F0H
RET
DELAY1:
SETBRS0
DL:MOVR5,#0AH
DL2:
MOVR6,#63
DL3:
NOP
NOP
DJNZR6,DL3
DJNZR5,DL2
CLRRS0
RET ;30H-37H初值为零
INITIL:
MOVR3,#08H
MOVR0,#30H
M1:
MOV@R0,#00H
INCR0
DJNZR3,M1
RET
MODD:
MOVP0,#8EH
LCALLENABLE
MOVA,37H
MOVDPTR,#TABLE3
MOVCA,@A+DPTR
LCALLWRITE2
RET;开机提示字
KAIJI:
MOVA,37H
CJNEA,#0FH,DFF
MOVP0,#80H ;设光标地址
LCALLENABLE
MOVDPTR,#TABLE1;写数据
LCALLWRITE1
DFF:
RET;按键值播放歌曲
SOP:
MOVA,37H
CJNEA,#01H,A11
LCALLMODD
MOV52H,#HIGH TABLE10
MOV53H,#LOW TABLE10
LCALLINITILE2
LCALLMAIN0
A11:
CJNEA,#02H,A22
LCALLMODD
MOV52H,#HIGH TABLE20
MOV53H,#LOW TABLE20
LCALLINITILE2
LCALLMAIN0
A22:
CJNEA,#03H,A33
LCALLMODD
MOV52H,#HIGH TABLE30
MOV53H,#LOW TABLE30
LCALLINITILE2
LCALLMAIN0
A33:
CJNEA,#04H,A44
LCALLMODD
MOV52H,#HIGH TABLE10
MOV53H,#LOW TABLE10
LCALLINITILE2
LCALLMAIN0
A44:
CJNEA,#05H,A55
LCALLMODD
MOV52H,#HIGH TABLE20
MOV53H,#LOW TABLE20
LCALLINITILE2
LCALLMAIN0
A55:
CJNEA,#06H,A66
LCALLMODD
MOV52H,#HIGH TABLE30
MOV53H,#LOW TABLE30
LCALLINITILE2
LCALLMAIN0
A66:
CJNEA,#07H,A77
LCALLMODD
MOV52H,#HIGH TABLE10
MOV53H,#LOW TABLE10
LCALLINITILE2
LCALLMAIN0
A77:
CJNEA,#08H,A88
LCALLMODD
MOV52H,#HIGH TABLE20
MOV53H,#LOW TABLE20
LCALLINITILE2
LCALLMAIN0
A88:
CJNEA,#09H,A99
LCALLMODD
MOV52H,#HIGH TABLE30
MOV53H,#LOW TABLE30
LCALLINITILE2
LCALLMAIN0
A99:
CJNEA,#0AH,AAA
LCALLMODD
MOV52H,#HIGH TABLE10
MOV53H,#LOW TABLE10
LCALLINITILE2
LCALLMAIN0
AAA:RET
INITILE2:
MOVL50MS,#20
MOVL1MS,#00H
MOVL250MS,#00H
MOVSEC,#00H
MOVMIN,#00H
MOV HOU,#00H
MOVA,HOU
MOVB,#10
DIVAB
ADDA,#30H
MOVP0,#0C8H ;显示小时十位
LCALLENABLE
LCALLWRITE2
MOVA,B
ADDA,#30H
MOVP0,#0C9H ;显示小时个位
LCALLENABLE
LCALLWRITE2
MOVA,#3AH
MOVP0,#0DH ;显示冒号
LCALLENABLE
LCALLWRITE2
MOVA,MIN
MOVB,#10
DIVAB
ADDA,#30H
MOVP0,#0CBH ;显示分十位
LCALLENABLE
LCALLWRITE2
MOVA,B
ADDA,#30H
MOVP0,#0CCH ;显示分个位
LCALLENABLE
LCALLWRITE2
MOVA,#3AH
MOVP0,#0CDH ;显示冒号
LCALLENABLE
LCALLWRITE2
MOVA,SEC
MOVB,#10
DIVAB
ADDA,#30H
MOVP0,#0CEH ;显示秒十位
LCALLENABLE
LCALLWRITE2
MOVA,B
ADDA,#30H
MOVP0,#0CFH ;显示秒个位
LCALLENABLE
LCALLWRITE2
MOVP0,#0C0H ; 设光标地址
LCALLENABLE
MOVDPTR,#TABLE2;写数据
LCALLWRITE1
RET; 写指令
ENABLE:
CLRRS
CLRRW
CLR E
LCALLDELAY
SETBE
RET写数据
WRITE1:
MOVR1,#00H
A1:
MOVA,R1
MOVCA,@A+DPTR
LCALLWRITE2
INCR1
CJNEA,#0FEH,A1 ;未到字符串末尾继续
RET
WRITE2:
MOVP0,A
SETBRS
CLRRW
CLR E
LCALLDELAY
SETBE
RET
DELAY:
MOVR4,#05
D1:
MOVR5,#0FFH
DJNZR5,$
DJNZR4,D1
RET
TAB:
DB:0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H,88H,83H,0c6H,0a1H,86H,8eH
TAB1:DB89H,86H,0C7H,0C7H,0C0H
TAB2:DB0C6H,88H,0C0H
TABLE1:DB'WELCOM HERE',0FEH
TABLE2:DB'DFFWB ',0FEH
TABLE4:DB'CAU',0FEH
TABLE3:DB30H,31H,32H,33H
DB 34H,35H,36H,37H
DB 38H,39H,41H,42H
DB 43H,44H,45H,46H;播放歌曲程序
MAIN0:
MOVTMOD,#11H
MOVIE,#8AH
MOV TH1,#3CH
MOVTL1,#0B0H
LCALLks
JNZ TTM12
MOV40H,#00H
NEXT20:
MOVA,40H
MOVDPH,52H
MOVDPL,53H
MOVCA,@A+DPTR
MOVR2,A
JZSTOP
ANLA,#0FH
MOVR1,A
MOVA,R2
SWAPA
ANLA,#0FH
JNZSING
CLRTR0
JMPW1
SING:
DEC A
MOV22H,A
RL A
MOVDPTR,#TABLE00
MOVCA,@A+DPTR
MOV TH0,AMOV21H,AMOV A,22H
RL A
INC A
MOVCA,@A+DPTR
MOVTL0,A
MOV20H,A
SETBTR0
SETB TR1
W1:
LCALLDELAY30
INC40H
LCALLKS ;有键跳出
JNZSTOP
LJMPNEXT20
STOP:
CLRTR0
CLRTR1
LJMPMAIN0
TTM12:
LCALLK2
MOVA,37H
CJNEA,#0EH,TTM13
CLRTR1
LCALLDELAY1
TTM120:
LCALLKS
LCALLDELAY1
JZTTM120
LCALLK2
MOVA,37H
CJNEA,#0EH,TTM120
SETBTR1
LJMPNEXT20
TTM13:
CJNEA,#0CH,TTM14
MOVA,52H
INC A
MOV52H,A
MOVA,53H
INC A
MOV53H,A
MOVA,36H
INC A
MOV37H,A
LJMPTTM2
TTM14:
CJNEA,#0DH,TTM2
MOVA,52H
DEC A
MOV52H,A
MOVA,53H
DEC A
MOV53H,A
MOVA,36H
DEC A
MOV37H,A
TTM2:
RET;定时器中断子程序0
TT0:
PUSHACC
PUSHPSW
MOVTL0,20H
MOV TH0,21H
CPLP3.7
POPPSW
POPACC
RETI;定时器中断子程序1
T1INT:
MOV TH1,#3cH
MOVTL1, #0b0H
DJNZL50MS,X4
MOVL50MS,#20 ; 每秒种时钟刷新秒显示一次
SECSET:
MOVA,SEC
MOVB,#10
DIVAB
ADDA,#30H
MOVP0,#0CEH ;显示秒十位
LCALLENABLE
LCALLWRITE2
MOVA,B
ADDA,#30H
MOVP0,#0CFH ;显示秒个位
LCALLENABLE
LCALLWRITE2
MOVA,SEC
INC A
MOVSEC,A
XRLA,#60
X4:
JNZOUT
MINSET:
MOVSEC,#00H
MOVA,MIN
INC A
MOVMIN,A
MOVB,#10
DIVAB
ADDA,#30H
MOV P0,#0CBH ;显示分十位
LCALLENABLE
LCALLWRITE2
MOVA,B
ADDA,#30H
MOV P0,#0CCH ;显示分个位
LCALLENABLE
LCALLWRITE2
MOVA,MIN
MOVB,#3
MULAB
MOVB,#100
DIVAB
MOVR2,A
MOVA,#10
XCHA,B
DIVAB
MOVA,MIN
XRLA,#60
JNZOUT
HOUSET:
MOVMIN,#00H
MOVA,HOU
MOVB,#10
DIVAB
ADDA,#30H
MOVP0,#0C8H ;显示小时十位
LCALLENABLE
LCALLWRITE2
MOVA,B
ADDA,#30H
MOVP0,#0C9H ;显示小时个位
LCALLENABLE
LCALLWRITE2
MOVA,HOU
INC A
MOV HOU,A
XRLA,#10
JNZOUT
SJMPOVERFLOW
OUT:
RETI
OVERFLOW:
MOVL50MS,#20
MOVL1MS,#00H
MOVL250MS,#00H
MOVSEC,#00H
MOV MIN,#00H
MOV HOU,#00H
RETI
DELAY30:
MOVR7,#2
W2:
MOVR4,#125
W3:
MOVR3,#248
DJNZR3,$
DJNZR4,W3
DJNZR7,W2
DJNZR1,DELAY30
RET
TABLE00:
DW64580,64684,64777,64820
DW64898,64968,65030,64260
DW64400,64524,65058,63835,64021
第一首《精忠报国》
TABLE10:
DB 66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H
DB 32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32H,98H
DB 24H,22H,32H,54H,52H,32H,92H,12H,92H,82H,98H,66H,52H,36H,22H
DB 12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H,32H,52H,22H,42H,38H
DB 66H,52H,36H,22H,12H,22H,22H,32H,98H,24H,22H,32H,54H,52H,32H
DB 22H,12H,92H,82H,98H,14H,24H,34H,44H,64H,0B4H,64H,32H,52H
DB 62H,0B2H,62H,52H,38H,24H,22H,32H,54H,52H,62H,52H,32H,32H,22H,38H
DB 64H,0B4H,64H,32H,52H,62H,0B2H,62H,52H,38H,22H,22H,22H,32H,52H,52H
DB 52H,62H,7FH,74H,04H,58H,6FH
DB 00
;第二首《月亮代表我的心》
TABLE20:
DB 02H,82H
DB 16H,32H,54H,02H,52H
DB0A6H,32H,54H,02H,52H
DB 64H,74H,0B6H,64H
DB 52H,5CH,32H,22H
DB 16H,12H,14H,32H,22H
DB 16H,12H,14H,22H,32H
DB 26H,12H,94H,22H,32H
DB 2CH
DB 32H,52H
DB 36H,22H,14H,54H
DB0ACH,92H,0A2H
DB 96H,0A2H,96H,82H
DB 3CH,54H
DB 36H,22H,14H,54H
DB0ACH,92H,0A2H
DB 16H,12H,14H,22H,32HDB2CH,02H,82H
DB 16H,32H,56H,12H
DB0A6H,32H,56H,52H
DB 66H,72H,0B6H,62H
DB 62H,52H,58H,32H,22H
DB 16H,12H,14H,32H,22H
DB 16H,12H,14H,22H,32H
DB 26H,92H,0A4H,12H,22H
DB 1CH
DB 00H
第三首《看我七十二变》
TABLE30:
DB0d4H,84H,94H,82H,92H
DB 12H,22H,82H,92H,02H,92H,82H,0d2H
DB 82H,92H,14H,84H,02H,0d1H,0d1H
DB0c2H,0d2H,84H,0d2H,0d2H,82H,82H
DB 84H,82H,82H,94H,82H,0d2H
DB 82H,82H,82H,92H,02H,82H,82H,0d2H
DB 0c4H,84H,0d4H,92H,0d2H
DB 82H,0d2H,82H,92H,98H
DB 04H,94H,88H
DB 04H,94H,88H
DB 04H,94H,88H
DB 04H,94H,88H,04H
DB 32H,32H,22H,12H,02H,92H,12H,92H
DB 32H,32H,22H,12H,02H,92H,12H,92H
DB 32H,32H,22H,12H,02H,92H,12H,22H
DB 54H,44H,34H,12H,22H
DB 34H,22H,12H,02H,92H,12H,92H
DB 32H,32H,22H,12H,02H,92H,12H,92H
DB 32H,32H,22H,12H,02H,92H,12H,22H
DB 54H,44H,32H,22H,12H,92H
DB 00H
END
|