كيفية تغيير COM1 أو COM2 معلمات الوقت منفذ مفتوح

ملخص

عند استخدام منافذ الاتصالات في Basic، بمجرد فتح منفذ COM (مع فتح "COM2:..." أو "COM1:..." عبارة OPEN)، تكوين المنفذ عادة لا يمكن تغييرها بأي بيان أساسي دون إغلاق ثم إعادة فتح منفذ COM. ومع ذلك، يمكن تغيير المعلمات لمنفذ COM (سرعة البث بالباود، التماثل، بتات التوقف، بتات البيانات، إلخ.) بالاتصال مباشرة باستخدام الأساسي الخاص بها وبيانات البرنامج النووي العراقي UART. UART (عالمية متزامنة استقبال الإرسال) في IBM PC عنصرا 8250 متزامن الاتصالات، شريحة معالج مخصص.


يحتوي على معلومات مبرمج المتقدمة هذه المادة، ويجب استخدامه فقط من قبل المتقدمة المبرمجين الذين هم على علم تام بعمليات منافذ الاتصالات. تنطبق هذه المعلومات على إصدارات Microsoft QuickBasic 4.00 b, و 4.50؛ لإصدارات Microsoft الأساسية مترجم 6.00 و6.00 b ل MS-DOS; وإلى Microsoft الأساسية Professional تطوير النظام (PDS) إصدارات 7.00 و 7.10 ل MS-DOS.

مزيد من المعلومات

لتغيير معلمات الاتصالات لمنفذ COM، يجب أولاً تعطيل المقاطعات الاتصالات. يمكنك القيام بذلك عن طريق تعيين بت 4 (على COM1) أو بت 3 (ل COM2) مقاطعة قناع سجل (معدل وفيات الرضع، منفذ الإدخال/الإخراج & H21) (حيث يتم ترقيم بت بدءاً من بت صفر; هو 0، 1، 2، إلخ.). لاحظ أن عند القيام بذلك، معاهدات الاستثمار الثنائية لهذا السجل يجب أن يبقى دون تغيير، حيث يجب عليك "أو" القيمة الحالية بقيمة بت الحاجة والمكان مرة أخرى القيمة الجديدة في السجل. على سبيل المثال، التالي تعطيل COM1:

   OUT &H21, INP(&H21) OR 16
تعطيل التالية COM2:

   OUT &H21, INP(&H21) OR 8
حالما يتم تعطيل المقاطعة COM، يمكنك تغيير معلمات الاتصالات. هو أول المعلمات التي يمكنك تغيير معدل الباود. للقيام بذلك، يجب عليك أولاً تعيين السجل خط السيطرة للسماح بإجراء تغيير في معدل الباود بإرسال H80 إلى المنفذ & H3FB، تسجيل الخط السيطرة ل COM1 أو المنفذ & H2FB، تسجيل عنصر تحكم الخط COM2. ثم إرسال بايت على الأقل أهمية المناسبة (LSB) والبايت الأكثر أهمية (MSB) من معدل سرعة البث بالباود المطلوب للمنافذ & H3F8 و & H3F9، على التوالي، ل COM1 أو إلى المنافذ & H2F8 و & H2F9، على التوالي، ل COM2. وحدات البايت LSB و MSB لسرعات بث بالباود مبينة في الجدول التالي:

   Baud Rate    MSB    LSB
--------- --- ---

300 01H 80H
600 00H C0H
1200 00H 60H
2400 00H 30H
3600 00H 20H
4800 00H 18H
9600 00H 0CH

والآن بعد أن تم تغيير معدل الباود، يجب تعيين المعلمات الأخرى (على سبيل المثال نوع التماثل، وبت التوقف، بتات البيانات إلخ.). يتم تعيين هذه المعلمات بإرسال بايت مناسبة لتسجيل عنصر تحكم سطر (المنفذ & H3FB COM1، أو منفذ & H2FB ل COM2). يتم تأسيس البايت لإرسال بتعيين وحدات البت المناسبة وفقا للمخطط التالي:
                          THE LINE-CONTROL REGISTER

|-----|-----|-----|-----|-----|-----|-----|-----|
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|-----|-----|-----|-----|-----|-----|-----|-----|
| \ | | | | | | Character
| \ | | | | | | length
I/O Addressing < \ | | | | 0 + 0 = 5 bits
0 = Normal value \__| | | | 0 + 1 = 6 bits
1 = To address baud | | | | 1 + 0 = 7 bits
rate divisor | | | | 1 + 1 = 8 bits
registers | | | |
| | | > Stop bits
Set these bits to 0 < | | 0 = 1 stop bit
| | 1 = 1.5 stop bits if 5-bit
| | character length
| | 1 = 2 if 6-, 7-, or 8-bit
| | character length
Parity type < > Parity
0 = even 0 = No parity bit generated
1 = odd 1 = Parity bit generated

(هذا الجدول مأخوذ من الصفحة 180 من "مجمع لغة برمجة 8088: IBM PC، الطبعة الثانية" بتهيئة كرانتز [هوارد دبليو سامز وشركة، 1988]. الرجاء قراءة الفصل السابع، "الاتصالات التسلسلية"، للمزيد من التفاصيل الفنية.)


بعد تعيين هذه المعلمات، يمكنك reenabled المقاطعة COM بتعيين بت لمنفذ COM إلى 0 في معدل وفيات الرضع. كما كان من قبل، يجب أن يكون الحرص على عدم إعاقة أي من معاهدات الاستثمار الثنائية في هذا السجل، وذلك لإخفاء معينة بت 0، منطقياً "AND" القيمة الحالية للسجل مع 255 ناقص قيمة البت. على سبيل المثال:
   OUT &H21, INP(&H21) AND 239    'enables COM1 (255 - 16 = 239)   OUT &H21, INP(&H21) AND 247    'enables COM2 (255 - 8 = 247)

بمجرد الانتهاء من هذه الخطوة، يمكن استئناف الاتصال في إعدادات الاتصالات الجديدة. أدناه هو مثال التعليمات برمجية سرد تلك التغييرات سرعة البث بالباود ومعلمات COM1 إلى 9600، N، 8، 1.


ويتضمن الكتاب التالي مزيد من المعلومات حول عناوين الأجهزة:
"الكمبيوتر المرجعي المبرمج،" التي هوجان ثوم (Microsoft Press، 1988)
التالي مثال التعليمات برمجية:
     x% = INP(&H21)                    'disable COM1...      x% = x% OR 16
OUT &H21, x%
OUT &H3FB, &H80 'set for BAUD change
REM OUT &H3F8, &H60 'BAUD-rate-divisor register; &H60 sets 1200 baud
OUT &H3F8, &H0C 'BAUD-rate-divisor register; &H0C sets 9600 baud
OUT &H3F9, &H0 'High byte of BAUD-rate-divisor register
OUT &H3FB, &H3 'N,8,1
x% = INP(&H21) 'reenable COM1...
x% = x% AND 239
OUT &H21, x% 'all done!

خصائص

رقم الموضوع: 39255 - آخر مراجعة: 15‏/01‏/2017 - المراجعة: 1

تعليقات