PDA

View Full Version : اضافه کردن تایمر در مگا8



saz20120
پنج شنبه 10 تیر 1389, 00:43 صبح
سلام دوستان

من یه کد برای مگا 8 دارم که توی هر ثانیه صد بار یک رو به پورت کام ارسال می کنه و یه کلید گذاشتم که وقتی میزنی 1 رو به سیستم ارسال میکنه حالا میخوام که وقتی کلید رو میزنم فقط یکبار به سیستم 1 ارسال کنه و بعد از 2 ثانیه اگر دوباره کلید رو زدم یک ارسال کنه.یعنی میخوام کاری کنم که توی هر دو ثانیه فقط یکبار قابلیت ارسال یک رو داشته باشه کد رو میزارم اگه کسی میتونه واسم کاملش کنه.مرسی

$regfile = "m8def.dat"
$crystal = 8000000


Config Pind.2 = Output

Config Pinc.1 = Input
Open "comd.2:9600,8,n,1" For Output As #1


Do
If Pinc.1 = 0 Then
Print #1, "1"
Else
Print #1, "0"
End If
Waitms 10
Loop

farzadsw
پنج شنبه 10 تیر 1389, 15:53 عصر
اگه از وقفه تایمر استفاده میکنید ، کافیه یه متغییر تعریف کنید تا با هر بار وقفه تایمر (2 ثانیه یکبار) مقدارش 1 بشه . در این صورت کافیه تو شرطی که برای خوندن وضعیت دکمه گذاشتید (If Pinc.1 = 0 Then ) مقدار متغییر روهم بررسی کنید (If Pinc.1 = 0 and f Then ) و اگه شرط برقرار بود(هم دکمه زده شده بود و هم متغییر 1 بود) متغییر رو به 0 تغییر بده تا برای 2 ثانیه بعد غیر فعال بشه (تایمر هم باید ریست بشه)

اگه از تایمر و وقفه اون استفاده نکنید ، باید متغییر رو در هر سیکل یکی زیاد کنید ولی مقدارش از 100 بیشترنشه :


f = f+1
if f>100 then f=100


بعد مثل حالت اینتراپت همراه دکمه ، مقدار متغییر رو هم بررسی کنید (If Pinc.1 = 0 and f=100 Then) . و اگه شرط درسته ، متغییر رو 0 کنید