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