Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ' Led1 an PortB.0
- ' Led2 an PortB.3
- ' Led3 an PortB.4
- ' Led4 an PortB.5
- ' Led5 an PortB.6
- ' Led6 an PortB.7
- ' Led7 an PortC.0
- ' Led8 an PortC.1
- ' Led9 an PortC.2
- ' Led10 an PortC.3
- ' Led-Reserve an PortD.0
- ' Speaker an PortD.1
- ' TVA an PortC.5
- ' Osc int. 1MHz
- $regfile = "m8def.dat"
- $crystal = 1000000
- Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
- Config Lcd = 16 * 2
- Cursor Off
- Cls
- Config Timer0 = Timer , Prescale = 1024
- On Timer0 Timerroutine
- Enable Interrupts
- Config Adc = Single , Prescaler = Auto , Reference = Avcc
- Start Adc
- '---------------------------
- Dim I As Byte
- Dim Messreihen As Byte
- Messreihen = 20
- Dim Adcarray(20) As Word
- Dim Tmesswert As Long
- Dim Messwert As Long , Anzeige As Word , Reserveled As Bit
- Dim Scaler As Byte , Speakerscaler As Byte , Nobeep As Bit
- Dim Adcvoll As Word , Adcreserve As Word , Adcleer As Word
- Dim Voll As Long , Reserve As Long , Leer As Long , Messbereich As Long , Prozent As Single
- Dim Reservegrenze As Long , Vollgrenze As Long
- Dim Normalbereich As Long , Reservebereich As Long
- Dim Keypressed As Bit
- '---------------------------
- Const On = 0
- Const Off = 1
- '---------------------------
- ' config adc-values
- Adcvoll = 155
- Adcreserve = 500
- Adcleer = 595
- ' // config
- '----------------------------
- Voll = Adcvoll * -1
- Reserve = Adcreserve * -1
- Leer = Adcleer * -1
- Messbereich = Leer - Voll
- Vollgrenze = Adcvoll + Voll
- Vollgrenze = Vollgrenze + Messbereich
- Vollgrenze = Vollgrenze * -1
- Reservegrenze = Adcreserve + Voll
- Reservegrenze = Reservegrenze + Messbereich
- Reservegrenze = Reservegrenze * -1
- Normalbereich = Vollgrenze - Reservegrenze
- Reservebereich = Reservegrenze
- Ddrb = &B11111111
- Ddrc = &B00001111
- Config Portd.0 = Output
- Config Portd.1 = Output
- '---------------------------
- Led1 Alias Portb.0
- Led2 Alias Portb.1
- Led3 Alias Portb.2
- Led4 Alias Portb.3
- Led5 Alias Portb.4
- Led6 Alias Portb.5
- Led7 Alias Portc.0
- Led8 Alias Portc.1
- Led9 Alias Portc.2
- Led10 Alias Portc.3
- Speaker Alias Portd.1
- '---------------------------
- Timer0 = 236
- Nobeep = 0
- Gosub Alloff
- Gosub Startprogramm
- Enable Timer0
- Start Timer0
- Gosub Timerroutine
- Do
- Dim Adcval As Word
- Dim Lcdprozent As Word
- Dim Sc As Word
- Incr Sc
- If Sc => 5 Then
- Adcval = Getadc(5)
- Sc = 0
- End If
- Lcdprozent = Prozent
- Home Upper
- Lcd "MITTEL:" ; Lcdprozent ; "% ALM:" ; Nobeep ; " "
- Home Lower
- Lcd "ADC:" ; Adcval ; " LED:" ; Anzeige ; " "
- Loop
- End
- '--------------------------
- Timerroutine:
- Timer0 = 236 '0,02 sek
- ' reservealarm abschalten
- If Pinc.4 = 0 And Nobeep = 0 And Keypressed = 0 And Reserveled = 1 Then
- Keypressed = 1
- Nobeep = 1
- Sound Speaker , 400 , 20
- Waitms 10
- Sound Speaker , 400 , 19
- Elseif Pinc.4 = 1 Then
- Keypressed = 0
- End If
- ' reservealarm einschalten
- If Pinc.4 = 0 And Nobeep = 1 And Keypressed = 0 And Reserveled = 1 Then
- Keypressed = 1
- Nobeep = 0
- Sound Speaker , 100 , 20
- Waitms 10
- Sound Speaker , 100 , 19
- Waitms 10
- Sound Speaker , 100 , 18
- Waitms 50
- Sound Speaker , 100 , 20
- Waitms 10
- Sound Speaker , 100 , 19
- Waitms 10
- Sound Speaker , 100 , 18
- Elseif Pinc.4 = 1 Then
- Keypressed = 0
- End If
- '// steuerung reservealarm
- Incr Scaler
- If Scaler => 50 Then
- Incr Speakerscaler
- Decr Messreihen
- For I = 1 To Messreihen
- Adcarray(i) = Adcarray(i + 1)
- Next I
- Incr Messreihen
- Messwert = Getadc(5)
- If Messwert > Adcleer Then Messwert = Adcleer
- Messwert = Messwert + Voll
- Messwert = Messwert + Messbereich
- Messwert = Messwert * -1
- Adcarray(messreihen) = Messwert
- Gosub Mittelwert
- ' prozentuale balkenanzeige
- If Messwert > Reservegrenze Then
- ' anzeige normalbereich
- Tmesswert = Messwert - Reservegrenze
- Prozent = 100 / Normalbereich
- Prozent = Prozent * Tmesswert
- Anzeige = Prozent / 10
- Anzeige = Anzeige + 1
- Else
- ' anzeige reservebereich
- Prozent = 100 / Reservebereich
- Prozent = Prozent * Messwert
- Anzeige = Prozent / 10
- End If
- If Anzeige > 10 Then Anzeige = 10
- 'steuerung reserve
- If Messwert > Reservegrenze Then
- Reserveled = 0
- Else
- ' warnton reservebeginn
- If Reserveled = 0 Then
- Sound Speaker , 500 , 15
- Waitms 50
- Sound Speaker , 500 , 15
- Waitms 100
- Sound Speaker , 500 , 15
- 'warnton bei restbalken 1, jede minute
- Elseif Reserveled = 1 And Anzeige = 0 And Speakerscaler => 10 Then
- If Nobeep = 0 Then
- Sound Speaker , 1000 , 18
- Waitms 10
- Sound Speaker , 2000 , 18
- Waitms 10
- Sound Speaker , 1000 , 18
- Waitms 10
- Sound Speaker , 2000 , 18
- End If
- Speakerscaler = 0
- 'warnton bei restbalken 1, jede minute
- Elseif Reserveled = 1 And Anzeige <= 1 And Speakerscaler => 60 Then
- If Nobeep = 0 Then
- Sound Speaker , 1000 , 18
- Waitms 10
- Sound Speaker , 1000 , 18
- Waitms 10
- Sound Speaker , 1000 , 18
- End If
- Speakerscaler = 0
- 'warnton bei restbalken 2, alle 2 minuten
- Elseif Reserveled = 1 And Anzeige <= 2 And Speakerscaler => 120 Then
- If Nobeep = 0 Then
- Sound Speaker , 1000 , 18
- Waitms 10
- Sound Speaker , 1000 , 18
- End If
- Speakerscaler = 0
- 'warnton bei restbalken 3, alle 3 minuten
- Elseif Reserveled = 1 And Anzeige <= 3 And Speakerscaler => 180 Then
- If Nobeep = 0 Then
- Sound Speaker , 1000 , 18
- End If
- Speakerscaler = 0
- End If
- Reserveled = 1
- End If
- ' //steuerung reserve
- If Reserveled = 0 Then
- Reset Portd.0
- Else
- If Nobeep = 0 Then
- Set Portd.0
- Else
- Toggle Portd.0
- End If
- End If
- Gosub Alloff
- Gosub Seton
- Scaler = 0
- End If
- Return
- '--------------------------
- Mittelwert:
- Messwert = 0
- For I = 1 To Messreihen
- Messwert = Messwert + Adcarray(i)
- Next I
- Messwert = Messwert / Messreihen
- Return
- Alloff:
- Led1 = Off : Led2 = Off : Led3 = Off : Led4 = Off : Led5 = Off : Led6 = Off : Led7 = Off : Led8 = Off : Led9 = Off : Led10 = Off
- Return
- Seton:
- If Anzeige => 1 Then Led1 = On
- If Anzeige => 2 Then Led2 = On
- If Anzeige => 3 Then Led3 = On
- If Anzeige => 4 Then Led4 = On
- If Anzeige => 5 Then Led5 = On
- If Anzeige => 6 Then Led6 = On
- If Anzeige => 7 Then Led7 = On
- If Anzeige => 8 Then Led8 = On
- If Anzeige => 9 Then Led9 = On
- If Anzeige => 10 Then Led10 = On
- Return
- Startprogramm:
- Const Wartezeit = 100
- ' array füllen
- Messwert = Getadc(5)
- If Messwert > Adcleer Then Messwert = Adcleer
- Messwert = Messwert + Voll
- Messwert = Messwert + Messbereich
- Messwert = Messwert * -1
- '------------------
- For I = 1 To Messreihen
- Adcarray(i) = Messwert
- Next I
- If Messwert > Reservegrenze Then
- ' anzeige normalbereich
- Tmesswert = Messwert - Reservegrenze
- Prozent = 100 / Normalbereich
- Prozent = Prozent * Tmesswert
- Anzeige = Prozent / 10
- Anzeige = Anzeige + 1
- Else
- ' anzeige reservebereich
- Prozent = 100 / Reservebereich
- Prozent = Prozent * Messwert
- Anzeige = Prozent / 10
- End If
- Anzeige = Prozent / 9
- If Anzeige > 10 Then Anzeige = 10
- If Anzeige => 1 Then Led1 = On : Waitms Wartezeit
- If Anzeige => 2 Then Led2 = On : Waitms Wartezeit
- If Anzeige => 3 Then Led3 = On : Waitms Wartezeit
- If Anzeige => 4 Then Led4 = On : Waitms Wartezeit
- If Anzeige => 5 Then Led5 = On : Waitms Wartezeit
- If Anzeige => 6 Then Led6 = On : Waitms Wartezeit
- If Anzeige => 7 Then Led7 = On : Waitms Wartezeit
- If Anzeige => 8 Then Led8 = On : Waitms Wartezeit
- If Anzeige => 9 Then Led9 = On : Waitms Wartezeit
- If Anzeige => 10 Then Led10 = On : Waitms Wartezeit
- Return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement