本帖最后由 DebugLab 于 2024-10-12 09:13 编辑
-
- ;11.059200
- $INCLUDE(STC8G.INC)
-
- ;引脚定义
- MAX7219_CS EQU P55
-
- ORG 0000H
- LJMP F_MAIN
-
- F_MAIN:
- MOV SP,#7FH
- MOV P3M1,#00H
- MOV P3M0,#00H
- MOV P5M1,#00H
- MOV P5M0,#00H
- LCALL F_SPI_MasterInit
- LCALL F_MAX7219_Init
-
- MOV 30H,#8
- L_LOOP:
- MOV A,30H
- MOV R7,30H
- LCALL F_MAX7219_WriteReg
- DJNZ 30H,L_LOOP
-
- SJMP $
-
- ; 功能描述: MAX7219 初始化
- ; 入口参数:
- ; 出口参数:
- ; 影响资源:
- ; 堆栈需求:
- ; 注 意:
- ; 示 例1:
- F_MAX7219_Init:
- SETB MAX7219_CS ;取消片选
- ;清除显示寄存器
- MOV 30H,#8
- L_MAX7219_Init_Loop:
- MOV A,30H
- MOV R7,#0FH ;清除显示 00H: 不译码, 0FH: 译码模式
- LCALL F_MAX7219_WriteReg
- DJNZ 30H,L_MAX7219_Init_Loop
-
- MOV A,#09H ;译码模式 0: 不译码, 1: BCD 译码
- MOV R7,#11111111B ;数位 0...7
- LCALL F_MAX7219_WriteReg
-
- MOV A,#0AH ;亮度 0...15
- MOV R7,#0
- LCALL F_MAX7219_WriteReg
-
- MOV A,#0BH ;扫描控制 0...7
- MOV R7,#07H ;显示位数 +1
- LCALL F_MAX7219_WriteReg
-
- MOV A,#0CH ;0:关闭模式:1: 正常工作模式
- MOV R7,#1
- LCALL F_MAX7219_WriteReg
-
- MOV A,#0FH ;显示检测 0: 正常显示, 1;测试
- MOV R7,#0
- LCALL F_MAX7219_WriteReg
-
- RET
-
- ; 功能描述: MAX7219 写入寄存器
- ; 入口参数: A: 寄存器地址
- ; R7: 写入数据
- ; 出口参数:
- ; 影响资源:
- ; 堆栈需求:
- ; 注 意:
- ; 示 例1:
- F_MAX7219_WriteReg:
- CLR MAX7219_CS
- LCALL F_SPI_ReadSendByte
- MOV A,R7
- LCALL F_SPI_ReadSendByte
- SETB MAX7219_CS
- RET
-
- ; 功能描述: SPI 主模式初始化
- ; 入口参数:
- ; 出口参数:
- ; 影响资源:
- ; 堆栈需求:
- ; 注 意: 注释配置
- ; 示 例1:
- F_SPI_MasterInit:
- MOV SPCTL,#0D0H ;SPI 使能,主模式
- ;注释配置
-
- ;ORL SPCTL,#020H ;先接发数据的低位
- ;ORL SPCTL,#008H ;SCLK 空闲时为高电平,SCLK 的前时钟沿为下降沿,后时钟沿为上升沿
- ;ORL SPCTL,#004H ;数据在 SCLK 的前时钟沿驱动,后时钟沿采样
-
- ;SPI 时钟频率选择
- ;#000H SYSclk / 4
- ;ORL SPCTL,#001H ;SYSclk / 8
- ;ORL SPCTL,#002H ;SYSclk / 16
- ;ORL SPCTL,#003H ;SYSclk / 32
- RET
-
- ; 功能描述: SPI 收发一字节数据
- ; 入口参数: A: 发送数据
- ; 出口参数: A: 接收数据
- ; 影响资源:
- ; 堆栈需求:
- ; 注 意:
- ; 示 例1:
- F_SPI_ReadSendByte:
- MOV SPDAT,A ;发送/接收数据
- L_SPI_ReadSendByte_Loop:
- MOV A,SPSTAT
- JZ L_SPI_ReadSendByte_Loop ;累加器为零跳转
- MOV SPSTAT,#0C0H ;写 1 清零
- MOV A,SPDAT ;接收数据
- RET
-
- END
-
-
复制代码
|