Code:
'Grundsätzliche Angaben zum Controller
$regfile = "2313def.dat"
$crystal = 8000000
'Variablen dimensionieren und nullen
Dim Ist As Integer , Soll As Integer , Startbs As Integer , Aux As Integer
'Port-Deklarationen
Config Pinb.0 = Input
Config Pind.1 = Input
Config Pind.2 = Input
Config Pinb.1 = Output
Config Pind.6 = Output
Config Pind.0 = Output
'Einstellungen
Aux = 1680 'Wie lang soll der AUX an sein (in ms)
Startbs = 3 'Wie lang soll der Startbildschirm angezeigt werden (in sec.)
Ist = 0 'Startwert für den Ist-Wert
Soll = 1 'Startwert für den Soll-Wert
'Den Ports Namen geben (nur fürs Layout)
Taster Alias Pinb.0
Ledtast Alias Portb.1
Ledaux Alias Portd.6
Lederr Alias Portd.0
Manual Alias Pind.1
Rst Alias Pind.2
'LED3 "Gerät nicht bereit / Fehler" aktivieren
Lederr = 1
'Display-Optionen
Cursor Off
Cls
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2 '
'Startbildschirm anzeigen
Locate 1 , 1
Lcd "Sebastian Rietig &"
Locate 2 , 1
Lcd " Tjark Radewaldt"
Locate 3 , 1
Lcd " SkinnerMaus 3000+"
Locate 4 , 1
Lcd " Skinner-Box"
'Startbs Sekunden den Startbildschirm aneigen, dann Anige löschen un Gerät freigeben
Wait Startbs
Cls
'Kleiner Fehlersucher
If Soll < Ist Then
Locate 1 , 1
Lcd " SkinnerMaus 3000+"
Locate 2 , 1
Lcd "Error: Soll < Ist"
Else
Lederr = 0
'Arbeitsbldschirm anzeigen
Locate 1 , 1
Lcd " SkinnerMaus 3000+"
Locate 2 , 1
Lcd "Soll:" ; Soll
Locate 3 , 1
Lcd "Ist :" ; Ist
Locate 4 , 1
Lcd "Waiting for Signal"
'Taster entprellen und bei High zu "Tasteran" springen
Entprell:
Debounce Taster , 1 , Tasteran
Debounce Manual , 1 , Manualan
Debounce Rst , 1 , Rstan
'Wenn der Taster gedrückt wurde, in diese Schleife springen
Tasteran:
Do
If Taster = 1 Then
Ledtast = 1
Locate 4 , 1
Lcd "Input high "
Ist = Ist + 1
Locate 3 , 1
Lcd "Ist :" ; Ist
If Ist = Soll Then
Locate 4 , 1
Lcd "AUX enabled "
Ledaux = 1
Ledtast = 0
Waitms Aux
Locate 4 , 1
Lcd "Waiting for Signal"
Ledaux = 0
Soll = Soll + 1
Ist = 0
Locate 2 , 1
Lcd "Soll:" ; Soll
Locate 3 , 1
Lcd "Ist :" ; Ist ; " "
End If
Do
Loop Until Taster = 0
Else
Locate 4 , 1
Lcd "Waiting for Signal"
Ledtast = 0
Goto Entprell
End If
Loop
'Bei Druck auf die Manual-Taste
Manualan:
Do
If Manual = 1 Then
Locate 4 , 1
Lcd "Manual Mode "
Ledaux = 1
Waitms Aux
Locate 4 , 1
Lcd "Waiting for Signal"
Ledaux = 0
Do
Loop Until Manual = 0
Else
Locate 4 , 1
Lcd "Waiting for Signal"
Goto Entprell
End If
Loop
' Bei Druck auf die Reset-Taste
Rstan:
Do
If Rst = 1 Then
Wait 3
If Rst = 1 Then
Locate 4 , 1
Lcd "Resetting Data "
Lederr = 1
Ist = 0
Soll = 1
Locate 2 , 1
Lcd "Soll:" ; Soll ; " "
Locate 3 , 1
Lcd "Ist :" ; Ist ; " "
End If
Do
Loop Until Rst = 0
Else
Lederr = 0
Ledaux = 0
Locate 4 , 1
Lcd "Waiting for Signal"
Goto Entprell
End If
Loop
End If
End
Das ist der bisherige, komplette Code.
Lesezeichen