LED villogtató
Köszönöm szépen mindenkinek a segítséget, igy sikerült megoldani az 5 led 1 nyomógombal történő léptetését!
Kód: Egész kijelölése
$regfile = "m8def.dat" 'proci: AtMega8
$crystal = 4000000 'belső órajel
Config Portc.5 = Output
Config Portc.4 = Output
Config Portc.3 = Output
Config Portc.2 = Output
Config Portc.1 = Output 'kimenet: LED
Config Portc.0 = Input 'bemenet: Nyomógomb
Reset Portc.1
Reset Portc.2
Reset Portc.3
Reset Portc.4
Reset Portc.5
Portc.0 = 1 'belső felhúzó ellenállás bekapcsol
Dim A As Byte
A = 0
Do 'főprogram
'feltétel
If Pinc.0 = 0 Then
A = A + 1
Waitms 500
Bitwait Pinc.0 , Set ' vár gombelengedésig - opcionálisan használható
If A > 5 Then A = 0
Reset Portc.1
Reset Portc.2
Reset Portc.3
Reset Portc.4
Reset Portc.5
End If
Select Case A
Case 1 : Set Portc.1
Case 2 : Set Portc.2
Case 3 : Set Portc.3
Case 4 : Set Portc.4
Case 5 : Set Portc.5
End Select
Loop 'főprogram vége
End 'end program
újabb problémával szeretnélek zavarni benneteket:
2 nyomógomb 1.gomb balra - 2.gomb jobbra futófény
If - then ciklus szintaktika ismét a hiba:
Szerk.: az "End select" parancs hiányzott bocsi én voltam figyelmetlen
2 nyomógomb 1.gomb balra - 2.gomb jobbra futófény
If - then ciklus szintaktika ismét a hiba:
Kód: Egész kijelölése
Dim A As Byte
Do
'főprogram
If Pinb.1 = 0 Then
A = 1
Waitms 500
Bitwait Pinb.1 , Set
If Pinb.2 = 0 Then A = 0
Waitms 500
Bitwait Pinb.2 , Set
End If
Jobbra:
Reset Portc.5
Set Portc.1
Waitms 100
Set Portc.2
Reset Portc.1
Waitms 100
Set Portc.3
Reset Portc.2
Waitms 100
Set Portc.4
Reset Portc.3
Waitms 100
Set Portc.5
Reset Portc.4
Waitms 100
Set Portc.1
Reset Portc.5
Goto Jobbra
Balra:
Reset Portc.1
Set Portc.5
Waitms 100
Set Portc.4
Reset Portc.5
Waitms 100
Set Portc.3
Reset Portc.4
Waitms 100
Set Portc.2
Reset Portc.3
Waitms 100
Set Portc.1
Reset Portc.2
Waitms 100
Goto Balra
Select Case A
Case 1 : Goto Balra
Case 0 : Goto Jobbra
End select
'főprogram vége
End
A sorrendet:
De így beleragad az első elindított rutinba! Csak a Reset segít! Kellene valami kilépés a Goto-ból.
Kód: Egész kijelölése
$regfile = "m8def.dat" 'proci: AtMega8
$crystal = 4000000 'belső órajel
Config Portc.5 = Output
Config Portc.4 = Output
Config Portc.3 = Output
Config Portc.2 = Output
Config Portc.1 = Output 'kimenet: LED
Config Portc.0 = Input 'bemenet: Nyomógomb
Reset Portc.1
Reset Portc.2
Reset Portc.3
Reset Portc.4
Reset Portc.5
Portc.0 = 1 'belső felhúzó ellenállás bekapcsol
Dim A As Byte
Do
Eleje:
A = 0 'főprogram
If Pinb.1 = 0 Then
A = 1
Waitms 500
Bitwait Pinb.1 , Set
End If
If Pinb.2 = 0 Then
A = 2
Waitms 500
Bitwait Pinb.2 , Set
End If
Select Case A
Case 1 : Goto Balra
Case 2 : Goto Jobbra
End Select
Loop
Jobbra:
Reset Portc.5
Set Portc.1
Waitms 100
Set Portc.2
Reset Portc.1
Waitms 100
Set Portc.3
Reset Portc.2
Waitms 100
Set Portc.4
Reset Portc.3
Waitms 100
Set Portc.5
Reset Portc.4
Waitms 100
Set Portc.1
Reset Portc.5
Goto Jobbra
Balra:
Reset Portc.1
Set Portc.5
Waitms 100
Set Portc.4
Reset Portc.5
Waitms 100
Set Portc.3
Reset Portc.4
Waitms 100
Set Portc.2
Reset Portc.3
Waitms 100
Set Portc.1
Reset Portc.2
Waitms 100
Goto Balra
'főprogram vége
End
A hozzászólást 3 alkalommal szerkesztették, utoljára kapu48 2010. szeptember 22. szerda, 8:49-kor.
itt most a cikluskilépésről volt szókapu48 írta:A legegyszerűbb (kezdő szint!):herc1234 írta:valamit kihagytam?
If Gomb3 = 0 Then Goto Eleje 'Do
én a 'hátultesztelős WHILE ciklust ajánlanám
mivel akkor az elötte lévő Do.....While ciklusban mindenképp
1x lefutnak a megadott parancsok
Goto az egy direkt címzés felejtsük má el..
akkor már inkább return
- zoli_varga
- DrótVégénSzéndarab
- Hozzászólások: 20
- Csatlakozott: 2009. november 9. hétfő, 7:00
Kód: Egész kijelölése
dim valami as byte
waitms valami
- zoli_varga
- DrótVégénSzéndarab
- Hozzászólások: 20
- Csatlakozott: 2009. november 9. hétfő, 7:00