-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Bascom Einsteigerprogramme

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied Avatar von High Light
    Registriert seit
    21.08.2009
    Ort
    Baden Württemberg
    Beiträge
    142

    Bascom Einsteigerprogramme

    Anzeige

    Hallo zusammen,

    ich habe dieses Thema aufgemacht, aus diesem Grund:
    Ich bin eigentlich noch ein Anfänger in Bascom.
    Habe aber noch Großes vor damit vor^^
    Jetzt habe ich schon ein recht großes Programm geschrieben,
    aber an manchen Ecken hackt es noch.

    Hier mal ein stark vereinfachtes Programm:
    Warum geht das nicht?????????????

    Code:
    $regfile = "m88def.dat"
    $crystal = 16000000
    
    Config Portc = Input
    Config Portd = Output
    
    PortD = &H03
    
    'Taste A soll Lampe A einschalten
    If Portc.0 = 0 Then
    Portd.0 = 1
    
    'Oder Taster B soll Lampe B einschalten
    Elseif Portc.1 = 0 Then
    Portd.1 = 1
    End If
    
    Return
    
    End
    Vlt kann mir ja jemand helfen???
    Bin für alles dankbar!!!

    Gruß High Light

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied Avatar von mycroc
    Registriert seit
    29.11.2006
    Ort
    Bochum
    Beiträge
    111
    versuch mal folgendes:

    Code:
    $regfile = "m88def.dat"
    $crystal = 16000000
    
    Config Portc = Input
    Config Portd = Output
    
    PortD = &H03
    
    'Taste A soll Lampe A einschalten
    If Pinc.0 = 0 Then
    Portd.0 = 1
    
    'Oder Taster B soll Lampe B einschalten
    Elseif Pinc.1 = 0 Then
    Portd.1 = 1
    End If
    
    Return
    
    End

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    1) Ein DO..LOOP verlängert die Laufzeit.

    2) Wohin soll der "RETURN" zurückspringen ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied Avatar von High Light
    Registriert seit
    21.08.2009
    Ort
    Baden Württemberg
    Beiträge
    142
    Danke für die 1A-Hilfe jetzt funktionierts...juhuuu... =D>

    Habe es nun mit DO...LOOP realisiert, aber warum hat es nicht mit "RETURN"
    funktioniert, muss man da eine Marke setzen oder irgendetwas???
    Wann benutze ich dann "Return"???

    So und nun zum Teil 2^^:

    Code:
    $regfile = "m88def.dat"
    $crystal = 16000000
    
    Config Portc = Input
    Config Portd = Output
    
    Portc = &H03
    
    Portd = 0
    
    Do
    'Taste A soll Lampe A einschalten
    If Pinc.0 = 0 Then
    Pind.0 = 1
    
    'Oder Taster B soll Lampe B einschalten
    Elseif Pinc.1 = 0 Then
    Pind.1 = 1
    
    'Oder mit Taster C Lampe A und B ausschalten
    Elseif Pinc.2 = 0 Then
    Pind.0 = 0
    Pind.1 = 0
    End If
    
    Loop
    
    End
    So und nun zum Problem:
    Taster A und B sollen nur einschalten können, und Taster C beide Lampen
    ausschalten. Jedoch wird im Moment noch nicht das Einschaltesignal so
    gespeichert, dass der Taster A oder B nur einschalten können, denn diese
    schalten auch wieder manchmal aus.
    Taster C zeigt im Moment gar keine Funktion!!!
    Ich brächte hier so eine Art SR-Baustein.

    Kann mir jemand weiter helfen???

    Bin gerade kurz voe dem Verzweifeln, weil Taster C gar keine Funktion
    zeigt!!!!

    Gruß High Light

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied Avatar von mycroc
    Registriert seit
    29.11.2006
    Ort
    Bochum
    Beiträge
    111
    hallo,
    ich habe deine code etwas geändert und beschriftet

    Code:
    $regfile = "m88def.dat"
    $crystal = 16000000
    
    Config Portc = Input
    Config Portd = Output
    
    Portc = &H03
    
    Portd = 0
    
    Do
    'Taste A soll Lampe A einschalten
    If Pinc.0 = 0 Then 'hier wird  der Pin abgefragt
    Portd.0 = 1 ' und hier wird der Port gesetzt 
    
    'Oder Taster B soll Lampe B einschalten
    Elseif Pinc.1 = 0 Then 'mit "pin" Pinc.1 lesen
    Portd.1 = 1 'und mit "port" Portd.1 setzen
    
    'Oder mit Taster C Lampe A und B ausschalten
    Elseif Pinc.2 = 0 Then 'lesen mit Pin
    Portd.0 = 0 'schreiben mit Port
    Portd.1 = 0 'schreiben mit Port
    End If
    
    Loop
    
    End

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied Avatar von High Light
    Registriert seit
    21.08.2009
    Ort
    Baden Württemberg
    Beiträge
    142
    Danke für die Beschriftung funktioniert aber nicht,
    da geht weniger wie vorher^^.
    Warum eigentlich jetzt wieder portc.1 und nich Pinc.1?
    Da mit "Return", weiß dass auch jemand?

    Gruß

  7. #7
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    41
    Beiträge
    609
    Mit Return springst du zurück aus einer Subroutine an die Stelle nach dem Aufruf (gosub "subroutine") derselben. Es wird nicht an den Programmanfang gesprungen.
    MfG
    Tido

    ---------------------------------------------------
    Have you tried turning it off and on again???
    ---------------------------------------------------

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied Avatar von High Light
    Registriert seit
    21.08.2009
    Ort
    Baden Württemberg
    Beiträge
    142
    Achso, jetzt macht dass Sinn :-D

    Aber um auf mein Problem zurück zu kommen,
    warum funktioniert dieses Programm nicht?

    Ich kenne aus der Digitaltechnik SR-Bausteine,
    gibt es so was auch in Bascom?

    Ich muss irgendwie einen Speicher setzen und wieder rücksetzen können.
    Mein Problem im Programm habe ich ja oben schon geschildert.

    Wäre über jede Hilfe dankbar!!!

    Gruß Patrick

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied Avatar von High Light
    Registriert seit
    21.08.2009
    Ort
    Baden Württemberg
    Beiträge
    142
    Hallo zusammen,
    kann mir den niemand bei meinem Problem helfen?
    solangsam bin ich am verzweifeln

    Hier nochmal der Code:

    Code:
    $regfile = "m88def.dat"
    $crystal = 16000000
    
    Config Portc = Input
    Config Portd = Output
    
    Portc = &H03
    
    Portd = 0
    
    Do
    'Taste A soll Lampe A einschalten
    If Pinc.0 = 0 Then
    Pind.0 = 1
    
    'Oder Taster B soll Lampe B einschalten
    Elseif Pinc.1 = 0 Then
    Pind.1 = 1
    
    'Und mit Taster C Lampe A und B ausschalten
    Elseif Pinc.2 = 0 Then
    Pind.0 = 0
    Pind.1 = 0
    End If
    
    Loop
    
    End
    Wäre echt Klasse wenn mir jemand sagen könnte wiso dass nich geht???


    Gruß High Light

  10. #10
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    41
    Beiträge
    609
    Meine Vermutung:

    Mit pinx.y liest du einen Port als Eingang.
    Mit portx.y schreibst du einen Port als Ausgang.

    Deshalb muss es in deinem Programm bei den Lampen z.B. Portd.1 = 1 heißen.
    Analog bei der anderen Lampe und natürlich auch beim Ausschalten.

    Ich bringe Pin und Port selbst immer durcheinander. Hoffe, ich hab's diesmal richtig erklärt!

    EDIT: myroc hat das übrigens in "seinem" Programm auch so vorgemacht, wer Lesen kann, ist klar im Vorteil
    MfG
    Tido

    ---------------------------------------------------
    Have you tried turning it off and on again???
    ---------------------------------------------------

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •