منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

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

اذهب الى الأسفل

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

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

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

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

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

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

طرف دخل الوحدة الطرفية 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

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

https://fathallaabdelaziz.forumarabia.com

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

الرجوع الى أعلى الصفحة


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