$regfile = "m32DEF.dat" : $crystal = 4000000
Config Lcdpin = Pin , Db4 = Pinb.2 , Db5 = Pinb.3 , Db6 = Pinb.4 , Db7 = Pinb.5 , E = Pinb.1 , Rs = Pinb.0
Config Lcd = 16 * 2 : Cursor Off : Cls
Config Porta = Input , Portd = Output
Dim B As Word , A As Word , P(4) As Byte , Pn As Byte
Dim Perr As Byte , Pas As Eram Word
Pas = 0
Star:
Reset Portd.0 : Reset Portd.1 : Cls : Lcd " STAND BY "
Bitwait Pina.7 , Reset
Set Portd.0 : Home : Lcd " RING 1 "
For B = 0 To 100
If Pina.7 = 1 Then Goto Star
Waitms 12
Next
Bitwait Pina.7 , Set
Reset Portd.0 : Wait 1
For B = 0 To 100
If Pina.7 = 0 Then Goto Ring2
Waitms 150
Next
Goto Star
Ring2:
Set Portd.0 : Home : Lcd " RING 2 "
For B = 0 To 100
If Pina.7 = 0 Then Goto Star
Waitms 12
Next
Bitwait Pinb.0 , Reset
Set Portd.1 : Reset Portd.0 : Wait 1 : Sound Pind.3 , 200 , 100 : Perr = 6
Inpas1:
Cls : Lcd "INSERT PASSWORD" : Pn = 4 : Locate 2 , 6
Inpas2:
Waitms 200
For B = 0 To 15000
If Pina.5 = 1 Then Goto Pas
Waitms 1
Next
Goto Star
Pas:
P(pn) = Pina : P(pn) = P(pn) And 15 : Lcd "*" : Decr Pn
If Pn <> 0 Then Goto Inpas2
B = P(4) * 1000 : A = P(3) * 100 : B = B + A : A = P(2) * 10
B = B + A : B = B + P(1)
If B <> Pas Then :
Decr Perr : Cls : Lcd "INAVLID PASSWORD" : Home L
Lcd " " ; Perr
If Perr = 0 Then :
Cls : Lcd " ERROR PASSWORD " : Home L : Lcd "DISCONECT WAIT "
Reset Portd.1 : Goto Star
End If
Wait 1 : Goto Inpas1
End If
Cls : Lcd "INSERT OPERATION"
Do
Waitms 100
For B = 0 To 20000
If Pina.5 = 1 Then Goto Op
Waitms 1
Next
Goto Star
Op:
Pn = Pina : Pn = Pn And 15
Select Case Pn
Case 1:
Toggle Portd.6 : Home L : Lcd " TOGGLE OUT 1 "
Case 2:
Set Portd.7 : Home L : Lcd " ON OUT 2 "
Case 3:
Reset Portd.7 : Home L : Lcd " OFF OUT 2 "
Case 5:
Set Portd.5 : Home L : Lcd " OPEN DOOR " : Wait 3 : Reset Portd.5
End Select
Loop
End