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.




Odpověď s citací