قبلا از اینکه بحث را ادامه بدهم لازم می دانم بگم که نرم افزار پایه ای ما که از آن استفاده خواهیم کرد نرم افزار کدویژن می باشد.
در زبان C به طور کلی در ابتدای برنامه چند کتابخانه داریم.
تعریف کتابخانه در زبان C: به طور کلی برای کم حجم کردن برنامه از یکسری دستوراتی استفاده می کنیم که آن دستورات شامل چندین خط برنامه می باشد که در ابتدای برنامه وقتی اسم کتابخانه را بیاوریم دیگر نیاز به آن برنامه ها نیست.
به طور مثال اگر شما یک متن تکراری را در چند صفحه بخواهید تایپ کنید وقت زیادی را می گیرد بهتر است تا آن متن را کپی و در جای خود پیست کنید.
کتابخانه نیز همین کار را انجام می دهد یک متن را می توانید در یک برنامه فقط با بکار بردن نامش از آن استفاده کنید.
اکثر کتاب خانه ها تعریف شده است و کافیست شما نام آنها در برنامه بنویسید.
البته خود شما هم می توانید برنامه ای را به عنوان کتاب خانه ذخیره کرده و از آن استفاده کنید.
برای استفاده از کتاب خانه از دستور
#include
در واقع در این دستور ما کتابخانه ی mega16 که یک آی سی می باشد را باز کردیم.
بعداز کتابخانه ها و یکسری وقفه ها می رسیم به دستور
void main(void)
{
...
}
در واقع(void main(void حداقل تابعی است که در زبان سی از آن استفاده می شود!!
در این تابع است که برنامه های متداول ما نوشته می شود.
به طور مثال ورودی و خروجی ها در این تابع تعریف می شود و ...
ورودی و خروجی چیست؟
در یک میکروکنترلر چندین پایه وجود دارد که به غیر از بعضی پایه ها مانند منبع ولتاژ آی سی و پایه ی ریست می توان از آن پایه ها استفاده کرد و آنها را ورودی و یا خروجی کرد.
می توان داده ای را از یک سوئیچ گرفت و آن را پردازش کرد و سپس یک خروجی در یک فاصله زمانی مشخص از پایه ی خوروجی گرفت.
پورت ها
در یک آی سی بسته به نوع آن و تعداد پایه های موجود در آن پورت هایی را نیز داریم که این پورت ها از پایه های همان آی سی تشکیل شده است که یک پورت سالم دارای 8 پایه از یک آی سی را به خود اختصاص می دهد.
البته بعضی از آی سی ها هستند که دارای پورت های ناقص هستند یعنی تعداد آنها کمتر از 8 پایه می باشد.
در ضمن پورت ها را با حروف لاتین نمایش می دهند PORTA (پورت A) که باید با حروف بزرگ نوشته شوند.
حال اگر بخواهیم یک پایه از یک آی سی را ورودی یا خروجی تعریف کنیم به باید با پورت ها کاملا آشنایی پیدا کنیم البته لازم به ذکر است که ورودی و خروجی آی سی ها با دستور DDR نمایش داده می شود که ورودی و خروجی یک آی سی را مشخص می کند.
برای اینکه یک پورت را مشخص کنیم که ورودی باشد یا خروجی باید اول دستور DDR را بنویسیم سپس نام پورت را نیز ذکر کنیم البته با حروف بزرگ.
به طور مثال :
DDRA=0x00;//در این دستو مشخص شده که پورت ای به طور کامل به عنوان ورودی تعریف شده است
در مثال بالا پورت A یه عنوان پورت ورودی تعریف شده است که چگونگی این عمل را با هم کار می کنیم.
در قبل گفتیم که یک پورت سالم شامل 8 پایه است. برای اینکه هر کدام از این پایه را ورودی و خروجی تعریف کنیم باید با یکسری از قوانین آشنایی پیدا کنیم.
برای این کار باید با مبناها آشنایی داشته باشیم.
اول مبنای صفر و یک را در نظر می گیریم که در اینجا صفر یعنی ورودی و یک یعنی خروجی.
پس در این مثال هر جا یک بود یعنی آن پایه از آن پورت خروجی و هر جا صفر بود یعنی آن پایه از آن پورت ورودی است.
حال برای بهتر درک کردن از 8 عدد مربع به عنوان 8 پایه از یک پورت استفاده می کنیم.
در این مثال می خواهم از پورت بی استفاده کنم!!
صفر | یک | صفر | صفر | صفر | صفر | صفر | صفر |
در پورت بالا فقط یک پایه را بنده به عنوان خروجی در نظر گرفتم و بقیه پایه ها ورودی هستند حال اگر ما این صفر و یک ها را به صورت عدد در بیرون از جدول بخواهیم بنویسیم می شود:00000010
باید تا به اینجا متوجه شده باشید که این کد بالا از مبنای 2 پیروی می کند که خیلی بهتر می شود اگر مبناها را بلد باشید البته در برنامه کدویژن زیاد نیاز نداریم ولی اگر بلد نباشید دوچار مشکل می شویم.
پس به راحتی می نویسیم:
DDRB=0b00000010;
می توان صفرهای پشت یک را نگذاریم یعنی
DDRB=0b10;
حال می خواهم همین کار را در پورت A نیز انجام بدهم
DDRA=0b10;
در زبان سی اگر بخواهیم از مبنای 2 استفاده کنیم باید بعد از دی دی آر پورت مورد نظر = (=DDRA) از صفر بی استفاده کنیم.
اگر مبنای 10 باشد باید بدون هیچ پیش حرفی مقدار را می نویسیم.
به طور مثال اگر 10 از مبنای 2 را به مبنای 10 ببریم حاصل می شود 2
یعنی :
DDRA=2;
اگر هم در مبنای هگز باشد با پیشوند صفر ایکس مشخص می شود.
DDRA=0x2;
در نرم افزار کدویژن به صورت پیش فرض از مبنای هگز استفاده می کند که با توجه به رعایت کارهای بالا می توانید از مبناهای دیگر نیز در نرم افزار کدویژن استفاده کنید.
یا علی