در ادامه مجموعه آموزش میکروکنترلرهای PIC توسط کامپایلر CCS C، در این قسمت به عنوان تمرین آموزشهای جلسات قبل، برنامه یک تایمر ساده که قابلیت زمان گیری تا 99 ثانیه را دارد مینویسیم.شکل زیر شماتیک این برنامه را نشان میدهد.
عملکرد مدار به اینگونه است که با وصل کلید Start/Stop تایمر شروع به شمارش میکند و با قطع آن تایمر میایستد و آخرین عدد شمارش شده بر روی سون سگمنت باقی میماند. همچنین در هر لحظه با زدن کلید Reset تایمر به عدد صفر باز میگردد.
در این برنامه ما از وقفه شماره دو برای کلید Reset استفاده کردهایم و کدهای مربوط به کلید Start/Stop را در حلقه اصلی برنامه نوشتیم.
در این آموزش نحوهی کار با سون سگمنت چند رقمی را یاد میگیریم.
برای شروع مانند جلسات قبلی آموزش، تنظیمات نوع میکروکنترلر و کلاک را انجام میدهیم. تنظیمات پایههای میکروکنترلر را مطابق شکل زیر انجام میدهیم.
در ابتدای برنامه متغیری برای شمارش زمان به نام counter تعریف میکنیم. همچنین در وقفه مربوط به کلید Reset مقدار این شمارنده را صفر میکنیم. در ابتدای حلقه main کدهای مربوط به سون سگمنت کاتد مشترک را اضافه میکنیم.
ٰمتغیر i را برای ایجاد زمان یک ثانیه تعریف میکنیم. همچنین دو متغیر با نامهای first_digit و second_digit برای نمایش رقم یکان و دهگان بر روی سون سگمنت تعریف میکنیم.
در حلقهی دائمی برنامه یا همان حلقه while(True)، یک حلقه while به منظور بررسی وضعیت کلید Start_Stop تعریف میکنیم و تا زمانی که این کلید وصل میباشد، کدهای درون این حلقه اجرا میشود.
در درون این حلقه برای نمایش رقم یکان و دهگان، ابتدا پایههای کنترلی هر رقم را با توجه به این که سون سگمنت کاتد مشترک است صفر میکنیم و سپس رقم یکان و دهگان را بر روی هر سگمنت حدود 5 میلی ثانیه نمایش میدهیم و به دلیل تکرار این فرایند، اعداد روی سگمنت ثابت نشان داده خواهد شد.
برای ایجاد زمان یک ثانیه از حلقه for استفاده کردهایم. مقدار عدد لازم برای تکرار این حلقه برای ایجاد زمان یک ثانیه به صورت تقریبی و با آزمون و خطا به دست میآید.
در ادامه برنامه نیز در صورتی که کلید Start_Stop وصل نباشد، عدد شمارنده را روی سون سگمنت نمایش میدهیم.
شکل زیر نتایج شبیه سازی را نشان میدهد.
منبع: میکرودیزاینرالکترونیک