PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کمک برای نوشتن رمز دیجیتال



sajadgreat
21-03-2013, 21:34
سلام دوستان من قصد داشتم یه قفل دیجیتال واسه در درست کنم ولی به مشکل برخوردم میخواستم برنامه ایی بنویسم که تا 6 رقم رمز بگیره و وقتی اولین بار اجرا میشه آماده دریافت رمز باشه و با زدن کلید مربع به منزله تایید رمز رمز رو در حافظه پاک نشدنی بریزه و سپس آماده دریافترمز ست شده باشه و با زدن رمز و زدن مبع در رو باز کنه من این برنامه رو نوشتتم نمیدونم مشکلش چیه که کار نمیکنه لطفا راهنماییم کنید
'$sim
$regfile = "m8def.dat"
$crystal = 4000000
Config Portb = Output
Config Kbd = Portd , Debounce = 100 , Delay = 5
'================================================= ==============================
Dim A As Byte , B As Byte , C As Dword , D As Byte , R As Byte , Z As Byte , Q As Byte , F As Long , _
G As Dword , E As Byte , K As Dword , N As Byte , X As Byte , P As Word , _
L As Byte

Readeeprom Q , 2
Readeeprom K , 1

C = 0
E = 0
X = 0
N = 0

Main:

If Q <> 2 Then Goto Firest

A = Getkbd()
If A = 16 Then Goto Main
Ese:
D = Getkbd()
If D <> 16 Then Goto Ese
B = Lookup(a , Keydata)
Select Case B
'================================================= ==============================
Case 0 To 9:
Readeeprom K , 1

Incr X
C = C * 10
C = C + B

Sound Portb.3 , 100 , 25

If X > 6 Then Goto Wrong

Goto Main


'================================================= ==============================
Case 23:

If C = K Then Goto Ok

If X < 6 Then Goto Wrong

If C <> K Then Goto Wrong

Goto Main

'================================================= ==============================

End Select

End

'================================================= ==============================
Ok:
Sound Portb.3 , 100 , 20
Sound Portb.3 , 100 , 40
Sound Portb.3 , 100 , 60
Sound Portb.3 , 100 , 85
Sound Portb.3 , 100 , 100
Sound Portb.3 , 100 , 125
Sound Portb.3 , 100 , 150
Sound Portb.3 , 100 , 180
Sound Portb.3 , 100 , 200

Set Portb.4
Waitms 500
Reset Portb.4
C = 0
G = 0
X = 0
Goto Main
'================================================= ==============================
Wrong:

Sound Portb.3 , 200 , 20
Sound Portb.3 , 200 , 40
Sound Portb.3 , 200 , 20
Sound Portb.3 , 200 , 40
Sound Portb.3 , 200 , 20
C = 0
X = 0
Waitms 20
Goto Main
'================================================= ======
Firest:

Set Portb.3

Z = Getkbd()
If Z = 16 Then Goto Firest
Check:
R = Getkbd()
If R <> 16 Then Goto Check
F = Lookup(z , Keydata)
Select Case F
'================================================= ==============================
Case 0 To 9:

Incr E
G = G * 10
G = G + F

If E > 6 Then Goto Wrong

K = G

Writeeeprom K , 1
Waitms 20
Readeeprom K , 1

Goto Main


Case 23:

If E < 6 Then
Goto Wrong

If E > 6 Then
Goto Wrong
Q = 2
Writeeeprom Q , 2
Waitms 20
Readeeprom Q , 2

Goto Main

End If
End If
End Select
End
Goto Main
'================================================= ==============================
Keydata:
Data , 7 , 8 , 9 , 20 , 4 , 5 , 6 , 21 , 1 , 2 , 3 , 22 , 23 , 0 , 24 , 25

sajadgreat
21-03-2013, 21:42
در ضمن میخواستم بدونم چطور میشه یه برنامه رو خط به خط در پرتئوس اجرا کرد چراکه اگر بشه این کار رو کرد من تا حدودی میتونم مشکلم رو حل کنم و ببینم ایراد کارم از کجاست

Ma3ood
21-03-2013, 22:53
در مورد پست اول با بسکام کار نمی کنم که راهنماییتون کنم دوستان بسکام کار حرفه ای هستند تو سایت و اما در مورد پست دوم
شما به جای اینکه دکمه start را در نرم افزار مذکور بزنید دکمه کناری اوون یعنی step را بزنید و در ضمن فایل cof و یا obj را در ای سی قرار بدهید و برای اجرای هر خط دکمه step را بزنید
موفق باشید:wink:

sajadgreat
22-03-2013, 18:21
من برنامه و به این چیزی که در زیر میبینید رسوندم ولی متاسفانه با این که تو محیط شبیه سازی کار میکنه تو عمل درست کار نمیکنه لطفا راهنماییم کنید

