list P=16F877
__config _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_ON & _CPD_OFF & _LVP_OFF & _BODEN_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC
radix hex
include "p16f877.inc"
CBLOCK 0X20
count
count10
tempd
ENDC
org 0x000
bcf STATUS, RP1
bsf STATUS, RP0 ; TO BANK 1
movlw 0xFF
movwf TRISA ; SET PORTA AS INPUT
clrf TRISC
clrf TRISD
movlw b'00001110'
movwf ADCON1 ;RA0, VREF- RA2, VREF+ RA3
bcf STATUS, RP0
repeat movlw b'01000001'
movwf ADCON0 ;F OSC/8, ENABLE A/D
;20us delay loop with 4MHz oscillator frequency
call delay1
bsf ADCON0,GO ;initiate conversion
call delay1
call delay1
test btfsc ADCON0,GO ;conversion done?
goto test ;not finished
call delay1
call delay1
bcf STATUS, RP1
bsf STATUS, RP0
bsf ADCON1, ADFM
movf ADRESL, W
bcf STATUS, RP0
movwf PORTD
movf ADRESH, W
movwf PORTC
goto repeat
delay1 movlw 0x06
movwf count ;initialize count
loop
decfsz count, f ;dec count, store in count
goto loop ;not finished
return
end