krzysurbanowicz Napisano Styczeń 8, 2012 Udostępnij Napisano Styczeń 8, 2012 -------------------------------------------------------------------------------- Witam. Jestem zielony w temacie mikrokontrolerów a muse zrobic do szkoły program w VMLABie o tresći: Generator prostego rysunku - na wyświetlaczu zapalamy dolną, środkową albo górną kreskę – kolejno wybieraną przyciskiem. 4 segmenty - dla każdego segmentu inny przycisk. Jak zwykle spróbowałem sam ale mam problem aby samemu wybierac odpowiedni segment który ma wyświetlic kreske. Prosze o pomoc Oto efekt moich wypocin: #include <avr\io.h> #include <avr\interrupt.h> #include <avr\signal.h> #include <util\delay.h> char znak[4]={0x00,0x01,0x40,0x08}; void hw_init(void) { SFIOR &= !(1<<PUD); DDRA = 0xFF; DDRE = 0xFF; DDRB = 0x00; PORTA = 0x01; PORTB = 0xFF; } void disp(char digit[4]) { for(char a=0;a<4;a++) { PORTE = (1<<(a+4)); // ustawienie portu E na odpowiedni tabwietlacz (zmienna a okresla numer tabwietlacza) PORTA= znak[digit[a]]; // przypisanie odpowiedniego znaku z tablicy znaki (patrz wyzej) na port A _delay_ms(15); } } int main(void) { char tab[4]={0,0,0,0}; char w1=0; char w2=0; char w3=0; char w4=0; int licznik=0; int licznik2=0; int licznik3=0; int licznik4=0; hw_init(); while(1) { if(PINB==0x01) { licznik++; if(licznik>2) {licznik=0;} if(licznik == 0) { tab[0] = 1; disp(tab); } if(licznik == 1) { tab[0] = 2; disp(tab); } if(licznik == 2) { tab[0] = 3; disp(tab); } } if(PINB==0x02) { licznik2++; if(licznik2>2) {licznik2=0;} if(licznik2 == 0) { tab[1] = 1; disp(tab); } if(licznik2 == 1) { tab[1] = 2; disp(tab); } if(licznik2 == 2) { tab[1] = 3; disp(tab); } } if(PINB==0x04) { licznik3++; if(licznik3>2) {licznik3=0;} if(licznik3 == 0) { tab[2] = 1; disp(tab); } if(licznik3 == 1) { tab[2] = 2; disp(tab); } if(licznik3 == 2) { tab[2] = 3; disp(tab); } } if(PINB==0x08) { licznik4++; if(licznik4>2) {licznik4=0;} if(licznik4 == 0) { tab[3] = 1; disp(tab); } if(licznik4 == 1) { tab[3] = 2; disp(tab); } if(licznik4 == 2) { tab[3] = 3; disp(tab); } } if(PINB!=0x01 || PINB!=0x02 || PINB!=0x04 || PINB!=0x08) { disp(tab); } } } __________ Komentarz dodany przez: Sabre Na przyszłość proszę używać znaczników code. Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »