$crystal = 8000000
$regfile = "m8def.dat"
Config Timer2 = Timer = , Prescale = 1
Config Lcdbus = 4
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Pc.3 , Db5 = Pc.2 , Db6 = Pc.1 , Db7 = Pc.0 , E = Pc.4 , Rs = Pc.5
Dim Licznik As Byte
Dim Licznik1 As Byte
Dim Y As Integer
Declare Sub Klawisze
Declare Sub Menu
Declare Sub 1
Declare Sub 2
Declare Sub 3
Declare Sub 4
Declare Sub 5
Declare Sub 6
Declare Sub 7
Declare Sub 8
Declare Sub Program
Declare Sub Hom
Declare Sub Wybier
Declare Sub Tekst
Declare Sub Tekst1
Declare Sub Tekst2
Declare Sub Tekst4
Declare Sub Pilot
Declare Sub Odczyt
Declare Sub Zapis
Declare Sub Tek
Declare Sub Papa
Declare Sub Zat
Declare Sub Poziom1
Declare Sub Poziom2
Declare Sub Poziom3
Declare Sub Poziom4
Declare Sub Poziom5
Declare Sub Poziom6
Declare Sub Poziom7
Declare Sub Poziom8
Dim W1 As Byte
Dim W2 As Byte
Dim W3 As Byte
Dim W4 As Byte
Dim W5 As Byte
Dim W6 As Byte
Dim W7 As Byte
Dim W8 As Byte
Dim K As Byte
Dim Wynik1 As Integer
Dim Wynik2 As Integer
Dim Wynik3 As Integer
Dim Wynik4 As Integer
Dim Wynik5 As Integer
Dim Wynik6 As Integer
Dim Wynik7 As Integer
Dim Wynik8 As Integer
Dim Wy1 As Byte
Dim Wy2 As Byte
Dim Wy3 As Byte
Dim Wy4 As Byte
Dim Wy5 As Byte
Dim Wy6 As Byte
Dim Wy7 As Byte
Dim Wy8 As Byte
Dim Wy1a As Byte
Dim Wy2a As Byte
Dim Wy3a As Byte
Dim Wy4a As Byte
Dim Wy5a As Byte
Dim Wy6a As Byte
Dim Wy7a As Byte
Dim Wy8a As Byte
Dim Address As Byte , Command As Byte
'**** wyjscia pwm**
Config Portd.3 = Output
Config Portd.5 = Output
Config Portd.6 = Output
Config Portd.7 = Output
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Config Rc5 = Pinb.7
'*** klawiaturka***
Config Pind.0 = Input 'menu
P1 Alias Pind.0
Set Pind.0
Config Pind.1 = Input
P2 Alias Pind.1 '-
Set Pind.1
Config Pind.2 = Input
P3 Alias Pind.2 '+
Set Pind.2
Config Pind.4 = Input
P4 Alias Pind.4 'enter
Set Pind.4
Config Pinb.6 = Input
P5 Alias Pinb.6 '1/0
Set Pinb.6
Config Portb.5 = Output ' podswietlanie lcd
Led Alias Portb.5 '1/0
'****** zaearki **************
On Timer2 Tim2_int
Enable Timer2
Enable Interrupts
Timer2 = 6
Licznik = 0
Y = 1
Call Odczyt
Wy1a = Wy1
Wy2a = Wy2
Wy3a = Wy3
Wy4a = Wy4
Wy5a = Wy5
Wy6a = Wy6
Wy7a = Wy7
Wy8a = Wy8
'***PETLA STARTOWA***
Sub Hom
Do
Call Pilot
If Command = 12 Then
Set Led
Lcd " czekaj"
Call Pilot
Call Odczyt
Waitms 100
Call Program
End If
If P5 = 0 Then
Set Led
Lcd " czekaj"
Call Odczyt
Waitms 100
Call Program
End If
Waitms 10
Cls
Loop
End Sub
' **** PETLA PROGRAMU************** REG WYPELNIENIA*********************
Program:
Cls
Do
If W1 = 1 And Wy1 > Wy1a Then
Incr Wy1a
Elseif W1 = 1 And Wy1 < Wy1a Then
Decr Wy1a
Elseif W1 = 0 Then
Wy1a = 0
End If
If W2 = 1 And Wy2 > Wy2a Then
Incr Wy2a
Elseif W2 = 1 And Wy2 < Wy2a Then
Decr Wy2a
Elseif W2 = 0 Then
Wy2a = 0
End If
If W3 = 1 And Wy3 > Wy3a Then
Incr Wy3a
Elseif W3 = 1 And Wy3 < Wy3a Then
Decr Wy3a
Elseif W3 = 0 Then
Wy3a = 0
End If
If W4 = 1 And Wy4 > Wy4a Then
Incr Wy4a
Elseif W4 = 1 And Wy4 < Wy4a Then
Decr Wy4a
Elseif W4 = 0 Then
Wy4a = 0
End If
If W5 = 1 And Wy5 > Wy5a Then
Incr Wy5a
Elseif W5 = 1 And Wy5 < Wy5a Then
Decr Wy5a
Elseif W5 = 0 Then
Wy5a = 0
End If
If W6 = 1 And Wy6 > Wy6a Then
Incr Wy6a
Elseif W6 = 1 And Wy6 < Wy6a Then
Decr Wy6a
Elseif W6 = 0 Then
Wy6a = 0
End If
If W7 = 1 And Wy7 > Wy7a Then
Incr Wy7a
Elseif W7 = 1 And Wy7 < Wy7a Then
Decr Wy7a
Elseif W7 = 0 Then
Wy7a = 0
End If
If W8 = 1 And Wy8 > Wy8a Then
Incr Wy8a
Elseif W8 = 1 And Wy8 < Wy8a Then
Decr Wy8a
Elseif W8 = 0 Then
Wy8a = 0
End If
Call Klawisze
Call Tek
Loop
'*** KLAWISZE ****
Call Pilot
Sub Klawisze
Call Pilot
If Command = 0 Then
Call Menu
End If
If P1 = 0 Then 'KLAWISZ MENU =1
Call Menu
End If
If Command = 12 Then
Call Papa
End If
If P5 = 0 Then ' WYŁĄCZ + ZAPISZ DANE
Call Papa
End If
End Sub
'*********** MENU *************
Sub Menu
Cls
Do
Locate 1 , 1
Lcd "WYJSCIE " ; Y ; " " 'WYBIERANIE WYJSCIA DO URUCHOMIENIA BADZ WYLACZENIA
Locate 4 , 1
Lcd "MENU + - SET WYJ"
Waitms 20
Call Pilot
If Address = 0 Then
Command = Command
Y = Command
End If
If P2 = 0 Then
Y = Y + 1
End If
If Y > 8 Then
Y = 1
End If
If P3 = 0 Then
Y = Y - 1
End If
If Y < 1 Then
Y = 8
End If
If Command = 9 Then
Call Wybier
End If
If P4 = 0 Then
Call Wybier
End If
If P5 = 0 Then Call Program
Loop
End Sub
'*-************* POZIOMY USTAWIEN WYL/ ZAL WYJSC USTAWIANIE POZIOMOW WYJSCIOWYCH***********************
Sub Poziom1 'POZIOM 1
Cls
Do
Locate 1 , 1
Lcd "WYJ1 = " ; W1 ; " "
Locate 2 , 7
Lcd ; Wynik1 ; "% "
Call Tekst
Call Pilot
Call Zat
If Command = 16 Then
Wy1 = Wy1 + 5
End If
If Command = 17 Then
Wy1 = Wy1 - 5
End If
If W1 = 0 And Command = 1 Then
W1 = 1
Call Tekst4
Elseif W1 = 1 And Command = 1 Then
W1 = 0
Call Tekst1
End If
If W1 = 0 And P1 = 0 Then
W1 = 1
Call Tekst4
Elseif W1 = 1 And P1 = 0 Then
W1 = 0
Call Tekst1
End If
If P2 = 0 Then
Wy1 = Wy1 + 5
End If
If P3 = 0 Then
Wy1 = Wy1 - 5
End If
If Wy1 > 255 Then
Wy1 = 10
End If
If Wy1 < 5 Then
Wy1 = 255
End If
Wynik1 = Wy1 * 100 '**/ PRZELICZENIE NA WYNIK PROCENTOWY
Wynik1 = Wynik1 / 255
If P4 = 0 Then
Writeeeprom Wy1 , 2
Call Program
End If
Loop
End Sub
Sub Poziom2 'POZIOM 2
Cls
Do
Locate 1 , 1
Lcd "WYJ2 = " ; W2 ; " "
Locate 2 , 7
Lcd ; Wynik2 ; "% "
Call Tekst
Call Pilot
Call Zat
If Command = 16 Then
Wy2 = Wy2 + 5
End If
If Address = 0 And Command = 17 Then
Wy2 = Wy2 - 5
End If
If W2 = 0 And Command = 2 Then
W2 = 1
Call Tekst4
Elseif W2 = 1 And Command = 2 Then
W2 = 0
Call Tekst1
End If
If W2 = 0 And P1 = 0 Then
W2 = 1
Call Tekst4
Elseif W2 = 1 And P1 = 0 Then
W2 = 0
Call Tekst1
End If
If P2 = 0 Then
Wy2 = Wy2 + 5
End If
If P3 = 0 Then
Wy2 = Wy2 - 5
End If
If Wy2 > 255 Then
Wy2 = 10
End If
If Wy2 < 5 Then
Wy2 = 255
End If
Wynik2 = Wy2 * 100
Wynik2 = Wynik2 / 255
If P4 = 0 Then
Writeeeprom Wy2 , 3
Call Program
End If
Loop
End Sub
Sub Poziom3 'POZIOM 3
Cls
Do
Locate 1 , 1
Lcd "WYJ3 = " ; W3 ; " "
Locate 2 , 7
Lcd ; Wynik3 ; "% "
Call Tekst
Call Pilot
Call Zat
If Command = 16 Then
Wy3 = Wy3 + 5
End If
If Command = 17 Then
Wy3 = Wy3 - 5
End If
If W3 = 0 And Command = 3 Then
W3 = 1
Call Tekst4
Elseif W3 = 1 And Command = 3 Then
W3 = 0
Call Tekst1
End If
If W3 = 0 And P1 = 0 Then
W3 = 1
Call Tekst4
Elseif W3 = 1 And P1 = 0 Then
W3 = 0
Call Tekst1
End If
If P2 = 0 Then
Wy3 = Wy3 + 5
End If
If P3 = 0 Then
Wy3 = Wy3 - 5
End If
If Wy3 > 255 Then
Wy3 = 10
End If
If Wy3 < 5 Then
Wy3 = 255
End If
Wynik3 = Wy3 * 100
Wynik3 = Wynik3 / 255
If P4 = 0 Then
Writeeeprom Wy3 , 4
Call Program
End If
Loop
End Sub
Sub Poziom4 'POZIOM 4
Cls
Do
Locate 1 , 1
Lcd "WYJ4 = " ; W4 ; " "
Locate 2 , 7
Lcd ; Wynik4 ; "% "
Call Tekst
Call Pilot
Call Zat
If Command = 16 Then
Wy4 = Wy4 + 5
End If
If Command = 17 Then
Wy4 = Wy4 - 5
End If
If W4 = 0 And Command = 4 Then
W4 = 1
Call Tekst4
Elseif W4 = 1 And Command = 4 Then
W4 = 0
Call Tekst1
End If
If W4 = 0 And P1 = 0 Then
W4 = 1
Call Tekst4
Elseif W4 = 1 And P1 = 0 Then
W4 = 0
Call Tekst1
End If
If P2 = 0 Then
Wy4 = Wy4 + 5
End If
If P3 = 0 Then
Wy4 = Wy4 - 5
End If
If Wy4 > 255 Then
Wy4 = 10
End If
If Wy4 < 5 Then
Wy4 = 255
End If
Wynik4 = Wy4 * 100
Wynik4 = Wynik4 / 255
If P4 = 0 Then
Writeeeprom Wy4 , 5
Call Program
End If
Loop
End Sub
Sub Poziom5 'POZIOM 5
Cls
Do
Locate 1 , 1
Lcd "WYJ5 = " ; W5 ; " "
Locate 2 , 7
Lcd ; Wynik5 ; "% "
Lcd ""
Call Tekst
Call Pilot
Call Zat
If Command = 16 Then
Wy5 = Wy5 + 5
End If
If Command = 17 Then
Wy5 = Wy5 - 5
End If
If W5 = 0 And Command = 5 Then
W5 = 1
Call Tekst4
Elseif W5 = 1 And Command = 5 Then
W5 = 0
Call Tekst1
End If
If W5 = 0 And P1 = 0 Then
W5 = 1
Call Tekst4
Elseif W5 = 1 And P1 = 0 Then
W5 = 0
Call Tekst1
End If
If P2 = 0 Then
Wy5 = Wy5 + 5
End If
If P3 = 0 Then
Wy5 = Wy5 - 5
End If
If Wy5 > 255 Then
Wy5 = 10
End If
If Wy5 < 5 Then
Wy5 = 255
End If
Wynik5 = Wy5 * 100
Wynik5 = Wynik5 / 255
If P4 = 0 Then
Writeeeprom Wy5 , 6
Call Program
End If
Loop
End Sub
Sub Poziom6 'POZIOM 6
Cls
Do
Locate 1 , 1
Lcd "WYJ6 = " ; W6 ; " "
Locate 2 , 7
Lcd ; Wynik6 ; "% "
Call Tekst
Call Pilot
Call Zat
If Command = 16 Then
Wy6 = Wy6 + 5
End If
If Command = 17 Then
Wy6 = Wy6 - 5
End If
If W6 = 0 And Command = 6 Then
W6 = 1
Call Tekst4
Elseif W6 = 1 And Command = 6 Then
W6 = 0
Call Tekst1
End If
If W6 = 0 And P1 = 0 Then
W6 = 1
Call Tekst4
Elseif W6 = 1 And P1 = 0 Then
W6 = 0
Call Tekst1
End If
If P2 = 0 Then
Wy6 = Wy6 + 5
End If
If P3 = 0 Then
Wy6 = Wy6 - 5
End If
If Wy6 > 255 Then
Wy1 = 10
End If
If Wy6 < 5 Then
Wy1 = 255
End If
Wynik6 = Wy6 * 100
Wynik6 = Wynik6 / 255
If P4 = 0 Then
Writeeeprom Wy6 , 7
Call Program
End If
Loop
End Sub
Sub Poziom7 'POZIOM 7
Cls
Do
Locate 1 , 1
Lcd "WYJ7 = " ; W7 ; " "
Locate 2 , 7
Lcd ; Wynik7 ; "% "
Call Tekst
Call Pilot
Call Zat
If Command = 16 Then
Wy7 = Wy7 + 5
End If
If Command = 17 Then
Wy7 = Wy7 - 5
End If
If W7 = 0 And Command = 7 Then
W7 = 1
Call Tekst4
Elseif W7 = 1 And Command = 7 Then
W7 = 0
Call Tekst1
End If
If W7 = 0 And P1 = 0 Then
W7 = 1
Call Tekst4
Elseif W7 = 1 And P1 = 0 Then
W7 = 0
Call Tekst1
End If
If P2 = 0 Then
Wy7 = Wy7 + 5
End If
If P3 = 0 Then
Wy7 = Wy7 - 5
End If
If Wy7 > 255 Then
Wy7 = 10
End If
If Wy7 < 5 Then
Wy7 = 255
End If
Wynik7 = Wy7 * 100
Wynik7 = Wynik7 / 255
If P4 = 0 Then
Writeeeprom Wy7 , 8
Call Program
End If
Loop
End Sub
Sub Poziom8 'POZIOM 8
Cls
Do
Locate 1 , 1
Lcd "WYJ8 = " ; W8 ; " "
Locate 2 , 7
Lcd ; Wynik8 ; "% "
Call Tekst
Call Pilot
Call Zat
If Command = 16 Then
Wy8 = Wy8 + 5
End If
If Command = 17 Then
Wy8 = Wy8 - 5
End If
If W8 = 0 And Command = 8 Then
W8 = 1
Call Tekst4
Elseif W8 = 1 And Command = 8 Then
W8 = 0
Call Tekst1
End If
If W8 = 0 And P1 = 0 Then
W8 = 1
Call Tekst4
Elseif W8 = 1 And P1 = 0 Then
W8 = 0
Call Tekst1
End If
If P2 = 0 Then
Wy8 = Wy8 + 5
End If
If P3 = 0 Then
Wy8 = Wy8 - 5
End If
If Wy8 > 255 Then
Wy8 = 10
End If
If Wy8 < 5 Then
Wy8 = 255
End If
Wynik8 = Wy8 * 100
Wynik8 = Wynik8 / 255
If P4 = 0 Then
Writeeeprom Wy8 , 9
Call Program
End If
Loop
End Sub
Sub Tekst
Locate 2 , 1
Lcd "MOC: "
Locate 4 , 1
Lcd "WL/WYL + - ZAP"
End Sub
Sub Tekst2
Locate 2 , 1
Lcd "mPILOTA BY WLACZYC "
Locate 3 , 1
Lcd " BADZ KLAWISZ +"
End Sub
Sub Tekst1
Locate 1 , 1
Lcd "WYJSCIE WYLACZONE"
Waitms 100
End Sub
Sub Tekst4
Locate 1 , 1
Lcd "WYJSCIE WLACZONE"
Waitms 100
End Sub
Sub Pilot
Getrc5(address , Command)
End Sub
Sub Zat
If Command = 0 Then
Call Program
End If
End Sub
Sub Wybier
Select Case Y
Case 1 : Call Poziom1
Case 2 : Call Poziom2
Case 3 : Call Poziom3
Case 4 : Call Poziom4
Case 5 : Call Poziom5
Case 6 : Call Poziom6
Case 7 : Call Poziom7
Case 8 : Call Poziom8
End Select
End Sub
Sub Papa
Cls
Locate 1 , 1
Lcd " ZAPIS DANYCH"
Call Zapis
Locate 2 , 1
Lcd " PA PA"
Waitms 10
Wy1a = 0
Wy2a = 0
Wy3a = 0
Wy4a = 0
Wy5a = 0
Wy6a = 0
Wy7a = 0
Wy8a = 0
Reset Led
Wait 1
Call Hom
End Sub
Sub Zapis
Writeeeprom Wy1 , 2
Writeeeprom Wy2 , 3
Writeeeprom Wy3 , 4
Writeeeprom Wy4 , 5
Writeeeprom Wy5 , 6
Writeeeprom Wy6 , 7
Writeeeprom Wy7 , 8
Writeeeprom Wy8 , 9
Writeeeprom W1 , 12
Writeeeprom W2 , 13
Writeeeprom W3 , 14
Writeeeprom W4 , 15
Writeeeprom W5 , 16
Writeeeprom W6 , 17
Writeeeprom W7 , 18
Writeeeprom W8 , 19
End Sub
Sub Odczyt
Readeeprom Wy1 , 2
Readeeprom Wy2 , 3
Readeeprom Wy3 , 4
Readeeprom Wy4 , 5
Readeeprom Wy5 , 6
Readeeprom Wy6 , 7
Readeeprom Wy7 , 8
Readeeprom Wy8 , 9
Readeeprom W1 , 12
Readeeprom W2 , 13
Readeeprom W3 , 14
Readeeprom W4 , 15
Readeeprom W5 , 16
Readeeprom W6 , 17
Readeeprom W7 , 18
Readeeprom W8 , 19
End Sub
Sub Tek
If K = 3 Then
K = 0
Config Lcdbus = 4
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Pc.3 , Db5 = Pc.2 , Db6 = Pc.1 , Db7 = Pc.0 , E = Pc.4 , Rs = Pc.5
Locate 1 , 1
Lcd "W1: " ; Wynik1 ; "% W2: " ; Wynik2 ; " %"
Locate 2 , 1
Lcd "W3: " ; Wynik3 ; "% W4: " ; Wynik4 ; " %"
Locate 3 , 1
Lcd "W5: " ; Wynik5 ; "% W6: " ; Wynik6 ; " %"
Locate 4 , 1
Lcd "W7: " ; Wynik7 ; "% W8: " ; Wynik8 ; " %"
End If
Incr K
End Sub
'*************** ZEGARKI*****************
Tim2_int:
Counter2 = Counter2 + 6
Incr Licznik
If Licznik < Wy1a Then
Set Portd.3
Else
Reset Portd.3
End If
If Licznik < Wy2a Then
Set Portd.5
Else
Reset Portd.5
End If
If Licznik < Wy3a Then
Set Portd.6
Else
Reset Portd.6
End If
If Licznik < Wy4a Then
Set Portd.7
Else
Reset Portd.7
End If
If Licznik < Wy5a Then
Set Portb.0
Else
Reset Portb.0
End If
If Licznik < Wy6a Then
Set Portb.1
Else
Reset Portb.1
End If
If Licznik < Wy7a Then
Set Portb.2
Else
Reset Portb.2
End If
If Licznik < Wy8a Then
Set Portb.3
Else
Reset Portb.3
End If
Return