📄 max7221cs1.asm
字号:
DIN BIT P3.0 ;数据输入端
CLK BIT P3.2 ;时钟输入端
LOAD BIT P3.1 ;数据锁存控制端
ORG 0000H
LJMP START
ORG 001BH
LJMP SERVE
ORG 0030H
START: CLR 00H
MOV SP,#60H
LCALL PROCESS ;调用初始化MAX7221子程序
MOV 50H, #09H
MOV 51H, #08H
MOV 52H, #07H
MOV 53H, #06H
MOV 54H, #05H
MOV 55H, #04H
MOV 56H, #03H
MOV 57H, #02H
LCALL DISPLAY ;调用显示
LCALL DELAY
MOV 50H, #0AH
MOV 51H, #0AH
MOV TMOD , #10H
MOV TH1, #0D8H
MOV TL1, #0F0H
SETB TR1
MOV 60H, #90H
MOV 40H, #23H
MOV 41H, #59H
MOV 42H, #50H
MOV IE, #10001000B
START1: JNB 00H, $
CLR 00H
LCALL FEN
LCALL DISPLAY
SJMP START1
PROCESS:MOV A,#0CH ;进入停机工作方式
MOV B,#00H
LCALL W_7221
MOV A,#0BH ;扫描位数
MOV B,#07H
LCALL W_7221
MOV A,#09H ;译码方式
MOV B,#0FFH
LCALL W_7221
MOV A,#0AH ;显示亮度
MOV B,#09H
LCALL W_7221
MOV A,#0FH
MOV B,#01H
LCALL W_7221
MOV A,#0CH ;进入启动工作方式
MOV B,#01H
LCALL W_7221
RET
W_7221: CLR LOAD ;设置LOAD为
LCALL SD_7221 ;发送位数据的高位
MOV A,B ;发送位数据的低位
LCALL SD_7221
NOP
NOP
SETB LOAD ;锁存位数据
RET
SD_7221: MOV R1,#08H ;发送位数据
C_SD: NOP
NOP
CLR CLK
RLC A ;发位数据的最高位
MOV DIN,C ;传待发位到发送口
NOP
NOP
SETB CLK ;设置上升沿,发送数据
DJNZ R1,C_SD ;直到数据发送完,跳出
RET
;MAX7221 显示子程序
DISPLAY: MOV R0,#50H ;设置缓冲区首址
MOV R2,#1 ;准备启用MAX7221中的第号寄存器
MOV R3,#8 ;共要发送个数据
C_DISP: MOV A,@R0 ;取出缓冲区数据显示
MOV B,A
MOV A,R2
LCALL W_7221 ;发送第一个待显示的数据
INC R0 ;继续取下一个待显数据
INC R2 ;启用下一个MAX7221中的寄存器
DJNZ R3,C_DISP ;三个待显数据发送完跳出
RET
DELAY: MOV R4, #2
L2: MOV R5, #20
L1: MOV R6, #0FFH
DJNZ R6, $
DJNZ R5, L1
DJNZ R4, L2
RET
SERVE: PUSH PSW
PUSH ACC
MOV TH1,#0D8H
MOV TL1, #0F0H
DJNZ 60H, RETURN
SETB 00H
MOV 60H, #20
MOV A, #01H
ADD A, 42H
DA A
MOV 42H,A
CJNE A, #60H, RETURN
MOV 42H, #0
MOV A, #01H
ADD A, 41H
DA A
MOV 41H,A
CJNE A, #60H, RETURN
MOV 41H,#0
MOV A,#01H
ADD A,40H
DA A
MOV 40H,A
CJNE A, #24H, RETURN
MOV 40H, #0
RETURN:
POP ACC
POP PSW
RETI
FEN:
MOV A, 40H
ANL A, #0F0H
SWAP A
MOV 52H,A
MOV A, 40H
ANL A, #0FH
MOV 53H,A
MOV A, 41H
ANL A, #0F0H
SWAP A
MOV 54H,A
MOV A, 41H
ANL A, #0FH
MOV 55H,A
MOV A, 42H
ANL A, #0F0H
SWAP A
MOV 56H, A
MOV A, 42H
ANL A, #0FH
MOV 57H,A
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -