پاسخ : پروژه های انجام شده با کامپایلر IAR
سلام جناب زوار عزیز
خط اول پورت b رو که به ترتیب از pb0 تا pb7 به پایه های a تا dp سون سگمن وصل هستند رو مقدار دهی می کنه به این ترتیب که میاد با توجه به اینکه در کدوم ستون قرار گرفته مقدار متناظر با اون ستون رو از جدول nom که در حافظه فلش ذخیره شده انتخاب میکنه و نهایت روی پورت b می ریزه
در خط دوم میاد هر دفعه یکی از ستون ها که به ترتیب به پایه های pc0 تا pc3 وصل هستند رو سلکت می کنه از اونجا که سون سگمنت آند مشترک هست پس باید پایه متناظر با اون رو یک کنیم
در خط سوم مقدار dg یا ستونی که در حال نشون دادن هست رو با مقدار تایمر یک که منبع کلام اون پایه t1 و حساس به لبه پایین رونده باشه رو چک میکنه که در واقع مقدار tcnt1 نمایانگر ستونی هست که می خواهیم چسمک بزنه ، خوب برای انجام عمل چشمک زدن باید هر چند سیکل یک بار پایه سلکت مربوط به اون ستون رو صفر کنیم به خاطر همین میایم یک متغیر از نوع unsigned char تعریف میکنیم و اون رو هر بار یک واحد افزایش میدیم تا اینکه به مقدار 130 که تقریبا نصف 255 هست برسه به این ترتیب در ابتدا با چک کردن اینکه ستونی که الان درحال نمایش دادن هست ، ستونی که باید چشمک بزنه هست و بعد از اون میاد چک میکنه که آیا مقدار متغیر i به 130 رسیده یا نه که اگر جواب غلط باشه ستون روشن میمونه واگر درست باشه ستون خاموش ، خوب این خاموش موندن تا زمانی ادامه داره که متغیر i از 130 بیشتر باشه اما همونطور که می دونید با افزایش یک واحدی از مقدار 255 به بعد دوباره مقدار متغیر i صفر میشه و شرط غلط و ستون هم دوباره روشن میشه
در خط چهارم از اونجا که 4 تا ستون بیشتر نداریم یعنی dg= 0 ,dg=1,dg=2,dg=3 میاد هر بار ستون رو یکی افزایش میده و چک میکنه که آیا ستون انتخاب شده توی این محدوده هست یا خیر که اگه نباشه یعنی بیشتر از 3 بشه پس باید ستون اول انتخاب بشه به این ترتیب در بار بعدی ستون بعدی انتخاب خواهد شد
سلام جناب زوار عزیز
خط اول پورت b رو که به ترتیب از pb0 تا pb7 به پایه های a تا dp سون سگمن وصل هستند رو مقدار دهی می کنه به این ترتیب که میاد با توجه به اینکه در کدوم ستون قرار گرفته مقدار متناظر با اون ستون رو از جدول nom که در حافظه فلش ذخیره شده انتخاب میکنه و نهایت روی پورت b می ریزه
در خط دوم میاد هر دفعه یکی از ستون ها که به ترتیب به پایه های pc0 تا pc3 وصل هستند رو سلکت می کنه از اونجا که سون سگمنت آند مشترک هست پس باید پایه متناظر با اون رو یک کنیم
در خط سوم مقدار dg یا ستونی که در حال نشون دادن هست رو با مقدار تایمر یک که منبع کلام اون پایه t1 و حساس به لبه پایین رونده باشه رو چک میکنه که در واقع مقدار tcnt1 نمایانگر ستونی هست که می خواهیم چسمک بزنه ، خوب برای انجام عمل چشمک زدن باید هر چند سیکل یک بار پایه سلکت مربوط به اون ستون رو صفر کنیم به خاطر همین میایم یک متغیر از نوع unsigned char تعریف میکنیم و اون رو هر بار یک واحد افزایش میدیم تا اینکه به مقدار 130 که تقریبا نصف 255 هست برسه به این ترتیب در ابتدا با چک کردن اینکه ستونی که الان درحال نمایش دادن هست ، ستونی که باید چشمک بزنه هست و بعد از اون میاد چک میکنه که آیا مقدار متغیر i به 130 رسیده یا نه که اگر جواب غلط باشه ستون روشن میمونه واگر درست باشه ستون خاموش ، خوب این خاموش موندن تا زمانی ادامه داره که متغیر i از 130 بیشتر باشه اما همونطور که می دونید با افزایش یک واحدی از مقدار 255 به بعد دوباره مقدار متغیر i صفر میشه و شرط غلط و ستون هم دوباره روشن میشه
در خط چهارم از اونجا که 4 تا ستون بیشتر نداریم یعنی dg= 0 ,dg=1,dg=2,dg=3 میاد هر بار ستون رو یکی افزایش میده و چک میکنه که آیا ستون انتخاب شده توی این محدوده هست یا خیر که اگه نباشه یعنی بیشتر از 3 بشه پس باید ستون اول انتخاب بشه به این ترتیب در بار بعدی ستون بعدی انتخاب خواهد شد
دیدگاه