بسم الله والحمد لله والصلاة زالسلام على رسول الله وعلى اله وصحبه ومن والاه
وعن ابن عمر - رضي الله عنهما - قال: أخذ رسول الله -صلى الله عليه وعلى آله وسلم- بمنكبي فقال: كن في الدنيا كأنك غريب أو عابر سبيل وكان ابن عمر يقول -رضي الله عنه-: "إذا أمسيت فلا تنتظرالصباح، وإذا أصبحت فلا تنتظر المساء، وخذ من صحتك لسقمك، ومن حياتك لموتك" أخرجهالبخاري.
نكمل ان شاء الله كا بٌدىء به سابقا
في اليوم سنتناول التعامل مع المنفذ التسلسلى وبصورة عامة يستخدم المنفذ التسلسي في الإتصال المتزامن او غير المتزامن بين الحاسب والأجهزه الأخرى أو بين الأجهزة. وله سرعات عديدة تقاس ب bit/sec ومن امثلة هذه السرعات 1200و4800 و 9600 و غيرها ولكن يجب الإنتباه الى انها لاتصل الى 1 ميجا.
يمكن التعامل مع المنفذ التسلسي عن طريق المايكروكونترولر والذي بدورة قد يمتلك هاروير خاص لهذا النوع للإتصالات أو لايملك في كلا الحالتين يمكن التعامل معها لأنه يمكن الإستعاضة عن الهاردوير بالسوفتوير للتعامل مع المنفذ التسلسلي. وتجدر الإشارة الى انه السرعت المدعومة في لسوفت وير اقل بكثير مما هو مدعوم عن طريق الهاردوير وقد يصل بالأكثر الى 19600 بت بالثانية
على العموم في لعة البروتون (البيسك) يمكن استخدام النوعين
الجدول التالي يوضح انواع الأتصال المتسلسل المدعوم من البروتون ( السوفت وير)
السرعات هي
300 و 600 و 1200 و 2400 و 4800 و 9600
والأنواع كالتالي
1-8-bit no-parity true
2- inverted 8-bit no-parity
3- true 7-bit even-parity
4- inverted 7-bit even-parity
في هذا الدرس سوف نركز على نوع واحد وهو النوع الأول من السوفتوير
وطريقة التعامل معه كالتالي
SerOut the_pin,Baud_rate, [what_is_needed_to_be_sent]
حيث ان :
The_pin: هو الضلع المراد استخدامة في الإتصال التسلسلي
Baud_rate: وهو السرعة المستخدمة للإتصال وهي على النحو التالي
inv 7 bit T 7 bit inv 8 bit T 8 bit baude rate
300 19697 3313 27889 11505
600 18030 1646 26222 9838
1200 17197 813 25389 9005
2400 16780 396 24972 8588
4800 16572 188 24764 8380
9600 16468 84 24660 8276
مثال
كود:
SerOut PORTB.0,84, ["text"]
في المثال السابق تم تعريف portb.0 على انه مخرج للإتصال التسلسلي ومن ثم تم تعريف السرعة ب 84 على انها من نوع ثمان بت المعكوس بسرعة 9600 بت بالثانية ومن ثم فإن النص لمراد اخراجه هو “text”
في حالة اذا اردنا اخراج رقم يجب سبقة بعلامة # حتى يتم تحويله الى نص ومن ثم يرسل وإلا سيتحول الى الحرف المقابل له في الأسكي كود .
مثال
كود:
number=10
SerOut PORTB.0,84, ["The number is ",#number]
في المثال السابق سيكون المخرجات عبارة عن النص التالي “the number is 10”
واما بالنسبة الى الإدخال فإن الأمر التالي هو المستخدم
SerIn the_pin,Baud_rate,[the_variable_where_the_input_should_be_saved]
حيث ان :
The_pin: هو الضلع المراد استخدامة في الإتصال التسلسلي
Baud_rate: وهو السرعة المستخدمة للإتصال وهي على النحو الذي ذكر سابقا
مثال
كود:
SerIn PORTB.0,84,[x]
في المثال السابق تم تعريف portb.0 على انه مدخل الإتصال التسلسلي والسرعه على انها 9600 بت بالثانية ذات الثمان بتات المعكوسة
وان المخلات سيتم تخزين بايت واحد في المتغير x
وأما اذا اردنا عدم استقبال اى شيء من المنفذ التسلسلي إلا بعد ورود حرف معين او كلمة فيتم استخدام الأمر wait()
كود:
SerIn PORTB.0,84,[Wait("A"),x]
في هذا المثال لن يتم استقبال اي شيء إلا في حالة استقبال A قبل البيانات
وسأرفق الأمثلة والسميوليشن إن شاء الله في المشاركة اللاحقة
ولا تنسونا من دعائكم الصالح