📄 driver_max7219.asm
字号:
; ****************
; *Driver_MAX7219*
; ****************
; 硬件连接定义
DIN_Max7219 BIT P0.0;
LOAD_Max7219 BIT P0.1;
CLK_Max7219 BIT P0.2;
; 寄存器定义
Address EQU 21H;
WordCount EQU 22H;
Databuf EQU 23H;
ORG 0000H;
JMP Main;
Main:
CALL Max7219_Initialization;
MOV Address,#01H;
MOV WordCount,#08H;
MOV Databuf,#07H;
MOV Databuf+1,#06H;
MOV Databuf+2,#05H;
MOV Databuf+3,#04H;
MOV Databuf+4,#03H;
MOV Databuf+5,#02H;
MOV Databuf+6,#01H;
MOV Databuf+7,#00H;
CALL Max7219_Send_bytes;
SJMP $;
Max7219_Initialization:
MOV Address,#0BH;
MOV Databuf,#07H; 设定扫描界限([00H-07H],xxH表示只扫描第xx位)
MOV WordCount,#01H;
CALL Max7219_Send_bytes;
MOV Address,#09H;
MOV Databuf,#0FFH; 设定译码(00H:0-7位不译码;01H:0位译码,1-7位不译码
MOV WordCount,#01H; 0FH:0-3位译码,4-7位不译码;0FH:0-7位译码)
CALL Max7219_Send_bytes;
MOV Address,#0AH;
MOV Databuf,#07H; 设定亮度(00H-0FH,00H亮度最低;0FH亮度最高)
MOV WordCount,#01H;
CALL Max7219_Send_bytes;
MOV Address,#0CH;
MOV Databuf,#01H; 设定掉电寄存器(01H为正常模式,00H为掉电模式)
MOV WordCount,#01H;
CALL Max7219_Send_bytes;
/* MOV Address,#0FH;
MOV Databuf,#00H; 设定显示测试寄存器(00H为正常模式,01H为测试模式)
MOV WordCount,#01H;
CALL Max7219_Send_bytes; */
RET
Max7219_Send_bytes:
MOV R0,#Databuf;
Loop_Send_Adr0:
MOV A,Address;
MOV R7,#08H;
Loop_Send_Adr:
CLR CLK_Max7219;
CLR LOAD_Max7219;
RLC A;
MOV DIN_Max7219,C;
SETB CLK_Max7219;
DJNZ R7,Loop_Send_Adr;
Loop_Send_Dat0:
MOV R7,#08H;
MOV A,@R0;
Loop_Send_Dat1:
CLR CLK_Max7219;
RLC A;
MOV DIN_Max7219,C;
SETB CLK_Max7219;
DJNZ R7,Loop_Send_Dat1;
SETB LOAD_Max7219;
INC R0;
INC Address;
DJNZ WordCount,Loop_Send_Adr0;
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -