قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 29-03-2012, 08:56 PM المشاركة 97   
افتراضي



التدريب السابع :
قراءة مدخل تناظرى وعرض النتيجة على أربع وحدات 7-segment :
البرنامج :


كود:
/*Tutorial 7
experiment purpose: familiar A/D conversion
segments connected to PORTD
Common Anodes : RA2>thouthands &RA3>hundreds & RA4>tens & RA5>ones
MCU : PIC16F877A 
MikroC PRO
ENG.F.ABDELAZIZ
http://www.eeecb.com/vb/index.php
*/


const char TABLE[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
                                                //define the table of constant 0-9

 void  init();                                         //I/O PORT initialize function declare
 void  display(int x);                           //display function declare
unsigned int  result=0x00;                            //define ADC convert result register
unsigned short i;
//------------------------------------------------


 //main program
 void  main()
 {

init();                                        //call initialize function



 while(1)                 
   {
   result=0x00;                                    //clear the convert result
   result = ADC_Read(0);
   display(result);                                //call display function
   }
  }
//-----------------------------------------------
 //initialize function

 void  init()
  {
    ADCON1=0X8E;              //set RA0 pin > ADC input ,the others general I/O
   TRISA=0X01;                //set RA0 INPUT,the others OUTPUT
   TRISD=0X00;               //set D PORT all OUTPUT   
   //PORTA=0XFF;
   //PORTD=0XFF;               //close all display
     }
//-----------------------------------------------
//display function
 void display(int x)
   {
     int  THOUTH,HAND,TEN,ONE,temp;   //define five temporary variable

     temp=x;                                                     //temporary keep AD convert result
     THOUTH = temp / 1000 ;                        //get display thouthands bit
     HAND = (temp % 1000) /100 ;    //get display hundreds bit
     TEN = (temp % 100) /10 ;                       //get display tens bit
     ONE = (temp % 10) ;                   //get display ones bit
     //
for (i = 0; i<=50; i++) {

     PORTD=TABLE[THOUTH];               //get the display thouthands bit code from table
     PORTA=0x3B;                             //RA2 OUTPUT low,light hundred bit display
     Delay_ms(1);                                 //delay some time,ensure display brightness

     PORTD=TABLE[HAND];         //get the display hundreds bit code from table
     PORTA=0x37;                             //RA3 OUTPUT low,light hundred bit display
     Delay_ms(1);                                 //delay some time,ensure display brightness

     PORTD=TABLE[TEN];                        //get the display tens bit code from table
     PORTA=0x2F;                             //RA4 OUTPUT low,light tens bit display
     Delay_ms(1);                                 //delay some time,ensure display brightness

     PORTD=TABLE[ONE];            //get the display ones bit code from table
     PORTA=0x1F;                             //RA5 OUTPUT low,light ones bit display
     Delay_ms(1);                                 //delay some time,ensure display brightness
   }
//
}

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 02-04-2012, 10:53 PM المشاركة 98   
افتراضي


الدرس التاسع عشر الاتصال التسلسلى Serial Communication
أولا مقدمة :
الاتصال التسلسلى SERIAL COMMUNICATION
الاتصال المتوازي بين الميكروكونترولر والأجهزة الطرفية المحيطة عبر منافذ المداخل /المخارج هو الحل المثالي فى حالة المسافات القصيرة وحتى عدة أمتار. عندما يكون ضروريا إقامة اتصال بين جهازين على مسافات أطول فمن غير الممكن استخدام الاتصال المتوازى . بدلا من ذلك يستخدم الاتصال التسلسلي.
اليوم معظم الميكروكنترولر تضم فى بنائها العديد من الأنظمة المختلفة للاتصال التسلسلى كمعدات قياسية.

أي من هذه النظم سوف تستخدم هذا يتوقف على عوامل كثيرة من أهمها ما يلي :
  • كم عدد الأجهزة التى سوف يتبادل معها الميكروكونترولر البيانات ؟
  • ما هى السرعة المطلوبة لتبادل البيانات ؟
  • ما هى المسافة بين الأجهزة ؟
  • هل من الضرورى إرسال واستقبال البيانات فى وقت واحد ؟
واحد من أهم الأمور المتعلقة بالاتصال التسلسلى هو "البروتوكول" Protocol الذي ينبغي أن يتم مراعاته بدقة . "البروتوكول" هو عبارة عن مجموعة من القواعد التي يجب تطبيقها من أجل أن تتمكن الأجهزة من تفسير (ترجمة) البيانات المتبادلة بشكل صحيح .
لحسن الحظ أن الميكروكونترولر يهتم بذلك تلقائيا بحيث ينحصر عمل المبرمج / المستخدم فى كتابة البيانات المراد إرسالها وقراءة البيانات المستقبلة .
معدل البود (سرعة أو معدل نقل البانات ) BAUD RATE
يستخدم المصطلح معدل البود baud rate للدلالة على عدد البتات المنقولة في الثانية [bps] . لاحظ أنه يشير إلى البت bit وليس البايت bytes.
عادة ما يكون مطلوبا بواسطة البروتوكول أن يتم نقل كل بايت جنبا إلى جنب مع عدة بتات تحكم وهو ما يعني أن بايت واحد في تدفق البيانات المتسلسلة قد يتكون من 11 بت. على سبيل المثال إذا كان معدل البود هو 300 bps عندئذ يمكن نقل 37 بايت كحد أقصى ( بدون أى بت تحكم ) و 27 بايت كحد أدنى (بإضافة 3 بتات تحكم ) فى الثانية الواحدة .

أنظمة الاتصال التسلسلى الأكثر شيوعا هي :
نظام الاتصال البينى للدوائر المتكاملة I2C (INTER INTEGRATED CIRCUIT)
هو نظام لتبادل البيانات التسلسلية بين الميكروكنترولر والدوائر المتكاملة المتخصصة للجيل الجديد.
يستخدم هذا النظام عندما تكون المسافة بينهما قصيرة ( عادة ما يكون المستقبل والمرسل على نفس اللوحة المطبوعة ). يتم تأسيس الاتصال عبر موصلين . أحدهما يستخدم لنقل البيانات ويستخدم الآخر فى التزامن (إشارة الساعة).كما هو مبين في الشكل أدناه : أحد الأجهزة يكون دائما الماسترmaster (السيد –الرئيسى-القائد). يتم عنونة أحد الرقائق التابعة slave chip قبل بدأ الاتصال . بهذه الطريقة يمكن لميكروكونترولر واحد أن يتصل بعدد كبير من الأجهزة المختلفة . عادة ما يكون معدل البود 100 Kb/sec (النظام القياسى ) أو 10 Kb/sec (نظام معدل البود البطىء). ظهر في الآونة الأخيرة أنظمة تعمل على معدل بود 3.4 Mb/sec . المسافة بين الأجهزة التي تتصل عبر الناقل I2C محدودة بعدة أمتار.





نظام الربط (الواجة) التسلسلى للأجهزة المحيطة (الخارجية ) SPI
(SERIAL PERIPHERAL INTERFACE BUS)
هو نظام للاتصال المتسلسل والذي يستخدم حتى أربعة موصلات والشائع منها ما يستخدم ثلاثة.
يستخدم أحد الموصلات لاستقبال البيانات وموصل أخر لإرسال البيانات وموصل ثالث للتزامن وقد يستخدم موصل رابع كبديل لاختيار الجهاز المراد الاتصال معه .
هذا النظام من النوع "المزدوج الكامل" full duplex وهذا يعني أنه يتم إرسال البيانات واستقبالها في نفس الوقت.أعلى معدل بود فى هذا النظام أعلى من نظيره فى نظام الاتصال I2C .




اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 02-04-2012, 10:57 PM المشاركة 99   
افتراضي


نظام الاستقبال / الارسال العام (الشامل) الغير متزامن UART
UNIVERSAL ASYNCHRONOUS RECEIVER/TRANSMITTER
هذا النوع من الاتصالات غير متزامن وهذا يعني عدم استخدام الخط المخصص لنقل إشارات الساعة
clock signal.في بعض التطبيقات مثل الاتصال اللاسلكى أو من خلال موجات الأشعة تحت الحمراء للتحكم عن بعد يعتبر هذا النظام ميزة كبيرة . كل من الاستقبال والارسال يعمل بنفس المعدل المحدد مسبقا من أجل الحفاظ على التزامن اللازم . هذه هي الطريقة البسيطة جدا لنقل البيانات لأنها أساسا تمثل تحويل البيانات 8 بت من الشكل المتوازى إلى الشكل المتسلسل . معدل البود ليس عاليا وقد يصل إلى 1 Mbit/sec.

يحتوى الميكروكونترولر ضمن بنائه الداخلى على قناة إتصال تسلسلى نوع USART والتى عن طريقها يقوم بالاتصال التسلسلى مع مختلف الأجهزة والمعدات بما فى ذلك الكومبيوتر الشخصى PC .
يشتمل المترجم الميكروسى برو على الدوال التى تسمح لنا بالتعامل بسهولة مع قناة الاتصال التسلسلى بالميكروكونترولر PIC , والمطلوب معرفة القليل حول قناة الاتصال التسلسلى وسجلات إعداداته وطرق عملها .
قناة الاتصال التسلسلى USART هى قناة لاستقبال RX وإرسال TX البيانات حيث يمكن إعدادها كقناة إتصال " ذو اتجاهين" تسمى full duplex ( يمكن إرسال واستقبال البيانات معا فى نفس الوقت ) من أجل الاتصال مع الكومبيوتر على سبيل المثال (تعرف أيضا بنظام الاتصال الغير متزامن asynchronous) أو تعمل فى نظام "ذو اتجاه واحد" وتسمى half duplex (وتعرف أيضا بنظام الاتصال المتزامن
(Synchronous .
أطراف قناة الاتصال التسلسلى USART هى RC6 (TX / CK) و RC7 (​​RX / DT) .

مثال : تطبيق على النظام full duplex – asynchronous :



الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 02-04-2012, 11:01 PM المشاركة 100   
افتراضي


أنظمة الاتصال :
هناك طريقتان للاتصال التسلسلى : النظام المتزامن والنظام الغير متزامن .

النظام المتزامن synchronous mode :
فى النظام المتزامن تحتاج لعمل تزامن بين نظامى جهتى الاتصال . يتم توليد التوقيت عن طريق مجموعة من البتات , تسمى بتات التزامن . يتم استقبال البتات بالمستقبل لضبط ساعته الداخلية من أجل استقبال البتات التى تحدد البيانات . يمكنك استقبال أى كمية من البيانات . بعد استقبال آخر بت من البيانات , يرسل المرسل مجموعة من البتات تسمى بتات الانتهاء stop bits , والتى يتم كشفها عن طريق المستقبل لكى تخبره بانتهاء بتات البيانات .

النظام الغير متزامن Asynchronous mode :
فى هذا النظام لا توجد حاجة لتوليد التوقيت . عند إرسال كل حرف character يتم فى البداية إرسال بت البدء start bit وفى النهاية بت الإيقاف (الانتهاء) stop bit .

لاحظ من الشكل أن بت النهاية يتم التعرف عليها عن طريق الانتقال من الواحد 1 إلى الصفر 0 . عند هذه اللحظة تقوم الساعة الداخلية للنظام ببدأ خط مسح من وقت لآخر لكشف المستوى المشابه . بعد استقبال البت السابعة ينتظر النظام بت الإيقاف . عند هذه النقطة يذهب النظام للراحة sleep فى انتظار بت بدء جديدة . أشارات التحكم والتوقيت يتم توليدها عن طريق الأجهزة hardware المستخدمة والخاصة بهذا النوع من الاتصال . فى هذه الحالة يجب أن التأكد من أن أنظمة الارسال والاستقبال يعملان بنفس معدل الاتصال .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 02-04-2012, 11:04 PM المشاركة 101   
افتراضي


قنوات الاتصال Communication Channels
يوجد ثلاثة أشكال لربط الأنظمة الرقمية من جهة إشارات البيانات فقط :
  • قناة أحادية Simplex حيث يكون الاتصال فعال فى اتجاه واحد فقط , إما الأرسال أو الاستقبال . المثال العملى لهذا النظام هو الطابعات والوحدات الطرفية .
  • قناة نصف مزدوجة half-duplex : والتى لها عناصر تقوم بكل من استقبال وارسال البيانات . عمليتى الاستقبال والارسال لا يمكن أن تتم فى نفس الوقت . أى أنه لدينا إتصال بممرين ولكن ليسا فى نفس الوقت ( ليسا كاملين) . المثال العملى هو جهاز الوكى توكى walkie-talkie فإما الحديث (أرسال) وإما الاستماع ( الاستقبال).
  • قناة كاملة الازدواج Full-duplex أو ببساطة duplex : وتتكون من عناصر يمكن عن طريقها قيام النظام بارسال واستقبال البيانات فى نفس الوقت . المثال العملى هو الكومبيوتر والميكروكونترولر .



الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 02-04-2012, 11:09 PM المشاركة 102   
افتراضي


نظام الاتصال RS-232 :

تم إنشاء نظام الاتصال RS-232 كحاجة لإنشاء اتصال تسلسلى قياسى من خلال تعريف مستويات الجهد والمعاوقة للارسال والبيانات بحيث يمكن ربط المعدات الغير متوافقة . الشكل التالى يوضح مستويات الجهد القياسية للنظام RS-232 فى المدى من +15V إلى -15V مقسمة كما يلى : المنطقة بين -5V و +5V لا يتم تعرف النظام عليها وتعرف بالمنطقة الانتقالية .





الدائرة المتكاملة MAX232 :
يمكن إنشاء نظام اتصال تسلسلى نوع RS232 بدلا من استخدام المستويات TTL الموجودة على أطراف الشريحة . من اجل ذلك يمكنك استخدام الشريحة , الواسعة الانتشار , MAX232 وهى دائرة متكاملة قادرة على التحويل بين مستويات الجهد TTL ومستويات جهود RS232 و وهى ذات 16 طرف ويتم تغذيتها بالجهد +5V . الشكل التالى يوضح أطرافها



للدائرة المتكاملة MAX232 أربعة خطوط إرسال واستقبال أى قناتين للاتصال التسلسلى كل قناة لها زوج من خطوط الارسال والاستقبال TX/RX ( TTL – RS232 ) . تعمل الدائرة المتكاملة عن طريق مكثفات خارجية ويمكنها إرسال البيانات بسرعات حتى 116 Kbit/s .
هذه الدائرة المتكاملة مفيدة جدا للاتصال بين الكومبيوتر والدوائر المتكاملة فى التطبيقات المدمجة التى تستخدم الاتصال التسلسلى UART . الدائرة المتكاملة MAX232 بها قناتى إتصال , يمكن استخدام واحدة من أجل الإشارة وواحدة من أجل البيانات . عند استخدام هذه الدائرة المتكاملة من المهم عدم الخلط بين المداخل والمخارج لكل من القناتين من الجانبين TTL و RS232 .
على سبيل المثال , إذا استخدمت الزوج T1out و R1in ( القناة رقم 1 : الطرف 11 والطرف 12 على الترتيب) من جهة TTL , عندئذ يجب استخدام الزوج T1out و R1in ( القناة رقم 1 : الطرف 14 و 13 على الترتيب) من جهة RS232 .
الشكل يبين التوصيل بين الكومبيوتر والدائرة الخارجة (الميكروكونترولر على سبيل المثال ) باستخدام MAX232 ووصلة DB9 .





الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 02-04-2012, 11:24 PM المشاركة 103   
افتراضي


ثانيا :الاتصال التسلسلى والميكروكونترولر PIC :



يتضمن بناء الميكروكونترولر PIC16F877A على قناة داخلية للاتصال التسلسلى USART والتى من خلالها يمكن الاتصال تسلسليا مع مختلف الأجهزة والمعدات بما فى ذلك الكومبيوتر PC .
برمجة قناة الاتصال التسلسلى بالميكروكونترولر PIC عن طريق المترجم ميكروسى برو :
تستخدم مكتبة برامج موديول UART من أجل الاتصال التسلسلى نوع RS232 بين الميكروكونترولر والأجهزة الإلكترونية الخارجية ( مثل الكومبيوتر) . يتطلب الاتصال التسلسلى خطى إتصال فقط بالإضافة إلى خط الأرضى المشترك وذلك لنقل البيانات فى كلا الاتجاهين . ترسل البيانات فى شكل متسلسل من خلال خط الأرسال بت تلو البت . عادة ما يكون جهاز الاستقبال فى نظام "الخمول" idle بينما طرف أرساله TX فى الحالة المنطقية المرتفعة . يبدأ الإرسال عندما يتحول هذا الطرف إلى الحالة المنطقية المنخفضة . أول بت ترسل هى بت البدء start bit بمنطق منخفض . يلى ذلك إرسال 7 أو 8 بتات متبوعة ببت الأولوية parity الاختيارية . آخر بت ترسل هى بت الانتهاء stop bit. عادة ما ترسل البيانات التسلسلية فى شكل إطار مكون من 10 بتات يتكون من بت البدء و ه بتات بيانات وبت الانتهاء ولا يوجد بت للأولوية . الشكل التالى يبين طريقة إرسال الحرف "A" عن طريق الاتصال التسلسلى . نموذج بتات كود أسكى لهذا الحرف هو 01000001. كما فى الشكل فى البداية يتم إرسال نبضة البدء يتبعها 8 بتات للبيانات 01000001 وفى النهاية ترسل بت الانتهاء .


توقيت البت هام جدا فى الاتصال التسلسلى وأجهزة الارسال TX والاستقبال RX يجب أن يكون لها نفس توقيتات البت . يقاس توقيت البت معدل البود baud rate والذى يحدد عدد البتات المرسلة أو المستقبلة فى كل ثانية . على سبيل المثال عند العمل بمعدل بود يساوى 9600 بإطار بحجم 10 بت , فى هذه الحالة يت إرسال أو استقبال 960 حرف فى كل ثانية .
فى الاتصال المبنى على أساس RS232 يتم توصيل كلا الجهازين باستخدام وصلة 9 طرف أو وصلة 25 طرف كما فى الشكل التالى :
عادة ما يستخدم الأطرف TX,RX,GND فقط فى الاتصال . الأطراف المطلوبة فى كل وصلة معطاة بالجدول التالى :


مستويات الجهد المحددة ببروتوكول RS232 هى +/- 12V . المستوى المنطقى المرتفع يكون عند
"-12V" والمستوى المنطقى المنخفض يكون عند "+12V" .
الميكروكونترولر PIC , فى الجانب الآخر , عادة ما يعمل عند مستوى الجهد +5V , لذلك يجب تحويل إشارات RS232 لإشارات من 0 إلى +5V عند الدخول إلى الميكروكونترولر . بالمثل , يجب تحويل خروج الميكروكونترولر إلى +/- 12V قبل إرسالها لتستقبل بجهاز RS232 . عادة يتم تنفيذ التحويل بشريحة محول RS232 مثل MAX232 من شركة Maxim .
المترجم ميكروسى برو مجهز بمكتبة دوال للاتصال التسلسلى والتى تسهل وتسرع وقت إنشاء البرامج . بعض الميكروكونترولر به قناتين UASRT والبعض الآخر به قناة واحدة مثل PIC16F877A وهو موضع دراستنا .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 02-04-2012, 11:32 PM المشاركة 104   
افتراضي


دوال مكتبة الموديول UART :
1- الدالة UART1_Init :
الصيغة العامة :
كود:
void UART1_Init(const unsigned long baud_rate);
مثال :
كود:
UART1_Init(9600);
تقوم الدالة UART1_Init بتهيئة وبدء سجلات قناة USART وتعيين سرعة الاتصال أى قيمة baud_rate . هذه الدالة بدون عائد void ولها بارامتر واحد فقط هو معدل البود baud_rate وهو " عدد صحيح ثابت بدون إشارة طويل(إربع بتات) " const unsigned long .
يجب استدعاء هذه الدالة قبل استخدام أى دالة أخرى من المكتبة .

2- الدالة UART1_Data_Ready
الصيغة العامة :

كود:
char UART1_Data_Ready();

مثال :
كود:
// If data is ready, read it: if (UART1_Data_Ready() == 1) { receive = UART1_Read(); }

تستدعى الدالة UART1_Data_Ready للتحقق من أنه قد تم بالفعل "استقبال بايت من البيانات من عدمه" أى تستخدم فى اكتشاف وصول بايت إلى سجل الحافز التسلسلى serial buffer بالميكروكونترولر وأن تلك البيانات جاهزة للقراءة (النسخ) ثم المعالجة .
عائد الدالة من نوع char ويكون بواحد "1" إذا تم بالفعل استقبال بايت ويكون بصفر "0" إذا لم يتم استقبال بايت . هذه الدالة ليس لها بارامترات () . تستخدم هذه الدالة قبل استخدام دالة القراءة UART_Read .


3- الدالة UART1_Read
الصيغة العامة :


كود:
char UART1_Read();

مثال :

كود:
// If data is ready, read it: if (UART1_Data_Ready() == 1) { receive = UART1_Read(); }

تستدعى الدالة UART1_Read لقراءة "بيانات بايت"من سجل حافز الاستقبال بموديول USART بالميكروكونترولر والعودة به . إذا لم يكن هناك بيانات مستقبلة تعود الدالة بصفر "0" . يجب استدعاء الدالة UART1_Read بعد استدعاء الدالة UART1_Data_Ready للتحقق من أن البيانات متاحة بموديول USART .
عائد الدلة UART1_Read من نوع char وليس لها بارامترات () .


4- الدالة UART1_Write
الصيغة العامة :

كود:
void UART1_Write(char _data);

مثال :

كود:
unsigned char _data = 0x1E; ... UART1_Write(_data);

تستدعى الدالة UART1_Write لإرسال "بيانات بايت" إلى موديول USART ومن هناك ترسل البيانات تسلسليا إلى خارج الموديول .
الدالة UART1_Write ليس لها عائد void ويجب إمدادها ببارمتر وهو "بيانات البايت المراد إرساله".
مثال : إرسال الحرف A إلى الموديول USART :

كود:
char Temp = ‘A’; UART1_Write (Temp);

5- الدالة UART1_Read_Text :

الصيغة العامة :



كود:
void UART1_Read_Text(char *Output, char *Delimiter, char Attempts);




هذه الدالة من نوع void أى بدون عائد . تستخدم الدالة UART1_Read_Text فى قراءة الحروف (نص) والتى تم استقبالها من خلال الموديول UART حتى يتم كشف "تسلسل محدد" Delimiter . يتم حفظ نتيجة قراءة النص فى بارامتر "الخرج" Output بينما يتم تحديد التسلسل المحدد عن طريق البارامتر Delimiter . البارامتر "المحاولات" Attempts يعرف عدد الحروف المستقبلة والتى يتوقعها التسلسل المحدد . إذا تم تحديد المحاولات بالقيمة 255 فإن الدالة سوف تحاول بصفة مستمرة كشف التتابع المحدد .

هذه الدالة "مانعة" حيث يتم توقع التسلسل المحدد وإلا إن لم يتواجد هذا التسلسل المحدد يتم الخروج من الدالة .

مثال :

قراءة نص حتى يتم استقبال التسلسل المحدد “OK” ثم إرسال ما تم استقباله عائدا .



كود:
UART1_Init(9600); // initialize UART1 module Delay_ms(100); while (1) { if (UART1_Data_Ready() == 1) { // if data is received UART1_Read_Text(output, "OK", 10); // reads text until 'OK' is found UART1_Write_Text(output); // sends back text } }




6- الدالة UART1_Write_Text :

الصيغة العامة :



كود:
void UART1_Write_Text(char * UART_text);


هذه الدالة من نوع void أى بدون عائد وتستخدم فى إرسال "نص" text من خلال موديول UART ويجب أن ينتهى النص بصفر النهاية . تحتوى الدالة على بارامتر واحد يشير إلى متغير باسم * UART_text نوع char وهو النص المراد إرساله .



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 07:24 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)