Прошу не пинать сильно. Искал сабж по форуму, читал, но чегой-то недопонял. Есть 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 индикатора горели постоянно. На Си это первые опыты для микроконтроллеров, с начала начал осваивать ассемблер.
|