MikrocontrollerProgramm->problem mit If-Befehlen

OP #2661467
Hallo,
Ich habe folgendes Programm zur Steuerung einer Kreuzung ,in 
Basic/Bascom , geschrieben.In der Schaltung sind 2 Taster verbaut, einer 
zum umschalten der Ampeln für Fußgänger in die eine Richtung und in die 
andere Richtung.
Die Ampeln für die Straße sowie die für die Fußgänger haben jeweils 2 
LED´s, einmal grün und einmal rot.

Nun habe ich das Problem ,wenn ich den Mikrocontroller anmache ,dann 
macht er ohne dass ich einen Taster drücke das ganze Programm durch.

Würde mich über Lösungen meines Problems freuen :)

Mfg Dani


$regfile = "m32def.dat"
$crystal = 1000000

Config Portc.1 = Output
Config Portc.2 = Output
Config Portc.3 = Output
Config Portc.4 = Output
Config Portc.5 = Output
Config Portc.6 = Output
Config Portc.7 = Output
Config Portd.0 = Output
Config Pina.6 = Input
Config Pina.7 = Input
Config Portd.2 = Output

Dim Zeit As Integer
Zeit = 2500

Dim La As Integer
La = 5000

Dim T As Integer
T = 10000

Do

        If Pina.7 = 1 Then
          Waitms La
          Portc.1 = 0
          Portc.2 = 1
          Waitms Zeit
          Portc.3 = 0
          Portc.4 = 1
          Sound Portd.2 , 100 , 100
          Waitms La
          Sound Portd.2 , 100 , 160
          Portc.3 = 1
          Portc.4 = 0
          Waitms Zeit
          Portc.1 = 1
          Portc.2 = 0

        End If

           If Pina.7 = 1 Then
           Waitms La
           Portc.5 = 0
           Portc.6 = 1
           Waitms Zeit
           Portc.7 = 0
           Portd.0 = 1
           Sound Portd.2 , 100 , 100
           Waitms La
           Sound Portd.2 , 100 , 160
           Portc.7 = 1
           Portd.0 = 0
           Waitms Zeit
           Portc.5 = 1
           Portc.6 = 0

         End If




Loop

End
Angehängte Dateien:
Daniel S. schrieb:

> Nun habe ich das Problem ,wenn ich den Mikrocontroller anmache ,dann
> macht er ohne dass ich einen Taster drücke das ganze Programm durch.

Wie sind denn deine Taster hardwaremässig angeschlossen?

Liefern die eine 0 oder eine 1 wenn sie gedrückt werden?

Hinweis: Es ist nirgends in Stein gemeisselt und Moses hat auf seinen 
Gesetzestafeln keinen Passus: Dein Taster soll beim Drücken eine 1 
liefern.

Beides ist möglich.
Moderator (Firma: Titel) Persönliche Seite
Daniel S. schrieb:
> If-Befehl
Endlich mal nicht die lästige if-Schleife...

> Nun habe ich das Problem ,wenn ich den Mikrocontroller anmache
Das tut man auch nicht....
> ,dann macht er ohne dass ich einen Taster drücke das ganze Programm durch.
>        If Pina.7 = 1 Then
Welchen Pegel hast du am Pina.7 wenn du die Taste nicht drückst? Wie 
ist der Taster angeschlossen?
Ist an Pina.7 ein Pullup/Pulldown? Schaltet dein Taster auf GND oder 
VCC?

Wenn du auf "Pina.7 = 1" prüfst müsste er gegen VCC schalten und einen 
Pulldown haben.

Warum zwei mal "If Pina.7 = 1 Then" das eine soll davon wohl "If Pina.6 
= 1 Then" sein, oder?
OP
Timmo H. schrieb:
> Warum zwei mal "If Pina.7 = 1 Then" das eine soll davon wohl "If Pina.6
> = 1 Then" sein, oder?

Sry es sollte beim 2.If-Befehl "if Pina.6=1 Then" heißen.
Meine

Karl Heinz Buchegger schrieb:
> Liefern die eine 0 oder eine 1 wenn sie gedrückt werden?

Sie liefern eine 1.

Lothar Miller schrieb:
>> Nun habe ich das Problem ,wenn ich den Mikrocontroller anmache
> Das tut man auch nicht....

"Wenn ich den Mikrocontroller an 5V anschließe"

Timmo H. schrieb:
> Ist an Pina.7 ein Pullup/Pulldown? Schaltet dein Taster auf GND oder
> VCC?

Es ist ein Pulldown-Schalter und er schaltet auf VCC
@  Daniel S. (thenogger)

>Sry es sollte beim 2.If-Befehl "if Pina.6=1 Then" heißen.

Bitte? Hast den Quelltext kopiert oder abgetippt?

>Sie liefern eine 1.

Mal mit dem Multimeter nachgemessen?

>> Ist an Pina.7 ein Pullup/Pulldown? Schaltet dein Taster auf GND oder
>> VCC?

>Es ist ein Pulldown-Schalter

Sowas gibt es nicht.

> und er schaltet auf VCC

Das widerspricht deinem "Pulldown-Schalter". Egal. Hast du externe 
Pull-Down Widerstände?

MFG
Falk
Gast
Zeichne Dir doch bitte den Schaltplan der Taster auf, wie sie am µC 
angeschlossen sind. Ich denke dass da in Wirklichkeit etwas ander ist 
als geplant. Vergiss auch nicht die µC-internen Widerstände ;-) Wenn Du 
bei der Fehlersuche nicht weiterkommst, dann den bitte posten.

Funktionieren die Taster so wie vorgesehen - bitte testen. Was liefern 
sie wenn sie NICHT gedrückt werden.

Hast Du eine HW-Entprellung drin, die könnte evtl auch dieses Verhalten 
erzeugen.

Was bewirkt die Variable T - bzw. wozu ist sie da. in deinem Programm 
verwendest Du sie nicht.

Noch ein kleiner Tip am Rande: nenne Variablen so, dass sich der Sinn 
dem Leser erschliesst. Damit tust Du dir auch leichter, falls mal im 
Programm etwas nicht so funktioniert wie es soll.

Bis auf den bekannten Fehler, dass zweimal dieselbe Taste abgefragt 
wird, finde ich auch nichts. Eigentlich müsste es funktionieren, daher 
scheint der Fehler in der Schatung zu liegen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 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.