📄 1.asm
字号:
ORG 0000H ; ;初始化
LJMP MAIN ; ;跳到主程序
ORG 0003H ; ;外部中断0入口地址
LJMP LOOP
ORG 0013H ; ;外部中断1入口地址
LJMP LOOP1
ORG 0030H ; ;主程序从0030H开始
MAIN:
MOV IE,#85H ; ;开中断
MOV TCON,#05H ; ;设计边沿触发方?
MOV R6,#00H
MOV R7,#00H
CLR P3.4
CLR P3.5
CLR P1.4
MOV R5,#00H ; ;选择第一列亮
SCAN:
MOV P1,R5
MOV A,#01H
MOV P0,A
Q0:
LCALL DELAY
RL A ; ;P0口从低位亮到高位
MOV P0,A
CJNE A,#80H,Q0
MOV P2,A
Q1:
LCALL DELAY
RR A ; ;P2口从高位亮到低位
MOV P2,A
CJNE A,#01H,Q1
Q2:
RL A ; ;P2口从低位亮到高位
MOV P2,A
LCALL DELAY
CJNE A,#80H,Q2
MOV P0,A
Q3:
LCALL DELAY
RR A ; ;P0口从高位亮到低位
MOV P0,A
CJNE A,#01H,Q3
MOV P0,A
MOV P2,A
Q4:
LCALL DELAY
RL A ; ;P2、P0口从低位亮到高位
MOV P0,A
MOV P2,A
LCALL DELAY
CJNE A,#80H,Q4
Q5:
RR A ; ;P0、P2口从高位亮到低位
MOV P0,A
MOV P2,A
LCALL DELAY
CJNE A,#01H,Q5
MOV P0,#0FFH ; ;P0、P2口交叉亮
MOV P2,#00H
LCALL DELAY
MOV P0,#00H
MOV P2,#0FFH
LCALL DELAY
MOV A,#01H
MOV P0,A
LCALL DELAY
LCALL DELAY
MOV P2,A
LCALL DELAY
LCALL DELAY
Q6:
RL A ; ;P0、P2口交叉从低位亮到高位
MOV P0,A
LCALL DELAY
LCALL DELAY
MOV P2,A
LCALL DELAY
LCALL DELAY
CJNE A,#80H,Q6
MOV R3,#03H ; ;P0、P2口低位和高位交叉亮3次
MOV A,#0FH
Q7:
MOV P0,A
MOV P2,A
LCALL DELAY
SWAP A
DJNZ R3,Q7
MOV P0,#0FFH
MOV P2,#0FFH
LCALL DELAY
LCALL DELAY
CJNE R5,#0FH,L4 ; ;亮到16列了吗?否转
LJMP MAIN
L4:
INC R5
LJMP SCAN
DELAY:
MOV R0,#100 ; ;延时40MS
DELAY1:
MOV R1,#200
DJNZ R1,$
DJNZ R0,DELAY1
RET
DELAY2:
MOV R3,#248 ; ;延时123MS
DELAY3:
MOV R4,#248
DJNZ R4,$
DJNZ R3,DELAY3
RET
LOOP:
PUSH ACC
PUSH PSW
INC R6
SETB RS0
MOV A, #0FFH ; ;清除画面
MOV P0,A ; ;清除P0口
ANL P2,#00 ; ;清除P2口
MOV R2,#200
D1:
MOV R3,#248 ; ;延时100MS
DJNZ R3,$
DJNZ R2,D1
MOV 20H , #00H ; ;取码指针的初值
l1:
MOV R1,#100 ; ;每个字的停留时间
L2:
MOV R6,#16 ; ;每个字的16个码
MOV R4, #00H ; ; ;扫描指针清零
MOV R0, 20H ; ;取码指针存入R0
L3:
MOV A,R4 ; ;扫描指针存入A
MOV P1,A ; ;扫描输出
INC R4 ; ;扫描指针加1,扫描下一个
MOV A,R0 ; ;取码指针存入A
LCALL BL ; ;取数据表的上半部份的代码
MOVC A,@A+DPTR
MOV P0,A ; ;输出到P0
INC R0 ; ;取码指针加1,取下一个码
MOV A,R0
LCALL BL ; ;取数据表的下半部份的代码
MOVC A,@A+DPTR
MOV P2,A ; ;输出到P2
INC R0
MOV R3,#02 ; ;扫描1MS
D2:
MOV R5,#248
DJNZ R5,$
DJNZ R3,D2
MOV A, #00H ; ;清除屏幕
MOV P0,A
ANL P2, #00H
DJNZ R6,L3 ; ;一个字16个码是否完成?
DJNZ R1,L2 ; ;每个字的停留时间时间是否到了?
MOV 20H ,R0 ; ;取码指针存入20H
CJNE R0,#224,L1 ; ;8个字256个码是否完成?
MOV R7,#00H
CLR RS0
POP PSW
POP ACC
RETI
BL:
CLR RS0
CJNE R6,#7,QQ7
MOV R6,#00H
SETB RS0
MOV DPTR,#TAB7
RET
QQ7:
CLR RS0
CJNE R6,#6,QQ6
SETB RS0
MOV DPTR,#TAB6
RET
QQ6:
CLR RS0
CJNE R6,#5,QQ5
SETB RS0
MOV DPTR,#TAB5
RET
QQ5: CLR RS0
CJNE R6,#4,QQ4
SETB RS0
MOV DPTR,#TAB4
RET
QQ4: CLR RS0
CJNE R6,#3,QQ3
SETB RS0
MOV DPTR,#TAB3
RET
QQ3: CLR RS0
CJNE R6,#2,QQ2
SETB RS0
MOV DPTR,#TAB2
RET
QQ2: CLR RS0
CJNE R6,#1,QQ1
SETB RS0
MOV DPTR,#TAB1
RET
QQ1: CLR RS0
MOV R6,#00H
SETB RS0
RET
LOOP1:
PUSH ACC
PUSH PSW
INC R7
SETB RS0
MOV A, #0FFH ; ;清除画面
MOV P0,A ; ;清除P0口
ANL P2,#00 ; ;清除P2口
MOV R2,#200
D11:
MOV R3,#248 ; ;延时100MS
DJNZ R3,$
DJNZ R2,D11
MOV 20H , #00H ; ;取码指针的初值
l11:
MOV R1,#100 ; ;每个字的停留时间
L21:
MOV R6,#16 ; ;每个字的16个码
MOV R4, #00H ; ;扫描指针清零
MOV R0, 20H ; ;取码指针存入R0
L31:
MOV A,R4 ; ;扫描指针存入A
MOV P1,A ; ;扫描输出
INC R4 ; ;扫描指针加1,扫描下一个
MOV A,R0 ; ;取码指针存入A
LCALL BL1 ; ;取数据表的上半部份的代码
MOVC A,@A+DPTR
MOV P0,A ; ;输出到P0
INC R0 ; ;取码指针加1,取下一个码
MOV A,R0
LCALL BL1 ; ;取数据表的下半部份的代码
MOVC A,@A+DPTR
MOV P2,A ; ;输出到P2
INC R0
MOV R3,#02 ; ;扫描1MS
D21:
MOV R5,#248
DJNZ R5,$
DJNZ R3,D21
MOV A, #00H ;;清除屏幕
MOV P0,A
ANL P2, #00H
DJNZ R6,L31 ; ;一个字16个码是否完成?
DJNZ R1,L21 ; ;每个字的停留时间时间是否到了?
MOV 20H ,R0 ; ;取码指针存入20H
CJNE R0,#160,L11 ; ;8个字256个码是否完成?
MOV R7,#00H
CLR RS0
POP PSW
POP ACC
RETI
BL1:
CLR RS0
CJNE R7,#7,QQQ7
MOV R7,#00H
SETB RS0
MOV DPTR,#TA7
RET
QQQ7:
CLR RS0
CJNE R7,#6,QQQ6
SETB RS0
MOV DPTR,#TA6
RET
QQQ6:
CLR RS0
CJNE R7,#5,QQQ5
SETB RS0
MOV DPTR,#TA5
RET
QQQ5: CLR RS0
CJNE R7,#4,QQQ4
SETB RS0
MOV DPTR,#TA4
RET
QQQ4: CLR RS0
CJNE R7,#3,QQQ3
SETB RS0
MOV DPTR,#TA3
RET
QQQ3: CLR RS0
CJNE R7,#2,QQQ2
SETB RS0
MOV DPTR,#TA2
RET
QQQ2: CLR RS0
CJNE R7,#1,QQQ1
SETB RS0
MOV DPTR,#TA1
RET
QQQ1: CLR RS0
MOV R7,#00H
SETB RS0
RET
TAB7:
;"此",
DB 00H, 00H,0F8H, 00H, 00H,0FFH, 40H, 40H
DB 00H,0FFH, 40H, 20H, 10H, 18H, 00H, 00H
DB 20H, 20H, 3FH, 20H, 20H, 1FH, 10H, 10H
DB 00H, 3FH, 40H, 40H, 40H, 40H, 70H, 00H
;"情",
DB 80H, 70H, 00H,0FFH, 10H, 22H,0AAH,0AAH
DB 0AAH,0BFH,0AAH,0AAH,0AAH, 22H, 20H, 00H
DB 00H, 00H, 00H,0FFH, 00H, 00H,0FFH, 0AH
DB 0AH, 0AH, 4AH, 8AH, 7FH, 00H, 00H, 00H
;"可",
DB 00H, 02H, 02H,0F2H, 12H, 12H, 12H, 12H
DB 0F2H, 02H, 02H,0FEH, 02H, 02H, 02H, 00H
DB 00H, 00H, 00H, 07H, 04H, 04H, 04H, 04H
DB 07H, 40H, 80H, 7FH, 00H, 00H, 00H, 00H
;"待",
DB 00H, 10H, 88H,0C4H, 33H, 40H, 44H, 44H
DB 44H, 7FH, 44H,0C4H, 44H, 44H, 40H, 00H
DB 02H, 01H, 00H,0FFH, 00H, 02H, 0AH, 32H
DB 02H, 42H, 82H, 7FH, 02H, 02H, 02H, 00H
;"成",
DB 00H, 00H,0F8H, 88H, 88H, 88H, 88H, 08H
DB 7FH, 88H, 0AH, 0CH, 08H,0C8H, 00H, 00H
DB 40H, 20H, 1FH, 00H, 08H, 10H, 0FH, 40H
DB 20H, 13H, 1CH, 24H, 43H, 80H,0F0H, 00H
;"追",
DB 40H, 42H, 44H,0CCH, 00H, 00H,0FCH, 24H
DB 26H, 25H, 24H, 3CH, 00H, 00H, 00H, 00H
DB 00H, 40H, 20H, 1FH, 20H, 40H, 5FH, 51H
DB 51H, 51H, 51H, 51H, 5FH, 60H, 20H, 00H
;"忆",
DB 80H, 70H, 00H,0FFH, 10H, 20H, 04H, 84H
DB 44H, 24H, 14H, 0CH, 04H, 00H, 00H, 00H
DB 00H, 00H, 00H,0FFH, 00H, 3CH, 43H, 40H
DB 40H, 40H, 40H, 40H, 40H, 40H, 70H, 00H
TAB6:
;"蓝",
DB 00H, 04H,0E4H, 04H, 0FH,0F4H, 84H, 44H
DB 34H,0A4H, 2FH, 24H, 24H, 04H, 04H, 00H
DB 40H, 40H, 7CH, 44H, 44H, 7DH, 44H, 44H
DB 44H, 7CH, 45H, 44H, 7CH, 40H, 40H, 00H
;"田",
DB 00H, 00H,0FEH, 82H, 82H, 82H, 82H,0FEH
DB 82H, 82H, 82H, 82H,0FEH, 00H, 00H, 00H
DB 00H, 00H, 3FH, 20H, 20H, 20H, 20H, 3FH
DB 20H, 20H, 20H, 20H, 3FH, 00H, 00H, 00H
;"日",
DB 00H, 00H, 00H,0FEH, 82H, 82H, 82H, 82H
DB 82H, 82H, 82H,0FEH, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 3FH, 20H, 20H, 20H, 20H
DB 20H, 20H, 20H, 3FH, 00H, 00H, 00H, 00H
;"暖",
DB 00H,0FCH, 84H, 84H,0FCH, 00H,0AAH,0B2H
DB 0E6H,0BAH,0A2H,0B2H,0A9H,0A9H, 80H, 00H
DB 00H, 1FH, 10H, 10H, 5FH, 20H, 90H, 8CH
DB 47H, 2AH, 12H, 2AH, 46H, 40H, 40H, 00H
;"玉",
DB 00H, 02H, 82H, 82H, 82H, 82H, 82H,0FEH
DB 82H, 82H, 82H, 82H, 82H, 02H, 00H, 00H
DB 00H, 40H, 40H, 40H, 40H, 40H, 40H, 7FH
DB 40H, 44H, 48H, 58H, 40H, 60H, 40H, 00H
;"生",
DB 00H,0C0H, 30H, 1EH, 10H, 10H, 10H,0FFH
DB 10H, 10H, 10H, 10H, 10H, 10H, 00H, 00H
DB 01H, 40H, 42H, 42H, 42H, 42H, 42H, 7FH
DB 42H, 42H, 42H, 42H, 42H, 40H, 40H, 00H
;"烟",
DB 0E0H, 00H,0FFH, 20H, 10H,0FEH, 42H, 42H
DB 42H,0FAH, 42H, 42H, 42H,0FEH, 00H, 00H
DB 40H, 30H, 0FH, 10H, 20H, 7FH, 50H, 48H
DB 46H, 41H, 42H, 44H, 58H, 7FH, 00H, 00H
TAB5:
;"沧",
DB 10H, 62H, 04H, 8CH, 40H, 20H, 90H, 8CH
DB 83H, 8CH, 90H,0A0H, 40H, 40H, 00H, 00H
DB 10H, 08H, 1EH, 00H, 00H, 00H, 3FH, 40H
DB 40H, 44H, 48H, 47H, 40H, 70H, 00H, 00H
;"海",
DB 10H, 22H, 64H, 0CH, 10H, 08H,0F6H, 14H
DB 34H, 54H, 14H, 14H,0F4H, 04H, 00H, 00H
DB 10H, 0CH, 06H, 01H, 01H, 11H, 1FH, 11H
DB 13H, 15H, 51H, 91H, 7FH, 11H, 01H, 00H
;"月",
DB 00H, 00H, 00H, 00H,0FEH, 22H, 22H, 22H
DB 22H, 22H, 22H,0FEH, 00H, 00H, 00H, 00H
DB 00H, 80H, 40H, 30H, 0FH, 02H, 02H, 02H
DB 02H, 42H, 82H, 7FH, 00H, 00H, 00H, 00H
;"明",
DB 00H,0FCH, 44H, 44H, 44H,0FCH, 00H, 00H
DB 0FEH, 22H, 22H, 22H, 22H,0FEH, 00H, 00H
DB 00H, 07H, 04H, 04H, 04H, 87H, 40H, 30H
DB 0FH, 02H, 02H, 42H, 82H, 7FH, 00H, 00H
;"珠",
DB 04H, 44H, 44H,0FCH, 44H, 44H,0A0H, 9EH
DB 88H, 88H,0FFH, 88H, 88H, 88H, 80H, 00H
DB 08H, 08H, 08H, 0FH, 08H, 48H, 20H, 10H
DB 0CH, 03H,0FFH, 06H, 18H, 30H, 10H, 00H
;"有",
DB 04H, 04H, 04H, 84H,0E4H, 3CH, 27H, 24H
DB 24H, 24H, 24H,0E4H, 04H, 04H, 04H, 00H
DB 04H, 02H, 01H, 00H,0FFH, 09H, 09H, 09H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -