Stránka 1 z 4
BASCOM tlacitko1
Napsal: 14 čer 2010, 13:05
od michalino
Dobrý den přátelé, prosím Vás o pomoc a radu s příkazem:
if a=1 then
left Alias Pind.7
right Alias Pina.7
else
right Alias Pind.7
left Alias Pina.7
end if
BASCOM hlasi ALIAS ALREADY USED
Jedna se o to, ze mam dve tlacitka a potrebuju je navzajem prohodit, tedy prohodit funkce techto tlacitek.
Tzn: Co dela tlacitko 1 ma delat tlacitko 2 a co dela tlacitko 2 ma delat tlacitko 1, pokud se splni odminka, ze a=1.
Je mozne toto v bascomu nejak vyresit takto jednoduchym zpusobem?
děkuji,
m.
Napsal: 14 čer 2010, 13:41
od Crifodo
co takhle
Dim A As Bit
Dim Levy As Bit
Dim Pravy As Bit
Left Alias Pind.7
right Alias Pina.7
If A = 1 Then
Levy = Left
Pravy = Right
Else
Levy = Right
Pravy = Left
End If
Napsal: 14 čer 2010, 14:13
od michalino
Děkuji moc za radu,
zatím nad tím přemýšlím a zkouším to, ladím..zatím nefunguje...ale věřím, že to doladím...
Napsal: 14 čer 2010, 14:30
od michalino
Tak jsem se nakonec dostal k vysledku, ktery kontroluju v simulatoru a chci se prosim zeptat..
da se toto reseni opravdu položit jako plnohodnotnou nahradu na kontrolu stisku tlačitek ? Trosku se mi tam nelibi ten BIT, protoze v simulatoru musim dvakrat kliknout , aby se zmenil stav, oproti klasickemu reseni s tlacitky bez BITu...
dekuji
Napsal: 14 čer 2010, 14:37
od Crifodo
já nejsem žádnej odborník v programování, na to jsou tu jiní, pokud se zrovna nevěnujou vznešenější činnosti.
ale myslím že bascom si nedá vnutit přiřazování aliasů za běhu programu, protože alias je vlastně deklarace a ta se definuje předem.
jednotlivý pin portu může mít jen hodnotu 0 nebo 1 tak snad bit jako typ proměnné je tam OK? Mně to v simulaci tak funguje.
Napsal: 14 čer 2010, 14:57
od popopepe
Crifodo píše:já nejsem žádnej odborník v programování, na to jsou tu jiní, pokud se zrovna nevěnujou vznešenější činnosti.
ale myslím že bascom si nedá vnutit přiřazování aliasů za běhu programu, protože alias je vlastně deklarace a ta se definuje předem.
jednotlivý pin portu může mít jen hodnotu 0 nebo 1 tak snad bit jako typ proměnné je tam OK? Mně to v simulaci tak funguje.
Má pravdu, předsedo
Jde jenom o deklaraci. Tudíž pak už se v programu odkazuješ jenom jménem.
Napsal: 14 čer 2010, 15:00
od michalino
Nějak se v tom nevyznam, ono totiz pri normalnim pouzivani tlacitek s ALIAS a bez BIT....
1) se hodnota ON, OFF zmenila jakmile jsem kliknul v simulatoru na zelenou diodku...jakmile jsem ji zhasnul, hodnota se zmenila na OFF jakmile jsem klikl na ni znovu, hodnota se zmenila na ON ihned..
a ted, za pouziti BITu se deje:
Kliknu na diodku, rozsvitim ji a zmeni se hodnotas, pak diodku opet zhasnu, pak ji rozsvitim a az ted se zmeni hodnota na jinou...nedeje se to zkratka hned...
Popopepe, znamena to s tou deklaraci, ze zameny tlacitek jednoduchym zpusobem ALIAS tedy nejde nebo je opravdu nahore uvedene řešení právě to řešení?
Děkuji
Napsal: 14 čer 2010, 15:05
od popopepe
Ahoj Michalino, ale určitě to fungovat bude. Bit, stejně jako byte je pouze určení velikosti proměnné. Pokud nastavíš BIT, tak budeš mít dvě hodnoty 0 a 1. Pokud BYTE, zabereš v paměti 8 bitů.
PS: Co budou ta tlačítka vyvádět, že je chceš mezi sebou přehazovat? budeš s nima něco spínat?
Napsal: 14 čer 2010, 15:07
od popopepe
Použít alias v programu je kravina. To nejde. Tím ALIAS pouze řekneš překladači, že ten konrétní pin, který jsi si pouze pojmenoval tím aliasem jako nějaké zapamatovatelné slovo bude plnit jeho funkci. Jde pouze o deklaraci, která ve vlastním přeloženém programu vůbec neexistuje.
Napsal: 14 čer 2010, 15:09
od michalino
Popopepe a všichni děkuji za rady,
ty tlacitka maji jezdit kurzorem na LCD
1) tlacitko nahoru
2) tlacitko dolu
ale kdyz to lcd obratim vzhuru nohama, tak potrebuju, aby nahoru bylo dolu a aby dolu bylo nahoru...

