سلام
اگه تو يه برنامه خاستيم كه با زدن يه كليد براي اولين بار بره به يه زير برنامه بعد واسه دومين بار بره به يه زير برنامه ديگه و همين طور تا د مرحله بعد از اول دوباره شروع كنه وبه ترتيب با زدن كليد به زيربرنامه ها بپره چه بنويسيم؟؟
![Confused Confused](https://www.iranled.com/forum/images/smilies2/confused.gif)
![Clap Clap](https://www.iranled.com/forum/images/smilies2/clap.gif)
خوب شما بايد در برنامتون از كليد اطلاعات رو بخونيد و در صورت تغيير وضيت بره برنامه بعدي .
کد:
Ant1:
DO
Debounce Pinb.0 , 1 , Ant2
LOOP
Ant2:
DO
Debounce Pinb.0 , 1 , Ant3
LOOP
Ant3:
.
.
.
Ant10:
DO
Debounce Pinb.0 , 1 , Ant1
LOOP
البته فكر مي كنم بدترين روش موجود باشه .
البته مي توني
مثل اين پروژه در ابتداي برنامه كاربر كار مورد نظرش رو انتخاب كنه و بعد از انجام كارش يا فشردن كليد برگشت دوباره به منوي اصلي برگشته و كار بعدي رو انتخاب كنه .
--------------------------------------------
راستش من هنوز منطورتون رو نفهميدم .
میتونید یک متغییر معرفی کرده و بصورت شمارنده بکار بگیریدش. بدون اینکه در جاهای دیگر برنامه مقدار متغییر رو پاک کنید(فقط در اول برنامه ارزش آن را صفر بگیرید) , با هر بار خواندن ارزش متغییر به زیربرنامه مورد نظر jump کنید
با سلام
من یه مشکلی تو در یافتی ورودی ها از avr دارم
وقتی من مینویسم pinX.X خودش میره سراغ اولین loop
واگر بنویسم portX.X این بار توی پروتوس کار نمی کنه؟
و یه سوال دیگه دستور ddrX و... اگه ننویسم دیگه ورودی نمی شه؟
اگه خواستن سورس رو هم up می کنم.
با تشکر از نظرتون
مهندس سورس بذاري بهتره !
من كه نفهميدم چي گفتي !
منم خوب متوجه نشدم اما:
اگه از پورت به عنوان ورودی استفاده میکنید باید تو دستور بنویسید pinX.X و اگه خروجیه portX.X بر عکس بگیرین عمل نمیکنه
اگه پايه اي رو ورودي تعريف كرده باشين :
حال با port اونو يك كنيد :
با اين كار مقاومت پول آپ داخلي ميكرو رو فعال مي كنين !
با سلام
ببخشید که نتونستم منظورمو به خوبی برسونم
این برناه منه(یه تایمر 5 زمانه از 1 minتا 5min
که بعد از اتمام شمارش میتونه یه رله به کار بندازه)
لطفا نگاه کنید و نظر بدید ؟ اگر مشکلی داره بگید؟
(این برنامه در باسکام نوشته شده
و اگه خوب چارت بندی و خوب نوشته نشده به استادی خودتون ببخشید آخه کار اولمه)
تا بعد اگه لیاقت داشت اسم یه پروژه بهش بدیمو و برای دانلود عموم بذاریم
متشکرم
مهندس برنامه رو اینطوری نمشه فهمید !
بهتر بود نقشه رو تو پروتئوس می کشیدی و اونحا تستش می کردیم !
روال برنامه رو هم یه توضیح مختصری می دادی !
با سلام
گفتم که یه تایمر 5 زمانه از 1تا 5 دقیقه است
اما برای پروتوس در اولین فرصت انو آپ میکنمش
روی چشم
متشکرم
سلام:
کد:
$regfile = "M32def.dat"
$crystal = 1000000
Dim A As Integer
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Porta.1 , Db5 = Porta.2 , Db6 = Porta.3 , Db7 = Porta.4 , E = Porta.5 , Rs = Porta.6
Config Portc = Input
Config Portb = Output
Ddrc = 0 : Portc = 255
Ali:
Portb = 0
Cls
Lcd "Select Buton"
Do
If Pinc.1 = 0 Then Goto Abbas
If Pinc.2 = 0 Then Goto Abbas2
If Pinc.3 = 0 Then Goto Abbas3
If Pinc.4 = 0 Then Goto Abbas4
If Pinc.5 = 0 Then Goto Abbas5
Loop
Reza:
Set Portb.0
Goto Ali
Abbas:
A = 60
Do
If Pinc.6 = 1 Then Goto Ali
Lcd A ; " "
Wait 1
Decr A
Print A
Loop Until A = 0
Goto Reza
Abbas2:
A = 120
Do
If Pinc.6 = 1 Then Goto Ali
Cls
Lcd A ; " "
Wait 1
Decr A
Print A
Loop Until A = 0
Goto Reza
Abbas2:
A = 180
Do
If Pinc.6 = 1 Then Goto Ali
Cls
Lcd A ; " "
Wait 1
Decr A
Print A
Loop Until A = 0
Goto Reza
Abbas2:
A = 240
Do
If Pinc.6 = 1 Then Goto Ali
Cls
Lcd A ; " "
Wait 1
Decr A
Print A
Loop Until A = 0
Goto Reza
Abbas2:
A = 300
Do
If Pinc.6 = 1 Then Goto Ali
Cls
Lcd A ; " "
Wait 1
Decr A
Print A
Loop Until A = 0
Goto Reza
1- برای ادرس دهی نباید متغیر تعریف کنیم .
2- استفاده از دستور wait دقیق نیست ، عاقلانه ترین کار استفاده از تایمر هست .
3- برای فشردن کلید باید به مدت 1 ثانیه اون رو نگه دارید ، میتونید یک متغیر دیگه تعریف کنید و این زمان رو به 100 یا x میلی ثانیه برسونید .