آموزش میکروکنترلر AVR قسمت چهارم : برنامه ای ساده برای کدویژن و بسکام

آموزش میکروکنترلر AVR قسمت چهارم : برنامه ای ساده برای کدویژن و بسکام

آموزش میکروکنترلر AVR قسمت چهارم : برنامه ای ساده برای کدویژن و بسکام
آموزش میکروکنترلر AVR قسمت چهارم : برنامه ای ساده برای کدویژن و بسکام

آموزش میکروکنترلر AVR – قسمت چهارم ;

این سری آموزش‌ها که به جرات می توان آنها را کامل‌ترین آموزش‌های موجود دانست با صرف هزینه زیاد و با کیفیت و جزییات بالا توسط استاد ارجمند جناب آقای کی‌نژاد تهیه شده است و به صورت رایگان در اختیار عموم قرار گرفته است.

سیسوگ در قسمت سوم مجموعه آموزش میکروکنترلر AVR   ورودی ، خروجی پورت‌های میکروکنترلر را معرفی کرد. در این قسمت می‌خواهیم برنامه LED که در قسمت قبل راجب آن بحث شد را به زبان C و BASIC بنویسیم، بدین منظور که PINB.0 اول خروجی تعریف شود و در مرحله بعد مقدار HIGH روی آن قرار بگیرد.

برنامه نویسی برای نرم‌افزار کدویژن:

برنامه نویسی با زبان کدویژن AVR

در خط اول <include<mega32.h# فراخوانی می‌­­شود. در واقع mega32.h  فایلی در کامپایلر است و تعاریف رجیسترهای mega32 در آن وجود دارد. از طریق includeکردن فایل mega32، کامپایلر متوجه می‌­شود  برنامه با atmega32 نوشته شده است.

در خط بعدی تابع main از نوع void تعریف شده است، که به صورت زیر شامل تابع و بدنه تابع می­‌باشد:

 

 

در بدنه تابع رجیسترها و برنامه مورد نظر نوشته می­‌شود.

در ابتدا باید  به صورت زیر، پین مورد نظر را خروجی تعریف کنیم:

 

 

که منظور از جمله بالا این است که PINB.0 برابر با یک  و جهت آن خروجی باشد. به جای عبارت بالا می­‌توان از عبارت زیر نیز استفاده کرد:

 

 

علامت “<<  ” در برنامه نویسی به معنای شیفت به چپ محسوب می‌شود. DDB0 در تعاریف کامپایلر CODEVISION معادل صفر می‌­باشد. پس معنی عبارت بالا این است که 1 به اندازه 0 بیت به سمت چپ شیفت داده شده است،که برابر با یک می‌باشد،

در خط بعد مقدار PINB.0 را مشخص می­‌کنیم، در این برنامه منظور ما یک کردن این پین می­‌باشد، بنابراین داریم:

 

 

هم‌چنین به جای عبارت بالا می‌­توان مانند خط قبل از عبارت زیر استفاده کرد.

 

 

حال اگر این خط وجود نداشته باشد با توجه به اینکه پین مورد نظر خروجی و مقدار پیش فرض آن 0 است، در نتیجه در خروجی وضعیت low را خواهیم داشت.

خط بعدی حلقه (while(1 است، از آنجا که CPU به صورت مداوم در حال اجرای برنامه است و قرار نیست برنامه دیگری انجام دهد پس باید این برنامه در یک حلقه قرار بگیرد.

در نهایت برنامه ما به صورت زیر جمع بندی می­‌شود:

 

برنامه نویسی برای نرم‌افزار بسکام:

برنامه نویسی با زبان بسکام AVR

حال می‌­خواهیم با زبان بسکام برنامه را بنویسیم. همانند برنامه قبل در مرحله اول و خط اول باید کتابخانه میکروکنترلر مورد نظر فراخوانی شود. به صورت زیر:

 

 

در دستور بعدی مقدار فرکانس نوسان برای نرم افزار مشخص می‌شود، البته باید بدانیم که مقدار فرکانس نوسان را نمی‌­شود از طریق برنامه تغییر داد بلکه باید از طریق فیوز بیت ها و دستگاه پروگرامر این کار را انجام داد، ولی حسن آوردن این خط در برنامه این است که اگر تاخیر و عملیاتی در برنامه باشد با اطلاع از فرکانس اسیلاتور سیستم می­‌باشد.

 

 

حال اگر به جای عدد 1000000  مقدار 8000000  نوشته شود این خط تغییری در وضعیت فرکانس اسیلاتور ایجاد نمی‌­کند، ولی فرق آن این است که اگر قرار باشد از طریق بسکام تاخیری ایجاد شود با لحاظ مقدار این فرکانس نوسان می­‌باشد. پس اگر این عدد اشتباه نوشته شود آن قسمتی از عملیات که مربوط به بسکام است با اختلال مواجه خواهد شود. پس همیشه این عدد باید برابر با فرکانس نوسان واقعی میکروکنترلر باشد که به وسیله پروگرامر و با تنظیم فیوز بیت‌ها تنظیم می‌­­شود.

اگر در بسکام بخواهیم پین مورد نظر را تغییر دهیم و خروجی کنیم از دستور config pinB.0=output استفاده می­‌کنیم.

دستور بعدی پین مورد نظر، که به عنوان خروجی لحاظ شده SET می‌کند. یعنی برابر با یک قرار می­دهد.

 

 

در بسکام دستورات دیگری مثل RESET نیز وجود دارد که پین مورد نظر را 0  قرار می‌­دهد. همچنین دستور toggle برای not کردن استفاده می‌­شود که اگر پین مورد نظر 1بود آن را صفر و بالعکس می‌کند.

در نهایت این برنامه از دستور Do Loop که همانند دستور while  است و در آخر از کلمه end به معنی پایان برنامه استفاده می­‌شود. پس بنابراین برنامه به صورت زیر می‌­باشد:

 

در قسمت پنجم آموزش میکروکنترلر AVR خلاصه ای از کلیه امکانات موجود در AVR بیان می‌شود. با سیسوگ همراه باشید.

 

حمایت از electronic girl

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

electronic girl
electronic girl

دوستدار الکترونیک

دیدگاه ها

0 دیدگاه

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

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

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

امنیت همیشه و در همه‌ی اعصار، مقوله‌ی مهم و قابل‌توجه‌ ای بوده و همیشه نوع بشر به دنبال امنیت بیشتر، دست به ابداعات و اختراعات گوناگونی زده است. ریموت کنترل یکی از این اختراعات است. در این مقاله، به بررسی امنیت انواع ریموت‌های کنترل خواهیم پرداخت....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 9 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 2 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک