📄 2.asm
字号:
;---------------------------------------------------------------
; 说 明 : 行控制由P2.0--P2.6口;列由595控制,p1.0--CLK,P1.1--STB,P1.2--DATA
;---------------------------------------------------------------
SCLK_595 EQU P1.0 ;移位时钟脉冲
RCK_595 EQU P1.1 ;输出锁存器控制脉冲
SDATA_595 EQU P1.2 ;串行数据输入
;================================================
ORG 0000H
LJMP MAIN
ORG 0030H
;================================================
MAIN: MOV P2,#0FFH
MOV R0,#0
MOV R1,#0
MOV R2,#0
MOV R3,#0
MAIN1: MOV DPTR,#TAB
MOV A,R2
MOVC A,@A+DPTR
MOV R0,A
CALL OUT_595
CALL OUT_4953
LOOP: CALL DELAY
INC R2
CJNE R2,#7,MAIN1
LJMP MAIN
;---------------------------------------------------------------
;行输出数据子程序
;---------------------------------------------------------------
OUT_4953:
MOV DPTR,#TAB1
MOV A,R1
MOVC A,@A+DPTR
MOV P2,A
INC R1
CJNE R1,#7,LOOP
MOV R1,#0
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,R0
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
;---------------------------------------------------------------
;表子程序
;---------------------------------------------------------------
TAB:
DB 0FBH,0F5H,0EEH,0EEH,0E0H,0EEH,0EEH ;字"A"
TAB1:
DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH ;行选择
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -