امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
سوالهای برنامه نویسی با کامپایلر BASCOM
نویسنده پیام
mahboob2 آفلاین
تازه وارد

ارسال‌ها: 8
موضوع‌ها: 1
تاریخ عضویت: فروردین ۱۳۹۲

تشکرها : 5
( 2 تشکر در 2 ارسال )
ارسال: #232
RE: سوالهای برنامه نویسی با کامپایلر BASCOM
سلام.دوستان من یه سوال داشتم.کمکم کنید ممنون میشم.من سه تا دکمه به سه پایه از میکرو وصل کردم. یک برنامه بزرگ نوشتم که تووی این برنامه از هر سه دکمه استفاده میشه. حال من میخوام یه برنامه دیگه بنویسم. این برنامه ها جدا جدا جواب میده. اما من میخوام مثلا وقتی دکمه اول را میفشرم وارد برنامه اول و وقتی دکمه دوم را میفشرم وارد برنامه دوم بشه، چطوری باید این کار را بکنم؟
وقتی از if ساده استفاده میکنم جوابی که میخوام نمیگیرم/.
باید do , loop اول دو برنامه بذارم؟ یا اولش یه دونه بذارم برای جفتشون یا نه؟؟
۰۶-شهریور-۱۳۹۲, ۱۴:۰۷:۰۲
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #233
RE: سوالهای برنامه نویسی با کامپایلر BASCOM
سلام.
برای هر برنامه ی جدا یه لیبل بزنید.
اول برنامه برای هر کلید از دستور debounce استفاده کنید.

یعنی اول برنامه یه Do-Loop دارید که داخلش حداقل 3 دستور Debounce هست.
هر کدام هم وقتی فعال می شن به لیبل مربوطه شون پرش می کنن.
آخر هر کدوم از برنامه های جدا دوبارهه باید پرش بشه به اول Do-Loop مربوط به چک کردن کلیدها.
راه های زیادی دارهه ، اما این ساده ترینش هست.
اگر با این دستور آشنایی ندارید در help بسکام سرچش کنید و توضیحات و مثالش رو بخونید.

موفق باشید.

۰۶-شهریور-۱۳۹۲, ۱۷:۰۷:۵۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : mahboob2, babyy, omid_phoenix, behzady, Ambassador
رسول غایب
بازنشسته
*****

ارسال‌ها: 2,458
موضوع‌ها: 237
تاریخ عضویت: دى ۱۳۸۸

تشکرها : 15003
( 20196 تشکر در 5767 ارسال )
ارسال: #234
RE: سوالهای برنامه نویسی با کامپایلر BASCOM
چطوری میشه از دو وقفه خارجی بصورت همزمان استفاده کرد؟

منظورم اینه که مثلا ما دو تا پایه وقفه خارجی رو در برنامه استفاده کنیم و هر کدوم زودتر دستور گرفت اون اجرا بشه همچنین اگه در میانه راه وقفه اولی در حال اجرا اون یکی وقفه (وقفه دوم) دستور گرفت اون اجرا بشه و اولی متوقف بشه و این چرخه ادامه داشته باشه ...


کد:
Config Int0 = Falling
Enable Int0
Enable Interrupts
On Int0 Q


Config Int1 = Rising
Enable Int1
Enable Interrupts
On Int1 W


Q:
...



W:
...



البته فرقی نمی کنه کدومش بالارونده باشه یا پایین رونده و ممکنه بخوام هر دوتاش از یه نوع باشن
(آخرین ویرایش در این ارسال: ۱۲-اسفند-۱۳۹۳, ۰۱:۴۸:۴۴، توسط رسول.)
۱۲-اسفند-۱۳۹۳, ۰۱:۳۹:۲۳
ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador
رسول غایب
بازنشسته
*****

ارسال‌ها: 2,458
موضوع‌ها: 237
تاریخ عضویت: دى ۱۳۸۸

تشکرها : 15003
( 20196 تشکر در 5767 ارسال )
ارسال: #235
RE: سوالهای برنامه نویسی با کامپایلر BASCOM
راستش من طبق همون دستورات دو تا وقفه رو فعال کردم اما فقط یکیش کار می کنه و در وسط برنامه اگه وقفه دوم رو بخوام فعال بشه نمیشه!!

میشه یه کد مثال بذارین؟

