الاتصال التسلسلى للميكروكونترولر PIC16 من خلال الوحدة UART :

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

الاتصال التسلسلى للميكروكونترولر PIC16 من خلال الوحدة UART :

مُساهمة من طرف Admin في الأحد مايو 03, 2015 1:53 pm

الاتصال التسلسلى للميكروكونترولر PIC16 من خلال الوحدة UART :
المحتويات :
• دوال المنفذ RS232 .
• المحاكاة ببرنامج ISIS .
يتم توفير الاتصال الاتصال التسلسى بواسطة الوحدة (الموديول) UART الموجود ضمن البناء الداخلى للميكروكونترولر . يمكن استخدام أى زوج من الأطراف لهذا الغرض حيث أن معدل البيانات منخفض جدا مما يسمح بتوليد الإشارات برمجيا . وعلى الرغم مع ذلك ، تم توفير منفذ هاردوير ( موديول UART) مخصص لهذه المهمة ، والذى يجب أن يستخدم إذا كان هناك حاجة لاستخدام المقاطعة .
الجدول التالى يبين مكتبة المترجم CCS C المرتبطة بالمنفذ UART :



يمكن اختبار المنفذ UART فى نظام المحاكاة من خلال توصيله بالوحدة الطرفية المتوفرة فى برمجيات Proteus (ISIS) كما هو مبين بالشكل أدناه .



طرف دخل الوحدة الطرفية RXD (استقبال البيانات) ، يتم توصيله بالطرف TX (إرسال) بالميكروكونترولر ، وطرف خرج الوحدة الطرفية TXD (إرسال البيانات) ، يتم توصيله بالطرف RX (استقبال) بالميكروكونترولر . المحطة الطرفية بها خطوط مصافحة handshaking إضافية (تحكم فى الإرسال) ، وهى RTS و CTS ، لكننا عادة لا نحتاج لها .
البرنامج التالى لتحقيق الاتصال والمحاكاة بين الميكروكونترولر والوحدة الطرفية :

الكود:


// Serial I/O using hardware RS232 port
#include <16F877A.h>
#use delay(clock= 8000000) // Delay function needed for RS232
#use rs232(UART1) // Select hardware UART
void main() //************************************
{
int incode;
setup_uart(9600); // Set baud rate
while(1)
{ incode = getc(); // Read character from UART
printf( " ASCII = %d " ,incode); // Display it on
putc(13); // New line on display
}
}


فى هذا البرنامج :
• تستخدم الدالة getc() لقراءة حرف character من الوحدة الطرفية ، فهى تنتظر من أجل مدخلات المستخدم . يجب تفعيل (تنشيط) الوحدة الطرفية عن طريق النقر بداخل نافذة الوحدة الطرفية ، وعندئذ توفر لوحة مفاتيح الكمبيوتر المدخلات للميكروكونترولر بما يناظر أكواد أسكى المناظرة ، حيث يتم تخصيص هذه المدخلات إلى المتغير incode ، كلما وصلت incode = getc(); .
• يمكن أخراج (عرض) كود أسكى باستخدام الدالة printf() . إذا تم تشكيل خرج هذه الدالة ليكون بالنظام العشرى %d ، فإنه يتم عرض القيمة العددية لكود الحرف . أما إذا تم تشكيل الخرج ليكون فى شكل الحرف %c ، فإنه يتم عرض الحرف نفسه .
• الدالة putc(13) تخرج كود من أجل العودة لسطر جديد على الشاشة .
إذا تم استخدام الدالة putc() لإخراج كود أسكى ، فإنه يتم عرض الحرف .

Admin
Admin

عدد المساهمات : 1003
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة

- مواضيع مماثلة

 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى