An88 – Cirrus Logic AN88 User Manual
Page 10

AN88
10
AN88Rev2
;*************************************************************************************
;* Routine - write_register
;* Input - COMMANDBYTE, HIGHBYTE, MIDBYTE, LOWBYTE
;* Output - none
;*
;* This subroutine instructs the CS5525/6/9 to write to an internal register.
;*************************************************************************************
write_register BCF
PORTA,CS
; Clear Chip Select
MOVF
COMMANDBYTE,0 ; Load W with COMMANDBYTE
CALL
send_spi
; transfer byte
MOVF
HIGHBYTE,0
; Load W with HIGHBYTE
CALL
send_spi
; transfer byte
MOVF
MIDBYTE,0
; Load W with MIDBYTE
CALL
send_spi
; transfer byte
MOVF
LOWBYTE,0
; Load W with LOWBYTE
CALL
send_spi
; transfer byte
BSF
PORTA,CS
; Set Chip Select
RETURN
; Exit Subroutine
;*************************************************************************************
;* Routine - read_register
;* Input - COMMANDBYTE
;* Output - HIGHBYTE, MIDBYTE, LOWBYTE
;* This subroutine reads an internal register of the ADC.
;*************************************************************************************
read_register BCF
PORTA,CS
; Clear Chip Select
MOVF
COMMANDBYTE,0 ; Load W with COMMANDBYTE
CALL
send_spi
; transfer byte
CALL
receive_spi
; receive byte
MOVWF
HIGHBYTE
; Move W to HIGHBYTE
CALL
receive_spi
; receive byte
MOVWF
MIDBYTE
; Move W to MIDBYTE
CALL
receive_spi
; receive byte
MOVWF
LOWBYTE
; Move W to LOWBYTE
BSF
PORTA,CS
; Set Chip Select
RETURN
; Exit Subroutine