البته داخل برنامه ها از تاخیر هم استفاده خواهم کرد و شاید همین تاخیر خودش مشکل ساز باشه
۱۳-اسفند-۱۳۹۳, ۲۳:۳۸:۱۲
ارسال‌ها
پاسخ
تشکر شده توسط : vigraz
vigraz آفلاین
عضو افتخاری
****

ارسال‌ها: 164
موضوع‌ها: 0
تاریخ عضویت: مرداد ۱۳۹۱

تشکرها : 341
( 336 تشکر در 151 ارسال )
ارسال: #236
RE: سوالهای برنامه نویسی با کامپایلر BASCOM
(۱۳-اسفند-۱۳۹۳, ۲۳:۳۸:۱۲)رسول نوشته است: راستش من طبق همون دستورات دو تا وقفه رو فعال کردم اما فقط یکیش کار می کنه و در وسط برنامه اگه وقفه دوم رو بخوام فعال بشه نمیشه!!

میشه یه کد مثال بذارین؟

البته داخل برنامه ها از تاخیر هم استفاده خواهم کرد و شاید همین تاخیر خودش مشکل ساز باشه

سلام
شما درست ميفرماييد و من هم در عمل نكات مبهمي را مشاهده كردم
البته الان اگر كد را مثال بزنم كه طبق همان تئوري است كه خودتان هم
بخوبي با ان اشنا هستيد
اما اگر وقت بدهيد مدارهاي عملي قبلي را كه خودم در اين مورد ساخته ام
نگاهي بياندازم و با اطمينان بيشتر پاسخگو باشم
اين مورد را كه شما ميفرماييد در مدارهايي كه از چند وقفه استفاده
ميكنند پيش ميايد وربطي به كانتر ندارد
در برنامه پترن وكلا ارسال كاراكتر بر روي تلويزيون با اين مورد خيلي
كلنجار رفتم
موردي كه در برنامه من بروز ميكرد اختلاف فاز وقفه ها بود كه سرانجام
هم حل نشد و بعد كه خوب بررسي كردم متوجه شدم كه اين اختلاف فاز اصولا
بر اثر اين است كه ميكرو بين وقفه ها ترجيح نمگذارد و كار اصلي ميكرو است
و اگر غير از اين بود بايد موجب تعجب ميشد
اين اختلاف فاز باعث ميشد كه در هر دوره 52 ميكروثانيه شروع پيكسلها
ويا كاراكترها كمي جابجا شود وخودش تشكيل يك سيكل را ميداد كه بصورت
پرش خطوط نمايش داده ميشد
اين مشكل باعث شد كه از وقفه ها بصورتي ديگر استفاده كنم


----
البته احتمال ميدهم بهر حال نوع كدنويسي در اين مورد دخيل است اما
ربطي به استفاده از كانتر ندارد
پس اگر خودتان حل كرديد كه خوب است و اگر حل نشد من حتما ان نكات را
پيدا ميكنم
در ميكرو اين قسمت هميشه مشكل ساز ترين قسمت برنامه است
-----
ارسال قبلي را حذف كردم
در ارسال قبلي كه گفته بودم وقفه نقطه بازگشت ندارد منظور اين بود
كه مقدار بازگشتي ندارد و همچنين نميشود انها را الويت بندي كرد
و براي انجام وقفه اي ديگر حتما بايد وقفه قبلي البته برگشت داده شود
اگر برچسبي كه به ان پرش شده داراي شرط باشد برگشت بايد در داخل حلقه
باشد و همچنين بيرون حلقه و اگر داراي شرط نيست در انتهاي برنامه

سپاس
(آخرین ویرایش در این ارسال: ۱۴-اسفند-۱۳۹۳, ۱۲:۳۲:۵۹، توسط vigraz.)
۱۴-اسفند-۱۳۹۳, ۰۱:۵۰:۵۲
ارسال‌ها
پاسخ
تشکر شده توسط : رسول, Ambassador
alimogmov آفلاین
مدیر بخش
*****

ارسال‌ها: 456
موضوع‌ها: 36
تاریخ عضویت: اردیبهشت ۱۳۹۰

