Witam! Mam problem, muszę napisać program w asemblerze na taki mikrokontroler na zaliczenie - a wczesniej nie miałem styczności z programowaniem mikrokonrolerów.
temat zadania: napisać program zliczjący jedynki na portach A i B, liczbę jedynek wyprowadza w kodzie BCD na porcie C.
Z góry dziękuje za pomoc.
Program na ATmega8515 zliczjący jedynki na portach
-
elektronWielki
- Użytkownik
- Posty: 247
- Rejestracja: 30 maja 2006, 12:45
- Lokalizacja: kontownia
program mozna zrealizowac na kilka sposobow, podam dwa w C:
Kod: Zaznacz cały
1. Zorientowany pamięciowo
int16 A = ((int16)PORTA << 8) | PORTB;
byte licznik = 0;
for(byte i = 0; i < 15; i++)
licznik += ((A >> i) & 1);
PORTC = bcd(licznik);
2. Zorientowany szybkościowo
byte[255] tab;
tab[0] = 0; //0b00000000
tab[1] = 1; //0b00000001
tab[2] = 1; //0b00000010
tab[3] = 2; //0b00000011
tab[4] = 1; //0b00000100
tab[5] = 2; //0b00000101
...
...
tab[254] = 7; //0b11111110
tab[255] = 8; //0b11111111
PORTC = bcd(tab[PORTA] + tab[PORTB]);
3. FUNKCJA bcd()
byte bcd(byte b) {
return (((b / 10) << 4) | (b % 10));
}
-
elektronWielki
- Użytkownik
- Posty: 247
- Rejestracja: 30 maja 2006, 12:45
- Lokalizacja: kontownia