(۲۸-مهر-۱۳۹۱, ۱۹:۴۹:۵۸)soonaeid نوشته است: [ -> ]ضمن تشکر از شما ...
با این فرض که من هیچ سوادی در بیسیک ندارم کمک کنید.
خوب ... بنده قبلا به برنامه زیر رسیدم که البته به علت وجود حلقه نمیشه بیشتر از یک ورودی بهش اعمال کرد. این ساده ترین و ابتکاری ترین راه بوده. حالا میشه برنامه ای که بهم دادید رو هم به چند ورودی مستقل تعمیم داد تا خروجی هایی مستقل داشته باشند ؟
ضمن اینکه کدی که مجزا قرار دادید رو کجا باید اضافه کرد ؟
از همکاریتون بی نهایت سپاسگذارم
کد:
$regfile = "m16def.dat"
$crystal = 8000000
Config Pinb.1 = Input
Config Portb.2 = Output
Do
If Pinb.1 = 1 Then
Portb.2 = 1
L1:
If Pinb.1 = 1 Then Goto L1
Waitms 5
Portb.2 = 0
End If
Loop
سلام
این کد در پیکر بندی کمی اشتباه است
مثلا در پیکر بندی 1.pin نوشته اید و این غلط است
و به چشم نیامده در بسکام در پیکربندی (config)
فقط port نوشته میشود چه بصورت ورودی باشد که در برنامه اصلی میشود
pin وچه بصورت خروجی که در برنامه میشود port
--اگر یک بیت را میخواهید بصورت ورودی یا خروجی پیکر بندی کنید از DDRX
هم میتوانید استفاده کنید بدون دستور CONFIG مثل 0=1.DDRb برای ورودی
ویا 1=1.DDRb برای خروجی (در کد ویجن هم این دستور استفاده میشود)--
پس درپیکر بندی 1.pinb را به 1.portb تغییر دهید
برای محاسبه زمان پالس ورودی یک تایمر میکرو را بصورت تایمر پیکر بندی کنید ویک
متغیر را در ابتدای هر حلقه با ان بارگزاری کنید ودر انتهای حلقه یک متغیر دیگر را
تفاضل این دو متغیر زمان پالس است البته با محاسبه پیکر بندی تایمر بر حسب پالس ساعت
که در اینجا 8 مگاهرتز است این روش همزمان روی دو واحد دیگر هم بکار میرود فقط اسم متغیرها را باید عوض کنید
مقادیر تفاضل شده متغیرها را همزمان بر روی LCD میتوانید نمایش دهید
برای اضافه کردن 5 میلی ثانیه بصورتی که بر روی واحدهای دیگر تاخیر ایجاد نکند هم
باید از تایمر استفاده کنید نه از waitms
به این ترتیب که بجای 5 waitms در برنامه اتان از یک حلقه تاخیر تایمری استفاده
کنید وچون تایمر را نباید stop-start کنید باز هم از دو متغیر استفاده کنید
ومقدار تفاضل این دو متغیر را شرط خروج از حلقه قرار دهید
به این صورت همه واحدها مستقل از یکدیگر تاخیر ایجاد میکنند
موفق باشید