[elektro] HI-TECH fordito bug

Huszti Andras kyrk at villamvadasz.hu
Wed Sep 17 19:03:52 CEST 2008


Hali!

HI-TECH v9.6 fordito PIC 16f88 -on.

A kovetkezot tapasztaltam:
#define ON	1
#define OFF	0
VENTIL = ON; es VENTIL = OFF; sorokat adtam ki a main-ben kulonbozo
valtozoktol fuggoen.

Interruptban pedig :

if (VENTIL == ON) {
	VENTIL_IO = 1;
} else {
	VENTIL_IO = 0;
}

Erre a kimenet elkezdett peregni mivel a fordito:
VENTIL = ON; (1)
clrf _VENTIL
incf _VENTIL

illetve :
VENTIL = OFF;
clrf _VENTIL

Emiatt a VENTIL = ON , ha interrupt a incf elott de clrf utan csapott be
akkor VENTIL = OFF volt es a kimenet torlodott.

Optimalizalast kiszedtem, es maradt a helyzet. Megoldas egy kozbenso
valtozo hasznalat a mainbe, ami VENTILtemp volt a VENTIL helyet azt
valtoztattam, majd a vegen:
VENTIL = VENTILtemp;

Tudom lehetne kozvetlen a portot irni, de jobb szeretem latni amikor a
portra ir ki mert igy az interruptban el tudom kapni, ha rossz dolog
kerul ki. Illetve celszerubb, mert igy a foprogramban kedvemre
valtoztathatom ide oda  (amig le van tiltva az interrupt). (vagy
foprogrambol egszszer de akkor nem kell interuptot tiltani mivel nem fog
peregni a valtozo)



More information about the Elektro mailing list