下面是我们显示程序:
;max7219汇编测试程序
;**********************************************************
L0AD7219 BIT P1.0 ;MAX7219片选线引脚
CLK7219 BIT P1.1 ;MAX7219时钟线引脚
DIN7219 BIT P1.2 ;MAX7219数据线引脚
POWLED BIT P1.7 ;监视灯
;**********************************************************
DIG0 EQU 01H ;数据寄存器地址
DIG1 EQU 02H
DIG2 EQU 03H
DIG3 EQU 04H
DIG4 EQU 05H
DIG5 EQU 06H
DIG6 EQU 07H
DIG7 EQU 08H
DECMODE EQU 09H ;控制寄存器地址
INTENTY EQU 0AH
SCANLIM EQU 0BH
SHUTDOW EQU 0CH
DISTEST EQU 0FH
ORG 0000H
AJMP MAIN
ORG 0040H
MAIN:
MOV SP,#30H
CLR POWLED
LCALL INI7219
LCALL DELAY1S
CPL POWLED
LLLL:
LCALL SHOW7219
LJMP LLLL
RET
;//////////////////////////////////////////////////////
SHOW7219:
MOV A,#DIG0
MOV B,#00H
LCALL WRITE7219
MOV A,#DIG1
MOV B,#01H
LCALL WRITE7219
MOV A,#DIG2
MOV B,#02H
LCALL WRITE7219
MOV A,#DIG3
MOV B,#03H
LCALL WRITE7219
MOV A,#DIG4
MOV B,#04H
LCALL WRITE7219
MOV A,#DIG5
MOV B,#05H
LCALL WRITE7219
MOV A,#DIG6
MOV B,#06H
LCALL WRITE7219
MOV A,#DIG7
MOV B,#07H
LCALL WRITE7219
RET
;//////////////////////////////////////////////////////
INI7219:
MOV A,#SHUTDOW ;关机方式
MOV B,#00H
LCALL WRITE7219
MOV A,#DECMODE ;译码方式
MOV B,#0FFH
LCALL WRITE7219
MOV A,#INTENTY ;亮度15/32方式
MOV B,#07H
LCALL WRITE7219
MOV A,#SCANLIM ;显示8位LED
MOV B,#07H
LCALL WRITE7219
MOV A,#DISTEST ;正常显示
MOV B,#00H
LCALL WRITE7219
MOV A,#SHUTDOW ;开机方式
MOV B,#01H
LCALL WRITE7219
RET
;/////////////////////////////////////////////////////
WRITE7219:
NOP
CLR L0AD7219
LCALL SEND7219 ;先送控制寄存器的地址
MOV A,B ;B中为传送的命令字或待显的数据
LCALL SEND7219
NOP
SETB L0AD7219
RET
;////////////////////////////////////////////////////
SEND7219:
MOV R1,#08H
LOOPS:
NOP
CLR CLK7219
RLC A ;左移位送MSB
MOV DIN7219,C
NOP
SETB CLK7219
DJNZ R1,LOOPS
RET
;///////////////////////////////////////////////////
DELAY1S: MOV R7,#0AH ;延时1秒子程序(12M晶振)
LOOP6: MOV R5,#64H ;100ms循环
LOOP7: MOV R6,#64H
LOOP8: NOP ;1US
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R6,LOOP8 ;10US
DJNZ R5,LOOP7
DJNZ R7,LOOP6
RET
END