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

📄 ad976test.asm

📁 dspAD976驱动测试子程序(2407),驱动A/D模块AD976芯片
💻 ASM
字号:

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                   .global      start

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Address definitions
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                   .include  f2407.h 
                   .include  vectors.h  
                   
Start_AD976        .set      1000000000000010b
							;5432109876543210
Read_AD976         .set      0000000000000010b							                   

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Setup the software stack
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stk_len            .set      100              ;stack length
stk                .usect    "stack",stk_len  ;reserve space for stack   

;*********************************************************************
;                     M A I N   R O U T I N E                        *
;*********************************************************************
                   .text
start:              
                   LAR       AR1, #stk               ;AR1 is the stack pointer
                   CALL      SYSTEM_INIT 
                   CALL      IO_INIT 

                   SETC      XF
                   CALL      LED_ON
                   CALL      BEEP_ON
                   CALL      DELAY_LONG 
                   CALL      DELAY_LONG
                   CALL      DELAY_LONG
                   CLRC      XF    
                   CALL      BEEP_OFF 
                   CALL      LED_OFF
                   
                   ;SPLK	     #0H,60h 
                             ;5432109876543210
	        	   ;OUT		 60h,WSGR		; Set waitstates for external memory (if used)  
                   
                   CALL      CAN_INIT  
                   
LOOP_TEST:         
                   
                   OUT       *,Start_AD976 
                   CALL      DELAY_SHORT
                   CALL      DELAY_SHORT
                   CALL      DELAY_SHORT
                   NOP
                   NOP
                   NOP
                   NOP 
                   NOP
                   NOP
                   NOP
                   NOP
                   NOP
                   NOP
                   NOP
                   NOP
                   NOP
                   NOP
                   NOP
                   NOP
                   IN        *,Read_AD976  
                   CALL      DELAY_SHORT
                   B         LOOP_TEST
                   
                    
LOOP:
                   NOP                   
                   B         LOOP   
                   
                   
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;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      #0000011000000001b 
                             ;5432109876543210
                   SACL      SCSR1  ; ENABLE THE SPI AND CAN MODULES.          
                             ;5432109876543210          ; SET THE CPU WORKING CLOCK =4*fin
                   LDP       #WDCR>>7          
                   SPLK      #0E8H,WDCR            ;关看门狗
                   ;LDP       #0  
                   ;LDP       #IMR>>7
                   ;LACL      0000000000100000B
                            ;5432109876543210
                   ;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     
                   
DELAY:                       
                   LACC      #90000
DELAY1:            SUB       #1
                   RPT       #80
                   NOP       
                   BCND      DELAY1,NEQ
                   RET   
                   
DELAY_SHORT:                          ;20MHz   DELAY 1uS
                   NOP
                   NOP
                   NOP
                   NOP
                   NOP
                   NOP 
                   NOP
                   NOP
                   NOP
                   NOP
                   NOP
                   NOP
                   NOP
                   NOP
                   
                   RET                   
                   
DELAY_LONG         LACC      #2
DELAY_LONG1:       SUB       #1 
                   PUSH      ACC
                   CALL      DELAY 
                   POP       ACC
                   BCND      DELAY_LONG1,NEQ
                   RET   
                   
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;开启蜂鸣器,
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  

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                     
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;can接口初始化
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
CAN_INIT:          LDP       #MCRB>>7 
                   SPLK      #0FF00H,MCRB
                   ;LACC      MCRB
                   ;OR        #0000000001000000B
                   ;AND       #1111111101111111B
                   ;SACL      MCRB
                   ;LDP       #PCDATDIR>>7
                   ;LACC      PADATDIR
                   ;OR        #0100000010000000B
                   ;AND       #0111111110111111B
                   ;SACL      PADATDIR
                     
                   RET              
                   
                                                                            
                   .end

⌨️ 快捷键说明

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