--- trunk/PIC/main.c 2007/01/30 22:17:53 21 +++ trunk/PIC/main.c 2007/01/30 22:49:03 22 @@ -139,7 +139,16 @@ RB2 = !RB2; } */ - +//Timer1 er en 16 bit timer, der kører med en 1:8 prescaler, +// og er styret fra en ekstern 32768 Hz krystal +//Når at registrene preloades med 0xEFFF vil det resultere i en +//timer overflow ca hvert sekund +void timer1_interrupt(void) +{ + RB2 = !RB2; + TMR1H = 0xEF; + TMR1L = 0xFF; +} void interrupt interrupt_handler(void) { if (RCIF == 1) @@ -153,6 +162,12 @@ TXIF = 0; } */ + + if (TMR1IF == 1) + { + timer1_interrupt(); + TMR1IF = 0; + } } /////////////////////////////////////////////////////////////////// @@ -310,6 +325,8 @@ TXIF = 0; //nulstil intterupt flag RCIF = 0; + + TMR1IE = 1; // Timer 1 GIE = 1; //Global interrupt enable bit } @@ -401,7 +418,20 @@ #endif } +void timer_init(void) +{ + TMR1CS = 1; //use external clock + + T1CKPS1 = 1; //1:8 prescale + T1CKPS0 = 1; + + TMR1H = 0xEF; + TMR1L = 0xFF; + T1OSCEN = 1; //enable oscillator circuit + RD16 = 0; //normal 8 bit writes + TMR1ON = 1; +} char ReadTemp(void) { @@ -426,6 +456,7 @@ serial_init(); //9600 8N1 ad_init(); io_init(); + timer_init(); interrupt_init(); @@ -450,7 +481,7 @@ } RB1 = global_led_0; - RB2 = global_led_1; + // RB2 = global_led_1; RB3 = global_led_2; global_temp = ReadTemp();