سلام من با SIM900 دارم کار میکنم ، متاسفانه یک مرتبه که ON و یک مرتبه که OFF ارسال میشه خوب کار میکنه ، اما مجددا تکرار کنم ، روی LCD دستورات CMGR و تاریخ و ... مزینه و سریع رد میشه و کاری دیگه انجام نمیده .
منتها یه حرکتی زدم و به محض دریافت SMS و انجام کار ، WATCHDOG روشن میکنم و میکرو ریست نرمافزاری میشه .این جواب داد .
دوستان راهنمایی بفرمایند که بدون واتچ داگ این ماژول راه بیفته جه کنم ؟
$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Pinc.4 , Db5 = Pinc.5 , Db6 = Pinc.6 , Db7 = Pinc.7 , E = Pinc.2 , Rs = Pinc.0
Config Watchdog = 64
'------------------------------
'______________________________
Config Portc.3 = Output
Blk Alias Portc.3
Config Portd.6 = Output ' LED
Config Pind.2 = Input ' INT0
Config Int0 = Low Level
Dim A As Bit
Dim R As Bit : R = 0
Dim X As Byte : X = 0
Dim B As Byte
Dim G As Byte
Dim N As Byte
Dim Sms As String * 250 : Sms = ""
Dim Flag_sms1 As Eram Byte
Dim Flag_sms As Byte
Main:
Set Blk
Waitms 20
Cursor Off
Waitms 500
Cls
Locate 1 , 5
Lcd "WELCOME"
Waitms 300
M:
Cls
Locate 1 , 5
Lcd "WAITING..."
Waitms 300
Print "AT+CMGD=0,4"
Waitms 800
Cls
Locate 1 , 6
Lcd "GSM ON"
Waitms 300
Cls
Enable Interrupts
Enable Int0
On Int0 Z
Cls
Do
Locate 1 , 1
Lcd "WAITING RECEIVE"
Locate 2 , 7
Lcd "SMS"
Waitms 400
Loop
Z:
Locate 1 , 4
Lcd "RECEIVE SMS"
Waitms 300
Cls
Waitms 150
Do
Print "AT+CMGR=1"
Sms = ""
G = 0
A = 0
Cls
Waitms 100
Do
B = Inkey()
Select Case B
Case 0:
Case 13:
Incr G
If Sms <> "" Then
A = 1
Exit Do
End If
Case 10:
If Sms <> "" Then
A = 1
Exit Do
End If
Case Else
If G = 3 Then
Sms = Sms + Chr(b)
End If
End Select
Loop
Cls
Locate 1 , 1
Lcd Sms
Waitms 500
Goto Sr
Loop
Sr:
If A = 1 Then
If Sms = "ON"then
Portd.6 = 1
Waitms 100
Cls
Locate 1 , 4
Lcd "OPEN DOOR"
Waitms 400
Goto Sho
End If
End If
If A = 1 Then
If Sms = "OFF"then
Portd.6 = 0
Waitms 100
Cls
Locate 1 , 4
Lcd "CLOSE DOOR"
Waitms 400
Goto Sho2
End If
End If
Sho:
Cls
Print "AT+CMGR=1"
Sms = ""
Incr X
Do
B = Inkey()
Select Case B
Case 0:
Case 13:
If Sms <> "" Then Exit Do
Case 10:
If Sms <> "" Then Exit Do
Case Else
Sms = Sms + Chr(b)
End Select
Loop
If X = 1 Then Goto Sho
If X = 2 Then Goto Sho
If X = 3 Then Goto Sho
If X = 4 Then Goto Sho
If X = 5 Then Goto Sho
If X = 6 Then Goto Sho
If X = 7 Then Goto Sho
If X = 8 Then Goto Sho
If X = 9 Then Goto Sho
If X = 10 Then Goto Sho
If X = 11 Then Goto Sho
If X = 12 Then Goto Sho
If X = 13 Then Goto Sho
If X = 14 Then Goto Sho
If X = 15 Then Goto Sho
If X = 16 Then Goto M
X = 0
A = 0
G = 0
Cls
Waitms 10
Goto Main
'Start Watchdog
Return
Sho2:
Cls
Print "AT+CMGR=1"
Sms = ""
Incr X
Do
B = Inkey()
Select Case B
Case 0:
Case 13:
If Sms <> "" Then Exit Do
Case 10:
If Sms <> "" Then Exit Do
Case Else
Sms = Sms + Chr(b)
End Select
Loop
If X = 1 Then Goto Sho2
If X = 2 Then Goto Sho2
If X = 3 Then Goto Sho2
If X = 4 Then Goto Sho2
If X = 5 Then Goto Sho2
If X = 6 Then Goto Sho2
If X = 7 Then Goto Sho2
If X = 8 Then Goto Sho2
If X = 9 Then Goto Sho2
If X = 10 Then Goto Sho2
If X = 11 Then Goto Sho2
If X = 12 Then Goto Sho2
If X = 13 Then Goto Sho2
If X = 14 Then Goto Sho2
If X = 15 Then Goto Sho2
If X = 16 Then Goto M
X = 0
A = 0
G = 0
Cls
Waitms 10
Goto Main
'Start Watchdog
Return
End 'end program
منتها یه حرکتی زدم و به محض دریافت SMS و انجام کار ، WATCHDOG روشن میکنم و میکرو ریست نرمافزاری میشه .این جواب داد .
دوستان راهنمایی بفرمایند که بدون واتچ داگ این ماژول راه بیفته جه کنم ؟
$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Pinc.4 , Db5 = Pinc.5 , Db6 = Pinc.6 , Db7 = Pinc.7 , E = Pinc.2 , Rs = Pinc.0
Config Watchdog = 64
'------------------------------
'______________________________
Config Portc.3 = Output
Blk Alias Portc.3
Config Portd.6 = Output ' LED
Config Pind.2 = Input ' INT0
Config Int0 = Low Level
Dim A As Bit
Dim R As Bit : R = 0
Dim X As Byte : X = 0
Dim B As Byte
Dim G As Byte
Dim N As Byte
Dim Sms As String * 250 : Sms = ""
Dim Flag_sms1 As Eram Byte
Dim Flag_sms As Byte
Main:
Set Blk
Waitms 20
Cursor Off
Waitms 500
Cls
Locate 1 , 5
Lcd "WELCOME"
Waitms 300
M:
Cls
Locate 1 , 5
Lcd "WAITING..."
Waitms 300
Print "AT+CMGD=0,4"
Waitms 800
Cls
Locate 1 , 6
Lcd "GSM ON"
Waitms 300
Cls
Enable Interrupts
Enable Int0
On Int0 Z
Cls
Do
Locate 1 , 1
Lcd "WAITING RECEIVE"
Locate 2 , 7
Lcd "SMS"
Waitms 400
Loop
Z:
Locate 1 , 4
Lcd "RECEIVE SMS"
Waitms 300
Cls
Waitms 150
Do
Print "AT+CMGR=1"
Sms = ""
G = 0
A = 0
Cls
Waitms 100
Do
B = Inkey()
Select Case B
Case 0:
Case 13:
Incr G
If Sms <> "" Then
A = 1
Exit Do
End If
Case 10:
If Sms <> "" Then
A = 1
Exit Do
End If
Case Else
If G = 3 Then
Sms = Sms + Chr(b)
End If
End Select
Loop
Cls
Locate 1 , 1
Lcd Sms
Waitms 500
Goto Sr
Loop
Sr:
If A = 1 Then
If Sms = "ON"then
Portd.6 = 1
Waitms 100
Cls
Locate 1 , 4
Lcd "OPEN DOOR"
Waitms 400
Goto Sho
End If
End If
If A = 1 Then
If Sms = "OFF"then
Portd.6 = 0
Waitms 100
Cls
Locate 1 , 4
Lcd "CLOSE DOOR"
Waitms 400
Goto Sho2
End If
End If
Sho:
Cls
Print "AT+CMGR=1"
Sms = ""
Incr X
Do
B = Inkey()
Select Case B
Case 0:
Case 13:
If Sms <> "" Then Exit Do
Case 10:
If Sms <> "" Then Exit Do
Case Else
Sms = Sms + Chr(b)
End Select
Loop
If X = 1 Then Goto Sho
If X = 2 Then Goto Sho
If X = 3 Then Goto Sho
If X = 4 Then Goto Sho
If X = 5 Then Goto Sho
If X = 6 Then Goto Sho
If X = 7 Then Goto Sho
If X = 8 Then Goto Sho
If X = 9 Then Goto Sho
If X = 10 Then Goto Sho
If X = 11 Then Goto Sho
If X = 12 Then Goto Sho
If X = 13 Then Goto Sho
If X = 14 Then Goto Sho
If X = 15 Then Goto Sho
If X = 16 Then Goto M
X = 0
A = 0
G = 0
Cls
Waitms 10
Goto Main
'Start Watchdog
Return
Sho2:
Cls
Print "AT+CMGR=1"
Sms = ""
Incr X
Do
B = Inkey()
Select Case B
Case 0:
Case 13:
If Sms <> "" Then Exit Do
Case 10:
If Sms <> "" Then Exit Do
Case Else
Sms = Sms + Chr(b)
End Select
Loop
If X = 1 Then Goto Sho2
If X = 2 Then Goto Sho2
If X = 3 Then Goto Sho2
If X = 4 Then Goto Sho2
If X = 5 Then Goto Sho2
If X = 6 Then Goto Sho2
If X = 7 Then Goto Sho2
If X = 8 Then Goto Sho2
If X = 9 Then Goto Sho2
If X = 10 Then Goto Sho2
If X = 11 Then Goto Sho2
If X = 12 Then Goto Sho2
If X = 13 Then Goto Sho2
If X = 14 Then Goto Sho2
If X = 15 Then Goto Sho2
If X = 16 Then Goto M
X = 0
A = 0
G = 0
Cls
Waitms 10
Goto Main
'Start Watchdog
Return
End 'end program
دیدگاه