Zahada COMFu

Ahojte,
v premennej Command mam hodnotu napr.: 10011101. Potrebujem poslat na port znegovanu hodnotu.
Instrukciou COMF Command, F znegujem hodnotu a poslem na port. V simulatore vsetko ok, stav registru sa zneguje a na port sa vsetko posle ako ma.
Zahada pre mna je, ze ked program nahram do realneho procesora, odosle sa na port B’11111111’

Ked manualne vlozim do premennej znegovanu hodnotu B’01100010’ vsetko funguje aj v realnom svete.

Kod je cca takyto:

	COMF Command, F
	MOVLW D'8'
	MOVWF pocet_cyklov
	BCF STATUS,C
LOOP
	RLF Command, F
	BTFSS STATUS,C
	CALL LOG0
	BTFSC STATUS,C
	CALL LOG1
	DECFSZ pocet_cyklov,F
	GOTO LOOP

PS: ked nahradim COMF instrukciou XORF 0xFF tak sa to sprava rovnako. V simulatore ok, v realnom svete posle B’11111111’

Plech je PIC16F690.

Nejake napady co robim zle?

Proč máš u označených řádků mezeru za čárkou a až potom registr kam to provest?
Zkousne to takto překladač?

**COMF Command, F
MOVLW D'8'
MOVWF pocet_cyklov
BCF STATUS,C

LOOP
RLF Command, F
BTFSS STATUS,C
CALL LOG0
BTFSC STATUS,C
CALL LOG1
DECFSZ pocet_cyklov,F
GOTO LOOP**

Popravde nad tym som sa nikdy nepozastavil - je to tak nespravne?

Prekladac nenamieta a aj program robi co ma. Niekedy tam tu medyeru proste dam a niekedy nie.

COMF Command, F MOVLW D'8' MOVWF pocet_cyklov BCF STATUS,C LOOP RLF Command, F BTFSS STATUS,C CALL LOG0 BTFSC STATUS,C CALL LOG1 DECFSZ pocet_cyklov,F GOTO LOOP
Tady nic na port neposíláš.

Mezera za , překladači nevadí :smiley:

Nevím jestli vadí mezera zrovna za čárkou, ale od jisté doby v souboru se zdrojovým kódem v ASM žádné mezery nemám a mám takový pocit, že Mikop ví dobře proč to píše. Mám s tím totiž taky svoje zkušenosti, sám jsem se už asi dvakrát potkal s podobným problémem - v situaci kdy neproběhl překlad až do konce a já po několik dní nevěděl proč a nemohl jsem na nic přijít, jsem pak narazil na podobné vlákno tuším na fóru Microchipu, kde se taky řešily mezery. Čistě ze zoufalství jsem pak šel a vyzkoušel všechny mezery odstranit, nahradil jsem je tabulátory a na začátky prázdných řádků dal všude středníky - a voilà, překlad najednou proběhl úplně bez problému a kód fungoval.

Nevím už přesně jaká verze překladače to byla ani s jakou chybou tehdy končil, je to už delší dobu (možná bych to ještě někde dohledal), nicméně na mezery v souboru jsem od té doby hodně hodně opatrný, v podstatě je mám už jen za středníky v komentářích.