کد:
$regfile = "m16def.dat"
$crystal = 8000000
$hwstack = 256
$swstack = 256
$framesize = 256
$baud = 9600
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , _
Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
Enable Interrupts
Enable Ovf1
Enable Urxc
On Urxc Data_received
Config Timer1 = Timer , Prescale = 256
On Timer1 Tm
Dim C As Byte , D As Byte , V As Byte : D = 0 : V = 0
Dim B As String * 2 , E As String * 5 , A As String * 30 : A = "" : B = ""
Config Porta = Output
Open "comD.5:9600,8,n,1" For Output As #1
Declare Sub Gg
Declare Sub Kh
Declare Sub Al
Declare Sub Bargasht
Declare Sub Noant
Declare Sub Data_received
Deflcdchar 1 , 31 , 31 , 14 , 4 , 4 , 4 , 4 , 4
Deflcdchar 2 , 32 , 32 , 32 , 32 , 32 , 32 , 3 , 15
Deflcdchar 3 , 32 , 32 , 32 , 1 , 7 , 31 , 31 , 31
Deflcdchar 4 , 32 , 3 , 15 , 31 , 31 , 31 , 31 , 31
Cursor Off
Locate 1 , 1
Lcd Chr(1)
Start Timer1
Do
If V > 10 Then
V = 0
Print "AT+CSQ"
End If
If A = "RING" Then
Wait 4
Print "ATA"
End If
If A = "+DTMF: 1" Then Print#1 , "ATD09145777345;"
If A = "+DTMF: 2" Then Print#1 , "ATD09931669516;"
If A = "+DTMF: 3" Then Print#1 , "ATH"
If A = "+DTMF: 4" Then Print "ATH"
E = Left(a , 4)
If E = "+CSQ" Then
B = Mid(a , 7 , 2)
D = Val(b)
If D < 10 Then Call Noant
If D < 15 Or D > 9 Then Call Gg
If D < 20 Or D > 14 Then Call Kh
If D > 20 Then Call Al
B = ""
End If
D = 0
E = ""
Loop
End
Data_received:
A = ""
Do
C = Inkey()noecho
Select Case C
Case 0:
Case 13 :
If A <> "" Then Exit Do
Case 10 :
If A <> "" Then Exit Do
Case Else
A = A + Chr(c)
End Select
Loop
Return
Sub Gg:
Locate 1 , 2
Lcd Chr(2) ; " "
End Sub
Sub Kh:
Locate 1 , 2
Lcd Chr(2) ; Chr(3) ; " "
End Sub
Sub Al
Locate 1 , 2
Lcd Chr(2) ; Chr(3) ; Chr(4)
End Sub
Sub Noant
Locate 1 , 2
Lcd "NO "
End Sub
Tm:
V = V + 1
Return