Program na ATmega8515 zliczjący jedynki na portach

Tu piszemy wiadomość, jeżeli zadanie domowe sprawia kłopot
i szybko potrzebujemy pomocy w rozwiązaniu.
ODPOWIEDZ
kanius
-
Posty: 2
Rejestracja: 28 maja 2008, 9:18
Lokalizacja: Sosnowiec
Kontakt:

Program na ATmega8515 zliczjący jedynki na portach

Post autor: kanius » 28 maja 2008, 9:28

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.

elektronWielki
Użytkownik
Posty: 247
Rejestracja: 30 maja 2006, 12:45
Lokalizacja: kontownia

Post autor: elektronWielki » 28 maja 2008, 10:38

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));
}

kanius
-
Posty: 2
Rejestracja: 28 maja 2008, 9:18
Lokalizacja: Sosnowiec
Kontakt:

Post autor: kanius » 28 maja 2008, 11:51

Hm.... Dzieki za zainteresowanie,

tylko jest jeden problem muszę to napisac w asemblerze.

proszę o jakies propozycje

elektronWielki
Użytkownik
Posty: 247
Rejestracja: 30 maja 2006, 12:45
Lokalizacja: kontownia

Post autor: elektronWielki » 28 maja 2008, 12:54

masz juz wszystko jak na tacy, wystarczy ze ruszysz glowa...

ODPOWIEDZ