Hola, soy nuevo por estos lares y en primer lugar saludar a todos y espero aprender mucho contados vosotros.
Os cuento, estoy empezando a trabajar con los PIC y en concreto con el programa MikroPascal V8.02 puesto que estoy acostumbrado a programar en Pascal.
Y solicito vuestra ayuda ya que quiero trabajar con la interrupción del TMR0 y observando el ejemplo que acompaña al programa examples/EasyPIC4/16f84/TMR0/TMR0.ppas. Os lo listo a continuación:
(*
* Project name:
Tmr0
* Copyright:
(c) mikroElektronika, 2006
* Revision History:
20060922:
- initial release.
* Description:
This code demonstrates using interrupts in mikroPascal.
Program turns on/off leds on portb each second.
* Test configuration:
MCU: P16F84A
Dev.Board: EasyPIC4
Oscillator: HS, 8.000 MHz
Ext. Modules: None
SW: mikroPascal v5.0 or higher
* NOTES:
None
*)
program Tmr0;
var brojac, a, b : byte;
procedure interrupt;
begin
brojac := brojac + 1; // increment value of brojac on every interrupt
TMR0 := 96;
INTCON := $20; // set T0IE, claer T0IF
end;
begin
a := 0;
b := 1;
OPTION_REG := $84; // Modo Temporizador, Prescaler=32
TRISB := 0; // PuertoB como salida
PORTB := $FF;
brojac := 0; // initialize brojac
TMR0 := 96;
INTCON := $A0; // Habilitamos Interrupciones
repeat
begin
if brojac = 200 then // if brojac is 200, then toggle portb leds and reset brojac
begin
PORTB := not(PORTB);
brojac := 0;
end;
end;
until 0 = 1;
end.
El problema es que al ejecutar el programa no funciona correctamente, se queda enganchado en el bucle sin saltar la interrupción. En principio todo lo veo correcto y no entiendo porque no sale del bucle.