[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