برای دیدن متن نوشته ماوس و یا صفحه را به پایین هدایت کنید.
طراحی برد با Altium Designer آموزش ‎آردوینو Arduino آموزش کنترل روبات با اندروید
آموزش آنالیز مدار با ADS مقدماتی آموزش تحلیل مدار با proteus آموزش نقشه کشی برق صنعتی
تحلیل آنالیز مدار با ADS پیشرفته آموزش مخابرات آنالوگ و دیجیتال آموزش طراحی دیجیتال با Verilog
آموزش مدارهای الکتریکی مقدماتی آموزش مبانی سیستم های مخابراتی‎‎ آموزش شبیه سازی مدار با Cadence
آموزش مدارهای الکتریکی پیشرفته آموزش های رایگان آموزش شبیه سازی مدار با OrCad
آموزش آموزش نرم افزار MAX+PLUS تبلیغات کلیکی سینماتیک مستقیم و معکوس روبات

راه اندازی واحد USART میکروکنترلرهای PIC

میکروکنترلرهای PIC مشابه میکروکنترلرهای AVR یا ARM دارای واحد داخلی USART در دو مد سنکرون و آسنکرون می باشند. در این آموزش واحد آسنکرون یا غیر همزمان (UART) میکروکنترلر PIC16F877A  را بررسی و راه اندازی می کنیم.


رجیسترهای USART :

رجیسترهای مرتبط با واحد USART عبارت اند از :

TXSTA : رجیسترهای کنترل وضعیت ارسال
RCSTA : رجیسترهای کنترل وضعیت دریافت
SPBRG : تنظیم Baudrate
TXREG : رجیستر ارسال داده USART
RCREG : رجیستر دریافت داده USART

رجیستر TXSTA :

راه اندازی واحد USART میکروکنترلرهای PIC

CSRC : انتخاب منبع کلاک در حالت سنکرون

TX9 : فعال سازی ارسال 9 بیتی

TXEN  : فعال سازی واحد ارسال

SYNC : انتخاب مد عملکرد : 1= آسنکرون ، 0=سنکرون

BRGH : انتخاب مد سرعت : 1= پرسرعت ، 0 = کم سرعت

TRMT : بیت نشان دهنده وضعیت ارسال : 1=ارسال کامل ، 0 = ارسال نشده

OERR : نشان دهنده خطای اجرای مجدد

TX9D : بیت نهم بافر ارسال

رجیستر RCSTA :

راه اندازی واحد USART میکروکنترلرهای PIC

SPEN : فعال سازی USART

RX9 : فعال سازی دریافت 9 بیتی

SREN : فعال سازی دریافت یکباره (در حالت سنکرون)

CREN : فعال سازی دریافت پی در پی در حالت آسنکرون

ADDEN : فعال ساز تشخیص آدرس و وقفه دریافت در حالت آسنکرون 9 بیتی

FERR : نشان دهنده خطای فریم

OERR : نشان دهنده خطای اجرای مجدد

RX9D : بیت نهم بافر دریافت

محاسبه Baud Rate :

در ارتباط USATR باید هر دو طرف ارتباط از Baudrate مشابه استفاده کنند. برای تنظیم مقدار Baudrate از رجیستر 8 بیتی SPBRG استفاده می شود. برای این منظور میتوان از جدول زیر برای مقداردهی به رجیستر SPBRG استفاده نمود.

حتما در ادامه این مطلب را هم بخوانید:  آموزش میکروکنترلرهای PIC ،کامپایلر CCS C : جلسه پنجم (تمرین)

راه اندازی واحد USART میکروکنترلرهای PIC

به عنوان مثال در فرکانس 20MHz ، با نوشتن عدد 255 در رجیستر SPBRG مطابق جدول اول در حالت صفر بودن BRGH ، مقدار Baud rate بر روی 1.2Kbit/s تنظیم می شود.


ارسال یک کاراکتر
:

از تابع زیر برای ارسال یک کاراکتر استفاده می شود.

void UART_TxChar(char ch)
{
while(TXIF==0);
TXIF=0;
TXREG=ch;
}

به عنوان مثال برای ارسال کاراکتر M :

UART_TXChar(‘M’);


دریافت یک کاراکتر :

از تابع زیر برای دریافت یک کاراکتر استفاده می شود.

char UART_RxChar()
{
while(RCIF==0);
RCIF=0;
return(RCREG);
}

به عنوان مثال برای دریافت یک کاراکتر و ذخیره سازی در متغیر str :

str = UART_RxChar();

مثال :

در کد زیر، با مقدار فرکانس کلاک 20MHz و Baud rate برابر 9600 ، عبارت Melec.ir را از طریق خروجی سریال میکروکنترلر ارسال می کنیم. همچنین در صورت دریافت یک کاراکتر، همان کاراکتر را به خروجی سریال ارسال می کنیم.

#include<pic16f877a.h>
#define SBIT_TXEN     5
#define SBIT_SPEN     7
#define SBIT_CREN     4
void UART_Init(int baudRate)
{
TRISC=0x80;
TXSTA=(1<<SBIT_TXEN);
RCSTA=(1<<SBIT_SPEN) | (1<<SBIT_CREN);
SPBRG = (20000000UL/(long)(64UL*baudRate))-1;      // baud rate @20Mhz Clock
}
void UART_TxChar(char ch)
{
while(TXIF==0);
TXIF=0;
TXREG=ch;
}
char UART_RxChar()
{
while(RCIF==0);
RCIF=0;
return(RCREG);
}
int main()
{
char i,a[]={“Melec.ir “};
char ch;
UART_Init(9600);
for(i=0;a[i]!=0;i++)
{
UART_TxChar(a[i]);
}
while(1)
{
ch = UART_RxChar();
UART_TxChar(ch);
}
}

امیدوارم این مطلب آموزشی برایتان مفید باشد.

منبع : exploreembedded

درباره ی محمد حسین کوهی قمصری

دانشجوی برق گرایش الکترونیک، کارشناسی

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

17 − 12 =