An89 – Cirrus Logic AN89 User Manual

Page 8

Advertising
background image

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

Advertising