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