$regfile = "m8def.dat".
$crystal = 1000000
Config Portb.1 = Output
Config Portb.2 = Output
Config Portc.4 = Input
Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.5 , Db6 = Portb.7 , Db7 = Portb.6 , E = Portd.7 , Rs = Portb.0
Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare B Pwm = Clear Down
Config Timer2 = Timer , Prescale = 256
Start Timer2
On Timer2 Licz
Config Lcd = 16 * 2
Enable Timer1
Enable Timer2
Enable Interrupts
Dim Dire As Bit
Dim A As Long
Dim B As Byte
Dim X As Long
Dim C As Byte
Dim C1 As Byte
Dim Menu As Byte
Dim Obroty As Byte
Dim W As Bit
Dim W1 As Bit
Dim W2 As Bit
Dim W3 As Bit
Dim W4 As Bit
Dim Test As Byte
Deflcdchar 0 , 31 , 31 , 31 , 31 , 31 , 31 , 32 , 32
Deflcdchar 1 , 27 , 27 , 27 , 27 , 27 , 27 , 32 , 32
Deflcdchar 2 , 8 , 12 , 14 , 15 , 14 , 12 , 8 , 32
Deflcdchar 3 , 32 , 5 , 13 , 29 , 13 , 5 , 32 , 32
Deflcdchar 4 , 32 , 32 , 4 , 6 , 31 , 6 , 4 , 32
Display On
Cls
Cursor Off
A = 0
Portb.1 = 0
Pwm1b = 0
Gosub Ustawzwoje
Do
Loop
Links:
C = C + 1
If C = 8 And A <= 99999 Then
A = A + 1
C = 0
End If
Cls
Return
Rechts:
C1 = C1 + 1
If C = 8 And A >= 0 Then
A = A - 1
C = 0
End If
Cls
Return
Lewo:
If X > 0 And Menu = 1 Then
X = X - 1
Elseif Menu = 3 Then
Dire = 1
End If
Cls
Return
Prawo:
If X <= 99999 And Menu = 1 Then
X = X + 1
Elseif Menu = 3 Then
Dire = 0
End If
Cls
Return
Licz:
If Pinc.4 = 0 And Menu = 1 Then
Gosub Ustawobroty
Elseif Pinc.4 = 0 And Menu = 2 Then
Gosub Ustawkierunek
End If
Return
Ustawzwoje:
Gosub Wyswietl
Menu = 1
Cls
Locate 1 , 1
Lcd Chr(4)
Locate 2 , 9
Lcd Chr(0)
Do
B = Encoder(pind.1 , Pind.2 , Lewo , Prawo , 1)
Locate 1 , 1
Lcd Chr(4)
Locate 2 , 9
Lcd Chr(0)
Gosub Wyswietl
Loop
Return
Ustawobroty:
Cls
Gosub Wyswietl
Menu = 2
Locate 2 , 1
Lcd Chr(4)
Locate 2 , 9
Lcd Chr(0)
Do
B = Encoder(pind.1 , Pind.2 , Lewo , Prawo , 1)
Obroty = B
Locate 2 , 1
Lcd Chr(4)
Locate 2 , 9
Lcd Chr(0)
Gosub Wyswietl
Loop
Return
Ustawkierunek:
Cls
Gosub Wyswietl
Menu = 3
Locate 2 , 10
Lcd Chr(4)
Locate 2 , 9
Lcd Chr(0)
Do
B = Encoder(pind.1 , Pind.2 , Lewo , Prawo , 1)
Locate 2 , 10
Lcd Chr(4)
Locate 2 , 9
Lcd Chr(0)
Gosub Wyswietl
Loop
Return
Wyswietl:
Locate 1 , 2
Lcd "z=" ; X
Locate 1 , 10
Lcd "p=" ; A
Locate 2 , 2
Lcd "obr-" ; Obroty
Locate 2 , 8
Lcd "("
Locate 2 , 10
Lcd ")"
Locate 2 , 12
Lcd "dir-"
If Dire = 1 Then
Locate 2 , 16
Lcd "L"
Elseif Dire = 0 Then
Locate 2 , 16
Lcd "P"
End If
Return