PIC, assembler, interrupt
Ak pouzijem pin RB0 ako interrupt mozem ho nadalej pouzivat ako input port?
Ide mi o to ci po preruseni mozem ten pin testovat na to ci je este stale HIGH (test ci je este stale tlacitko stlacne). Samozrejme interrupt nastaveny na rising edge.
Pre pridávanie komentárov sa musíte prihlásiť.
Pytam sa ci mozem normalne testovat BTFSC PORT0,RB0 aj ked sa pin pouziva na samotne prerusenie.
Ja osobne sa snažím využívať prerušenia iba vtedy, ak nie je iná možnosť. Testovanie tlačítka vačšínou stačí dať do programovej slučky, v ktorej sa procesor rozhoduje podľa stavu tlačítka. Netreba testovať stav pinu, ale iba stav vlajky INTF, ktorú procesor nastaví aj vtedy, keď nie je povolené prerušenie. Nič nebráni programu potom čakať aj 500 ms, zhodiť vlajku INTF a podľa úrovne na pine sa rozhodnúť o ďalšom pokračovaní programu.
Este jednu vec by som sa chcel opytat. Bude za chybu ak sa z prerusenia nebudem vracat pomocou RETFIE ale cez GOTO? teda ak sa nepotrebujem vratit na miesto kde prerusenie nastalo.
The PIC16F627A/628A/648A family has an 8-level
deep x 13-bit wide hardware stack (Figure 4-1). The
stack space is not part of either program or data space
and the Stack Pointer is not readable or writable. The
PC is PUSHed onto the stack when a CALL instruction
is executed or an interrupt causes a branch. The stack
is POPed in the event of a RETURN, RETLW or a
RETFIE instruction execution. PCLATH is not affected
by a PUSH or POP operation.
Ale v mojom pripade to nevadi. Nic ine okrem prerusenia stack nepouziva, nemam nikde RETURN alebo RETLW
Moj program je obycajna blikacka s viacerymi vzormi. Vzory sa nastavuju podla registra "pattern"
Na zaciatku spusti TEST podla ktoreho spusti nektory vzor, ked skonci pusti test odznovu. Prerusenie mi prestavuje "pattern" register. A aby zmena nastala hned je tam GOTO na TEST. Nemozem predsa za kazdou castou kde mam aj delay kontrolovat zmenu patttern bytu