Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Vytvoření menu v C pro ATmega16

 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
raptor1811



Založen: Mar 12, 2010
Příspěvky: 56

PříspěvekZaslal: út březen 15 2011, 19:02    Předmět: Vytvoření menu v C pro ATmega16 Citovat

Zdravím, potřeboval bych vytvořit jednoduché menu v Céčku se zobrazením na LCD. Hlavní menu by mělo tak přibližně 4 položky a u některých položek by bylo submenu s dalšími řekněme dva až třemi položkami. Po vybrání určité položky by se zavolala určená funkce, která by vykonala určené operace. U tlačítek pro rolování v menu můžu použít i přerušení (při stisknutí libovolného tlačítka se vyvolá přerušení a můžu číst klávesy). Už se mi to i povedlo nějak naprogramovat, ale je to strašně neefektivní a nepřehledné, jelikož neumím moc používat ukazatele. Poradí někdo jak to naprogramovat co možná nejefektivněji?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Bernard



Založen: May 27, 2005
Příspěvky: 3647

PříspěvekZaslal: út březen 15 2011, 21:28    Předmět: Citovat

Snad přes stavový automat. Možné stavy menu se očíslují (třeba 0..11 pro 4x3 položky). Po resetu se stav inicializuje, a při přerušení od tlačítka se zavolá funkce
switch (stav) {
case 0: ..........; break;
case 1: ..........; break;
case 2: ..........; break;
case 3: ..........; break;
..............
}

Pro každý "case" se podle stlačeného tlačítka změní dosavadni stav na nový, a případně se vykoná nějaká akce.

Asi to nebude nejefektivnější, ale přehledné.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Atlan



Založen: May 10, 2004
Příspěvky: 4511
Bydliště: Košice

PříspěvekZaslal: st březen 16 2011, 9:07    Předmět: Citovat

no ukazem ti ako sa to nema robit Very Happy

switch (mode)
{
case 254: {if (!ok) {menu1();}
if (!c) {off251();}
if (!up) {tplus249();}
if (!down){tminus248();}
break;}

case 253: {if (!ok) {hodn247();}
if (!c) {menu254();}
if (!up) {prog246();}
if (!down){prog246();}
break;}
.................

case 247:{if (!ok) {nden243();}
if (!c) {time253();}
if (!up) {minp244();}
if (!down){hodp245();}
break;}
...............................

void off251 (void)
{mode=254;
if(!nzv).............


void tplus249 (void)
{
if (nzv)
{mode=254;............................

void hodn247 (void)
{mode=247;
ncasden();
return;
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
piitr



Založen: Oct 19, 2007
Příspěvky: 1003

PříspěvekZaslal: st březen 16 2011, 9:18    Předmět: Citovat

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
MrMarian



Založen: Oct 14, 2010
Příspěvky: 48

PříspěvekZaslal: st březen 16 2011, 11:10    Předmět: Citovat

Zdravim,

Zrovna robim aj ja menu, a robim to cez switch a case ... Mam tam tri urovne menu

MENU1 - hlavne menu
MENU2 - vyber parametrov
MENU3 - nastavene parametrov / premnennej (cas, max. / min. teplota, limity, ON / OFF)

To Atlan: Ako je to spravne? Mozes sem dat kusok kodu?

Dakujem a prajem pekny den.

M.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mtajovsky



Založen: Sep 19, 2007
Příspěvky: 3698
Bydliště: Praha

PříspěvekZaslal: st březen 16 2011, 11:26    Předmět: Citovat

Pokud to budete resit jako stavovy automat tak radeji pres distribucni tabulku s pointry na funkce. Zapis pres case a if je neprehledny a spatne se modifikuje.

http://www.elektroworld.h51.eu/modules.php?name=Forums&file=viewtopic&t=30260&highlight=
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
ZdenekHQ
Administrátor


Založen: Jul 21, 2006
Příspěvky: 25741
Bydliště: skoro Brno

PříspěvekZaslal: st březen 16 2011, 13:02    Předmět: Citovat

MENU 2 a 3 jde sloučit - obslužnýmu podprogramu předáš jen ukazatel na tabulku s pojmenováním parametrů a nějaký registr naplníš patřičnými proměnnými (většinou jen aktuální hodnota, lze i definovat max a min hodnotu, popř. výpis on/off či numericky). Po návratu data z registru zase načteš zpět do proměnných, popř. uložíš do eeprom.
_________________
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.15 sekund