Τρόπος αλλαγής COM1 ή COM2 παραμέτρους ενώ θύρα είναι ανοιχτή

Αποποίηση ευθυνών για περιεχόμενο της Γνωσιακής βάσης που έχει αποσυρθεί

Αυτό το άρθρο αφορά προϊόντα για τα οποία η Microsoft δεν παρέχει πλέον υποστήριξη. Συνεπώς, το παρόν άρθρο παρέχεται "ως έχει" και δεν θα ενημερώνεται πλέον.

Σύνοψη

Όταν χρησιμοποιείτε τις θύρες επικοινωνιών σε Basic, από τη στιγμή που ανοίγει τη θύρα COM (με μια ΑΝΟΙΚΤΉ εντολή "COM1:..." "ή" ΆΝΟΙΓΜΑ "...: θύρα COM2"), ρύθμιση παραμέτρων της θύρας κανονικά δεν μπορεί να αλλάξει από οποιοδήποτε βασικό δήλωση χωρίς να κλείσετε και να ανοίξετε ξανά τη θύρα COM. Ωστόσο, μπορεί να αλλάξει τις παραμέτρους της θύρας COM (η ταχύτητα baud, ισοτιμία, bit διακοπής, bit δεδομένων, κ.λπ.) από την απευθείας επικοινωνία με το UART χρησιμοποιώντας Basic του ΑΝΑΦΈΡΟΝΤΑΙ και INP δηλώσεις. Το UART (ασύγχρονη γενικής χρήσης υπολογιστή δέκτη πομπού) του υπολογιστή IBM είναι το 8250 ασύγχρονες επικοινωνίες στοιχείο, ένα τσιπ μικροεπεξεργαστή αποκλειστική.


Αυτό το άρθρο περιέχει πληροφορίες για προχωρημένους προγραμματιστές και θα πρέπει να χρησιμοποιείται μόνο από προχωρημένους προγραμματιστές που είναι πολύ εξοικειωμένοι με τις εργασίες από τις θύρες επικοινωνιών. Αυτές οι πληροφορίες ισχύουν για τις εκδόσεις της Microsoft QuickBasic 4.00, 4.00b και 4.50, Βασικό πρόγραμμα μεταγλώττισης Microsoft εκδόσεις 6,00 και 6.00b για το MS-DOS; και για να Microsoft βασικό Professional ανάπτυξη συστήματος (PDS) εκδόσεων 7.00 και 7.10 για το MS-DOS.

Περισσότερες πληροφορίες

Για να αλλάξετε τις παραμέτρους επικοινωνίες για μια θύρα COM, πρέπει πρώτα να απενεργοποιήσετε διακοπές επικοινωνιών. Μπορείτε να κάνετε αυτό με ρύθμιση bit 4 (για τη θύρα COM1) ή bit 3 (για COM2) από τη μάσκα καταχωρητή διακοπής (IMR, θύρα εισόδου/εξόδου & H21) (όπου bits αριθμούνται ξεκινώντας από το bit μηδέν-δηλαδή, 0, 1, 2, κ.λπ.). Σημειώστε ότι όταν το κάνετε αυτό, τα άλλα bit του μητρώο αυτό πρέπει να παραμένουν ως έχουν, έτσι θα πρέπει να "ή" την τρέχουσα τιμή με την τιμή bit που απαιτούνται, και τον τόπο τη νέα τιμή πίσω στο μητρώο. Για παράδειγμα, το παρακάτω απενεργοποιεί COM1:

   OUT &H21, INP(&H21) OR 16
Παρακάτω απενεργοποιεί COM2:

   OUT &H21, INP(&H21) OR 8
Μετά τη διακοπή COM είναι απενεργοποιημένη, μπορείτε να αλλάξετε τις παραμέτρους επικοινωνίες. Η πρώτη από τις παραμέτρους που μπορείτε να αλλάξετε είναι η ταχύτητα baud. Για να γίνει αυτό, πρέπει πρώτα να ορίσετε το μητρώο γραμμή ελέγχου για να επιτρέψετε μια αλλαγή σε την ταχύτητα baud στέλνοντας ένα & H80 θύρα & H3FB, το στοιχείο ελέγχου γραμμής καταχώρηση για τη θύρα COM1 ή στη θύρα & H2FB, το στοιχείο ελέγχου γραμμής καταχώρηση για τη θύρα COM2. Στη συνέχεια, αποστέλλει το κατάλληλο λιγότερο σημαντικό byte (LSB) και την επιθυμητή ταχύτητα baud πιο σημαντική byte (MSB) θύρες & H3F8 και & H3F9, αντίστοιχα, για τη θύρα COM1 ή θύρες & H2F8 και & H2F9, αντίστοιχα, για τη θύρα COM2. Τα byte LSB και Προσήμου για την ταχύτητα baud εμφανίζονται στον ακόλουθο πίνακα:

   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

Τώρα που η ταχύτητα baud έχει αλλάξει, πρέπει να οριστεί τις άλλες παραμέτρους (για παράδειγμα, πληκτρολογήστε ισοτιμίας, bit διακοπής, bit δεδομένων, κ.λπ.). Αυτές οι παράμετροι ρυθμίζονται στέλνοντας το κατάλληλο byte στο μητρώο στοιχείο ελέγχου γραμμής (θύρα & H3FB για τη θύρα COM1, ή θύρα & H2FB για τη θύρα COM2). Το byte αποστολής είναι εγκατεστημένος, ρυθμίζοντας τα κατάλληλα bit σύμφωνα με το ακόλουθο διάγραμμα:
                          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, δεύτερη έκδοση", Willen και Krantz [Sams Ολοκλ Howard & εταιρεία, Inc., 1988]. Διαβάστε το κεφάλαιο 7, "Σειριακές επικοινωνίες," για περισσότερες τεχνικές λεπτομέρειες.)


Αφού ορίσετε αυτές τις άλλες παραμέτρους, τη διακοπή COM μπορεί να ενεργοποιηθεί εκ νέου, ορίζοντας το bit για τη θύρα COM ξανά σε 0 με το IMR. Όπως πριν, πρέπει να προσέχετε να μην διαταράσσουν οποιοδήποτε από τα άλλα bit στο μητρώο αυτό, ώστε να μάσκα bit 0, λογικά συγκεκριμένης "Και" την τρέχουσα τιμή του καταχωρητή με 255 μείον την τιμή bit. Για παράδειγμα:
   OUT &H21, INP(&H21) AND 239    'enables COM1 (255 - 16 = 239)   OUT &H21, INP(&H21) AND 247    'enables COM2 (255 - 8 = 247)

Μόλις ολοκληρωθεί αυτό το βήμα, να συνεχίσετε την επικοινωνία με τις νέες ρυθμίσεις επικοινωνίας. Παρακάτω είναι ένα παράδειγμα κώδικα αλλαγές στη λίστα αυτή η ταχύτητα baud και παραμέτρους COM1 σε 9600, N, 8, 1.


Το βιβλίο που ακολουθεί περιέχει περισσότερες πληροφορίες σχετικά με τις διευθύνσεις υλικού:
"Εγχειρίδιο προγραμματιστή PC Sourcebook," από Thom Hogan (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 - Τελευταία αναθεώρηση: 17 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια