آموزش PIC اتصال کلید به PIC (قسمت سوم)
در الکترولب قبلا دو قسمت از آموزش PIC رو نوشتم این آموزش نیز در ادامه همان آموزش ها می باشد. این آموزش ها همراه با شبیه سازی پروتیوس بوده تا دوستان نیازی به خریدن ابزار جدید نداشته باشن و بتونن از آموزش ها استفاده کنند. در قسمت های قبلی نحوه ی استفاده از برنامه ی mplab X رو آموزش دادم و یک led چشمک زن به عنوان اولین پروژه راه اندازی کردیم. در ادامه به نحوه اتصال کلید به میکروکنترلر PIC می پردازیم.
شماتیک لازم برای اتصال کلید به PIC
برنامه ی اتصال کلید به PIC
عملکرد برنامه به این صورت است که وقتی کلید فشار داده می شود led متصل به پایه ی RB0 سه ثاینه روشن شده و بعد خاموش می شود.
#define _XTAL_FREQ 8000000 #include <xc.h> // BEGIN CONFIG #pragma config FOSC = HS // Oscillator Selection bits (HS oscillator) #pragma config WDTE = ON // Watchdog Timer Enable bit (WDT enabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled) #pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming) #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) #pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control) #pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off) //END CONFIG int main() { TRISB0 = 0; //RB0 as Output PIN TRISD0 = 1; //RD0 as Input PIN RB0 = 0; //LED Off while(1) { if(RD0 == 0) //If Switch Pressed { RB0 = 1; //LED ON __delay_ms(3000); //3 Second Delay RB0 = 0; //LED OFF } } return 0; }
توضیح برنامه اتصال کلید به PIC:
رجیستر TRIS:
این رجیستر جهت خروجی یا وروردی بودن هر پین از هر پورت را مشخص میکند. طبق عکس پایین اگر TRIS یک باشد پین به صورت ورودی تنظیم میشود. و اگر مقدار صفر به این رجیستر اختصاص داده شود پین به صورت خروجی تنظیم می شود.
رجیستر PORT:
اگر به هریک از بیت های این رجیستر مقدار ۱ داده شود پین متناظر از پورت در صورت خروجی بودن به HIGH تغییر وضعیت می دهد. و اگر ۰ مقدار دهی شود وضعیت پین مورد نظر به LOW تغییر می کند. در پایین نمونه مثالی در مورد نحوه ی مقدار دهی به این رجیستر ها قرار می دهم.
TRISC0 = 1; //Makes 0th bit of PORTC Input TRISC5 = 0; //Makes 5th bit of PORTC Output RB3 = 1; //Makes 3ed bit of PORTB at Logic High RB7 = 0; //Makes 7th bit of PORTB at Logic Low
دانلود شبیه سازی اتصال کلید به PIC
اگر در فهم برنامه مشکلی داشتید بگید تا بیشتر توضیح بدم.