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

📄 ad7793汇编.asm

📁 是一款单片机AD7793的汇编程序
💻 ASM
字号:
        INCLUDE<P16F88.INC>
COUNT    EQU     20H
DATA_W	 EQU	 21H
DATA_R   EQU     22H

;----- PORTA Bits -------------------------------------------------------
SCLK     EQU     02H
DIN		 EQU     03H
DOUT	 EQU	 04H

         ORG	 0000H
         GOTO    START

START
        NOP
		BANKSEL   OSCCON
        MOVLW     0x66
        MOVWF     OSCCON
        BANKSEL   TRISA
        BCF	      TRISA,2                 ;	设RA2(SCLK)为输出方式
        BCF	      TRISA,3                 ;	设RA3(DIN)为输出方式
        BSF	      TRISA,4                 ;	设RA4(DOUT/RDY#)为输入方式
        BCF       STATUS,IRP
        BCF	      STATUS,RP1
        BCF       STATUS,RP0         ;BANK0       
        CALL      INTAD7793
        CALL	  READP
        GOTO      $
;==============================================================
;AD7793压力采样子程序
;结果存在23H24H25H(HIGH--->LOW)
READP
		 CALL      DELAY
         MOVLW	  0x23
         MOVWF	  FSR
         BCF	  PORTA,2              ; 置SCLK=0
         BTFSC    PORTA,4
         GOTO     $-1
		 MOVLW    0x58                 ;select  Data Register
         MOVWF	  DATA_W
         CALL	  SPI_1_SENT
		 BSF	  PORTA,3
         CALL	  SPI_1_RECE
         MOVF	  DATA_R,0
         MOVWF    INDF
         INCF     FSR,1
         CALL	  SPI_1_RECE
         MOVF	  DATA_R,0
         MOVWF    INDF
		 INCF	  FSR,1
         CALL	  SPI_1_RECE
         MOVF	  DATA_R,0
         MOVWF    INDF
         RETURN
         
;初始化AD7793
INTAD7793
        
         ;BCF      STATUS,RP0               ;BANK0
         MOVLW    0x10                 ;select Configuration Register
         MOVWF	  DATA_W
         CALL     SPI_1_SENT   
         MOVLW    0x11                   ;Configuration Register(High)
         MOVWF	  DATA_W
         CALL     SPI_1_SENT
         MOVLW    0x90                 ;Configuration Register(LOW)
         MOVWF	  DATA_W
         CALL     SPI_1_SENT


         MOVLW	  0x28                 ;select IO Register
		 MOVWF	  DATA_W
		 CALL     SPI_1_SENT

         MOVLW	  0x03                 ;IO Register   03 1mA 02 0.21mA 0a 0.42mA
		 MOVWF	  DATA_W
		 CALL     SPI_1_SENT
         MOVLW	  0x08                    ;select Mode Register
         MOVWF	  DATA_W
         ;MOVLW    0x08
        ; MOVLW    DATA_W
         CALL     SPI_1_SENT
         MOVLW    0x20                   ; mode register(High)
         MOVWF	  DATA_W
         CALL     SPI_1_SENT
         MOVLW    0x0F                   ; mode register(Low)
         MOVWF	  DATA_W
         CALL     SPI_1_SENT
       
         RETURN

;向AD7793写入一个字节数据
SPI_1_SENT
         MOVLW	  0x08                  
         MOVWF	  COUNT                ;置循环次数       
            
         BSF	  PORTA,2              ; 置SCLK=1
         NOP
		 NOP                    
         BCF	  PORTA,2              ; 置SCLK=0
L1       BTFSC	  DATA_W,7
         GOTO     SENT_1
         BCF      PORTA,3                 ; 置DIN=0
         GOTO	  SENT_0
SENT_1   
         BSF	  PORTA,3                ; 置DIN=1
SENT_0
         NOP
   		 NOP
		 BSF	  PORTA,2             ; 置SCLK=1
         NOP
		 NOP
         BCF	  PORTA,2               ; 置SCLK=0
         RLF	  DATA_W,1                ;左移一位
         NOP
         DECFSZ   COUNT,1                 ;COUNT不为零转L1
         GOTO	  L1
		 NOP
         NOP 

         RETURN

;从向AD7793写入读出一个字节数据
SPI_1_RECE:
         MOVLW	  0x08                  
         MOVWF	  COUNT                 ;置循环次数  
L2       BSF	  PORTA,2                ; 置SCLK=1
         NOP
         NOP
;L2       ;BCF	  PORTA,2                 ; 置SCLK=0
         BTFSC    PORTA,4
         GOTO     RECE_1
         BCF      STATUS,C                     ;THE RECE DATA IS 0
         RLF      DATA_R,1
         GOTO	  CON_RECE
RECE_1
         BSF	  STATUS,C                      ;THE RECE DATA IS 1
         RLF	  DATA_R,1
CON_RECE
         BCF	  PORTA,2                ; 置SCLK=0
         ;NOP
  		 ;NOP
         DECFSZ	  COUNT,1                 ;RECE 8 BIT?
         GOTO     L2
         NOP
         NOP

         RETURN

DELAY
         MOVLW    0x90
		 MOVWF	  COUNT
L3      NOP
         NOP
         NOP
         DECFSZ	 COUNT,1
         GOTO	 L3
         NOP
         RETURN
         END

⌨️ 快捷键说明

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