Jak zaimplementować interaktywne menu w języku C na przykładzie kodu?
Sposob na meni w C.
From: rora_at_nospam_klub.chip.pl (Rora)
Subject: Sposob na meni w C.
Date: 22 Sep 2002 14:18:21 +0200
Będę zobowiązany.
mov R0,#BUF_KLW
PRZESUN_G_U:
lcall SPR_KLW_SH ;odczyt klawiatury
cjne _at_nospam_R0,#STR_G,PRZESUN_D_U ;jesli strzalka w gore to
przesuniecie meni w gore
push DPH
push DPL
mov DPTR,#MENU_U
mov A,DPL
mov B,DPH
pop DPL
pop DPH
dec DPL
dec A
xch A,B
cjne A,DPH,PRZEWIN_G_U
xch A,B
cjne A,DPL,PRZEWIN_G_U
mov DPTR,#ZAMKNIJ-2
PRZEWIN_G_U:
lcall DEC_DPTR
clr A
movc A,_at_nospam_A+DPTR
cjne A,#0a0h,PRZEWIN_G_U
inc DPTR
ljmp PRZESUN_U
PRZESUN_D_U:
cjne _at_nospam_R0,#STR_D,SPR_ENTER_U ;jesli strzalka w dol to
przesuniecie napisow w dol
PRZEWIN_D_U:
inc DPTR
clr A
movc A,_at_nospam_A+DPTR
cjne A,#0a0h,PRZEWIN_D_U
inc DPTR
push DPH
push DPL
mov DPTR,#ZAMKNIJ-1
mov A,DPH
mov B,DPL
pop DPL
pop DPH
cjne A,DPH,POCZ_MENU_U
xch A,B
cjne A,DPL,POCZ_MENU_U
mov DPTR,#MENU_U
POCZ_MENU_U:
ljmp PRZESUN_U
SPR_ENTER_U:
mov R0,#BUF_KLW
lcall SPR_KLW
cjne _at_nospam_R0,#ENTER,PRZESUN_G_U
clr A
movc A,_at_nospam_A+DPTR
cjne A,#031h,USTAWIANIE_DATY_1 ;wejscie do ustawianie czasu
ljmp USTAWIANIE_CZASU
;jesli zostalo wcisniete ENTER to sprawdzana jest jaka zawartosc w pamieci
pragramu
;i od tego zalezy rodzaj wykonywanego podprogramu
USTAWIANIE_DATY_1:
cjne A,#032h,REGULACJA_NASTAW_1 ;wejscie do ustawianie czasu
ljmp USTAWIANIE_DATY
REGULACJA_NASTAW_1:
cjne A,#033h,ZMIANA_MASY_1
ljmp REGULACJA_NASTAW
ZMIANA_MASY_1:
cjne A,#034h,ZMIEN_KOD_1 ;wejscie do zmiany masy lokomotywy
ljmp ZMIANA_MASY
ZMIEN_KOD_1:
cjne A,#035h,ZMIEN_NZW_OPER_1
ljmp ZMIEN_KOD ;zmiana kodu
ZMIEN_NZW_OPER_1:
cjne A,#036h,WYJSCIE_1
ljmp ZMIEN_NZW_OPER ;zmiana nazwy operatora
WYJSCIE_1:
cjne A,#037h,PETLA
ljmp WYJSCIE ;wyjscie z menu ustawien
PETLA:
ljmp PRZESUN_G_U
Opis:
- pierwsza czesc programu obsluguje przewijane meni zapisane w pamieci
programu, sluza do tego
strzalki (gora i dol), oraz wskaznik (tekst wyswietlany jest do momentu
napotkania wartosci 0a0h
- druga czesc programu obsluguje wejscie w poszczegolne podmeni;
- rozpoznanie, ktore podmeni ma zostac wykonane nastepuje po odczytaniu
zawartosci
pamieci programu (w ktorej zapisane sa teksty) i sprawdzeniu ja wartosc
zawiera:
Przyklad:
5. Zmien nazwe operatora. (tekst wyswietlony na wyswietlaczu)
Po wyswietleniu tekstu na wyswietlaczu, wskaznik zawiera adres, ktory
wskazuje na
cyfre 5. Po wcisnieciu klawisza ENTER, spradzane jest, co znajduje sie pod
adresem
wskazywanym przez wskaznik. Jezeli jest to cyfra 5, to wykonywany jest
podprogram
Zmien nazwe operatora.
Oczywiscie w ten sposob mozna wchodzic glebiej w meni.
Mam nadzieje ze niezbyt namieszalem.
Robert
PS
Aha
Program jest dla '51.
--
Archiwum grupy: http://niusy.onet.pl/pl.misc.elektronika