An89 – Cirrus Logic AN89 User Manual
Page 8

AN89
8
AN89Rev2
**************************************************************************************
* Routine - convert
* Input
- none
* Output - Conversion results in memory locations HIGHBYTE, MIDBYTE and
*
LOWBYTE. This algorithm performs only single conversions. If
* continuous conversions are needed the routine needs to be
* modified. Port flag is zero.
*
*
HIGHBYTE MIDBYTE LOWBYTE
*
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
* 16-bit results MSB
LSB 1 1 1 1 0 0 OD OF
* 20-bit results MSB
LSB 0 0 OD OF
* This subroutine initiates a single conversion.
**************************************************************************************
convert
LDA #$C0
; Set COMMANDBYTE for single CONV
STA COMMANDBYTE
JSR
send_spi
; Transmit command out SPI
LDA #$94
; Set command byte for config read
STA COMMANDBYTE
; Send COMMAND BYTE
done1
JSR
read_register
; Poll done flag until CONV complete
BRCLR 3,LOWBYTE,done1
; Repeat if Done Flag not Set
LDA #$96
; Set Byte to Read Conversion Reg.
STA COMMANDBYTE
; Store COMMAND BYTE
JSR
read_register
; Acquire the Conversion
RTS
; Exit subroutine
**************************************************************************************
* 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 LDA COMMANDBYTE
; Load ACCA with COMMANDBYTE
JSR
send_spi
; transfer byte
LDA HIGHBYTE
; Load ACCA with HIGHBYTE
JSR
send_spi
; transfer byte
LDA MIDBYTE
; Load ACCA with MIDBYTE
JSR
send_spi
; transfer byte
LDA LOWBYTE
; Load ACCA with LOWBYTE
JSR
send_spi
; transfer byte
RTS
; Exit Subroutine