да,для новичка без схемы сложновато ,но схема здесь не *главное*
в проекте даже не указан мк ,но можно поставить 2313 или мегу 8 или 16
самое нужное знать программу ,каждую строчку комментировать!
я напишу коменты к семплу какие знаю и вспомню.
#include <avr/io.h>//подключение самого мк авр к проекту
#include <avr/delay.h>// пауза где надо
#include <avr/interrupt.h>//привязка в схему таймера
char numarray[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};//подключение переменной char размером 1 байт
unsigned char num=0; // подключение переменной размером 1 байт без отриц.значений
unsigned char raz1,raz2;
int seg=0;
ISR (TIMER0_OVF_vect) //включение таймера 0 оверфлау значит по переполнению
{
switch(seg)
{
case 0:
PORTD=~numarray[raz1];
break;
case 1:
PORTD=~numarray[raz2];
break;
}
PORTB =(1<<seg);
seg++;
if(seg>2) seg=0;
TCNT0=190;
}
int main(void)
{
DDRD=0xff;//настройка портов все выводы порта D будут сконфигурированы как выходы,будут 11111111
DDRB=0xff;//все выводы порта B будут сконфигурированы как выходы,
PORTB=0x00;//все выводы порта B будут сконфигурированы как выходы 00000000
//Настраиваем таймер
TCCR0 |=(0<<CS02)|(1<<CS01)|(1<<CS00);//прескалер или предделитель частоты
TIMSK |=(1<<TOIE0);
//------------------------
asm("sei");//разрешение прерывание асемблерская вставка
while(1)
{
if (num>99) num=0;
_delay_ms(600);//пауза 0.6 сек
num=num+1;
raz1=num/10;
raz2=num-10*raz1;
}
}
это не кодвижон ,среда winavr/
вот так и разбирайся .
только не с таким проектов ,а чего нибудь проще для начала.