⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 max7219led.asm

📁 TMS320LF2407驱动max7219程序,用于显示,可采用编码和无编码两种方式
💻 ASM
📖 第 1 页 / 共 3 页
字号:
                   
                                    
                   LDP       #DP_USER
                   SPLK      #LED_0_NOCODE_DP,SPI_CON 
                   CALL      SEND_LED_CTRL
                   
                   CALL      DELAY_LONG
                   
                   LDP       #DP_USER
                   SPLK      #LED_0_NOCODE_BLANK,SPI_CON 
                   CALL      SEND_LED_CTRL
                   
                   LDP       #DP_USER
                   SPLK      #LED_1_NOCODE_DP,SPI_CON 
                   CALL      SEND_LED_CTRL
                   
                   CALL      DELAY_LONG
                   
                   LDP       #DP_USER
                   SPLK      #LED_1_NOCODE_BLANK,SPI_CON 
                   CALL      SEND_LED_CTRL
                   
                   
                   LDP       #DP_USER
                   SPLK      #LED_2_NOCODE_DP,SPI_CON 
                   CALL      SEND_LED_CTRL
                   
                   CALL      DELAY_LONG
                   
                   LDP       #DP_USER
                   SPLK      #LED_2_NOCODE_BLANK,SPI_CON 
                   CALL      SEND_LED_CTRL
                   
                   LDP       #DP_USER
                   SPLK      #LED_3_NOCODE_DP,SPI_CON 
                   CALL      SEND_LED_CTRL
                   
                   CALL      DELAY_LONG
                   
                   LDP       #DP_USER
                   SPLK      #LED_3_NOCODE_BLANK,SPI_CON 
                   CALL      SEND_LED_CTRL
                   
                   CALL      DELAY_LONG
                   
                   LDP       #DP_USER
                   SPLK      #LED_0_NOCODE_DP,SPI_CON 
                   CALL      SEND_LED_CTRL
                   
                   LDP       #DP_USER
                   SPLK      #LED_1_NOCODE_DP,SPI_CON 
                   CALL      SEND_LED_CTRL
                   
                   LDP       #DP_USER
                   SPLK      #LED_2_NOCODE_DP,SPI_CON 
                   CALL      SEND_LED_CTRL
                   
                   LDP       #DP_USER
                   SPLK      #LED_3_NOCODE_DP,SPI_CON 
                   CALL      SEND_LED_CTRL
                   
                   CALL      DELAY_LONG
                   
                   LDP       #DP_USER
                   SPLK      #LED_0_NOCODE_BLANK,SPI_CON 
                   CALL      SEND_LED_CTRL
                   
                   LDP       #DP_USER
                   SPLK      #LED_1_NOCODE_BLANK,SPI_CON 
                   CALL      SEND_LED_CTRL
                   
                   LDP       #DP_USER
                   SPLK      #LED_2_NOCODE_BLANK,SPI_CON 
                   CALL      SEND_LED_CTRL
                   
                   LDP       #DP_USER
                   SPLK      #LED_3_NOCODE_BLANK,SPI_CON 
                   CALL      SEND_LED_CTRL
                   
                   CALL      DELAY_LONG
                   B         LOOP_AK                
                  ; MAR       *,AR1
                  ;SBRK      #4H
                  ; LAR       AR7,*-
                  ; LAR       AR6,*-
                  ; LAR       AR0,*-
                  ; PSHD      *    
                  ; RET 
 
LOOP:
                   NOP                   
                   B         LOOP

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;开启蜂鸣器,
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  

BEEP_ON: 
                   LDP       #DP_PF2                 ;set data page 
                   LACC      PADATDIR
                   AND       #1111111111011111B
                   SACL      PADATDIR                ;store result to PCDATDIR       
                   RET  
        
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;关闭蜂鸣器,
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  

BEEP_OFF: 
                   LDP       #DP_PF2                 ;set data page 
                   LACC      PADATDIR
                   OR        #0000000000100000B
                   SACL      PADATDIR                ;store result to PCDATDIR  
                   RET 
        
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;开启LED
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  

LED_ON: 
                   LDP       #DP_PF2                 ;set data page 
                   LACC      PFDATDIR
                   AND       #1111111110111111B
                   SACL      PFDATDIR                ;store result to PCDATDIR  
                   RET 
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; 关闭led
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  

LED_OFF: 
                   LDP       #DP_PF2                 ;set data page 
                   LACC      PFDATDIR
                   OR        #0000000001000000B
                   SACL      PFDATDIR                ;store result to PCDATDIR  
                   RET                  
                             
DELAY:                       
                   LACC      #450000
DELAY1:            SUB       #1
                   RPT       #80
                   NOP       
                   BCND      DELAY1,NEQ
                   RET