تشکرها : 867
( 941 تشکر در 393 ارسال )
ارسال: #237
RE: سوالهای برنامه نویسی با کامپایلر BASCOM
آیا میشود از امکانات میکرو برای کنترل ترانزیستور تغذیه برق کلیدزنی(سوییچینگ) برای تبدیل برق شهر به مثلا 5 و 12 ولت
شایدم شبیه تغذیه رایانه(کامپیوتر) استفاده کرد بدون تراشه های کنترل کلیدزنی(سوییچینگ) . بیشتر تمرکز بر امکانات میکرو کنترلر باشد.
از مدارات کنترل آنالوگ و اینها زیاد دیدم خواستم ببینم با میکرو میشه همچین چیزی ساخت که بتونه خودش فرکانس را در محدوه مثلا 25 تا 150 کیلوهرتز با پهنای پالس متغیر متناسب با ولتاژ خروجی ایجاد کند. از پایه های کنترلی میکرو برای جلو گیری از خطاهای تغذیه بهره ببره. بیشتر مدارات رابط میتونه از کوپلر نوری یا ترانس وترانزیستور باشه.
اگه نشانی و یا مرجعی باشه ممنون میشم.Smile
At اینم بگم بیشتر از 12 سال از درس خوندنم گذشته و برای پروژه و کار تجاری نمیخواهم. برای یادگیری و سرگرمی خودم.Shy

اصولش بنویسید از سرمان زیاد است.

(آخرین ویرایش در این ارسال: ۱۴-اسفند-۱۳۹۳, ۲۲:۰۴:۰۰، توسط alimogmov.)
۱۴-اسفند-۱۳۹۳, ۱۹:۵۷:۰۶
ارسال‌ها
پاسخ
vigraz آفلاین
عضو افتخاری
****

ارسال‌ها: 164
موضوع‌ها: 0
تاریخ عضویت: مرداد ۱۳۹۱

تشکرها : 341
( 336 تشکر در 151 ارسال )
ارسال: #238
RE: سوالهای برنامه نویسی با کامپایلر BASCOM
(۱۳-اسفند-۱۳۹۳, ۲۳:۳۸:۱۲)رسول نوشته است: راستش من طبق همون دستورات دو تا وقفه رو فعال کردم اما فقط یکیش کار می کنه و در وسط برنامه اگه وقفه دوم رو بخوام فعال بشه نمیشه!!

میشه یه کد مثال بذارین؟

البته داخل برنامه ها از تاخیر هم استفاده خواهم کرد و شاید همین تاخیر خودش مشکل ساز باشه

سلام
اين كد ساده اي است كه دو وقفه خارجي را اجرا ميكند
هربار كه يك وقف اجرا ميشود با يك RETURN تمام ميشود
و قفه بعدي يا خود وقفه اول اجرا ميشود
اگر در حين اجراي وقفه اول وقفه دوم اتفاق بيافتد بخاطر اينكه
روال وقفه اول تمام نشده وقوع وقفه دوم ذخيره شده و بعد از اتمام
وقفه اول وقفه دوم اجرا ميشود

براي ازمايش من در هر دووقفه تاخير 2 ثانيه اي را گذاشته ام
تا فرصت شود كه هردو كليد به فاصله يك ثانيه فشرده شوند
به اين ترتيب ميبينيد كه يك زيروال انجام ميشود وهمزمان
وقفه دگر اگر وقوع پيدا كند ذخيره ميشود وبلافاصله بعد از
اتمام زير روال اولي اجرا ميگردد
بين وقفه ها هيچ الويتي نميتوان قائل شد و بترتيب زمان وقوعشان
ذخيره وبعد از اتمام قبلي اجرا ميشوند
اما در هر صورت دوزير روال همزمان نميتوانند اجرا شوند بهيچوجه
----
از وقفه در وقفه بصورت سريال نيز ميتوان استفاده كرد
كه همواره وقفه اول اخرين RETURN را دارد و در داخل هر
روال وقفه RETURN وقفه ديگر


البته شما فعلا اين كد را بررسي كنيد

کد:
Config Int1 = Rising
  Config Int0 = Rising
Enable Interrupts
Enable Int1
On Int1 Vh
Enable Int0
On Int0 Vd

Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 0
Do

Loop
Vh:

  Portb.1 = 1
  Waitms 2000
  Portb.1 = 0
Return

Vd:

  Portb.0 = 1
   Waitms 2000
   Portb.0 = 0
Return

[تصویر:  2sml7lur1h5a.png]

مدار پروتئوس و فايل هگز وباس

.rar   INT1AVR.rar (اندازه: 37.78 KB / تعداد دفعات دریافت: 87)

موفق باشيد
(آخرین ویرایش در این ارسال: ۱۵-اسفند-۱۳۹۳, ۰۲:۴۶:۱۰، توسط vigraz.)
۱۵-اسفند-۱۳۹۳, ۰۱:۲۵:۴۵
ارسال‌ها
پاسخ
تشکر شده توسط : alimogmov, رسول
رسول غایب
بازنشسته
*****

