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

شروع موضوع توسط noorworkshop ‏17/2/16 در انجمن AVR

  1. noorworkshop

    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 قرار بگیره بدون هیچ نگرانی نمایش داده میشه.
    پایان
    hesamavr، Sepehr20mg10، Ghost77 و 2 نفر دیگر از این ارسال تشکر کرده اند.
  2. saeedmcu

    saeedmcu همکار جدید

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

به اشتراک بگذارید