📄 1111.asm
字号:
;---------------------------------------------------------------
; 说 明 : 行控制由P2.0--P2.6口;列由595控制,p1.1--CLK,P1.2--STB,P1.0--DATA
;---------------------------------------------------------------
SCLK_595 EQU P1.1 ;移位时钟脉冲
RCK_595 EQU P1.2 ;输出锁存器控制脉冲
SDATA_595 EQU P1.0 ;串行数据输入
;================================================
ORG 0000H
LJMP MAIN
ORG 0030H
;================================================
;初始化
;================================================
MAIN: MOV P2,#0FFH
MOV R1,#0
MOV R2,#0
MOV R3,#0
START:
MOV DPTR,#TAB
MOV A,R2
MOVC A,@A+DPTR
CPL A
MOV 2AH,A
CALL OUT_595
MOV DPTR,#TAB1
MOV A,R1
MOVC A,@A+DPTR
MOV P2,A
LCALL OUT_4953
CALL DELAY
MOV P2,#0FFH
INC R2
MOV A,R2
CJNE A,#7,START ;112
LJMP MAIN
;---------------------------------------------------------------
;行输出子程序
;---------------------------------------------------------------
OUT_4953:
INC R1
CJNE R1,#7,LOOP
MOV R1,#00H
LOOP: NOP
RET
;---------------------------------------------------------------
;输出锁存器输出数据子程序
;---------------------------------------------------------------
OUT_595:
LCALL WR_595
CLR RCK_595
NOP
;NOP
SETB RCK_595 ;上升沿将数据送到输出锁存器
NOP
NOP
NOP
CLR RCK_595
RET
;--------------------------------------------------------------
;移位寄存器接收数据子程序
;--------------------------------------------------------------
WR_595:
MOV R4,#08H
MOV A,2AH
WR_LOOP:
RLC A
MOV SDATA_595,C
SETB SCLK_595 ;上升沿发生移位
NOP
NOP
CLR SCLK_595
DJNZ R4,WR_LOOP
RET
;--------------------------------------------------------------
;延时子程序
;--------------------------------------------------------------
DELAY:
MOV 43H,#14H ; every LED(2ms)
DL2: MOV 44H,#14H
DL1: DJNZ 44H,DL1
DJNZ 43H,DL2
RET
DELAY1:
MOV 45H,#14H
DLL2: MOV 46H,#14H
DLL1: MOV 47H,#10H
DLL0: DJNZ 47H,DLL0
DJNZ 46H,DLL1
DJNZ 45H,DLL2
RET
;---------------------------------------------------------------
;表子程序
;---------------------------------------------------------------
TAB: ;字库
db 70h, 88h, 80h, 98h, 88h, 78h, 00h ;47h [G]
DB 04H,0AH,11H,11H,1FH,11H,11H
db 20h, 20h, 50h, 70h, 88h, 88h, 00h ;41h [A]
db 0F0h, 88h,0F0h, 88h, 88h,0F0h, 00h ;42h [B]
db 70h, 88h, 80h, 80h, 88h, 70h, 00h ;43h [C]
db 0F0h, 88h, 88h, 88h, 88h,0F0h, 00h ;44h [D]
db 0F0h, 80h,0E0h, 80h, 80h,0F0h, 00h ;45h [E]
db 0F0h, 80h,0E0h, 80h, 80h, 80h, 00h ;46h [F]
db 70h, 88h, 80h, 98h, 88h, 78h, 00h ;47h [G]
db 90h, 90h,0F0h, 90h, 90h, 90h, 00h ;48h [H]
db 0E0h, 40h, 40h, 40h, 40h,0E0h, 00h ;49h [I]
db 20h, 20h, 20h, 20h,0A0h,0C0h, 00h ;4Ah [J]
db 90h,0A0h,0C0h,0C0h,0A0h, 90h, 00h ;4Bh [K]
db 80h, 80h, 80h, 80h, 80h,0E0h, 00h ;4Ch [L]
db 0C6h,0C6h,0AAh,0AAh, 92h, 92h, 00h ;4Dh [M]
db 0C8h,0C8h,0A8h,0A8h, 98h, 98h, 00h ;4Eh [N]
db 70h, 88h, 88h, 88h, 88h, 70h, 00h ;4Fh [O]
db 0E0h, 90h, 90h,0E0h, 80h, 80h, 00h ;50h [P]
TAB1: ;行表
DB 7EH,7DH,7BH,77H,6FH,5FH,3FH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -