📄 xs5_7_a.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: CALL OUT_4953
LOOP: MOV DPTR,#TAB
MOV A,R2
MOVC A,@A+DPTR
MOV R0,A
CALL OUT_595
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
CALL DELAY
RET
;INC R1
; CJNE R1,#7,LOOP
; MOV R1,#0
;LJMP LOOP
;---------------------------------------------------------------
;输出锁存器输出数据子程序
;---------------------------------------------------------------
OUT_595:
LCALL WR_595
CLR RCK_595
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 55H
;db 20h, 20h, 50h, 70h, 88h, 88h, 00h ;41h [A]
;DB 0FDH;,0F5H,11H,11H,10H,11H,11H
TAB1:
DB 0FEH;,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH ;行选择
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -