LED villogtató

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

Hozzászólás Szerző: Kotesz »

Értem köszönöm a segítséget!:)
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

Hozzászólás Szerző: Kotesz »

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
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

Hozzászólás Szerző: Kotesz »

ú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:

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
Szerk.: az "End select" parancs hiányzott bocsi én voltam figyelmetlen
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

Hozzászólás Szerző: Kotesz »

de csak egyik irányba fut a fény, a gombokra nem reagál
Mit rontottam el?
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

A sorrendet:

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
De így beleragad az első elindított rutinba! Csak a Reset segít! Kellene valami kilépés a Goto-ból. 8)
A hozzászólást 3 alkalommal szerkesztették, utoljára kapu48 2010. szeptember 22. szerda, 8:49-kor.
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

Hozzászólás Szerző: Kotesz »

Ez mostmár igy világos!

De milyen eseményre lépne ki a goto-ból?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

goto helyett gosub-return?
Avatar
herc1234
Bitfaragó
Hozzászólások: 459
Csatlakozott: 2007. február 9. péntek, 7:00

Hozzászólás Szerző: herc1234 »

EXIT FOR..DO..SUB..WHILE...FUNCTION

valamit kihagytam?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

M8 tud 4 MHzrol jarni?
Nem 8 és 1 MHz lehet (adatlap nincs előttem)
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

herc1234 írta:valamit kihagytam?
A legegyszerűbb (kezdő szint!):
If Gomb3 = 0 Then Goto Eleje 'Do
8)
Avatar
herc1234
Bitfaragó
Hozzászólások: 459
Csatlakozott: 2007. február 9. péntek, 7:00

Hozzászólás Szerző: herc1234 »

kapu48 írta:
herc1234 írta:valamit kihagytam?
A legegyszerűbb (kezdő szint!):
If Gomb3 = 0 Then Goto Eleje 'Do
8)
itt most a cikluskilépésről volt szó
é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
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

De ez itt a kezdők, LED villogtató topikja! Az illetőnek el kellene magyarázni mi az a „Do.....While ciklus”! De mivel ezt már előttünk egy páran megtették … :arrow: :lol:
Avatar
zoli_varga
DrótVégénSzéndarab
Hozzászólások: 20
Csatlakozott: 2009. november 9. hétfő, 7:00

Hozzászólás Szerző: zoli_varga »

Üdv!

most kezdem a programozást és az avr használatát. a led villogtatónál hogyan lehetne megoldani hogy az időzítést változóval oldjam meg?
(lusta vagyok átírni minden sort ha változtatni szeretnék a programon).
A program elején definiálnám az időket. ez a villogtató továbbfejlesztéséhez kellene.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Kód: Egész kijelölése

dim valami as byte
waitms valami
Avatar
zoli_varga
DrótVégénSzéndarab
Hozzászólások: 20
Csatlakozott: 2009. november 9. hétfő, 7:00

Hozzászólás Szerző: zoli_varga »

köszi
én a sima wait -et próbáltam.
megnéztem és azt írja hogy out of sram space
tiny13 at használok.
Válasz küldése