RE: Návrch programu pro PIC16F628
jiri@bezstarosti.cz
jiri@bezstarosti.cz
Středa Červen 2 19:34:40 CEST 2004
>A taky zde neni patrno jestli volane procedury nuluji priznakovy bit daneho
preruseni.
Toto je velice zasadni otazka. Pokud treba v teto casti kodu:
btfss INTCON,RBIF ; RB7..RB4
goto $+5
btfsc W,4 ; FANCTRL1
call IH_FANCTRL1 ; prozatím neimplementováno
btfsc W,5 ; FANCTRL2
call IH_FANCTRL2 ; prozatím neimplementováno
mate jako podprogram IH_FANCTRL1 zatim jen nejaky RETURN, cimz zavani to ze
to neni prozatim implementovano a nikde nesmaznete INTCON,RBIF, pak se po
ukonceni podprogramu preruseni od nej vyvola preruseni dalsi a bude to
prerusovat tak dlouho, dokud jen nevynulujete.
Dale:
movlw PORTB ; aktualní PORTB -> W
neudela uplne co si myslim ze jste myslel tou poznamkou, ale naplni W
adresou PORTB. Pokud budete chtit nabrat z PORTB, pak bude lepe pouzit:
movf PORTB,W
Navic to nabrani hodnoty z PORTB zrusi tem "mysmas" co vznika pri nastaveni
RBIF a dovoli Vam jej vubec smazat :).
Dale by bylo fajn si odlozit tu nabranou hodnotu z portu jeste nekam mimo W,
protoze ty podprogramy co volate dale, treba ohledne prijmu ze seriaku budou
W celkem jiste vyzadovat, nebo zpracujte ten port jako prvni. Je mi jasne,
ze ten PORTB se snazite sliznout co nejdrive, tak si po tom nabrani do W tu
hodnotu z W proste odlozte do nejakeho TMP registru, pokud chcete ten port
obslouzit treba nutne z nejakeho duvodu az jako posledni.
btfsc W,4
je pak nesmysl. Pro btfsc se W neda pouzit, nebo alespon ne u PIC16, ale az
u PIC18 a W se pak pise jako WREG, protoze PIC16 jej nemaji mapovan do
pameti dat, ale uplne mimo, takze instrukce btfsc do nej proste nemuze a pro
test bitu v tom W si zase bud musite prehodit to W do nejakeho registru v
pameti, nebo pokud jej prehazovat nehodlate a setrite treba pameti dat, pak
to lze udelat:
andlw B'00010000'
btfss STATUS,Z
call IH_FANCTRL1
cimz se call preskoci, pokud je ve ctvrtem bitu W 0 a call se provede, pokud
v nem nula neni a tedy neni vysledek nula a STATUS,Z se nenastavil :).
Vice jsem to neprochazel, jen ted prolit vocima. Rovnou se omlouvam ze pisu
az ted, docela jsem si dnes uzival s GCC - fakt to C nemusim, ale ted musim
:))).
Mimo nejste, to bude dobry.
--
Jiri Bezstarosti
Další informace o konferenci Hw-list