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