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

أدوات الموضوع

TIME0
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
المشاركات: 277
نشاط [ TIME0 ]
قوة السمعة:0
قديم 09-10-2017, 09:57 PM المشاركة 1   
افتراضي كيف استقبل اكثر من حرف سيريال مايكروسي UART Twitter FaceBook Google+



char button_Value=4;

void main() {
CMCON=0x07;
TRISB=0;
portb=0;
UART1_Init(9600);
while (1) {
delay_ms(10);
if (UART1_Data_Ready()) {
uart_rd= UART1_Read() ;

if(uart_rd=='e') {delay_ms(50); porta.f2=1;

في هذا الكود استقبل حرف e وبناء عليه قمت بتنفيذ مهمه ما

ولكن اربد ان استقبل حرفين او ثلاث او حروف وارقام

على سبيل المثال اريد استقبال U3 لتشغيل ليد معين

و

استقبال شيء اخر H82 لتشغير ليد مختلف


ولكن جزيل الشكر

اعلانات

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:409
قديم 12-10-2017, 08:12 AM المشاركة 2   
افتراضي


هل عدد الاحرف محدد مسبقا ام قابل للتغيير؟

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

TIME0
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
المشاركات: 277
نشاط [ TIME0 ]
قوة السمعة:0
قديم 12-10-2017, 09:38 PM المشاركة 3   
افتراضي


محدد مسبقا في هذا المشروع

في مشروع اخر قد يكون متغير

اكتب مثالين الي عندك حتى تتضح الصورة للجميع

وبارك الله فيك


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:409
قديم 13-10-2017, 07:27 AM المشاركة 4   
افتراضي


معذرة ليست لدى نماذج أو امثلة لكنى ابرمج بحسب المطلوب و المتاح.
يمكنك تعليم هذا الأمر UART1_Data_Ready و بالنقر على F1 للمساعدة ستجد تفاصيل الأمر
UART_Read_Text
والذى يتيح لك القراءة حتى كود معين تستخدمه كنهاية الإرسال بأى عدد
أو ببساطة انشئ مصفوفة و عداد ثم احفط الحرف الأول فى المصفوفة وزد العداد لتعد حتى تمام العدد


TIME0
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
المشاركات: 277
نشاط [ TIME0 ]
قوة السمعة:0
قديم 13-10-2017, 08:58 AM المشاركة 5   
افتراضي


ضع مثال أفضل


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 14-10-2017, 05:51 PM المشاركة 6   
افتراضي


في هذا الكود استقبل حرف e وبناء عليه قمت بتنفيذ مهمه ما

ولكن اربد ان استقبل حرفين او ثلاث او حروف وارقام

على سبيل المثال اريد استقبال U3 لتشغيل ليد معين

و

استقبال شيء اخر H82 لتشغير ليد مختلف


ولكن جزيل الشكر

كود:
char output[4]; // String , 3 characters and termination character
void main(){
TRISB.F0 = 0 ;
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
 }
 if(output[0] == 'H' && output[1] == '8' && output[2]== '2') PORTB.F0 = 1 ;
 else PORTB.F0 = 0 ;
}
}


TIME0
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
المشاركات: 277
نشاط [ TIME0 ]
قوة السمعة:0
قديم 14-10-2017, 06:40 PM المشاركة 7   
افتراضي


شكرا اخي الفاضل على ردك الرائع

ولكن يوجد ملاحظات
UART1_Write_Text(output);
هنا اظن انها ليس لها داعي لانني نستقبل فقط في هذا المشروع
والكود هذا لاعاده ارسال مره اخرى بحاله استلام البيانات

UART1_Read_Text(o
utput, "OK", 10); // reads text until 'OK' is found
هنا ايضا يقول اقرا حتى تستقبل البيانات
OK
وليس ماحددناه
هل نحتاج تعديل بهذين السطرين لكودنا لبرنامجنا فقط





الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 14-10-2017, 07:09 PM المشاركة 8   
افتراضي


شكرا اخي الفاضل على ردك الرائع

ولكن يوجد ملاحظات


هنا اظن انها ليس لها داعي لانني نستقبل فقط في هذا المشروع
والكود هذا لاعاده ارسال مره اخرى بحاله استلام البيانات

UART1_Read_Text(o

هنا ايضا يقول اقرا حتى تستقبل البيانات
OK
وليس ماحددناه
هل نحتاج تعديل بهذين السطرين لكودنا لبرنامجنا فقط




أخى الكريم

هذا مثال فقط ولك مطلق الحرية فى تغيير ما تره مناسبا لك

مع تمنياتى بدوام التوفيق

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025