$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000
'Eingänge
Config Pina.0 = Input 'Ein Pin (PA0) wird als Eingang
definiert
Porta.0 = 1 'Interner Pullup Widerstand ein
Taster Alias Pina.0
Config Pina.1 = Input 'Ein Pin (PA1) wird als Eingang
definiert
Porta.1 = 1 'Interner Pullup Widerstand ein
Impulse Alias Pina.1
Config Pina.2 = Input 'Ein Pin (PA2) wird als Eingang
definiert
Porta.2 = 1 'Interner Pullup Widerstand ein
Tuer Alias Pina.2
'Ausgänge
Config Portc.0 = Output 'Ein Pin wird als Ausgang konfiguriert
PC0 (also Pin0 von Port C)
Config Portc.4 = Output 'Ein Pin wird als Ausgang konfiguriert
PC4 (also Pin4 von Port C)
Config Portc.1 = Output 'Ein Pin wird als Ausgang konfiguriert
PC1 (also Pin1 von Port C)
Pumpe Alias Portc.0 'Alias
zuordnen
Lampe Alias Portc.4 'Alias
zuordnen
Ventil Alias Portc.1 'Alias
zuordnen
Pumpe = 1
Lampe = 1
Ventil = 1
'Variablen
Dim Liter As Integer 'Liter als zähler für Impulse
Liter = 0 'auf 0 setzen
Dim Takt As Bit 'Blinktakt
Dim Anz_imp_1_liter As Integer 'Vorwahl Impulse pro Liter
Anz_imp_1_liter = 1000
'Timer
Config Timer0 = Timer , Prescale = 1024 'Konfiguriere Timer1
Enable Timer0 'schalte den Timer1 ein
On Timer0 Isr_von_timer0 'verzweige bei Timer1
überlauf zu Isr_von_Timer1
Enable Interrupts
Timer0 = 0
Do
If Taster = 0 Then
If Tuer = 0 Then
Pumpe = 0
End If
End If
If Tuer = 0 Then ' wenn Tür offen
If Pumpe = 1 Then 'und die Pumpe aus
Lampe = 0 'Lampe einschalten
End If
Else
Lampe = 1
End If
If Pumpe = 0 Then
While Liter <= Anz_imp_1_liter
Lampe = Takt
Dim Flag As Bit
If Impulse = 0 Then
If Flag = 0 Then
Liter = Liter + 1
Flag = 1
End If
Else
Flag = 0
End If
If Tuer = 1 Then 'Wenn die Tür vorzeitig geschlossen
wird
Liter = 32767 'Liter in Überlauf
End If
Wend
If Liter >= Anz_imp_1_liter Then
Pumpe = 1
Liter = 0
End If
End If
'-----------------------------------------------------------
'VENTIL ABREINIGUNG
Debounce Tuer , 1 , Abspruehen , Sub
Debounce Tuer , 0 , Abspruehenende , Sub
'-----------------------------------------------------------
Loop
End
Isr_von_timer0: 'ISR von Timer0
Timer0 = 0 'Timer0 soll wieder von 0 wegzählen
Toggle Takt 'schaltet LED
Return
Abspruehen:
Dim X As Integer
While X <= 2
Pumpe = 1
Lampe = 1
Ventil = 0
X = X + 1
Waitms 300
If Tuer = 0 Then
X = 10
End If
Wend
Ventil = 1
Return
Abspruehenende:
X = 0
Ventil = 1
Return