Stránka 1 z 1

PIC - instrukce MOVF

Napsal: 29 led 2012, 15:08
od josefhajek
Zdravím,

byl jsem už zoufalý z nefunčknosti svého programu, a nakonec po krokování v programu MPLAB jsem zjistil, že instrukce MOVF nějak nefunguje podle popisu !?

MOVF - MOVe F
Zápis: MOVF f,d
Operace: (f) -> d
Popis: Obsah registru f přesuneme do registru W (je-li d=0) nebo zpět do registru f (je-li d=1).
Cyklů: 1 Ovlivňuje: Z

Takže z toho popisu chápu, že můj následující kód vymaže registr CISLO, přesune do W 0Ah, (10DEC) toto číslo přesune do CISLO, potom vynuluje W registr, a v poslední příkaz přesune z CISLO do W cislo 0Ah (10DEC)
CLRF CISLO
MOVLW 0Ah
MOVWF CISLO
MOVLW 00h
MOVF CISLO,0
end

Ale v MPLABu se děje to, že tenhle kód dělá všechno dle očekávání, ale poslední instrukce MOVF nenasype do W 10ku DEC jak bych očekával, ale vezme se tam odněkud číslo 167.

CO TO SAKRA JE?!

Díky :D [/code]

Napsal: 29 led 2012, 15:21
od procesor
Daj tu celý program.
Aká hodnota je CISLO? Teraz rozmýšlaj!

Napsal: 29 led 2012, 15:54
od josefhajek
To jsem psal, hodnota CISLO je 0Ah, tj 10 DEC. Program přikládam včetně výsledku a stavu registru

Napsal: 29 led 2012, 16:01
od procesor
Nehovorím čo strkáš do "CISLO", ale akú hodnotu má "CISLO". To sú dve rôzne veci. jedno je meno bunky-RAM, druhé je obsah-(RAM).

Pozerám na program....to je úryvok, alebo celý zdrojový text a nič viac?
npr.:
ORG je 0?
Procesor typ?
Niektoré veci definujem (automaticky), ani to bez nich nepreložíš.
Program "end"-om neskončíš

Napsal: 29 led 2012, 17:01
od josefhajek
Áha, tak to potom jo:) CISLO sedi na 20h, org vůbec nepoužívam, není to v soupisu instrukcí pro PICe, a typ je 16F84A, ale to je v případě simulátoru asi zbytečné, ne?

Tak jako tak, přesun čísla z jednoho registru do druhého nesmí způsobit nesmyslný výsledek...

Napsal: 29 led 2012, 17:29
od josefhajek
Tak už to šlape jak má :)

Napsal: 29 led 2012, 17:37
od procesor
Co si zmenil?
Aký simulátor používaš?