GIE bit nollas, varför?
Postat: 27 mars 2012, 07:22:38
Hej!
Håller på och skriver en kod där interrupt sker med hjälp av timer 0. Får dock lite problem. När jag stegar igenom min kod så nollställs GIE biten när jag stegar över den första bsf instruktionen. Frågan är ju kort och gott varför?
Detta innebär ju att jag inte får några interrupt mer (dock är T0IE biten fortfarande 1:a och också flaggan T0IF blir också 1 när overflow sker som sig bör)
Kan det ha med programmiljön? (Mplab IDE v8.84)
Kan också tillägga att det är PIC16f690 och att jag bara simulerat det i MPLAB SIM än så länge
Håller på och skriver en kod där interrupt sker med hjälp av timer 0. Får dock lite problem. När jag stegar igenom min kod så nollställs GIE biten när jag stegar över den första bsf instruktionen. Frågan är ju kort och gott varför?
Detta innebär ju att jag inte får några interrupt mer (dock är T0IE biten fortfarande 1:a och också flaggan T0IF blir också 1 när overflow sker som sig bör)
Kan det ha med programmiljön? (Mplab IDE v8.84)
Kan också tillägga att det är PIC16f690 och att jag bara simulerat det i MPLAB SIM än så länge
Kod: Markera allt
#include p16f690.inc
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
cblock 0x20
PWM_Period
endc
org 0
main call init ;Initiering av PIC
call init_timer0
bsf PORTB,5 ;Ettställer RB6
nop
nop
nop
nop
nop
nop
end_lp goto end_lp
irq nop
bcf INTCON,T0IF ;Nolla timer0 flagga
movlw b'11111110' ;Sätter timer0 räknare
movwf TMR0
retfie
init_timer0
movlw irq
movwf 0x04
banksel OPTION_REG
movlw b'00001000' ;Ställer intern klocka skala 1:256
movwf OPTION_REG
banksel INTCON
bsf INTCON,T0IE ;Sätter på interrupt från timer 0
bsf INTCON,GIE ; Sätter på interrupt globatl
banksel TMR0
movlw b'11111110' ;Sätter timer0 räknare
movwf TMR0
bcf INTCON,T0IF ;Nolla timer0 flagga
return
init
banksel TRISB
clrf TRISB ;Gör alla B-portar till utgångar
banksel OSCCON
movf OSCCON,W
addwf b'0111000',OSCCON ;Sätter 8Mhz klocka
banksel PORTB
return
end