سلام دوستان . من تخصصم زبان C هست .بسکام هم تا حدودی بلدم ولی نمیدونم چطوری باید فایل eeprom ازش گرفت . یکی از دوستان یه پروژه ی دزدگیر با سنسور PIR ( که زنگ میزنه به خط موبایل ) سفارش داده ، منم چون برنامشو آماده داشتم براش درستش کردم . فقط نمیدونم فایل eeprom چطوری از این برنامه بگیرم .
لطفا کمکم کنید . برنامش هم اینه :
لطفا کمکم کنید . برنامش هم اینه :
کد:
$regfile = "m16def.dat" $crystal = 8000000 'Internal RC $hwstack = 64 $swstack = 64 $framesize = 64 'LCD Config Lcdpin = Pin , Db4 = Pinb.4 , Db5 = Pinb.5 , Db6 = Pinb.6 , Db7 = _ Pinb.7 , E = Pinb.2 , Rs = Pinb.0 Config Lcd = 16 * 2 Config Portb.1 = Output Portb.1 = 0 Cls : Home : Cursor Off 'Back Space Symbol Deflcdchar 0 , 32 , 4 , 12 , 31 , 12 , 4 , 32 , 32 'Keypad Config Kbd = Porta 'I/O Config Portd.5 = Output 'Active Config Pind.6 = Output 'Relay Config Pind.0 = Output 'Default Config Pind.7 = Output 'Speaker Config Portd.6 = Output Config Pind.2 = Input Ddrc.7 = 1 Portc.7 = 0 Ddrd.2 = 0 Portd.2 = 1 Ddrc.0 = 0 Portc.0 = 1 Ddrc.1 = 0 Portc.1 = 1 Ddrc.2 = 0 Portc.2 = 1 Ddrc.3 = 0 Portc.3 = 1 Ddrc.4 = 0 Portc.4 = 1 Ddrc.5 = 0 Portc.5 = 1 Enable Interrupts Disable Int0 'Aliases Relay Alias Portd.0 'we Can Get From D1 Or Porta.0 D2 And Speaker Alias Pind.7 Speaker1 Alias Pind.5 Default Alias Pind.2 'Var Dim Digits As Byte , Key As Byte , Result As Byte , Num As String * 4 Dim Pass(8) As String * 1 , Pass1(8) As String * 1 , Pass2(8) As String * 1 Dim Pass_eeprom(8) As Eram String * 1 , Rcv(8) As String * 1 Dim Temp As Byte , Sel As Byte Dim Mobile(11) As Eram String * 1 Dim Mobile1(11) As String * 1 'Subroutines Declare Sub Main Declare Sub Pre Declare Sub Default_pass Declare Sub Load2ram Declare Sub Getpass Declare Sub Check Declare Sub Change Declare Sub Menu Declare Sub Change_pass Declare Sub Confirm Declare Sub Check1 Declare Sub Dozdgir 'Declare Sub Cleardisp(byval Sel As Byte) 'Function Declare Function Is_num(byval Num As String) As Byte 'Main Prog Start Here: Call Main End '_______________________________________________________________________________ 'Main Sub, Check Default Key Status & Call Other Sub's Sub Main Sound Speaker , 120 , 20 'Startup Sound Call Pre If Default = 0 Then Call Default_pass Call Load2ram Call Getpass End Sub '_______________________________________________________________________________ 'Set Default Password (11111111) Sub Default_pass Sound Speaker , 120 , 30 'Clear Pass For Temp = 1 To 8 Pass_eeprom(temp) = "1" Waitms 20 Next Temp Sound Speaker , 120 , 30 'Clear tel Mobile(1) = "0" Waitms 20 Mobile(2) = "9" Waitms 20 Mobile(3) = "3" Waitms 20 Mobile(4) = "5" Waitms 20 Mobile(5) = "4" Waitms 20 Mobile(6) = "1" Waitms 20 Mobile(7) = "9" Waitms 20 Mobile(8) = "9" Waitms 20 Mobile(9) = "9" Waitms 20 Mobile(10) = "2" Waitms 20 Mobile(11) = "1" Waitms 20 Cursor Off Cls : Home : Lcd "tel=091494400**" Lowerline : Lcd "Pass=11111111" Sound Speaker , 120 , 60 Waitms 1500 End Sub '_______________________________________________________________________________ 'Load Pass to SRAM Sub Load2ram For Temp = 1 To 8 Pass(temp) = Pass_eeprom(temp) Waitms 20 Next Temp For Temp = 1 To 11 Mobile1(temp) = Mobile(temp) Waitms 20 Next Temp End Sub '_______________________________________________________________________________ 'Get Password Sub Getpass Inja: Cls : Home : Lcd "Password? Cls=*" ; Chr(0) Home L : Cursor Blink Sound Speaker , 120 , 60 Digits = 0 Waitms 500 Do If Pinc.0 = 0 Or Pinc.1 = 0 Or Pinc.2 = 0 Or Pinc.3 = 0 Or Pinc.4 = 0 Or Pinc.5 = 0 Then Call Dozdgir Key = Getkbd() Num = Lookupstr(key , Decode) If Num = "Cls" Then Call Getpass If Is_num(num) = 1 Then Sound Speaker , 120 , 50 Sound Speaker , 120 , 40 Incr Digits Locate 2 , Digits : Lcd Num Rcv(digits) = Num If Digits = 8 Then 'Pass Entered Call Check If Result <> 8 Then 'Error Pass Sound Speaker , 120 , 80 Cls : Home : Lcd "Error!" Cursor Noblink Waitms 500 Call Getpass Else 'Successful Pass Call Menu End If End If Waitms 300 End If Loop End Sub '_______________________________________________________________________________ 'Check Pressed Key Is A Number(0-9)? If Yes Is-num = 1 In No Is_num=0 Function Is_num(byval Num As String) As Byte If Num = "0" Or Num = "1" Or Num = "2" Or Num = "3" Or Num = "4" _ Or Num = "5" Or Num = "6" Or Num = "7" Or Num = "8" Or Num = "9" then Is_num = 1 Else Is_num = 0 End If End Function '_______________________________________________________________________________ 'Password Checker Sub Check Result = 0 For Temp = 1 To 8 If Rcv(temp) = Pass(temp) Then Incr Result Next Temp End Sub '_______________________________________________________________________________ 'Sub Menu (Open Door Or Cahnge pass) Sub Menu Cls : Home : Cursor Noblink : Lcd " Exit=#" Lowerline : Lcd "2=Change tel and pas" Sound Speaker , 120 , 100 Sound Speaker , 120 , 80 Sound Speaker , 120 , 60 Waitms 500 Do Key = Getkbd() Num = Lookupstr(key , Decode) If Num = "1" Then Toggle Relay If Relay = 0 Then Sound Speaker , 120 , 20 Else Sound Speaker , 120 , 40 End If Waitms 500 End If If Num = "Exit" Then Call Getpass If Num = "2" Then Call Change_pass Loop End Sub '_______________________________________________________________________________ 'Change Password Sub Change_pass Cls : Home : Lcd "Cls=* Exit=# " ; Chr(0) Lowerline : Lcd "tel=F1 pas=F2" Sound Speaker , 120 , 60 Digits = 0 Waitms 500 Do Key = Getkbd() Num = Lookupstr(key , Decode) If Num = "Cls" Then Call Change_pass If Num = "Exit" Then Call Getpass If Num = "b" Then Cls : Home : Lcd "CHANGE PASWORD" Do Key = Getkbd() Num = Lookupstr(key , Decode) If Is_num(num) = 1 Then Sound Speaker , 120 , 50 Sound Speaker , 120 , 40 Incr Digits Pass1(digits) = Num Locate 2 , Digits : Lcd "*" Waitms 300 If Digits = 8 Then Call Confirm End If Loop End If 'chang tel number If Num = "a"then Waitms 200 Cls : Home : Lcd "CHANGE TELNUM" Do Key = Getkbd() Num = Lookupstr(key , Decode) If Is_num(num) = 1 Then Sound Speaker , 120 , 50 Sound Speaker , 120 , 40 Incr Digits Mobile1(digits) = Num Mobile(digits) = Num Locate 2 , Digits : Lcd Num Waitms 300 If Digits = 11 Then Call Change_pass End If Loop End If Loop End Sub '_______________________________________________________________________________ 'Confirm Password Sub Confirm Digits = 0 Cls : Home : Lcd "Confirm: Cls=" ; Chr(0) Sound Speaker , 120 , 60 Home L Waitms 500 Do Key = Getkbd() Num = Lookupstr(key , Decode) If Num = "Cls" Then Call Confirm If Is_num(num) = 1 Then Sound Speaker , 120 , 50 Sound Speaker , 120 , 40 Incr Digits Pass2(digits) = Num Locate 2 , Digits : Lcd "*" Waitms 300 If Digits = 8 Then Call Check1 Cursor Noblink If Result = 8 Then Cls : Home : Lcd "Pass Changed!" Sound Speaker , 120 , 100 Sound Speaker , 120 , 80 Sound Speaker , 120 , 60 For Temp = 1 To 8 Pass_eeprom(temp) = Pass1(temp) Waitms 20 Next Temp Call Load2ram Call Getpass Else Sound Speaker , 120 , 80 Cls : Home : Lcd "Error!" Waitms 500 Call Change_pass End If End If End If Loop End Sub '_______________________________________________________________________________ 'Confirm Pass Checker Sub Check1 Result = 0 For Temp = 1 To 8 If Pass1(temp) = Pass2(temp) Then Incr Result Next Temp End Sub '_______________________________________________________________________________ 'Pre Load Sub Pre Cls Cursor Off Home : Lcd " hello" Lowerline Lcd " Security Lock" Wait 1 Cls : Home : Lcd "Ahmad Mohamadi" Waitms 500 Lowerline Lcd "Software Ver:1.0" Waitms 500 End Sub '_______________________________________________________________________________ 'Keypad Decode Data Table Decode: Data "1" , "4" , "7" , "Exit" Data "2" , "5" , "8" , "0" Data "3" , "6" , "9" , "cls" Data "a" , "b" , "c" , "d" '______________________________________________________________________________ Dozdgir: Cls : Home : Lcd "Calling..." For Temp = 1 To 11 Locate 2 , Temp : Lcd Mobile1(temp) Next Temp Set Portd.6 Waitms 1000 For Temp = 1 To 11 Digits = Val(mobile1(temp)) If Digits = 0 Then Digits = 10 For Sel = 1 To Digits Reset Portd.6 Waitms 65 Set Portd.6 Waitms 40 Next Sel Waitms 1000 Next Temp Set Portd.6 Portc.7 = 1 Sound Speaker1 , 131 , 637 'C3(1/16) Sound Speaker1 , 65 , 1274 'C2(1/16) Sound Speaker1 , 92 , 901 'Fis2(1/16) Sound Speaker1 , 65 , 1274 'C2(1/16) Sound Speaker1 , 131 , 637 'C3(1/16) Sound Speaker1 , 65 , 1274 'C2(1/16) Sound Speaker1 , 92 , 901 'Fis2(1/16) Sound Speaker1 , 65 , 1274 'C2(1/16) Sound Speaker1 , 117 , 715 'Ais2(1/16) Sound Speaker1 , 65 , 1274 'C2(1/16) Sound Speaker1 , 92 , 901 'Fis2(1/16) Sound Speaker1 , 65 , 1274 'C2(1/16) Sound Speaker1 , 104 , 803 'Gis2(1/16) Sound Speaker1 , 65 , 1274 'C2(1/16) Sound Speaker1 , 92 , 901 'Fis2(1/16) Sound Speaker1 , 65 , 1274 'C2(1/16) Sound Speaker1 , 98 , 850 'G2(1/16) Sound Speaker1 , 65 , 1274 'C2(1/16) Sound Speaker1 , 92 , 901 'Fis2(1/16) Sound Speaker1 , 65 , 1274 'C2(1/16) Sound Speaker1 , 98 , 850 'G2(1/16) Sound Speaker1 , 65 , 1274 'C2(1/16) Sound Speaker1 , 92 , 901 'Fis2(1/16) Sound Speaker1 , 65 , 1274 'C2(1/16) Sound Speaker1 , 98 , 850 'G2(1/16) Sound Speaker1 , 65 , 1274 'C2(1/16) Sound Speaker1 , 92 , 901 'Fis2(1/16) Sound Speaker1 , 65 , 1274 'C2(1/16) Sound Speaker1 , 98 , 850 'G2(1/16) Sound Speaker1 , 65 , 1274 'C2(1/16) Sound Speaker1 , 92 , 901 'Fis2(1/16) Sound Speaker1 , 65 , 1274 For Temp = 1 To 10 Cls : Home : Lcd " " ; Temp ; ":sec " Lowerline Lcd "danger danger" Wait 1 Cls : Home : Lcd " " ; Temp ; ":sec " Lowerline Lcd " danger " Wait 1 Next Temp Reset Portd.6 Portc.7 = 0 Wait 1 Goto Inja '______________________________________________________________________________
دیدگاه