ارسال‌ها: 2,458
موضوع‌ها: 237
تاریخ عضویت: دى ۱۳۸۸

تشکرها : 15003
( 20196 تشکر در 5767 ارسال )
ارسال: #239
RE: سوالهای برنامه نویسی با کامپایلر BASCOM
با تشکر ویژه از شما که وقت گذاشتین ..

(۱۵-اسفند-۱۳۹۳, ۰۱:۲۵:۴۵)vigraz نوشته است: اگر در حين اجراي وقفه اول وقفه دوم اتفاق بيافتد بخاطر اينكه
روال وقفه اول تمام نشده وقوع وقفه دوم ذخيره شده و بعد از اتمام
وقفه اول وقفه دوم اجرا ميشود

اما هدف من از این پرسش و برنامه هم همینه که اینجوری نشه دیگه!!

یعنی در بین راهه وقفه اولی اگه وقفه دوم فعال شد دیگه منتظر نشه که وقفه اول تموم بشه و بعدش دومی که ذخیره شده شروع به کار بکنه

باید در هرجایی که وقفه دوم فعال شد دیگه وقفه اول قطع بشه و بره روی دومی
۱۵-اسفند-۱۳۹۳, ۱۹:۰۳:۰۶
ارسال‌ها
پاسخ
تشکر شده توسط : vigraz
kelaran آفلاین
كاربر دو ستاره
**

ارسال‌ها: 76
موضوع‌ها: 14
تاریخ عضویت: اسفند ۱۳۹۱

تشکرها : 61
( 13 تشکر در 12 ارسال )
ارسال: #240
RE: سوالهای برنامه نویسی با کامپایلر BASCOM
سلام من یه سوال پرسیدم از دوستان خواهشمندم اگه امکان داره جواب ما رو بدین.سوالم رو اینجا قرار میدم
" واسم یه سوال پیش اومده ممنون میشم جواب مارو بدین.اینکه تو مبدلهاخارجی پایه کلاک در حالت بیکاری بالا باشه یا پایین چه فرقی میکنه؟اصولا این دوحالت نسبت به هم چه مزیت یا عیبی دارند؟ (فرقی نمیکنه انالوگ به دجیتال یا دیجیتال به انالوگ)
۱۵-اسفند-۱۳۹۳, ۱۹:۲۲:۳۰
ارسال‌ها
پاسخ
vigraz آفلاین
عضو افتخاری
****

ارسال‌ها: 164
موضوع‌ها: 0
تاریخ عضویت: مرداد ۱۳۹۱

تشکرها : 341
( 336 تشکر در 151 ارسال )
ارسال: #241
RE: سوالهای برنامه نویسی با کامپایلر BASCOM
(۱۵-اسفند-۱۳۹۳, ۱۹:۰۳:۰۶)رسول نوشته است: با تشکر ویژه از شما که وقت گذاشتین ..

(۱۵-اسفند-۱۳۹۳, ۰۱:۲۵:۴۵)vigraz نوشته است: اگر در حين اجراي وقفه اول وقفه دوم اتفاق بيافتد بخاطر اينكه
روال وقفه اول تمام نشده وقوع وقفه دوم ذخيره شده و بعد از اتمام
وقفه اول وقفه دوم اجرا ميشود

اما هدف من از این پرسش و برنامه هم همینه که اینجوری نشه دیگه!!

یعنی در بین راهه وقفه اولی اگه وقفه دوم فعال شد دیگه منتظر نشه که وقفه اول تموم بشه و بعدش دومی که ذخیره شده شروع به کار بکنه

باید در هرجایی که وقفه دوم فعال شد دیگه وقفه اول قطع بشه و بره روی دومی

سلام
من تاخير دو ثانيه را براي توضيح كد گذاشتم و گرنه برگشت به
برنامه بعد از وقوع وقفه بسيار سريع است واين زير روال است
كه اجرايش زمان ميبرد
اگر در هر روال وقفه يك عمل انجام شود و سپس بعد از اين عمل
RETURN بكاربرده شود وقفه تمام ميشود
پس روال اصلي ميتواند بايك حلقه معمولي اجراشود
چون با زير روال برنامه تست وقوع
وقفه هم بصورت موازي مشغول كار است
نتيجه اين است كه در اين برنامه ها هر وقفه بصورت يك حلقه معمولي در
ميايد
ممكن است برنامه هاي زيرروال شما پيچيده باشندو... اما در اين روش فرقي
نميكند و با حلقه DO LOOP براي هر حلقه يا زيرروال ميتوان هر تعداد
وقفه را بكار برد
اما به نسبت پيچيدگي وتعداد خطهاي برنامه


