Atmega8 Bascom Programmierung

Gast #1087833
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
Gast #1087843
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
Gast #1087844
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren