beautypg.com

An130 – Cirrus Logic AN130 User Manual

Page 11

background image

AN130

AN130REV2

11

;* Routine - convert
;* Input - none
;* Output - 24-bit Conversion Results in memory locations HIGHBYTE, MIDBYTE
;* and LOWBYTE.
;* The Algorithm itself will only perform a single
;* conversion using Setup 1. For multiple continuous
;* conversions, or for conversions using other setups, the routine
;* must be modified. (see the CS5521/22/23/24/28 data sheet for more info)
;*****************************************************************************

convert

MOVLW 0x0B

; Command to read Configuration Reg.

MOVWF COMMAND

; Set Command Byte

CALL

read_register

; Read Config. Register Information

MOVLW 0xF8

; Load mask info into W

ANDWF HIGHBYTE, 1 ; Mask MC, LP, and RC to 0
MOVLW 0x03

; Command to write Configuration Reg.

MOVWF COMMAND

; Set Command Byte

CALL

write_register ; Write Config. Register with new info

;

*** Receive Conversion Data ***

BCF

PORTA, CS

; Enable ADC

MOVLW 0X80

; Command for conversion using Setup 1

CALL

send_byte

; send command byte

poll_sdo2: BTFSC

PORTA, SDO; Wait until SDO falls to indicate
goto

poll_sdo2

; conversion completion

MOVLW 0X00

; Command to start data output

CALL

send_byte

; send command

CALL

receive_byte

; Receive data...

MOVWF HIGHBYTE

; High Byte 1st..

CALL

receive_byte

MOVWF MIDBYTE

; then the Middle Byte..

CALL

receive_byte

MOVWF LOWBYTE

; and finally the Low Byte.

BSF

PORTA, CS

; Disable ADC

RETURN

; Exit to "main"

;*****************************************************************************