با بررسي اين كد بهتر متوجه ميشويد
کد:
$regfile = "m8def.dat"
$crystal = 4000000                                          '


Config Timer0 = Timer , Prescale = 8


Config Int1 = Rising
  Config Int0 = Rising
Enable Interrupts
Enable Int1
On Int1 V1
Enable Int0
On Int0 V0

Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 0

Do
Loop
V1:

  Portb.1 = 1
  Portb.0 = 0
  Return
  
V0:
  Portb.0 = 1
  Portb.1 = 0
  Return

مدار هم همان مدار قبلي است

سپاس
(آخرین ویرایش در این ارسال: ۱۶-اسفند-۱۳۹۳, ۰۲:۰۰:۵۴، توسط vigraz.)
۱۶-اسفند-۱۳۹۳, ۰۰:۴۴:۳۲
ارسال‌ها
پاسخ
تشکر شده توسط : رسول
vigraz آفلاین
عضو افتخاری
****

ارسال‌ها: 164
موضوع‌ها: 0
تاریخ عضویت: مرداد ۱۳۹۱

تشکرها : 341
( 336 تشکر در 151 ارسال )
ارسال: #242
RE: سوالهای برنامه نویسی با کامپایلر BASCOM
سلام
متوجه شدم كه حلقه هاي بعدي اجرا نميشوند و برنامه همواره
به حلقه تهي ابتدا برنامه پرش ميكند به همين علت كد بالائي
را ويرايش كردم
تا موقعي كه مشخص نشود زيرروالها براي چه كار هستند نميتوان
در اين حلقه كدي نوشت

سپاس
۱۶-اسفند-۱۳۹۳, ۰۳:۰۰:۰۶
ارسال‌ها
پاسخ
تشکر شده توسط : رسول


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Question [سوال] کمک در برنامه نویسی دور موتور خودرو HPower 6 2,592 ۲۵-آبان-۱۳۹۷, ۲۲:۰۳:۵۷
آخرین ارسال: alimogmov
  برنامه نویسی AVR به روش فلوچارتی با نرم افزار FLOWCODE AVR V3 koorosh.k 8 12,641 ۲۴-آذر-۱۳۹۵, ۲۲:۴۶:۰۸
آخرین ارسال: 1نفر
  BASCOM-AVR V2.0.5.0 + Patch p3rtic@n 2 5,472 ۰۵-شهریور-۱۳۹۴, ۱۵:۴۵:۰۱
آخرین ارسال: ehsan2774
  برنامه نویسی بیسکام soy1345 17 13,270 ۲۳-مرداد-۱۳۹۴, ۱۷:۱۷:۵۶
آخرین ارسال: MN-123
  آموزش برنامه نویسی ربات مسیریاب kamran0080 3 10,199 ۲۶-تير-۱۳۹۴, ۱۷:۲۵:۳۶
آخرین ارسال: sona2
Exclamation کمک در مورد برنامه نویسی avr . saeedsniper2 5 3,585 ۱۵-اردیبهشت-۱۳۹۴, ۰۹:۲۰:۳۳
آخرین ارسال: kimiafars
  سوال در مورد انتخاب سنسور و برنامه نویسی dj kaka 10 6,397 ۰۲-اسفند-۱۳۹۳, ۰۹:۱۱:۰۳
آخرین ارسال: dj kaka
  کمک در برنامه نویسی mehdi_mecha 1 2,363 ۰۸-بهمن-۱۳۹۳, ۱۵:۵۸:۰۵
آخرین ارسال: a.mehran
  خطا در نصب کامپایلر ۶٫۲ ATMEL Studio cinapa 0 1,536 ۰۷-بهمن-۱۳۹۳, ۱۵:۲۸:۳۱
آخرین ارسال: cinapa
  [آموزشی] Exclamation دانلود ویرایش دوم کتاب اصول کار با میکرو کنترلر های avr و کامپایلر بسکام a.mehran 0 3,259 ۱۷-آبان-۱۳۹۳, ۱۸:۵۵:۳۰
آخرین ارسال: a.mehran

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS