Stránka 2 z 4
Napsal: 14 čer 2010, 18:02
od ZdenekHQ
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.
Normálně jsi mě právě vyrazil dech.... Ono je tady sice skutečně hromada "programátorů", ale že je takto nakopne "starý šedý vlk" jsem nečekal...
Napsal: 14 čer 2010, 19:33
od michalino
Tak ještě Vás musím poprosit o pomoc, nefunguje mi to...
když to přesunu normálně do čipu, tak to nejede..
bity jsou pořád nastavené na 1 a když stisknu tlačítko, nezmění se na 0..
Prosím, čím to může být?
Přitom normálním aliasem, bez použití bitů tlačítka v pohodě fungují....
Config Porta.7 = Input
Config Portd.7 = Input
Porta.7 = 1
Portd.7 = 1
Dim Levetlacitko As Bit
Dim Pravetlacitko As Bit
Left Alias Pina.7
Right Alias Pind.7
Levetlacitko = Left
Pravetlacitko = Right
Do
If Pravetlacitko = 0 Then
Locate 1 , 1
Lcd "prave"
Locate 2 , 1
Lcd " "
End If
If Levetlacitko = 0 Then
Locate 2 , 1
Lcd "leve"
Locate 1 , 1
Lcd " "
End If
Locate 3 , 1
Lcd Levetlacitko ; Pravetlacitko
Loop
a na displeji je pořád na třetím řádku : 1 1
prosím Vás o radu
Napsal: 14 čer 2010, 20:01
od popopepe
Michalino, i když to takhle rozběháš, budeš za chviličku řešit co se zákmity tlačítek.
Já bych to raději upravil takhle:
Config Porta.7 = Input
Config Portd.7 = Input
Porta.7 = 1
Portd.7 = 1
Dim Levetlacitko As Bit
Dim Pravetlacitko As Bit
Left Alias Pina.7
Right Alias Pind.7
Levetlacitko = Left
Pravetlacitko = Right
start_1:
Do
debounce pravetlacitko,0,prava
debounce levetlacitko,0,leva
loop
prava:
Locate 1 , 1
Lcd "prave"
Locate 2 , 1
Lcd " "
Locate 3 , 1
Lcd Levetlacitko ; Pravetlacitko
goto start_1
leva:
Locate 2 , 1
Lcd "leve"
Locate 1 , 1
Lcd " "
Locate 3 , 1
Lcd Levetlacitko ; Pravetlacitko
goto start_1
Pomocí debounce otestuješ stav tlačítka, pokud bude 0, tak skočí na tu proceduru pod ním podle toho, které tlačítko je stisknuto. Provede co má, a vrátí se zpátky na začátek.
Napsal: 14 čer 2010, 20:06
od michalino
Popopepe, děkuji, zkouším to, ale píše mi to u debounce nějaké
illegal character GOT pravetlacitko
Napsal: 14 čer 2010, 20:08
od popopepe
vydrž, hodím to do bascomu

Napsal: 14 čer 2010, 20:08
od michalino
Aha, už vím...A je to tím, že místo levetlacitko se musi napsat PORTA.7 což právě zase neřeší to přehození tlačítek
Popopepe, prosím, přesto, kdybych to chtěl vyřešit mimo použití DEBOUNCE?
Proč mi to nejede s tou předchozí variantou, vidíte tam nějakou chybu?
Děkuji
Napsal: 14 čer 2010, 20:27
od popopepe
Vidím, nemůžeš použít názvy left a right, jsou to interní názvy v Bascomu.
Config Porta.7 = Input
Config Portd.7 = Input
Porta.7 = 1
Portd.7 = 1
Dim Levetlacitko As Bit
Dim Pravetlacitko As Bit
Left_1 Alias Pina.7
Right_1 Alias Pind.7
Levetlacitko = Left_1
Pravetlacitko = Right_1
start_1:
Do
Debounce Left_1 , 0 , Prava
Debounce Right_1 , 0 , Leva
loop
prava:
Cls
Locate 1 , 1
Lcd "prave"
Locate 2 , 1
Lcd " "
Locate 3 , 1
Lcd Left_1 ; Right_1
goto start_1
leva:
Cls
Locate 2 , 1
Lcd "leve"
Locate 1 , 1
Lcd " "
Locate 3 , 1
Lcd Left_1 ; Right_1
Goto Start_1
End
A jak budeš řešit ty tlačítka a jejich zákmity?
Napsal: 14 čer 2010, 20:31
od michalino
Popopepe, děkuji za Tvůj čas a rady..
Ty zákmity budu řešit dvěmi řádky podmínky, kde zjišťuju, jestli je stisknuto tlačítko, mezi pdomínkami dám cca 80ms času...myslím, že to je břídilský způsob, ale v tuto chvíli nutný, protože si nemůžu dovolit vytvořit ty odskoky, návěstí z DEBOUNCE...bylo by jich totiž pro tohle použití hodně....
Určitě se ale pomocí debounce obohatím a někdy využiju..
Způsob zápisu LEFT který Popopepe používáš u ebounce mám použít i na první verzi? Je to problém, proč to nefunguje?
Děkuji
Napsal: 14 čer 2010, 20:35
od popopepe
Budeš-li to testovat pomocí smyčky cca 80ms a pak vyhodnocovat, tak přesně tohle dělá debounce
jestli napíšeš
left_1 alias pina.7
a debounce left_1,0,XXX
nebo rovnou
debounce pina.7,0,XXX je jedno
Nemusíš si jenom pamatovat který pin co znamená
Jinak nevím co za verzi Bascomu máš, ale mně to nedovolí ani uložit při tom left a right použitých u alias.
Napsal: 14 čer 2010, 20:39
od michalino
Ahaaaaaa.....to je dobréééé...
Zkouším to teď v čipu
Config Porta.7 = Input
Config Portd.7 = Input
Porta.7 = 1
Portd.7 = 1
Dim Levetlacitko As Bit
Dim Pravetlacitko As Bit
Left_1 Alias Pina.7
Right_1 Alias Pind.7
Levetlacitko = Left_1
Pravetlacitko = Right_1
Do
If Pravetlacitko = 0 Then
Locate 1 , 1
Lcd "prave"
Locate 2 , 1
Lcd " "
End If
If Levetlacitko = 0 Then
Locate 2 , 1
Lcd "leve"
Locate 1 , 1
Lcd " "
End If
Locate 3 , 1
Lcd Levetlacitko ; Pravetlacitko
Loop
a pořád nic, pořád se vypisuje jen 1 1
A když stisknu tlačítko, nezmění se ani jedna hodnota na 0
prosím, mám tam ještě něco nesprávně?
Napsal: 14 čer 2010, 20:42
od popopepe
Zjednoduš to, co to jde. Pro zkoušky. Vypusť ty left_1 a right_1
Config Porta.7 = Input
Config Portd.7 = Input
Porta.7 = 1
Portd.7 = 1
Dim Levetlacitko As Bit
Dim Pravetlacitko As Bit
Levetlacitko = Pina.7
Pravetlacitko = Pind.7
Do
If Pravetlacitko = 0 Then
Locate 1 , 1
Lcd "prave"
Locate 2 , 1
Lcd " "
End If
If Levetlacitko = 0 Then
Locate 2 , 1
Lcd "leve"
Locate 1 , 1
Lcd " "
End If
Locate 3 , 1
Lcd Levetlacitko ; Pravetlacitko
Loop
End
Napsal: 14 čer 2010, 20:48
od michalino
Config Porta.7 = Input
Config Portd.7 = Input
Porta.7 = 1
Portd.7 = 1
Dim Levetlacitko As Bit
Dim Pravetlacitko As Bit
Levetlacitko = Pina.7
Pravetlacitko = Pind.7
Do
If Pravetlacitko = 0 Then
Locate 1 , 1
Lcd "prave"
Locate 2 , 1
Lcd " "
End If
If Levetlacitko = 0 Then
Locate 2 , 1
Lcd "leve"
Locate 1 , 1
Lcd " "
End If
Locate 3 , 1
Lcd Levetlacitko ; Pravetlacitko
Loop
End
tak nefunguje to ani takto... pořád jsou tam vypsané 1 1
Napsal: 14 čer 2010, 20:52
od popopepe
Nahraď na začátku ty portd.7=1 a porta.7=1
za pind.7=1
a pina.7=1
S tímhle mně ten Bascom taky vytáčí

Napsal: 14 čer 2010, 20:54
od Andrea
Ta přiřazení Levetlacitko = Pina.7 Pravetlacitko = Pind.7 by asi měla být v té Do Loop smyčce, jinak se přečtou jen jednou.
Napsal: 14 čer 2010, 20:59
od michalino
Když tam dám ty PINd.7=1 ....... tak to pořád hlasí, že leva a pravetlacitko = 0 v podmínkách...naopak to pořád splňuje podmínky