📄 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 + -