User guide

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