Podivne chovani preruseni u PIC16F84A/04
Snail Instruments
snail
Středa Březen 17 14:26:44 CET 2004
Potencialni nebezpeci muze byt v podprogramech prek nebo koduj1. Pokud je vstupni parametr v povolenem rozsahu, chovaji se spravne, ale pokud neni, program se takrikajic utrhne ze retezu. Nenapada me zrovna, kudy by se tam mohla nespravna hodnota dostat, ale doplnil bych na zacatek obou podprogramu malou kontrolu parametru a uvidime, jestli se problem napravi:
prek movwf TMP
addlw -.60 ;test w < .60
btfsc status,c
retlw b'10001000' ;navrat 88 jako chybova hodnota
movlw .3
movwf PCLATCH
movf TMP,w
addwf PCL,f
retlw b'00000000' ;00
retlw b'00000001' ;01
...
koduj1 movwf TMP
addlw -.12 ;test w < .12
btfsc status,c
retlw b'10000110' ;navrat E jako chybova hodnota
movlw .3
movwf PCLATCH
...
Dale procedura pocitej nebude pocitat od 59 do 0 ale do 1. Preruseni TMR0 se pri preddelicce 256 a krystalu 4MHz vyvolava s frekvenci 1E6/2^16, cili asi 15Hz. Proto zrejme displej beha tak rychle.
Jeste me napadlo ze procedura pocitej je jako stvorena pro pouziti instrukce decfsz (nema to na jeji vysledek vliv, ale je to kratsi):
pocitej
decfsz sekundy,f
return
movlw .59
movwf sekundy
decfsz minuty,f
return
movwf minuty
return
J. Hanzal
Další informace o konferenci Hw-list