Прошу не пинать сильно. Искал сабж по форуму, читал, но чегой-то недопонял. Есть Atmega16, компилятор IAR. К МК подключены 2 семисегментных индикатора (какие -то старенькие советские индикаторы). Схема подключения такая- на сегменты идёт сигнал с порта С (PC0-PC7)через резисторы 82 Ом, общие провода индикаторов подсоединены подсоединены к порту D (PD0 и PD2). Чтобы горели сразу два индикатора с неизменяющимся двухзначным числом написал такую программу.
---------------------------------------------------------------------------------------------------------
#include <ioavr.h>
#include <iom16.h>
#include <intrinsics.h>
int main( void )
{
int digit[10];
DDRC=0xFF; //настраиваем порт С на вывод
digit[0]=0x3F;
digit[1]=0x06;
digit[2]=0x5B;
digit[3]=0x4F; // цифры от 0 до 9
digit[4]=0x66;
digit[5]=0x6D;
digit[6]=0x7D;
digit[7]=0x07;
digit[8]=0x7F;
digit[9]=0x6F;
while(1) // бесконечный цикл
{
DDRD=0x04; // подаём единицу на PD2 -инициализируем один индикатор
PORTC =digit[1]; // подаём код цифры
__delay_cycles(2500); // задержка
DDRD=0x01; // подаём единицу на PD0-инициализируем второй индикатор
PORTC =digit[0]; // подаём код другой цифры
__delay_cycles(2500); // задержка
}
}
---------------------------------------------------------------------------------------------
А вот чтобы допустим 2 индикатора динамически отображали счёт до 99, например, не получается ;-(
Программа такая:
-------------------------------------------------------------------------
#include <ioavr.h>
#include <iom16.h>
#include <intrinsics.h>
int main( void )
{
int i;
int j;
int digit[10];
DDRC=0xFF;
digit[0]=0x3F;
digit[1]=0x06;
digit[2]=0x5B;
digit[3]=0x4F;
digit[4]=0x66;
digit[5]=0x6D;
digit[6]=0x7D;
digit[7]=0x07;
digit[8]=0x7F;
digit[9]=0x6F;
while(1)
{
for (j=0;j<10;j=j+1)
for (i=0;i<10;i=i+1)
{DDRD=0x04;
PORTC =digit[j];
__delay_cycles(90000);
DDRD=0x01;
PORTC =digit[i];
__delay_cycles(5000000);
}
}
}
=================================================
Пните пожалуйста, что и как писать чтобы считала до 99 в бесконечном цикле и при этом 2 индикатора горели постоянно. На Си это первые опыты для микроконтроллеров, с начала начал осваивать ассемблер.