'$sim
$regfile = "m8def.dat"
$crystal = 4000000
Config Portb = Output
Config Portc = Input
Config Kbd = Portd , Debounce = 100 , Delay = 5
'================================================= ==============================
Dim A As Byte , B As Byte , C As Dword , D As Byte , R As Byte , Z As Byte , Q As Byte , F As Byte , _
G As Dword , E As Byte , K As Dword , X As Byte , L As Dword,


Readeeprom K , 1

C = 0
G = 0
X = 0
E = 0


Main:


Reset Portb.7
Set Portb.6

A = Getkbd()
If Pinc.0 = 1 Then Goto Firest
If A = 16 Then Goto Main
Ese:
D = Getkbd()
If D <> 16 Then Goto Ese
B = Lookup(a , Keydata)
Select Case B
'================================================= ==============================
Case 0 To 9:


Incr X
C = C * 10
C = C + B

Sound Portb.3 , 100 , 25




Goto Main


'================================================= ==============================
Case 23:
Readeeprom K , 1

L = K
If C = L Then Goto Ok

If X < 6 Then Goto Wrong

If C <> L Then Goto Wrong

Goto Main

'================================================= ==============================
End Select

End

'================================================= ==============================
Ok:
Sound Portb.3 , 100 , 20
Sound Portb.3 , 100 , 40
Sound Portb.3 , 100 , 60
Sound Portb.3 , 100 , 85
Sound Portb.3 , 100 , 100
Sound Portb.3 , 100 , 125
Sound Portb.3 , 100 , 150
Sound Portb.3 , 100 , 180
Sound Portb.3 , 100 , 200

Set Portb.4
Waitms 500
Reset Portb.4
C = 0
G = 0
X = 0
E = 0
L = 0
K = 0
Goto Main
'================================================= ==============================
Wrong:

Sound Portb.3 , 200 , 20
Sound Portb.3 , 200 , 40
Sound Portb.3 , 200 , 20
Sound Portb.3 , 200 , 40
Sound Portb.3 , 200 , 20
C = 0
G = 0
X = 0
E = 0
L = 0
K = 0

Goto Main
'================================================= ======
Firest:
Reset Portb.6
Set Portb.7

Z = Getkbd()
If Z = 16 Then Goto Firest
Check:
R = Getkbd()
If R <> 16 Then Goto Check
F = Lookup(z , Keydata)
Select Case F
'================================================= ==============================
Case 0 To 9:

Incr E
G = G * 10
G = G + F

Sound Portb.3 , 100 , 30
If E > 6 Then
Sound Portb.3 , 200 , 20
Sound Portb.3 , 200 , 40
Sound Portb.3 , 200 , 20
Sound Portb.3 , 200 , 40
Sound Portb.3 , 200 , 20

E = 0
G = 0
End If
Goto Firest


Goto Firest

Case 23:

If E < 6 Then

Sound Portb.3 , 200 , 20
Sound Portb.3 , 200 , 40
Sound Portb.3 , 200 , 20
Sound Portb.3 , 200 , 40
Sound Portb.3 , 200 , 20

E = 0
G = 0




Goto Firest
If E > 6 Then
Sound Portb.3 , 200 , 20
Sound Portb.3 , 200 , 40
Sound Portb.3 , 200 , 20
Sound Portb.3 , 200 , 40
Sound Portb.3 , 200 , 20

E = 0
G = 0
Goto Firest

If E = 6 Then
K = G
Sound Portb.3 , 100 , 20
Sound Portb.3 , 100 , 40
Sound Portb.3 , 100 , 60
Writeeeprom K , 1
Readeeprom K , 1
Reset Portb.7
Goto Main
End If
End If
End If
End Select

'================================================= =======================

'================================================= ==============================
Keydata:
Data , 7 , 8 , 9 , 20 , 4 , 5 , 6 , 21 , 1 , 2 , 3 , 22 , 23 , 0 , 24 , 25

esmaeil57
23-03-2013, 00:44
سلام دوست گرامی

برنامه قفل رمز (You can see links before reply) هر طوری که بنویسید باید قابلیت تغییر رمز رو داشته باشه. یه برنامه ساده و در عین حال عملی و مناسب رو در وبلاگم گذاشتم میتونید به آدرس زیر مراجعه کنید:
You can see links before reply (You can see links before reply)

Ma3ood
23-03-2013, 18:08
اگه توی محیط شبیه سازی کار میکنه مشکل از بستن سخت افزاریتونه وگرنه خطای شبیه سازی بسیار کمه
و شما باید دنبال دلیل برای رفع اون باشید.
مشکلاتی که در عمل دارید را بنویسید