آموزش رفرش میکرو برای نمایش بر روی سون سگمنت

noorworkshop

همکار جدید
بنام خدا
واسه ی رفرش کردن بهتر ، باید از تایمر ها استفاده کنیم تا به برنامه نویسی اصولی نزدیک تر شیم.
چرا که استفاده از تاخیر در برنامه کاره درستی نیست
فرض کنیم سی پیو مشغول کاری باشه و رفرش دچاره چشم میشه
در ابتدا متغیر های برای سگمنت ها اختصاص میدیم
volatile unsigned char digt[4]={0,0,0,0};
چرا volatile در اول برنامه استفاده شده و اصلا یعنی چی:


volatile
زمانی در برنامه استفاده میشه که در 2 سطح از برنامه یعنی وقفه وتابع main قراره متغیری تغییر مقدار یا خونده بشه در کامپایلرهای اصولی به این صورت تعریف میشه

خب فرض کنیم الان تایمر ما هر یک میلی ثانیه سریز میشه میایم در وقفه اش ای ن کد هارو لجاظ میکنیم
تنظیمات بر اساس سخت افزار زیر صورت میگیره:
upload_2016-2-16_20-36-19.png
static unsigned char ref_step=0;
خب گام اول خاموش کردن تمامه سگمنت هاست:
PORTC&=~((1«2)|(1«3)|(1«4)|(1«5));
خب این قسمت میاد با توچه به این که ممکنه پایه های portc متصل به device های دیگه باشه فقط اون 4 پین رو صفر میکنه
گام دوم میایم دیتا رو ، روی پورت دیتا میرزیم:
PORTD=digt[ref_step];
گام سوم روشن کردن پایه کنترلی هست:
PORTC|=1«(2+ref_step)
چون پایه اول PC2 هستش مقدار 2 رو با ref_stepجمع میزنیم
گام اخر اضافه کردن و کنترل کردن متغیر ref_step هستش
if(++ref_step==4)ref_step==0;
الان هر مقدار در متغیر های digt قرار بگیره بدون هیچ نگرانی نمایش داده میشه.
پایان
 

saeedmcu

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