/*
시계 FND 0부터 59초
60초가 되면 LED1개 켜지기
OVERFLOW0 사용
08.12.10 수정
*/
#include<avr/io.h>
#include<avr/interrupt.h>
#include<avr/signal.h>
volatile unsigned int TIC_TIME;
volatile unsigned int TIME;
volatile unsigned int min;
volatile unsigned int sec;
void init_port(void){
DDRC=0xFF;
DDRD=0xFF;
PORTC=0xFF;
PORTD=0x00;
}
void init_timer0(void){
TCCR0=0x04;
TCNT0=6;
TIMSK=TIMSK|(1<<TOIE0);
}
void init_timer(void){
TIFR=0x00;
init_timer0();
}
void init(void){
init_port();
init_timer();
}
SIGNAL(SIG_OVERFLOW0){
TCNT0=6;
TIC_TIME++;
}
int main(void){
init();
sei();
while(1){
if(TIC_TIME>1000){
TIC_TIME=0;
TIME++;
if(TIME==540){
PORTC=0xFF;
TIME=0;
}
}
min=TIME/60;
sec=TIME%60;
PORTC=0xFF<<min;
PORTD=(sec/10)<<4||(sec%10);
}
return 0;
}
Posted by rCan

