Forum: Mikrocontroller und Digitale Elektronik Atmega8 Bascom Programmierung


von Zexon (Gast)


Lesenswert?

Hallo ich hab vor kurzen mir ein Pollin Evu Board gekauft , ich hab das 
beispiel Testtool auf einen Atmega8 gespielt. Jetzt möchte ich aber gern 
das wenn man auf denn 1. Taster drückt das dass LED Blinkt bis der 
Taster wieder gedrückt wird hab schon im Forum gesucht aber nicht 
passendes gefunden.

So würde das ausschauen Taster LED An Taster LED AUS
1
$regfile = "m8def.dat"                                      'Atmega = m8def.dat
2
3
$crystal = 8000000                                          'Externen Quarz (8MHz)
4
5
Dim A As Byte                                               'Variablen
6
Dim B As Byte
7
8
Ddrd = &B11100000                                           'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
9
Portd = &B00000000                                          'definieren der einzelnen Pins an einem Port ( 0= low level; 1= high level)
10
11
Main
12
Do
13
14
  If Pind.2 = 1 Then
15
16
  Toggle Portd , 5
17
  Bitwait Pind.2 , Reset
18
19
  End If
20
21
22
23
24
Loop

Kann mir jemand vl ein Beispiel geben, ich komm nicht drauf wie man das 
machen kann -.- würde mir sehr weiterhelfen, sry bin noch Anfänger  ;)

MFG Zexon

von danst (Gast)


Lesenswert?

Hi,

du musst nur die Zeile mit dem Bitwait auskommentieren. Außerdem würde 
ich eine kleine Pause einlegen, um den Taster zu entprellen. Dafür 
gibt's in Bascom auch einen Befehl "debounce".
1
$regfile = "m8def.dat"                                      'Atmega = m8def.dat
2
3
$crystal = 8000000                                          'Externen Quarz (8MHz)
4
5
Dim A As Byte                                               'Variablen
6
Dim B As Byte
7
Dim Zustand As Bit
8
9
Ddrd = &B11100000                                           'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
10
Portd = &B00000000                                          'definieren der einzelnen Pins an einem Port ( 0= low level; 1= high level)
11
12
Main
13
14
Do
15
16
  If Pind.2 = 1 Then
17
  waitms 25
18
  Toggle Portd , 5
19
                                         'Bitwait Pind.2 , Reset
20
21
  End If
22
23
24
25
Loop

Gruß Daniel

von danst (Gast)


Lesenswert?

ups, du willst es ja blinken lassen.
1
$regfile = "m8def.dat"                                      'Atmega = m8def.dat
2
3
$crystal = 8000000                                          'Externen Quarz (8MHz)
4
5
Dim A As Byte                                               'Variablen
6
Dim B As Byte
7
Dim Zustand As Bit
8
9
Ddrd = &B11100000                                           'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
10
Portd = &B00000000                                          'definieren der einzelnen Pins an einem Port ( 0= low level; 1= high level)
11
12
Main
13
14
Do
15
16
  If Pind.2 = 1 Then
17
     do
18
       Toggle Portd.5
19
       wait 1                                        'blinken im Sekunden TAkt
20
     loop until pind.2 = 1
21
     Portd.5 = 0
22
  End If
23
24
Loop

eleganter ist die Programmierung der Pause mittels eines Timers, da der 
Controller sonst blockiert wird

Gruß Daniel

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.