ATmega169 - zobrazení řetězce na displeji, posouvání textu

Zdravím, dostali jsme ve škole za úkol následující úlohu:

Napište program, který zobrazí řetězec delší než 6 znaků na displeji metodou postupného posouvání textu. Tento text bude obsahovat slova např. „maly dum stal na strani“. Po stisku joysticku směrem nahoru se slova v řetězci setřídí vzestupně dle abecedy a začnou se na displeji zobrazovat obdobně, jako původní řetězec. Při stisku joysticku dolů se provede sestupné setřídění. Při stisku joysticku (enter) se přejde do režimu, kdy pohybem joysticku vlevo a v pravo se listuje v textu po jednotlivých slovech (předpokládá se, že slova jsou kratší než 6 znaků).

Poradil byste mi tu někdo prosím jak na to? Já vůbec netuším jak začít

:arrow_right: administrator: přejmenováno z "ATMEGA169 - řetězec"

Achjo, uz je to tu znova.
Pokud jsi na vysoke skole

  1. Na predmet, co sis zapsal by si mel chodit na prednasky a cviceni.
  2. Mel bys zacit resit jednoduche ukoly, ktere vam v prvnich hodinach dal prednasejici.
  3. Zkusil by sis sam udelat jednoduchou vec, jako blikani led.
  4. Zkusil by sis zobrazit jednoduchy text na LCD.
  5. Zkusil by sis posouvat text doleva, doprava.
  6. Zkusil by sis zapojit joystick a pri posunu nahoru rozblikat led.
  7. Vyresil bys vyse uvedenou ulohu…

Pokud chces poradit na tomto foru, napis, co uz jsi udelal, kde jsi se zasekl a s cim mas problem, nikdo nebude venovat cas dolovanim informaci o tom, jakym zpusobem mas zapojeny joystick jake LCD pouzivas apod.

Hod sem co uz mas, kdyz tak se na to kouknem (ale asi me zase piityy predbehne :slight_smile:

Dovolil bych si reagovat na pár bodů
Nechyběl jsem na jediné přednášce ani cvičení. Na přednášce nám dali hrubý základ, se kterým jsem udělal všechny úlohy ze začátku. Bohužel naše cvičení probíhá tak, že si uděláme na začátku látky několik lehkých příkladů a pak nám hned dají takové zadání. Toto zadání jsme dostali na 2.cvičení z AVR a nejsem jediný kdo na to jen kouká.

No ale jinak se mi povedlo s několika spolužáky dát dohromady jezdící text. Zasekli jsme se u reakce na joystick, který nevíme jak naprogramovat, aby reagoval. Nic o zapojení nevím, jen vím, že zařízení je ATmega169. Bohužel dál tápem jak se třídí slova. Díky

Joystick předpokládám tvoří 4 mikrospínače směru a jeden pro Enter. Takže se připojí a programuje stejně jako 5 tlačítek.

V C se stringy dají řadit abecedně pomocí funkce strcmp().

[code]char string1[7] = “maly”;
char string2[7] = “dum”;
char string3[7] = “stal”;
char string4[7] = “na”;
char string5[7] = “strani”;

char tempstr[10];

//porovnej dva stringy
//a seřaď podle abecedy
void comp(char* s1,char* s2)
{
if(strcmp(s1,s2) > 0) //if(s1>s2) přehoď s1,s2
{
strcpy(tempstr, s1); //kopíruj s1 do tempstr
strcpy(s1, s2);
strcpy(s2, tempstr);
}
}
int main( void )
{
comp(string1,string2);


[/code]

Potřeboval bych to v assembleru, C nám v tom zakázali používat. Ale i tak děkuju, alespoň už vím jak to funguje. Bohužel jsem v assembleru začátečník. A jakými příkazy se používá joystick?

V tom případě úkol nelze splnit. MUSÍŠ vědět, kde jsou kontakty joysticku zapojeny a jak. Buď jste ho už použili dříve a pak to víš, nebo vám to musí zadávající říct.
V ASM? Upřímnou soustrast.
Žádné speciální příkazy na joystick neexistují. Jde o běžné IO operace - čtení, nulování a nastavování pinů (jako u LEDky nebo běžného tlačítka - SBIS, SBI, CBI).