Prepínanie menu na displeji.

Zdravím.
Pracujem na návrhu zariadenia v asm. ktororé je riadené PIC-om 16FXXX.Namerané hodnoty sú zobrazovaná na LED displeji a chcem sa štyrmi tlačítkami prepínať v jednotlivých menu kde sa nastavujú regulované hodnoty.Tlačidlami --> a <-- nastavovaná hodnota a tlačidlami
up a down samotná hodnota nastavovaného parametru.
Potrebujem prosím zhruba poradiť princíp akým činom sa dá prepínať medzi niekoľkými menu.Samozrejme hlavný program sa musí neustále vykonávať.Vopred ďakujem.Relatko.

zdravím,
tvořil sem to tak že sem měl 3 segmentovky a ke každé sem si přiřadil bit(seg1akt,seg2akt,seg3akt) který značí která segmentovak je aktivní pak ke každé segmentovce registr(seg1,seg2,seg3) ve kterém sem měnil dekadickou hodnotu. pak sem seg1 vynásobil 100, seg2 vynásobil 10, seg3 ponechal a tyto registry sem sečetl. výsledek mi dělal dekadickou hodnotu od 0-255 a tuto hodnotu sem pak použil do tabulky ze které sem skočil do podprográmku kde sem si obsloužil nastavení hodnoty.

vše sem vykonával v přerušení. nastavim sem časovač aby po 100ms vyvolal přerušení a otestoval tlačítka a nastavoval hodnoty v registrech seg1…seg3 a pakzobrazil a vrátil se zpět do hlavní smyčky.

neumim to popisovat tak aby to bylo pochopitelný tak doufám že se to aspoň trošku pochopit dá a pomůže to :slight_smile:

Zdravím.
Ďakujem za odpoveď a poprosím Ťa tento úrivok trochu podrobnejšie vysvetliť.

Relatko.

dám sem kousek kódu tý tabulky pro lepší pochopení.
menu.txt (10.4 KB)

Moze niekto poradit ako vytvorit efek kod v C pre menu. v asm som pouzival pre kazdu polozku menu konkretne cislo a na dane cislo reagovali prislusne tlacidla vid vypis.

Je to strasne komplikovane, a musim si urobit tabulku kde mam vlastne skocit a to pre kazde cislo. Ak by som to prepisal do Cka pre PIC18F mam poucit CASE alebo IF.

dakujem

;-------------- Tl1 ok----------------------------------------
movf mode,0
sublw 254
btfsc status,Z ;ak je vysledok odčitania 0 tak preskoč
goto setings253 ;vnorenie do prveho menu
movf mode,0
sublw 253
btfsc status,Z
goto front252 ;vnorenie do druheho menu

;------------- Tl2 cancel -------------------------

movf	mode,0			
sublw	254			
btfsc	status,Z		;ak je vysledok odčitania 0 tak preskoč
goto	menu254			;spat na zaciatok
movf	mode,0
sublw	253			
btfsc	status,Z
goto	menu254			;vnorenie do druheho menu

;---------------- Tl3 dole-----------------------------

movf	mode,0			
sublw	254			
btfsc	status,Z					;ak je vysledok odčitania 0 tak preskoč
goto	volminus254			;Nastavenie hlasitosti -
movf	mode,0
sublw	253			
btfsc	status,Z
goto	tuner251		;vyber čo sa bude robit /
movf	mode,0

;---------------- Tl4 -hore-------------------

movf	mode,0			
sublw	254			
btfsc	status,Z		;ak je vysledok odčitania 0 tak preskoč
goto	volplus254			;Nastavenie hlasitosti +
movf	mode,0
sublw	253			
btfsc	status,Z
goto	preset250		;vyber čo sa bude robit /nastav/ulož/hodiny
movf	mode,0

v C na to jsou knihovny a jejedno zda tu buděš vyrábět nebo použiješ hotové !
v asm to dělám tak že mám obsluhu displeje jako samostatnou rutinu a tličítky listuji - inc či deinc jednu promněnou jenž určuje displej dalším pak pozici - či hodnotu , ve tvém případě nevím jaký typ displeje máš asi dynamický pak postači nechat běžet displej v přerušení a v jednotlivých promněných mít hodnoty - a vlastně jen listovat a mněnit tu či onu proměnou příklad na to nemám ! používám lcd s řadičem