DELAY_LONG:        RPT       #4
                   CALL      DELAY
                   RET   
                                          

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Configure the System Control and Status Registers
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
SYSTEM_INIT: 
                   LDP       #0
                   SETC      INTM
                   CLRC      SXM
                   CLRC      OVM
                   CLRC      CNF
                 
                   LDP       #SCSR1>>7         ;set data page   
                   LACL      #0000000000100001b 
                   SACL      SCSR1  ; ENABLE THE SPI AND CAN MODULES.          
                             ;5432109876543210          ; SET THE CPU WORKING CLOCK =4*fin
                   LDP       #WDCR>>7          
                   SPLK      #0E8H,WDCR            ;关看门狗
                   LDP       #0
                   ;SPLK      #0001H,IMR       ;使能spi所在中断1
                   ;SPLK      #0FFFFH,IFR      ;清除中断标志
                   ;CLRC      INTM
                                                                                   
                   RET  

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Disable the watchdog timer
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
KILL_DOG:
                   LDP       #DP_PF1                 ;set data page
                             
                   SPLK      #0000000011101000b, WDCR
                   
                   RET  

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Setup shared I/O pins
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
IO_INIT:
                   LDP       #DP_PF2                 ;set data page
                             
                   SPLK      #0000000000000000b,MCRA ;group A pins   
                             
                   LACC      PADATDIR                 ; IOPA5=OUT OUT=0
                             
                   OR        #0010000000000000B
                             
                   SACL      PADATDIR
                             
                   ;SPLK      #1111111000011101b,MCRB ;group B pins   W/R, IOPC1, SPISIMO,SPISOMI SPICLK,IOPC5.
                                                     ;DISABLE CANTX,CANRX = IOPC6,7. DISABLE XINT2 =IOPD0.     
                   ;LACC      PCDATDIR
                             
                   ;OR        #0010000000000000B      ;IOPC5=OUT OUT=0
                                            
                   SPLK      #0000000000000001b,MCRC ;group C pins   ENABLE I0PE6   
                  
                             
                   LACC      PFDATDIR                ; IOPF6=OUT OUT=0
                             
                   OR        #0100000000000000B
                             
                   SACL      PFDATDIR
                   
                   RET     
                   
;*****************************************************
; INITIALIZAION THE SPI REGISTERS
;*****************************************************

SPI_INIT:
                   LDP       #SPICCR>>7
                   SPLK      #0000111001001111B,SPICCR        ;ENABLE SPI REGISTER BE INTIAL AND 16BIT OUT允许SPI初始化
                             ;5432109876543210                ;16位数据发送
                   SPLK      #0000000000000110B,SPICTL        ;MASTER WORK CONDITION
                             ;5432109876543210         
                   SPLK      #0027H,SPIBRR        ;SPI BODE RATE =1MHz    cpu=40Mhz    spibrr=27h
                   SPLK      #0000000011001111B,SPICCR        ;DISABLE SPI INITAL       
                   LDP       #MCRB>>7
                   SPLK      #0000000000111111B,MCRB
                             ;5432109876543210 
                   RET 
        
;***********************************************
; ENABLE OR DISABLE THE CHIP: MAX7219
;***********************************************
        
ENABLE_MAX7219: 
	               LDP       #DP_PF2                 ;set data page 
                   LACC      PCDATDIR
                   AND       #1111111111011111B
                   SACL      PCDATDIR                ;store result to PCDATDIR      
                   RET       
                             
DISABLE_MAX7219:             
                   LDP       #DP_PF2                 ;set data page 
                   LACC      PCDATDIR
                   OR        #0000000000100000B
                   SACL      PCDATDIR                ;store result to PCDATDIR  
                   RET
                            
;********************************************************
;test whether the spi works in a normal condiction.
;******************************************************** 

SPI_TEST:
                   LDP       #DP_PF2
                   SPLK      #1111111000000011B,MCRB 
                   NOP
                   SPLK      #1111111111000011B,PCDATDIR
                   NOP
                   SPLK      #1111111111111111B,PCDATDIR
                   NOP
                   SPLK      #1111111111000011B,PCDATDIR
                   RET   

;********************************************************
;测试max7219芯片显示情况
;******************************************************** 
LED_DISPLAY:
                   CALL      ENABLE_MAX7219
                   LDP       #DP_PF1
                   SPLK      #DISPLAY_TEST_ON,SPITXBUF
LOOP2:             BIT       SPISTS,BIT6
                   BCND      LOOP2,NTC
                   NOP       
                   NOP       
                   NOP       
                   CALL      DISABLE_MAX7219  
                   RET 
;********************************************************                                        
;送max7219控制字子程序                                                     
;********************************************************  
SEND_LED_CTRL:    
                   LACL      SPI_CON
                   LDP       #SPITXBUF>>7
                   SACL      SPITXBUF 
LOOP_TEST:         BIT       SPISTS,BIT6
                   BCND      LOOP_TEST,NTC   
                   LDP       #SPIRXBUF>>7        ;CLEAR THE SPI INT FLAG
                   LACC      SPIRXBUF
                   RET


                   .end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -