এই পর্বে আমরা টাইমার ১ ব্যবহার করে DIGITAL CLOCK

বানিয়েছি।   এখানে এলসিডি ইন্টারফেশও করা হয়েছে। যেহেতু ইন্টারাপ্ট ঘটবে এবং আমরা ক্যরেক্টার প্রিন্ট করবো, তাই interrupt.h

এবং stdio.hহেডার ফাইল যুক্ত করেছি।

 

/*

* Timer 16 bit.c

*

* Created: 7/24/2018 7:55:11 PM

* Author : MD MASUM BILLAH

*/

 

#define F_CPU 8000000UL

#include <stdio.h>

#include <avr/io.h>

#include <avr/interrupt.h>

#include “lcd.h”

 

char line[16];

unsigned int sec=0;

unsigned int min=0;

unsigned int hr=0;

 

 

 

void timer_1_init(void)

{

TCCR1B &= ~(1<<CS10);

TCCR1B &= ~(1<<CS11);

TCCR1B |= (1<<CS12);

 

TCCR1B &= ~(1<<WGM10);

TCCR1B &= ~(1<<WGM11);

TCCR1B &= ~(1<<WGM12);

TCCR1B &= ~(1<<WGM13);

 

TIMSK |= (1<<OCIE1A);

TCNT1 =0;

 

OCR1A =31250;

sei();

}

 

ISR(TIMER1_COMPA_vect)

{

sec++;

if(sec>=60)

{

sec=0;

min++;

}

 

else if(min>=60)

{

min=0;

hr++;

}

else if(hr>=12)

{

hr=0;

}

TCNT1=0;

}

 

int main(void)

{

timer_1_init();

LCDInit();

 

while (1)

{

sprintf(line,”Clock”);

LCDGotoXY(1,1);

LCDString(line);

 

sprintf(line,”%.2u: %.2u: %.2u”, hr,min,sec);

LCDGotoXY(1,2);

LCDString(line);

}

return 0;

}