a pritom staci, aby se definovalo, které tlačítko je které už při zapnutí celého obvodu....tedy úplně na začátku...
a to jestli je vzhuru nohama displej se pozna bud dalsim tlacitkem nebo kontrolou nejake hodnoty v programu....to je ale vedlejsi, hlavne nejak prohodit ty tlacitka...prosim Vas o pomoc....
Napsal: 14 čer 2010, 15:17
od popopepe
Takže ta tlačítka budou vstupní, tudíž je budeš testovat, zda jsou stlačená.
Takže.
vlevo alias pind.0
vpravo alias pind.1
.
.
do
Debounce vlevo,0,vlevo
debounce vpravo,0,vpravo
loop
Vlevo:
if a=1 then
xxx -ta tvoje podmínka, LCD je normálně, posun do leva
else
xxx - ta tvoje podmínka, LCD vzhůru nohama, posum do prava
endif
return
Vpravo:
if a=1 then
xxx -ta tvoje podmínka, LCD je normálně, posum do prava
else
xxx - ta tvoje podmínka, LCD vzhůru nohama, posun do leva
endif
return
Třeba... proměnná a určuje polohu displeje.
Napsal: 14 čer 2010, 15:17
od michalino
takto vypada verze, ktera mi nejak nefunguje:
$sim
$regfile = "m16def.dat"
Config Porta.7 = Input ' tlacitko
Config Portd.7 = Input ' tlacitko
Config Portb.7 = Input ' tlacitko
Porta.7 = 1
Portd.7 = 1
Dim Levy As Bit
Dim Pravy As Bit
Left Alias Portd.7
Right Alias Porta.7
If Portb.7 = 0 Then
Levy = Left
Pravy = Right
Else
Levy = Right
Pravy = Left
End If
Do
'Print "Levy: " ; Levy ; " Pravy: " ; Pravy
If Pravy = 0 Then
Print "stisknuto pravy"
Pravy = 1
End If
If Levy = 0 Then
Print "stisknuto levy"
Levy = 1
End If
Loop
Prosím o pomoc...
Napsal: 14 čer 2010, 15:26
od popopepe
Jak rozlišíš stav tlačítka na pinb.7, když nemáš zapnutý pullup?
doplnit portb.7=1
A v klidu bude na pinb.7 logická jednička.
Napsal: 14 čer 2010, 15:30
od michalino
Děkuji za radu,
už je tam Portb.7 = 1 ...ale porad nic, restartoval jsem i SW, nekdy to pomuze, ale nic...
$sim
$regfile = "m16def.dat"
Config Porta.7 = Input ' tlacitko
Config Portd.7 = Input ' tlacitko
Config Portb.7 = Input ' tlacitko
Porta.7 = 1
Portd.7 = 1
Portb.7 = 1
Dim Levy As Bit
Dim Pravy As Bit
Left Alias Portd.7
Right Alias Porta.7
If Portb.7 = 0 Then
Levy = Left
Pravy = Right
Else
Levy = Right
Pravy = Left
End If
Do
'Print "Levy: " ; Levy ; " Pravy: " ; Pravy
If Pravy = 0 Then
Print "stisknuto pravy"
Pravy = 1
End If
If Levy = 0 Then
Print "stisknuto levy"
Levy = 1
End If
Loop
Napsal: 14 čer 2010, 15:38
od michalino
Funguje, máš pravdu popopepe, jen prohodit slovo PORT za PIN a už se to rozjelo!!!!!Moje chyba!
CRIFODO a POPOPEPE, děkuju!!!!!!!!!!!!!!!!!!!!
