Mit Taster im Lcd Hochzählen

OP #2443555
Lesenswert?

Guten Morgen.

Ich habe ein kleines Programm geschrieben. Und es geht zum teil,aber 
wenn ich meinen Taster in der $sim drücke geht der Wert i nicht hoch.

bitte um Hilfe von euch.

mfg


$sim

                                             $regfile = "m8def.dat"
$hwstack = 82
$framesize = 68
$swstack = 68
' Wir arbeiten hier mit 4 Meg
$crystal = 4000000

' Zuerst das LCD einstellen
Config Lcdmode = Port
Config Lcdbus = 4
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , 
Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
Config Lcd = 16 * 2


Config Pinb.1 = Input
Taste Alias Pinb.1
Pinb.1 = 1


Dim I As Integer





          Cls                                               'loesche das 
LCD Display
Locate 1 , 1                                                'Cursor auf 
1 Zeile, 1 Spalte
Lcd "hallo .";
Locate 2 , 1


 I = 200
 Lcd I




Do
If Taste = 1 Then
    I = I + 10

    Do
        Waitms 10
    Loop Until Taste = 1

End If

Loop
Angehängte Dateien:
OP #2444176
Lesenswert?

was haltet ihr davon


$regfile = "M32def.dat"
$crystal = 11000592


 Config Timer1 = Timer , Prescale = 256                     'Timer 
konfigurieren
On Timer1 Timerroutine 
'Timerinterrupt Subroutine zuweisen
Enable Timer1                                               'Timer 
aktivieren
Start Timer1                                                'Timer 
starten




 Config Lcdmode = Port
Config Lcdbus = 4
'Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , 
Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6


Config Lcd = 16 * 2

Cls
Locate 1 , 1
Lcd " Uv-Belichter 1 "
Locate 2 , 4
Lcd " Sascha "



Config Porta.1 = Input
Config Porta.2 = Input
Config Porta.3 = Input
Config Porta.4 = Input
Config Portb.1 = Output


Taster1 Alias Pina.1
Taster2 Alias Pina.2
Taster3 Alias Pina.3
Taster4 Alias Pina.4
Summer Alias Pinb.1

Taster1 = 1
Taster2 = 1
Taster3 = 1
Taster4 = 1


Dim Zaehler As Word
Dim Halt As Bit
Dim Halt1 As Bit
Dim Start1 As Bit
Dim Sek As Bit
Zaehler = 200
Halt = 0
Halt1 = 0
Start1 = 0





Do


If Taster1 = 0 Then
Locate 2 , 2
Lcd "Time: "
Locate 2 , 8
Lcd Zaehler
End If
 Cursor Off Noblink
If Halt = 0 Then

If Taster2 = 0 Then
Zaehler = Zaehler + 10
Halt = 1
End If
End If

If Taster2 = 1 Then
Waitms 20
Halt = 0
End If

If Zaehler > 500 Then
Zaehler = 500
End If


 If Halt1 = 0 Then


  If Taster3 = 0 Then
Zaehler = Zaehler - 10
Halt1 = 1
End If
End If

If Taster3 = 1 Then
Waitms 20
Halt1 = 0
End If





If Start1 = 0 Then

If Zaehler < 150 Then
Zaehler = 150
End If
End If
If Taster4 = 0 Then
Start1 = 1
End If
If Start1 = 1 Then
Zaehler = Zaehler - 1
End If
If Zaehler = 0 Then
Start1 = 0
End If
If Zaehler < 100 Then
Locate 2 , 10
Lcd " "
End If
If Zaehler < 10 Then
Locate 2 , 9
Lcd " "
End If
If Zaehler = 5 Then
Summer = 0
End If
If Zaehler = 3 Then
Summer = 0
End If
If Zaehler = 1 Then
Summer = 0
End If
Loop
End

  Timerroutine:
Rem

 Timer1 = 22595
 Sek = 1
 Timer1 = 65000
Return
Gast #2444492
Lesenswert?

Sascha Möwert schrieb:
> Summer Alias Pinb.1
>
> Taster1 = 1
> Taster2 = 1
> Taster3 = 1
> Taster4 = 1

Hallo Sascha,

dies hier ist schonmal nicht richtig.
mit Pin... werden Eingänge abgefragt.

Dein Summer soll sicher kein Eingang sein.
Da Tasterx durch die Alias-Geshichte auch nur auf Pinx hinausläuft macht 
auch dies keinen Sinn. Das ist dann etwa so, als stehst du vor einem 
Klingeltaster und sagst: "jetzt sei gedrückt".
Wahrscheinlich wolltest du die Pullups einschalten - schau dir an, wie 
das geht.

> Timerroutine:
>    Rem
>    Timer1 = 22595
>    Sek = 1
>    Timer1 = 65000
> Return

Was hast du hier vor? Du setzt den Counter erst auf Wert A und zwei 
Takte später auf Wert B. Das "Timer1 = 22595" ist an dieser Stelle 
offenbar sinnfrei.

Die ganze If-Geschichte habe ich mir nicht angetan.
Formatiere dein Programm vernünftig, so dass erkennbar wird, was 
zusammengehört.

Gruß
keinGast
Gast #2444496
Lesenswert?

nochmal ich,

jetzt wo ichs sehe: welchen Sinn macht die Timer1-Routine überhaupt?
abgesehen davon, dass sie ihre eigene Aufruffrequenz einstellt, setzt 
sie eine unbenutzte Variable.

Sascha Möwert schrieb:
>
> Wie kann man von der letzten anweißung ( Progamm ende in einer do ....
> loop Schleife. ) wieder zurück zum anfang kommen. gibt es da  etwas für
> ?
> mfg

Zu welchem Anfang willst du denn kommen?
Eine do-loop-Schleife looped zwischen den beiden Wörtern "do" und 
"loop".
OP #2444510
Lesenswert?

ja ich bin ja noch am anfang mit Bascom und atmega. ich übe ja noch, 
aber ich möchte wenn die zeit auf 0 ist das ich wieder am Cls
Locate 1 , 1
Lcd " Uv-Belichter 1 "
Locate 2 , 4
Lcd " Sascha "
also über den do hin komme. Das er wieder von anfang an anfängt.

wenn es so was gibt, geht.

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