Napisałem prosty program obsługujący 4 połączone wyświetlacze 7-segmentowe.
Program ma inkrementować zmienną a i przypisywać ją zmiennej numer lecz nie wiem z jakiego powodu inkrementajca odbywa się w sposób geometryczny(2,4,8...), do tego if który powinien resetować pętle tego nie robi.
Pracuje na AVR Studio 4(najnowsze winavr) i Proteus 7 do symulacji.
Program ma inkrementować zmienną a i przypisywać ją zmiennej numer lecz nie wiem z jakiego powodu inkrementajca odbywa się w sposób geometryczny(2,4,8...), do tego if który powinien resetować pętle tego nie robi.
Pracuje na AVR Studio 4(najnowsze winavr) i Proteus 7 do symulacji.
#define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>
int pos_tab[]={0,0,1,0,0,1,1,1};
// 0 1 2 3 4 5 6 7 8 9
int liczba[]={0,0,0,0 , 1,0,0,0 , 0,1,0,0 , 1,1,0,0 , 0,0,1,0 , 1,0,1,0 , 0,1,1,0 , 1,1,1,0 , 0,0,0,1 , 1,0,0,1};
int main()
{
int a;
int pos,numer;
DDRD=0xff;
DDRC=0xff;
PORTD=0x00;
PORTC=0x00;
a=0;
while(1)
{
numer=a;// liczba
pos=0; // pozycja
PORTC|=(pos_tab[pos*2]<<1)|(pos_tab[(pos*2)+1]<<2)|(liczba[numer*4]<<3)|(liczba[(numer*4)+1]<<4)|(liczba[(numer*4)+2]<<5)|(liczba[(numer*4)+3]<<6);
_delay_ms(200);
a++;
if(a>9){a=0;}
}
}
