Skip to content

Instantly share code, notes, and snippets.

@urmil0071
Last active August 18, 2017 15:45
Show Gist options
  • Save urmil0071/a72611deaa83e921c7446b59678fc759 to your computer and use it in GitHub Desktop.
Save urmil0071/a72611deaa83e921c7446b59678fc759 to your computer and use it in GitHub Desktop.
Use Timer1 to Run a Stopwatch on LCD
#include <Arduino.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(A0,A1,A2 ,A3 ,A4, A5);
byte mills,mins,sec;
void setup()
{
sec=0;
mills=0;
mins=0;
lcd.begin(16,2);
lcd.clear();
TCCR1A=0x00; ///Timer 1 normal mode
TCCR1B=0x00; /// Timer 1 off
TCNT1=0xF9E6; /// Timer 1 preset value 1/10 sec
bitWrite(SREG,7,1); /// Enable global interrupt
bitWrite(TIMSK1,0,1); /// Enable TIMER1_OVF interrupt
TCCR1B=0x05; /// Timer 1 ON
}
ISR(TIMER1_OVF_vect)
{
TCCR1B=0x00; /// Timer 1 off
TCNT1=0xF9E6;
mills=mills+1;
if(mills>9)
{
sec=sec+1;
mills=0;
}
if(sec>59)
{
mins=mins+1;
mills=0;
sec=0;
}
bitSet(TIFR1,2); /// TOV1 Clear
TCCR1B=0x05; /// Timer 1 ON
interrupts();
lcd.clear();
lcd.setCursor(1,0);
lcd.println("MIN:SEC:SEC/10");
lcd.setCursor(4,1);
lcd.print(mins,DEC);
lcd.print(":");
lcd.print(sec,DEC);
lcd.print(":");
lcd.print(mills,DEC);
}
void loop()
{
}
@urmil0071
Copy link
Author

urmil0071 commented Aug 18, 2017

**Make a Watch on LCD **

#include <Arduino.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(A0,A1,A2 ,A3 ,A4, A5);
byte hrs,mins,secs;
void setup()
{
hrs=0;
secs=0;
mins=0;
lcd.begin(16,2);
lcd.clear();
TCCR1A=0x00; ///Timer 1 normal mode
TCCR1B=0x00; /// Timer 1 off
TCNT1=0xC2F7; /// Timer 1 preset value 1/10 sec
bitWrite(SREG,7,1); /// Enable global interrupt
bitWrite(TIMSK1,0,1); /// Enable TIMER1_OVF interrupt
TCCR1B=0x05; /// Timer 1 ON
}
ISR(TIMER1_OVF_vect)
{
TCCR1B=0x00; /// Timer 1 off
TCNT1=0xC2F7;
secs=secs+1;
if(secs>59)
{
mins=mins+1;
secs=0;
}
if(mins>59)
{
hrs=hrs+1;
mins=0;
secs=0;
}
bitSet(TIFR1,2); /// TOV1 Clear
TCCR1B=0x05; /// Timer 1 ON
interrupts();
lcd.clear();
lcd.setCursor(1,0);
lcd.println(" HRS:MIN:SEC    ");
lcd.setCursor(3,1);
lcd.print(hrs,DEC);
lcd.print(" : ");
lcd.print(mins,DEC);
lcd.print(" : ");
lcd.print(secs,DEC);
}
void loop()
{
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment