An88 – Cirrus Logic AN88 User Manual

Page 10

Advertising
background image

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

Advertising