Starten eines Programmes Atmega8

Gast #1924205
Hallo Leuts,


ich habe vor mein LED Programm mit einem Taster zu starten.
die Software habe ich in Bascom geschrieben, kann sich das mal jemand an 
gucken ob das so stimmt mit dem Starten des LED Programmes?


$regfile = "m8def.dat"
$crystal = 3690000




Config Portb = Output
Config Portc = Output
Config Pinc.4 = Input

Led1 Alias Portb.0                                          'Benennt die 
Ports mit der Jeweiligen LED
Led2 Alias Portb.1
Led3 Alias Portb.2
Led4 Alias Portb.3
Led5 Alias Portb.4
Led6 Alias Portb.5
Led7 Alias Portc.0
Led8 Alias Portc.1
Led9 Alias Portc.2
Led10 Alias Portc.3

Taster Alias Portc.4                                        'Einlesen 
des Tasters



Do


If Taster = 1 Then                                          'Led 
Programm starten
Goto Led:
End If


Led:                                                        ' Led 
Programm

Led1 = 1
Waitms 50
Led1 = 0
Waitms 50

Led2 = 1
Waitms 50
Led2 = 0
Waitms 50

Led3 = 1
Waitms 50
Led2 = 0


Loop


End
Gast
Ich kenn zwar Bascom nicht aber ich vermute das es nicht geht.

Denn was passiert denn wenn die IF bedingung nicht war ist, als nächsten 
kommt er ja immer zu deinem Programm.
Gast
Peter schrieb:
> Ich kenn zwar Bascom nicht aber ich vermute das es nicht geht.
>
> Denn was passiert denn wenn die IF bedingung nicht war ist, als nächsten
> kommt er ja immer zu deinem Programm.


und wie mache ich das.....
1. Dein Pin wird als "Tasters" deklariert, später wird "Taster" 
abgefragt.
2. So etwas macht man nicht nicht mit GOTO sondern GOSUB, denn so ist 
dein Label in die Hauptschleife integriert und wird somit in jedem 
Durchgang aufgerufen, egal ob der Taster gedrückt ist oder nicht.
3. Normalerweise zieht man Taster nicht auf 5V sondern auf GND, denn 
dann kannst du den internen Pullup aktivieren.
Gast
Samuel C. schrieb:
> 1. Dein Pin wird als "Tasters" deklariert, später wird "Taster"
> abgefragt.
> 2. So etwas macht man nicht nicht mit GOTO sondern GOSUB, denn so ist
> dein Label in die Hauptschleife integriert und wird somit in jedem
> Durchgang aufgerufen, egal ob der Taster gedrückt ist oder nicht.
> 3. Normalerweise zieht man Taster nicht auf 5V sondern auf GND, denn
> dann kannst du den internen Pullup aktivieren.

so jetzt ?

$regfile = "m8def.dat"
$crystal = 3690000




Config Portb = Output
Config Portc = Output
Config Pinc.4 = Input

Led1 Alias Portb.0                                          'Benennt die 
Ports mit der Jeweiligen LED
Led2 Alias Portb.1
Led3 Alias Portb.2
Led4 Alias Portb.3
Led5 Alias Portb.4
Led6 Alias Portb.5
Led7 Alias Portc.0
Led8 Alias Portc.1
Led9 Alias Portc.2
Led10 Alias Portc.3

Taster Alias Portc.4                                        'Einlesen 
des Tasters



Do


If Taster = 1 Then
Led10 = 0
End If
Gosub Sub


Sub:
Led2 = 1
Waitms 40
Led2 = 0
Waitms 40



Loop


End
Gast
1
$regfile = "m8def.dat"
2
$crystal = 3690000
3

4
Config Portb = Output
5
Config Portc = Output
6
Config Pinc.4 = Input
7

8
Led1 Alias Portb.0                  'Benennt die Ports mit der Jeweiligen LED
9
Led2 Alias Portb.1
10
Led3 Alias Portb.2
11
Led4 Alias Portb.3
12
Led5 Alias Portb.4
13
Led6 Alias Portb.5
14
Led7 Alias Portc.0
15
Led8 Alias Portc.1
16
Led9 Alias Portc.2
17
Led10 Alias Portc.3
18

19
Taster Alias Portc.4                 'Einlesen des Tasters
20

21
Do
22
  If Taster = 1 Then                 'Led Programm starten
23
                                     'Led Programm
24
    Led1 = 1
25
    Waitms 50
26
    Led1 = 0
27
    Waitms 50
28

29
    Led2 = 1
30
    Waitms 50
31
    Led2 = 0
32
    Waitms 50
33

34
    Led3 = 1
35
    Waitms 50
36
    Led2 = 0
37
  End If
38
Loop
39

40

41
End

Versuch mal möglichst ohne GoTo zu arbeiten.

Was ist denn daraus geworden.
Beitrag "Untereinander Verknüfen?"

Code einrücken.

Beim Posten Formatierung "code" benutzen

Nach dem Befehl GoSub macht er in der nächsten Zeile weiter.
Jetzt hast du den Code nur noch verschlimmert. Bei Punkt 1 muss ich mich 
entschuldigen, da habe ich mich verlesen, der stimmt.

GOSUB heißt, dass die Routine außerhalb der Hauptschleife liegt und mit 
RETURN abgeschlossen wird.

Den Taster auf Masse statt auf 5V zu ziehen hat schon seinen Sinn, außer 
du verwendest einen externen Pulldown, was aber aber dank dem internen 
Pullup nicht nötig ist.

Probiers mal mit folgendem Code und lass den Taster den Pin auf Masse 
ziehen:

$regfile = "m8def.dat"
$crystal = 3690000

DDRB = &B11111111
DDRC = &B11101111

Led1 Alias Portb.0
Led2 Alias Portb.1
Led3 Alias Portb.2
Led4 Alias Portb.3
Led5 Alias Portb.4
Led6 Alias Portb.5
Led7 Alias Portc.0
Led8 Alias Portc.1
Led9 Alias Portc.2
Led10 Alias Portc.3

Taster Alias Portc.4
Taster = 1



Do

If Taster = 0 Then
Led10 = 0
End If
Gosub Sub

Loop


Sub:
Led2 = 1
Waitms 40
Led2 = 0
Waitms 40
Return

End


Edit: Diese Antwort bezieht sich auf Post 5.
Gast
>
>
> Do
>
> If Taster = 0 Then
> Led10 = 0
> End If
> Gosub Sub
>
> Loop
>
>
> Sub:
> Led2 = 1
> Waitms 40
> Led2 = 0
> Waitms 40
> Return
>
> End



ich wollte aber das ich einmal den taster betätigen muss und das dann 
die leds von alleine weiter blinken?! so quasie als start taster
Persönliche Seite
Die Tasterabfrage (If taster == 1...) ist für einen ACTIVE HIGH 
angeschlossenen Taster gemacht.

Hast du den Taster richtig angeschlossen?

Vergleiche deine Schaltung mit dem rechten Bild in:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Tasten_und_Schalter

Einfacher ist die active low Schaltung, weil man den internen Pull-Up 
Widerstand des AVRs benutzen kann. Das hatten wir gestern in deiner 
anderen Frage.
Persönliche Seite
> ich wollte aber das ich einmal den taster betätigen muss und das dann
> die leds von alleine weiter blinken?! so quasie als start taster

Leg dir einen Merker an und werte dann den Taster oder den Merker aus.
1
gestartet = 0
2

3
do
4
  If Taster = 1 Or gestartet = 1 Then 'Led Programm starten
5
    gestartet = 1
6
    Led1 = 1
7
'usw...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.