استخدام الموديول USART لتحقيق الاتصال التسلسلى بين PIC و PIC :
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS - C
صفحة 1 من اصل 1
استخدام الموديول USART لتحقيق الاتصال التسلسلى بين PIC و PIC :
استخدام الموديول USART لتحقيق الاتصال التسلسلى بين PIC و PIC :
يتم إعداد هذا الموديول باستخدام التوجيه #use RS232(options) . هذا التوجيه يسمح بإعداد البارامترات (options) المختلفة للموديول USART مثل : سرعة الإرسال ، الأطراف المستخدمة ، وغيرها . يجب استخدام التوجيه #use delay لأنه يدخل فى حسابات الدوال الأخرى مثل getch , putchar , printf .
تدريب : تحقيق الاتصال بين ميكروكونترولر PIC وميكروكونترولر PIC آخر باستخدام الموديول USART :
برنامج الميكروكونترولر المرسل :
فى هذا الجزء من البرنامج والذى يتم تحميله على الميكروكونترولر المرسل :
يتم استخدام التوجيه #use rs232 ويجب تحديد معدل البود (سرعة تبادل البيانات) ، بالصيغة baud=9600 ، وتحديد طرف الإرسال ، بالصيغة وهو هنا xmit=pin_c6 ، وطرف الاستقبال بالصيغة rcv=pin_c7 ، وجميعها وسائط للتوجيه السابق وبهذا نخبر المترجم حتى يقوم إعداد الاتصال التسلسلى . هذا التوجيه يجب أن يكون مسبوقا بالتوجيه #use delay ، والذى يحدد معدل الساعة فى النظام المستخدم .
يقوم البرنامج بإرسال قيمة المتغير value عبر المنفذ التسلسلى (المعد مسبقا بالتوجيهات) باستخدام الدالة PUTC(value) حيث يرسل تباعا القيم 0,1,2…..9 . كما يتم عرض هذه القيم على وحدة LCD متصلة بنفس الميكروكونترولر باستخدام الدالة printf() .
برنامج الميكروكونترولر المستقبل :
فى هذا الجزء من البرنامج والذى يتم تحميله على الميكروكونترولر المستقبل :
• يتم إعداد المنفذ التسلسلى كما فى الجزء السابق .
• يستخدم البرنامج المقاطعة بالاتصال التسلسلى ( عند توافر بيانات مستقبلة) ، ويعلن عن ذلك بالتوجيه #int_RDA والدالة التى تأتى بعده مباشرة هى روتين خدمة هذه المقاطعة RDA_isr() ، وفيها نحصل على الحرف المتواجد على المنفذ التسلسلى باستخدام الدالة value=GETC() .
• فى الدالة الرئيسية يتم تمكين هذه المقاطعة وكذلك تمكين المقاطعات عامة .
• تستخدم الدالة printf() لعرض البيانات المستقبلة على وحدة LCD المتصلة بالميكروكونترولر المستقبل .
يتم إعداد هذا الموديول باستخدام التوجيه #use RS232(options) . هذا التوجيه يسمح بإعداد البارامترات (options) المختلفة للموديول USART مثل : سرعة الإرسال ، الأطراف المستخدمة ، وغيرها . يجب استخدام التوجيه #use delay لأنه يدخل فى حسابات الدوال الأخرى مثل getch , putchar , printf .
تدريب : تحقيق الاتصال بين ميكروكونترولر PIC وميكروكونترولر PIC آخر باستخدام الموديول USART :
برنامج الميكروكونترولر المرسل :
- الكود:
#include <16F876.h>
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7) // Define speed and pins
#include <LCD.C>
#define use_portb_lcd TRUE
void main() {
int value;
lcd_init();
while(1){
for (value=0;value<10;value++) {
PUTC(value);
printf(lcd_putc,"\fSend=%1D",value);
delay_ms(500);
}
}
}
فى هذا الجزء من البرنامج والذى يتم تحميله على الميكروكونترولر المرسل :
يتم استخدام التوجيه #use rs232 ويجب تحديد معدل البود (سرعة تبادل البيانات) ، بالصيغة baud=9600 ، وتحديد طرف الإرسال ، بالصيغة وهو هنا xmit=pin_c6 ، وطرف الاستقبال بالصيغة rcv=pin_c7 ، وجميعها وسائط للتوجيه السابق وبهذا نخبر المترجم حتى يقوم إعداد الاتصال التسلسلى . هذا التوجيه يجب أن يكون مسبوقا بالتوجيه #use delay ، والذى يحدد معدل الساعة فى النظام المستخدم .
يقوم البرنامج بإرسال قيمة المتغير value عبر المنفذ التسلسلى (المعد مسبقا بالتوجيهات) باستخدام الدالة PUTC(value) حيث يرسل تباعا القيم 0,1,2…..9 . كما يتم عرض هذه القيم على وحدة LCD متصلة بنفس الميكروكونترولر باستخدام الدالة printf() .
برنامج الميكروكونترولر المستقبل :
- الكود:
#include <16F876.h>
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#define use_portb_lcd TRUE
#include <LCD.C>
int value;
#int_RDA
RDA_isr()
{
value=GETC();
}
void main() {
lcd_init();
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
for (;;) {
lcd_gotoxy(1,1);
printf(lcd_putc,"Receive=%1D",value);
}
}
فى هذا الجزء من البرنامج والذى يتم تحميله على الميكروكونترولر المستقبل :
• يتم إعداد المنفذ التسلسلى كما فى الجزء السابق .
• يستخدم البرنامج المقاطعة بالاتصال التسلسلى ( عند توافر بيانات مستقبلة) ، ويعلن عن ذلك بالتوجيه #int_RDA والدالة التى تأتى بعده مباشرة هى روتين خدمة هذه المقاطعة RDA_isr() ، وفيها نحصل على الحرف المتواجد على المنفذ التسلسلى باستخدام الدالة value=GETC() .
• فى الدالة الرئيسية يتم تمكين هذه المقاطعة وكذلك تمكين المقاطعات عامة .
• تستخدم الدالة printf() لعرض البيانات المستقبلة على وحدة LCD المتصلة بالميكروكونترولر المستقبل .
مواضيع مماثلة
» الاتصال التسلسلى للميكروكونترولر PIC16 من خلال الوحدة UART :
» الموديول CCP ووضع تعديل عرض النبضة PWM مع المترجم CCS C - البرنامج الأساسى :
» 13-الفصل الثالث عشر الاتصال بالأجهزة
» الاتصال بين الميكروكونترولر PIC والكمبيوتر PC والمحاكاة ببرنامج ISIS مع المترجم CCS C
» دليل ربط شاشة LCD نوع 2X16 بالميكروكونترولر PIC16F877A مع استخدام المترجم CCS C :
» الموديول CCP ووضع تعديل عرض النبضة PWM مع المترجم CCS C - البرنامج الأساسى :
» 13-الفصل الثالث عشر الاتصال بالأجهزة
» الاتصال بين الميكروكونترولر PIC والكمبيوتر PC والمحاكاة ببرنامج ISIS مع المترجم CCS C
» دليل ربط شاشة LCD نوع 2X16 بالميكروكونترولر PIC16F877A مع استخدام المترجم CCS C :
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS - C
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى