📄 测试行.asm
字号:
SCLK_595 EQU P1.2 ;时钟
SDATA_595 EQU P1.1 ;数据
RCK_595 EQU P1.0 ;锁存
ORG 00H
LJMP START
ORG 30H
START: MOV P0,#0FFH
MOV P2,#0FFH
MOV R0,#0 //
MOV R1,#0 //
MOV R2,#8
MOV R3,#0
MOV R5,#2
MOV 21H,#0FFH
//MOV 22H,#00H
START1: // MOV DPTR,#TAB
WRITE:
INC R0
//MOV A,R1
//MOVC A,@A+DPTR
MOV 2AH,#00H //2AH送数据
LCALL WR_595 //送一位数据
CJNE R0,#2,WRITE //2组数据发完否?
MOV R0,#0
LCALL OUT_595 //输出锁存
LCALL OUT_8550 //行输出
//MOV P0,#0
//MOV P2,#0
LCALL DELAY1
LJMP START
;---------------------------------------------------------------
;行输出子程序
;---------------------------------------------------------------
OUT_8550:
DJNZ R5,P0KSC
MOV R5,#2
P2KSC: CLR C
MOV A,21H
P2KSC1: RLC A
MOV P2,A
LCALL DELAY1
INC R3
CJNE R3,#8,P2KSC1
MOV R3,#00H
MOV P2,#0FFH
RET
P0KSC: CLR C
MOV A,21H
P0KSC1: RLC A
MOV P0,A
LCALL DELAY1
INC R3
CJNE R3,#8,P0KSC1
MOV R3,#00H
MOV P0,#0FFH
// MOV 20H,#00H
LOOP:
LJMP OUT_8550
;---------------------------------------------------------------
;输出锁存器输出数据子程序
;---------------------------------------------------------------
OUT_595:
CLR RCK_595
NOP
SETB RCK_595 ;上升沿将数据送到输出锁存器
NOP
CLR RCK_595
RET
;--------------------------------------------------------------
;移位寄存器接收数据子程序
;--------------------------------------------------------------
WR_595:
MOV R2,#08H
MOV A,2AH
WR_LOOP:
RLC A
MOV SDATA_595,C
SETB SCLK_595 ;上升沿发生移位
CLR SCLK_595
DJNZ R2,WR_LOOP
MOV R2,#8
RET
;--------------------------------------------------------------
;延时子程序
;--------------------------------------------------------------
DELAY:
MOV 43H,#14H ; every LED(2ms)
DL2: MOV 44H,#14H
DL1:
DJNZ 44H,DL1
DJNZ 43H,DL2
RET
DELAY1: MOV 7AH,#255
DLL1: MOV 7BH,#255
DLL2: DJNZ 7BH,DLL2
DJNZ 7AH,DLL1
RET
TAB: //DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
//字模表
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -