Mam projekt kde musim porovnavat hodnotu AD prevodniku s referencni a nejak nejsem schopnej to rozchodit, uz jsem z toho zoufalej. Prikladam cast kodu, kde je pouze vse o AD prevodniku a to nejdulezitejsi...

Jestli nekdo vi tak budu strasne moc rad za pomoc, jakoukoliv.

Kód:
VOLTY_hi EQU 0x33 

#define VOLTY_MAX .522 ;2.55 V 

Nastaveni AD prevodniku: 

movlw b'10001' ;AN0 analog input,conversion clock Fosc/8 
movwf ANSEL 

movlw b'00000001' ;ADC on, right justified ;razeni zleva 
movwf ADCON0 

Cidla: 
;ctu z AD prevodniku a nastavuju ho 
banksel ADCON0 
bsf ADCON0,1 ;start conversion 

movlw .200 
movwf pocitadlo5 
WaitADC: 
; banksel ADCON0 
; btfsc ADCON0,GO ;tady se to zacyklilo tak jsem to udelal odecitanim 

decfsz pocitadlo5 
b WaitADC ;wait for ADC to finish 
b GetADC1 

GetADC1: 
movf ADRESH, W ;get high byte 
movwf VOLTY_hi 
banksel PIR1 
bcf PIR1,ADIF ;clear conversion flag 

;porovnavam hodnoty 
banksel GPIO 
movf VOLTY_hi,W 
subwf VOLTY_MAX 
btfss STATUS,C 
b ALARM_off 
b ALARM_on 

ALARM_on: 
b Sirena 
ALARM_off: 
b ZaCidla

Chci aby, kdyz hodnota VOLTY_hi bude mensi nez VOLTY_MAX se spustila sirena, jinac to preskoci na ALARM_off.

mam to spravne, nebo mi tam neco chybi? Vse z kodu co mam ohledne AD mam zde. Nic vic nemam k AD v kodu.