Prakticky to ale asi nebude vadit, protože nejspíš budeš obvykle pro jistotu nastavovat i pozici kurzoru. Nicméně z hlediska obecného použití kódu to není dobře (pro optimalizaci si umím dost dobře představit, že vím, že ten kurzor je v obou půlkách správně, takže bych ho nemusel posílat a tím šetřil čas i paměťový prostor).
Já bych to napsal asi nějak takhle. Poslání 255 přepne na horní půlku, poslání 254 na dolní. Zbytek jako dřív, tj. pro příkazy posílám 253, příkaz a pro text rovnou ten text.
Kód: Vybrat vše
symbol baud = N4800_32
symbol RX = C.0
symbol RS = C.1
symbol enableHORNI = C.2
symbol enableDOLNI = C.3
symbol nahore = bit0
main:
gosub LCD_init
nahore = 1
do
serin RX, baud, b1
gosub zpracuj
loop
zpracuj:
select case b1
case 255 ; mam prepnout na horni pulku
nahore = 1 ; zapamatuju si, ze co prijde, bude nahore
return ; a to je pro tuto chvili vse
case 254 ; mam prepnout na dolni pulku
nahore = 0 ; zapamatuju si, ze co prijde, nebude nahore
return ; a to je pro tuto chvili vse
case 253 ; poslali mi prikaz
low RS ; nastavim RS na predani prikazu
serin RX, baud, b1 ; prijmu ten prikaz
else
high RS ; nastavim RS na predani dat
; a data uz jsem prijal
endselect
pinsB = b1 ; dam na vystup co tam ma jit, at uz to je prikaz nebo data (RS uz je nastaveny)
if nahore = 1 then ; podle horni nebo dolni pulky tiknu horni nebo dolni pulce
pulsout enableHORNI, 1
else
pulsout enableDOLNI, 1
end if
return ; a je to.
serin 500, main, RX, baud, b1 ; prijmu ten prikaz