 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
cyber Neznanec

Pridružen-a: Sre 09 Apr 2008 21:14 Prispevkov: 7 Aktiv.: 0.03 Kraj: KP
|
Objavljeno: Pet Apr 03, 2009 1:48 pm Naslov sporočila: tipke in attiny2313 |
|
|
lp
imam težavo pri programiranju. Rad bi da ko stisnem gumb da lučke svetijo tako kot je napisano (spodaj). Ko stisnem en gumb sveti tako, problem pa je...da ko stisnem druge sveti še zmeraj enako
Koda: |
$crystal = 8000000
Config Portb = Output
Config Portd = Input
If Pind.5 = 0 Then
Do
Set Portb.2
Waitms 10
Reset Portb.2
Set Portb.3
Waitms 10
Reset Portb.3
Set Portb.4
Waitms 10
Reset Portb.4
Set Portb.5
Waitms 10
Reset Portb.5
Set Portb.6
Waitms 10
Reset Portb.6
Set Portb.7
Waitms 10
Reset Portb.7
Loop
End If
If Pind.4 = 0 Then
Do
Set Portb.2
Waitms 10
Reset Portb.2
Set Portb.4
Waitms 10
Reset Portb.4
Set Portb.3
Waitms 10
Reset Portb.3
Set Portb.5
Waitms 10
Reset Portb.5
Set Portb.7
Waitms 10
Reset Portb.7
Set Portb.6
Waitms 10
Reset Portb.6
Loop
End If
If Pind.3 = 0 Then
Do
Set Portb.2
Waitms 10
Set Portb.3
Waitms 10
Set Portb.4
Reset Portb.2
Waitms 10
Set Portb.5
Reset Portb.3
Waitms 10
Set Portb.6
Reset Portb.4
Waitms 10
Set Portb.7
Reset Portb.5
Waitms 10
Reset Portb.6
Waitms 10
Set Portb.6
Waitms 10
Set Portb.5
Reset Portb.7
Waitms 10
Set Portb.4
Reset Portb.6
Waitms 10
Set Portb.3
Reset Portb.5
Waitms 10
Set Portb.2
Reset Portb.4
Waitms 10
Reset Portb.3
Reset Portb.2
Loop
End If
If Pind.2 = 0 Then
Do
Set Portb.2
Set Portb.3
Set Portb.4
Set Portb.5
Set Portb.6
Set Portb.7
Waitms 5
Reset Portb.2
Reset Portb.3
Reset Portb.4
Reset Portb.5
Reset Portb.6
Reset Portb.7
Waitms 5
Loop
End If |
|
|
Nazaj na vrh |
|
 |
dkone Član

Pridružen-a: Sre 07 Mar 2007 18:53 Prispevkov: 2116 Aktiv.: 9.50 Kraj: Krško
|
Objavljeno: Pet Apr 03, 2009 2:18 pm Naslov sporočila: Re: tipke in attiny2313 |
|
|
cyber je napisal/a: |
lp
imam težavo pri programiranju. Rad bi da ko stisnem gumb da lučke svetijo tako kot je napisano (spodaj). Ko stisnem en gumb sveti tako, problem pa je...da ko stisnem druge sveti še zmeraj enako
Koda: |
$crystal = 8000000
Config Portb = Output
Config Portd = Input
'postavim pull up
set pind.5
set pind.4
set pind.3
set pind.2
do 'glavna zanka
debounce pind.5,0,program1
debounce pind.4,0,program2
debounce pind.3,0,program3
debounce pind.2,0,program4
loop'
program1:
Do
debounce pind.4,0,program2 'spet preverjam tipke za nasljednje programe
debounce pind.5,0,program1
debounce pind.3,0,program3
debounce pind.2,0,program4
Set Portb.2
Waitms 10
Reset Portb.2
Set Portb.3
Waitms 10
Reset Portb.3
Set Portb.4
Waitms 10
Reset Portb.4
Set Portb.5
Waitms 10
Reset Portb.5
Set Portb.6
Waitms 10
Reset Portb.6
Set Portb.7
Waitms 10
Reset Portb.7
Loop
program2:
Do
debounce pind.5,0,program1
debounce pind.4,0,program2
debounce pind.3,0,program3
debounce pind.2,0,program4
Set Portb.2
Waitms 10
Reset Portb.2
Set Portb.4
Waitms 10
Reset Portb.4
Set Portb.3
Waitms 10
Reset Portb.3
Set Portb.5
Waitms 10
Reset Portb.5
Set Portb.7
Waitms 10
Reset Portb.7
Set Portb.6
Waitms 10
Reset Portb.6
Loop
program3:
Do
debounce pind.5,0,program1
debounce pind.4,0,program2
debounce pind.3,0,program3
debounce pind.2,0,program4
Set Portb.2
Waitms 10
Set Portb.3
Waitms 10
Set Portb.4
Reset Portb.2
Waitms 10
Set Portb.5
Reset Portb.3
Waitms 10
Set Portb.6
Reset Portb.4
Waitms 10
Set Portb.7
Reset Portb.5
Waitms 10
Reset Portb.6
Waitms 10
Set Portb.6
Waitms 10
Set Portb.5
Reset Portb.7
Waitms 10
Set Portb.4
Reset Portb.6
Waitms 10
Set Portb.3
Reset Portb.5
Waitms 10
Set Portb.2
Reset Portb.4
Waitms 10
Reset Portb.3
Reset Portb.2
Loop
Program4:
Do
debounce pind.5,0,program1
debounce pind.4,0,program2
debounce pind.3,0,program3
debounce pind.2,0,program4
Set Portb.2
Set Portb.3
Set Portb.4
Set Portb.5
Set Portb.6
Set Portb.7
Waitms 5
Reset Portb.2
Reset Portb.3
Reset Portb.4
Reset Portb.5
Reset Portb.6
Reset Portb.7
Waitms 5
Loop
|
|
Tole sem ti napamet popravil,preveri z delovanjem. Debounce ukaz je ukaz,ki je sestavljen z dvema IF stavkoma ,samo da je med njima približno 30ms zakasnitve. Program deluje tako,da lahko pritisneš tipko,in te bo vrgel v določen program,res pa je,da boš moral držati nekaj časa tipko,da pride na vrh programa(program1,2,itd),to pa zato ker si uporabil zakasnitve z wait ukazi. Upam,da ti bo delovalo,mogoče so kakšne napakce(sintaktične)
Prejt ti ni pa zato delalo,ker si imel znotraj IF stavka do-loop,in nikjer v do loop zanki povpraševanje po tipkah-program je vedno delal v prvi do loop zanki,oz. ob pritisjeni tipki. _________________ Denis
Nazadnje urejal/a dkone Pet Apr 03, 2009 2:20 pm; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
klemen88 Član


Pridružen-a: Tor 01 Jan 2008 17:37 Prispevkov: 747 Aktiv.: 3.51 Kraj: Slovenj Gradec
|
Objavljeno: Pet Apr 03, 2009 2:19 pm Naslov sporočila: |
|
|
Prva napaka, ki sem jo videl, da imaš IF stavek pred neskončno zanko ( Do )
Lp
EDIT:
Šele zdaj sem bolj pogledal in videl, da imaš xx Do in loop ukazov...
Zakaj ne narediš preprosto:
Koda: |
Do
If pinx.x = 0 then
set ....
waitms xx
....
...
...
end if
if pinx.x = 0 then
set ...
..
...
...
end if
if pinx.x = 0 then
...
...
...
end if
loop
|
|
|
Nazaj na vrh |
|
 |
cyber Neznanec

Pridružen-a: Sre 09 Apr 2008 21:14 Prispevkov: 7 Aktiv.: 0.03 Kraj: KP
|
Objavljeno: Pet Apr 03, 2009 5:56 pm Naslov sporočila: |
|
|
@dkone: zdej dela, hvala
klpzm je napisal/a: |
Prva napaka, ki sem jo videl, da imaš IF stavek pred neskončno zanko ( Do )
Lp
EDIT:
Šele zdaj sem bolj pogledal in videl, da imaš xx Do in loop ukazov...
Zakaj ne narediš preprosto:
Koda: |
Do
If pinx.x = 0 then
set ....
waitms xx
....
...
...
end if
if pinx.x = 0 then
set ...
..
...
...
end if
if pinx.x = 0 then
...
...
...
end if
loop
|
|
to sem tudi probal ja..problem pa je..da se program od usake tipke izvede samo en krat...jaz pa bi rad da se ponavlja dokler ne pritisnem druge tipke |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 496 dni
Powered by phpBB © 2001, 2005 phpBB Group
|