 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.46 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Pet Nov 02, 2007 10:35 am Naslov sporočila: Prekinitve PIC12f683 |
|
|
Prebrskal sem že forum, vendar nisem zasledil podatka.
Imam dokaj velik program pisan v ASM-ju. V simulatorju dela, na HW-ju pa noče skočiti v prekinitev.
Koda je sledeča, kaj bi bilo lahko narobe?
Koda: |
org 0x00
goto MAIN
org 0x05
movwf WTMP ; Save W and status
swapf STATUS,W ;
movwf STMP ;
clrf STATUS ; Clear status
movlw AND_LED ; XOR LED
xorwf GPIO, f ;
END_INT
swapf STMP,w ;restore W and status
movwf STATUS ;
swapf WTMP,f ;
swapf WTMP,w ;
retfie
; //interupt
MAIN
BANK1
movlw b'01100000' ;
movwf OSCCON ;
BANK0 ; Inicialization
clrw ; clear w
addlw 0 ; clear Carry
movlw b'00000111' ; disable comparator module
movwf CMCON0 ; to enable digital I/O
clrf GPIO ; Clear all ports
BANK1
movlw b'00100100' ; GP5 & GP2 input
movwf TRISIO ;
clrf ANSEL ;
BANK0
bsf LED ; Light up led
BANK1
movlw b'10000000' ; enable timer0
movwf OPTION_REG
BANK0
movlw b'00110001' ; enable timer1
movwf T1CON ;
movlw b'01111110' ; enable timer2
movwf T2CON ;
clrf TMR0 ; clear TMR0
clrf TMR2 ; clear TMR0
bsf INTCON, PEIE ; enable peripheral interupt
bsf INTCON, GPIE ; enable interrupt on change
bsf INTCON, T0IE ; enable timer0 interrupt
BANK1
bsf IOC, IOC5 ; enable interrupt on pin change
bsf PIE1, TMR1IE ; enable timer1 interupt bit
BANK0
bsf INTCON, GIE ; enable global interupt
clrf FLAGS ; clear flags
bsf COMMERROR ; set communication error
movlw .16
movwf KEYTIMER ; set keytimer to defalut
BANK1
clrf EEADR ; clear eeprom address
bsf EECON1, RD ; read position 0
movfw EEDAT ; read address
BANK0
movwf KEY_ADDRESS ;
MAIN_LOOP
btfsc KEYVALID ; if key is pressed long enough
call KEYPRESSED ; call subroutine
btfsc COMMERROR ; if not commerror
goto MAIN_NEXT ;
btfsc COMMRESET ; and commreset is set
call COMM_START ; call communication start!
MAIN_NEXT
goto MAIN_LOOP |
Upam, da je razumljivo napisano. |
|
Nazaj na vrh |
|
 |
bungee Član


Pridružen-a: Pon 07 Mar 2005 18:49 Prispevkov: 1479 Aktiv.: 6.24 Kraj: Ljubljana
|
Objavljeno: Pet Nov 02, 2007 10:56 am Naslov sporočila: |
|
|
Kako veš, da ne skoči v prekinitev? In ali imaš definirane nivoje na vhodnih pinih, kjer prožiš interrupt?
Na oko koda izgleda OK. |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.58
|
Objavljeno: Pet Nov 02, 2007 10:56 am Naslov sporočila: |
|
|
Zakaj pa org 0x05 ?!?!?! _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.46 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Pet Nov 02, 2007 11:03 am Naslov sporočila: |
|
|
Sokrat je napisal/a: |
Zakaj pa org 0x05 ?!?!?! |
Hm. Dobro vprašanje. Zakaj simulator dela dobro. Hw je pa vedno v W naložil 0xff.
Vem da ne skoči, ker gledam signale LED na osciloskopu. V prekinitev zdaj skoči, ko sem odstranil linker skripto. Ne vem zakaj je sploh prišla noter. |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.58
|
Objavljeno: Pet Nov 02, 2007 11:52 am Naslov sporočila: |
|
|
Saj addlw 0xff ni nelegalen ukaz, samo nesmiseln je, ker spremeni zastavice in vrednost v W za 1 (ce je bil prej flash pobrisan seveda, sicer je lahko naredil MCU kaj drugega).
Res bizarno, da niso pri Microchipu dolocili pobrisane lokacije kot NOP ... najbrz je to poenostavilo ukazni dekoder. _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|