Timer0 mit Interrupt funktioniert nicht - bitte Hilfe

OP #3317082
Lesenswert?
• ▲
▼
Hallo,

ich versuche bei einem pic16f887 den timer0 mit dem dazugehörigen 
interrupt einzustellen. wenn der timer dann überläuft soll das 
auslösende interrupt flag die leds an portd einschalten um mir zu zeigen 
das der timer einmal durchgelaufen ist. die zeit nach der das der fall 
ist, ist erstmal egal ich kann sie später ja noch anpassen durch 
veränderung am prescaler mir geht es nur erstmal um die generelle 
funktion denn da hab ich anscheinend noch nicht die lösung gefunden.

kann mir bitte jemand weiterhelfen?

das ist der code:
1
/////////////////////////////
2
#include <stdio.h>
3
#include <stdlib.h>
4
#include <pic16f887.h>
5
#include <xc.h>
6

7
// CONFIG1
8
#pragma config FOSC = INTRC_NOCLKOUT
9
#pragma config WDTE = OFF
10
#pragma config PWRTE = ON       
11
#pragma config MCLRE = ON       
12
#pragma config CP = OFF         
13
#pragma config CPD = OFF        
14
#pragma config BOREN = ON       
15
#pragma config IESO = ON       
16
#pragma config FCMEN = ON       
17
#pragma config LVP = OFF        
18
// CONFIG2
19
#pragma config BOR4V = BOR40V   
20
#pragma config WRT = OFF        
21

22
#define _XTAL_FREQ 4000000
23

24
void main(void)
25
{
26
// Timer Startwert auf 0 setzen
27
            TMR0 = 0b00000000;
28
// Einstellen des Interrupt Registers
29
          INTCON = 0b10100000;
30
// Programmierung des Timer0 im OPTION_REG Register
31
      OPTION_REG = 0b11000000;
32

33
      TRISD = 0b00000000;
34

35
    while(1)
36
    {
37
        if(T0IF == 1)
38
        {
39
          PORTD = 0b11111111;
40
          __delay_ms(1000);
41
          INTCON = 0b10100000;
42
          TMR0 = 0b00000000;
43
        }
44
        else
45
            PORTD = 0b00000000;
46
       
47
    }
48
}
49
//////////////////////////////////////

vielen dank,

gruß tobi
Gast #3320362
Lesenswert?
• ▲
▼
Ich seh in deinem Programm keine Interrupt-Routine

wenn sie drinnen ist überprüfe ob die Interruptvektoren stimmen also, ob 
die Routine auf den overflow_vector legst oder ob du vielleicht einen 
falschen eingetragen hast

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.