вот код как делал
Код: Выделить всё
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <string.h>
#include <string.h>
#include <util/delay.h>
volatile unsigned char hours,minutes,seconds;
volatile unsigned int time;
#define PORT 6
#define PORT_ON PORTB|=1<<PORT
#define PORT_OFF PORTB&=~(1<<PORT)
ISR(TIMER0_OVF_vect) {
time++;
if (time==488) {asm("wdr");time=0;seconds++;}
if (seconds==60) {seconds=0; minutes++; }
if (minutes==60) {minutes=0; hours++; }
}
ISR(TIMER1_OVF_vect) {
if(minutes==01){
PORT_ON;
}
if(minutes==02){
PORT_OFF;
}
if(minutes==03){
PORT_ON;
}
if(minutes==04){
PORT_OFF;
}
}
int main(void)
{
// Input/Output Ports initialization
PORTB=0xFF;
DDRB=0x00;
// Port C initialization
PORTC=0xFF;
DDRC=0x00;
// Port D initialization
PORTD=0xFF;
DDRD=0x00;
DDRB|=(1<<6); PORT_OFF;
// External Interrupt(s) initialization
// INT0: On
EICRA=0x00;
EIMSK=0x00;
EIFR=0x00;
PCICR=0x00;
// Clock value: 31.250 kHz
TCCR0A=0x00;
TCCR0B=0x02;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
// Timer/Counter 1 initialization
TCCR1A=0x00;
TCCR1B=0x02;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
ASSR=0x00;
TCCR2A=0x00;
TCCR2B=0x00;
TCNT2=0x00;
OCR2A=0x00;
OCR2B=0x00;
// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x01;
// Timer/Counter 1 Interrupt(s) initialization
TIMSK1=0x01;
// Timer/Counter 2 Interrupt(s) initialization
TIMSK2=0x00;
UCSR0A=0x00;
UCSR0B=0x00;
UCSR0C=0x00;
UBRR0H=0x00;
UBRR0L=0x00;
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;
sei();
while (1){
}
}


