LED چشمک زن با میکروکنترلر PIC
خانواده ی PIC16 میکروکنترلر های 8 بیتی هستند که در کنار قیمت مناسب از امکانات مناسبی نیز برخوردار هستند. مثل هر میکروکنترلر دیگری تعدادی I/O دارند اولین و ساده ترین قدم برای شروع کار با یک میکروکنترلر یادگیری نحوه ی کنترل پایه های I/O در یک میکروکنترلر است. در ادمه رجیستر های لازم برای کار با I/O ها در میکروکنترلر PIC16 توضیح داده خواهد شد.
رجیستر TRIS:
این رجیستر جهت خروجی یا وروردی بودن هر پین از هر پورت را مشخص میکند. طبق عکس پایین اگر TRIS یک باشد پین به صورت ورودی تنظیم میشود. و اگر مقدار صفر به این رجیستر اختصاص داده شود پین به صورت خروجی تنظیم می شود.
رجیستر PORT:
اگر به هریک از بیت های این رجیستر مقدار 1 داده شود پین متناظر از پورت در صورت خروجی بودن به HIGH تغییر وضعیت می دهد. و اگر 0 مقدار دهی شود وضعیت پین مورد نظر به 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
برنامه LED چشمک زن با میکروکنترلر PIC
/* * File: led.c * Author: Ali Ezzati * * Created on February 8, 2015, 5:46 PM */ #define _XTAL_FREQ 8000000 #include <xc.h> // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. // CONFIG #pragma config FOSC = EXTRCCLK // Oscillator Selection bits (RC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, Resistor and Capacitor on RA7/OSC1/CLKIN) #pragma config WDTE = ON // Watchdog Timer Enable bit (WDT enabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config MCLRE = ON // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR) #pragma config BOREN = ON // Brown-out Detect Enable bit (BOD enabled) #pragma config LVP = ON // Low-Voltage Programming Enable bit (RB4/PGM pin has PGM function, low-voltage programming enabled) #pragma config CPD = OFF // Data EE Memory Code Protection bit (Data memory code protection off) #pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off) int main() { TRISB0 = 0; //RB0 as Output PIN while(1) { RB0 = 1; // LED ON __delay_ms(1000); // 1 Second Delay RB0 = 0; // LED OFF __delay_ms(1000); // 1 Second Delay } return 0; }
توضیحاتی در مورد برنامه:
عبارت #define _XTAL_FREQ 8000000 فرکانس کلاک میکروکنترلر را برای برنامه مشخص می کند تا تابع__delay_ms() زمان مورد نظر را به درستی برای ما ایجاد کند.
عبارت #pragma config و کدهای بعد از آن بیت های وضعیت میکروکنترلر PIC را تنظیم می کند که در ادمه درباره ی نحوه ی تنظیم این بیت ها بیشتر توضیح میدم.
شماتیک لازم برای راه اندازی LED چشمک زن با میکروکنترلر PIC
تنظیم بیت های وضعیت میکروکنترلر PIC
برای تنظیم این بیت ها کافیه از منوی window این مسیر رو دنبال کنید.
Window >> PIC Memory Views >> Configuration Bits
بعد پنجره ی زیر باز می شود که می توانید تنظیمات مورد نظرتون رو اعمال کنید و کلیدی که در تصویر مشخص هست رو برای تولید کد استفاده کنید.
در مرحله بعد کد تولید شده را کپی کرده و در نوشته خود استفاده کنید.