Вопрос перед заливкой и сборкой цепи хочу поинтересоватся какие могут быть ошибки в программе...
Код: Выделить всё
//Version 1.0.1
//Частота кварцевого резонатора 32,768 Hz
#include<avr>
#include<avr>
int temp; //Переменная для хранения числа импульсов
int cat[3]; //В массив записываются разряды
//Для вывода на сегмент
char segments[] = { 0x7e, 0xc, 0xb6, 0x9e, 0xcc, 0xda, 0xfa,
0xe, 0xfe, 0xde };
//Прерывание на входе INT0
ISR(SIG_INTERRUPT0)
{
temp++; //Счет импульсов при каждом импулсе добавит 1
}
//Прерывание при переполнении T/C0
ISR(SIG_OVERFLOW0)
{
TCNT0=0x80; //Записываем 128 для того что бы прерывание
//происходило каждую секунду
temp=temp*6; //Число прешедших на вход импульсов
//умножаем на 6
cat[0]=temp%10; //Делим на 10 остаток в масив 1-разряд
temp=temp/10; //Оставляем 2 разряда
cat[1]=temp%10; //Делим на 10 остаток в масив 2-разряд
cat[2]=temp/10; //Делим на 10 целое число в масив 3-разряд
temp=0; //Обнуляем счетчик импульсов
}
int main(void)
{
DDRB=0xFE; //Конфигурация порта В 11111110
DDRD=0x07; //Конфигурация порта D 00000111
GIMSK=0x40; //Внешнее прерывание на входе INT0 активно
MCUCR=0x0B; //Прерывание на входе INT0 по возрастаюшему фронту
TCCR0B=0x04; //Частота тактов делится на 256
TIFR=0x00; //Сбрасываем флаги прерываний от T/C0
TIMSK=0x02; //Прерывание при переполнении T/C0
TCNT0=0x80; //Записываем 128 для того что бы прерывание
//происходило каждую секунду
ACSR=0x80; //Выключение аналогово компаратора
sei(); //Глобальное разрешение прерываний
while(1){
PORTD=0x01; //Зажигаем первый разряд
PORTB=segments[cat[0]]; //Зажигаем элементы разряда
PORTD=0x02; //зажигаем второй разряд
PORTB=segments[cat[1]]; //Зажигаем элементы разряда
PORTD=0x04; //Зажигаем тертий разряд
PORTB=segments[cat[2]]; //Зажигаем элементы разряда
};
}




