#include <LiquidCrystal.h>
// Definir el pin analógico que se va a leer
const int rs = 10, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 =2;
LiquidCrystal lcd (rs , en , d4, d5, d6, d7);
int timer = 0;
void setup() {
lcd.begin(16,2);
noInterrupts(); // DETIENE INTERRUPCIONES
Serial.begin(9600);
pinMode(13, OUTPUT); // pin 13 como salida para led
TCCR1A=0; // reset de registro de control A de Timer1
TCCR1B=0; //reset de registro de control B de Timer1
TIMSK1 |= (1 <<OCIE1A ); // BIT OCIE1 para indicar a OCR1A para la comparacion
TCCR1B |= (0 << CS11);
TCCR1B |= (0 << CS10);
TCCR1B |= (1 << CS12); // bit CS12 para activar prescaler a 156
OCR1A=62500; // Valor calculado que genera la interrupcion en 1 segundo
interrupts(); // Habilita las interrupciones
}
void loop() {
lcd.setCursor(0,0);
lcd.print(timer);
lcd.setCursor(3,0);
lcd.print("Tiempo -> Seg");
}
ISR(TIMER1_COMPA_vect) { // Esta es la solicitud de interrupción
timer++;
digitalWrite(13, !digitalRead(13)); // Enciende o apaga el LED
Serial.println(timer);
TCNT1=0;
}