PS: omluvte pravopis dík

hm knihovna na menu…nedas sme najaky link alebo zdrojak

Vhodnější bude příkaz SWITCH (), (CASE).

Prehladnejsi rozhodne… az bude hotovy hardver…tak sa pustim do ladenia softveru…

nu konkrétní typ bude problém není tu zmínka jak to menu bude vypadat a jaký ten displej vlastně bude ? nejrychllejší bude opravdu switch . pokud jde o tlačítka tak ty bych v C načítal v nějakém přerušení a mněnil nějaké konkrétní promněné

PS: omluvte pravopis dík

predstava je taka, v hlavnej slucke bezi i2c s RTC, pricom na displej sa zapise len pri zmene udajov Prerusenia 2 hlavne pre IR cidlo a low pre tlacidla. Pri stlaceni tlacidiel dojde k preruseniu zisti sa ktore tlacidlo to bolo a podla aktualneho miesta v menu sa vykona fumkcia a prerusenie sa ukonci. displej 12864

v PIC C je knihovna jen pro 64x64 ,na netu jsem někde zahlédl tuším i knihovnu pro 128x64 ale mam pocit že za ni nutno přispět autorovi a nevím zda to bylo pro pic ! grafiku jsem popravdě nedělal ! Hádám že na to použiješ něco co má dosti pamněti !
Skusím pohledat tu grafickou knihovnu ale nic neslibuji !

PS: omluvte pravopis dík

Knihovnu uz mam nieco som pisal sam nieco som opajcoval mam aj eeprom cez i2c pripojenu prave koli tomu keby som chcel nejake graficke cacky na displej. Menu si zbucham len este nemam poriadnu predstavu co tam vsetko chcem a hlavne potom sa uz blbo vsuvaju tam veci pa csu tam krizom krazom odkazi na jednotlive polozky. Prakticky vsetko mam… treba uz len dosku predneho panelu s tlacidlami… a riadiacu dosku poprepajat zo vsetkym v sudy… nemam cas skusky a tak… dakujem zatial za pomoc. prakticky v setko uz mam co mi zatial trebalo.

tonhle problém znám proto mám jednu promněnou která říká o jaký typ menu jde tu listuji tlačítky nahoru dolů ! displej na jejím základě vypíše text a na předem určené pozice pro jednotlivá menu i data z jiných proměných menu je jako pod program a volám jej jen při změně ! Stejná promněná jako pro displej určuje ito co chci dělat v normálním stavu normální jednoduchý switch - když pochybí menu jednoduše přidám do limitu promněné rozsah o kolik menu chci přidat a do ovládání displeje přidám další obraz a stejně tak k tomu swichi přidám funkci pak je to bez problému rozšiřítelné i přes ty kličky a háčky jak popisuješ! Tudíž je jednou zda jsou menu dvě nebo deset ! každá rutina je samostatná jek displeje tak samotného menu - mají společnou hlavní promněnou a displej načítá a zobrazuje konkrétní promněné které přísluší jednotlivým obrazum .Jde vlastně o struktorovaný systém s danou strukturou a spromněným počtem prvků dle potřeby tudíž jej lze témněř libovoolně rozšířit či naopak !
Dokud jsem dělal jedno či dvě zobrazení tak to bylo jedno - ale posledně jsem dělal kotelnu a tám mám 10 obrazů a 30 urovní a to už jsem si sedl na maloval diagram vatvořil strukturu a hned se to hodilo během ladění jse přidávall funkce a obrazy bez nejmenších problémů ! A přitom to řešení je jednoduché !

PS: omluvte pravopis dík

nemozes mi tu hodit cast kodu tho menu ten zaklad staci vlastne llen zaciatok…+ 1-3 menu

skusim ti kousem vyseparovat ale až odpoledne ted je třeba zas makat