邮箱 发表于 2024-10-12 00:15:37

MAX7219驱动数码管-8G1K08A-汇编

本帖最后由 DebugLab 于 2024-10-12 09:13 编辑


;11.059200
$INCLUDE(STC8G.INC)

;引脚定义
MAX7219_CS    EQU P55

ORG          0000H
LJMPF_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      
      DJNZ30H,L_LOOP

      SJMP$
               
; 功能描述: MAX7219 初始化
; 入口参数:
; 出口参数:
; 影响资源:
; 堆栈需求:
; 注    意:
; 示   例1:         
F_MAX7219_Init:      
    SETBMAX7219_CS    ;取消片选
    ;清除显示寄存器
    MOV   30H,#8
    L_MAX7219_Init_Loop:
    MOV   A,30H
    MOV   R7,#0FH       ;清除显示 00H: 不译码, 0FH: 译码模式
    LCALL F_MAX7219_WriteReg      
    DJNZ30H,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
    SETBMAX7219_CS
    RET      

; 功能描述: SPI 主模式初始化
; 入口参数:
; 出口参数:
; 影响资源:
; 堆栈需求:
; 注    意: 注释配置
; 示   例1:
F_SPI_MasterInit:      
      MOV                SPCTL,#0D0H ;SPI 使能,主模式
      ;注释配置
      
      ;ORL   SPCTL,#020H ;先接发数据的低位
      ;ORL   SPCTL,#008H ;SCLK 空闲时为高电平,SCLK 的前时钟沿为下降沿,后时钟沿为上升沿
      ;ORL   SPCTL,#004H ;数据在 SCLK 的前时钟沿驱动,后时钟沿采样
      
      ;SPI 时钟频率选择
                      ;#000HSYSclk / 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
      
      

邮箱 发表于 2024-10-12 00:21:42

soma 发表于 2024-10-12 00:56:37

玩汇编的都是牛人啊,MAX7219有16位刚刚好驱动8个数码管啊。

神农鼎 发表于 2024-10-12 08:02:36

为何不是 STC8H4K32TL-LQFP48/32, RMB1.6














什么?8H4K64TL硬件80mA大电流LED数码管自动刷新驱动居然可以8位亮度256种组合? - 段码LCD/80mA大电流LED数码管自动刷新显示/RTC实时时钟/触摸按键/低功耗 国芯技术交流网站 - AI32位8051交流社区 (stcaimcu.com)




小坤 发表于 2024-10-12 08:21:18

汇编 牛{:5_322:}

邮箱 发表于 2024-10-12 09:43:47

神农鼎 发表于 2024-10-12 08:02
为何不是 STC8H4K32TL-LQFP48/32, RMB1.6




有机会试下
页: [1]
查看完整版本: MAX7219驱动数码管-8G1K08A-汇编