آموزش میکروکنترلر STM8 جلسه دوم-خواندن ورودی

در این پست قصد دارم در مورد خواندن ورودی توسط میکروکنترلر STM8 رو آموزش بدم. در جلسه قبلی کار با نحوه خروجی کردن پایه ها رو یاد گرفتیم و الان در مورد نحوه خواندن اطلاعات از ورودی رو آموزش می دم.برای ورودی کردن پایه های یک پورت باید از رجیستری با نام PX_DDR استفاده کرد. این رجیستر برای ورودی و خروجی کردن یک پایه کاربرد دارد و نماد آن را در زیر می توانید ببینید.

آموزش میکروکنترلر STM8 جلسه دوم-خواندن ورودی


همونطوری که در شکل بالا می بینید این رجیستر به صورت 8 بیتی بوده و هر بیت از آن متناظر با یک پایه می باشد. به عنوان مثال بیت شماره صفر این رجیستر متناظر با پایه شماره صفر و بیت شماره 7 متناظر با پایه شماره 7 می باشد. با نوشتن مقدار صفر در بیت های این رجیستر پایه به صورت ورودی و با نوشتن یک پایه به صورت خروجی خواهد شد.بعد از ریست کردن میکروکنترلر به صورت پیش فرض تمام پایه ها به صورت ورودی می باشند.در کد زیر پایه شماره 5 پورت E را ورودی کرده ایم.

همچنین در کد زیر بعد از ورودی کردن پایه مقاومت پول آپ یا همان بالاکش را فعال کرده ایم. این مقاومت از داخل به ولتاژ مثبت 5 ولت وصل شده است بنابراین در حالت عادی ورودی ما یک می باشد.


رجیستری که وظیفه فعال کردن مقاومت پول آپ را برعهده دارد CR1 نام دارد این رجیستر 8 بیتی می باشد و در زیر نمای آن نشان داده شده است.

آموزش میکروکنترلر STM8 جلسه دوم-خواندن ورودیهمانطور که در شکل بالا می بینید با ورودی کردن پایه دو انتخاب وجود دارد. اگر مقدار صفر در بیت های این رجیستر نوشته شود ورودی به حالت شناور تبدیل می شود و شما باید به صورت بیرونی یک مقاومت را به صورت پول آپ یا به صورت پول دان  به پایه ورودی شده متصل کنید. اگر مقدار یک در رجیستر نوشته شود یک مقاومت به صورت پول آپ از داخل به پایه ورودی شده متصل می شود و دیگر لازم نیست شما یک مقاومت به صورت بیرونی به پایه ورودی شده متصل کنید.


با استفاده از رجیستری با نام PX_CR2 شما می توانید وقفه ها را فعال کنید. در واقع هنگام ورودی کردن پایه ها می توان وقفه ها را فعال و یا غیر فعال نمود که با نوشتن مقدار صفر وقفه غیر فعال و با نوشتن مقدار یک وقفه فعال خواهد شد. در این پست هدف ما کار با وقفه ها نیست و در جلسات بعدی در مورد وقفه ها صحبت خواهد شد.

در زیر یک نمونه مثال برای کار با واحد ورودی آورده شده است.

آموزش میکروکنترلر STM8 جلسه دوم-خواندن ورودیدر مثال بالا در داخل شرط if در صورت صفر شدن پایه از خارج دستورات داخل if  اجرا خواهد شد. همچنین شرط دیگر موجود در if که حلقه while می باشد به این منظور نوشته شده است تا زمانیکه پایه در وضعیت صفر قرار داشته باشد در این خط برنامه متوقف می باشد و در صورت یک شدن پایه ورودی برنامه به خط بعد از حلقه while می رود و دستورات بعدی را اجرا می کند.

کانال تلگرام ایده نگر