Hallo, ich arbeite gerade mit dem PIC18F46K40 und habe ein Problem, dass ich nicht gelöst bekomme. Und zwar will ich einfach nur die Timer 0 Interrupt Flag (TMR0IF) im PIR0 Register löschen. Aber egal was ich mache, sie verändert sich im Simulator nicht. Weder setzten noch löschen. Wenn ich alle PIR0 Bits manuell im Simulator über das Interface setze und im Programm mit CLRF lösche werden auch nur die Bits [0;3] gelöscht. Die Bits [4;7] bleiben, egal was ich mache unverändert. Auch auf einem echten PIC scheint das der Fall zu sein, denn schon beim simplen versuch eine Blinkenden LED zu programmieren, bleibt die LED im Anfangszustand. Sprich meine Delay Funktionen läuft unendlich lang, da sich aus irgendeinem Grund die TMR0IF nicht verändert (Oder ich einfach einen Programmier Fehler gemacht habe und der Simulator nen Bug hat.....). Hat jemand Ideen, was das Problem sein könnte? Hier meine Delay Routine:
1 | delay: |
2 | movlw b'00000000' |
3 | movwf T0CON0,0 |
4 | movlw b'01000000' |
5 | movwf T0CON1,0 |
6 | movlw h'ff' |
7 | movwf TMR0H,0 |
8 | movlw h'00' |
9 | movwf TMR0L,0 |
10 | banksel PIR0 |
11 | bcf PIR0,TMR0IF,1 |
12 | bsf T0CON0,T0EN,0 |
13 | loop: |
14 | btfss PIR0,TMR0IF,1 |
15 | bra loop |
16 | bcf T0CON0,T0EN,0 |
17 | bcf PIR0,TMR0IF,1 |
18 | return 0 |