📄 ex9-4.asm
字号:
DIN BIT P3.5 ;定义I/O口
LOAD BIT P3.6
CLK BIT P3.7
ORG 0000H ;复位入口
LJMP MAIN
ORG 0030H ;主程序起始地址
MAIN: MOV SP,#60H ;设置堆栈指针
MOV R7,#0AH ;亮度寄存器
MOV R5,#07H ;亮度值
LCALL DINPUT ;调用7219命令写入子程序
MOV R7,#0BH ;扫描界限寄存器
MOV R5,#07H ;显示8位数字
LCALL DINPUT ;调MAX7219命令写入子程序
MOV R7,#09H ;译码方式寄存器
MOV R5,#0FFH ;#FFH=7-0位均译为B码,#00=不译码
LCALL DINPUT ;调MAX7219命令写入子程序
MOV R7,#0CH ;停机寄存器
MOV R5,#01H ;正常工作
LCALL DINPUT ;调MAX7219命令写入子程序
MOV 30H,#0FFH ;30H-37H为显示缓冲区
MOV 31H,#0FFH
MOV 32H,#08H ;显示..8051..
MOV 33H,#00H
MOV 34H,#05H
MOV 35H,#01H
MOV 36H,#0FFH
MOV 37H,#0FFH
MOV R7,#30H
LCALL DISPLY ;调MAX7219显示子程序
SJMP $
DINPUT: MOV A,R7 ;7219命令写入子程序,传递来的第1个参数保存在R7中
MOV R2,#08 ;作为Max7219控制寄存器的8位地址值
LOOP1: RLC A ;A的D7位移至DIN,依次为D6~D0
MOV DIN, C ;8位地址输入DIN
CLR CLK
SETB CLK
DJNZ R2,LOOP1
MOV A,R5 ;传递来的第2个参数保存在R5中
MOV R2,#08 ;作为写入Max7219控制寄存器的8位命令数据值
LOOP2: RLC A ;A的D7位移至P1.0,依次为D6~D0
MOV DIN, C ;8位数据输入DIN
CLR CLK
SETB CLK
DJNZ R2,LOOP2
CLR LOAD ;输出LOAD信号,上升沿装载寄存器数据
SETB LOAD
RET
DISPLY: MOV A,R7 ;7219显示子程序,R7的内容为7219显示缓冲区入口地址
MOV R0,A ;R0指向显示缓冲区首地址
MOV R1,#01 ;R1指向8字节显示RAM首地址
MOV R3,#08
LOOP3: MOV A,@R0 ;取出显示数据→R5
MOV R5,A
MOV A,R1 ;取出显示RAM地址→R7
MOV R7,A
LCALL DINPUT ;调MAX7219命令写入子程序
INC R0
INC R1
DJNZ R3,LOOP3
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -