Cara mengubah COM1 atau COM2 parameter sementara Port terbuka

Sanggahan Konten KB yang Dihentikan

Artikel ini ditulis untuk produk yang tidak lagi didukung oleh Microsoft. Oleh karena itu, artikel ini disediakan "sebagaimana adanya" dan tidak akan diperbarui lagi.

Ringkasan

Saat menggunakan Porta komunikasi Basic, setelah COM port dibuka (dengan pernyataan "COM1:..." atau buka "COM2:..." terbuka), konfigurasi port yang biasanya tidak dapat diubah dengan pernyataan dasar tanpa menutup dan kemudian pembukaan COM port. Namun, parameter port COM (laju baud paritas stop bits, data bit, dll) yang dapat diubah secara langsung berkomunikasi dengan UART menggunakan dasar keluar dan pernyataan INP. UART (Universal asinkron Penerima pemancar) di IBM PC adalah elemen komunikasi asinkron 8250, chip mikroprosesor khusus.


Artikel ini berisi informasi lanjut programmer, dan harus digunakan hanya oleh programmer lanjut yang sangat akrab dengan operasi Porta komunikasi. Informasi ini berlaku untuk versi Microsoft QuickBasic 4.00, 4.00b dan 4,50; untuk versi Microsoft Dasar Compiler 6.00 dan 6.00b untuk MS-DOS; dan untuk Microsoft dasar profesional pengembangan sistem (PDS) versi 7.00 dan 7.10 MS-DOS.

Informasi lebih lanjut

Untuk mengubah parameter komunikasi untuk COM port, pertama-tama Anda harus menonaktifkan gangguan komunikasi. Anda dapat melakukannya dengan pengaturan bit 4 (COM1) atau bit 3 (untuk COM2) dari daftar Mask mengganggu (IMR, I/O port & H21) (mana bit bernomor mulai bit nol; 0, 1, 2, dll.). Perhatikan bahwa setelah selesai, bit dari daftar ini akan tetap tidak berubah, sehingga Anda harus "atau" nilai saat ini dengan nilai bit yang diperlukan, dan tempat nilai yang baru kembali ke daftar. Sebagai contoh, berikut ini menonaktifkan COM1:

   OUT &H21, INP(&H21) OR 16
Menonaktifkan berikut COM2:

   OUT &H21, INP(&H21) OR 8
Setelah interupsi COM dinonaktifkan, Anda dapat mengubah parameter komunikasi. Pertama parameter yang dapat berubah adalah laju baud. Untuk melakukannya, Anda harus terlebih dahulu menetapkan mendaftarkan kontrol baris untuk mengizinkan perubahan dalam laju baud dengan mengirimkan H80 ke port & H3FB, baris-kontrol mendaftar untuk COM1, atau port & H2FB, baris-kontrol mendaftar COM2. Kemudian, mengirim sesuai paling tidak signifikan byte (LSB) dan paling penting byte (MSB) laju baud diinginkan ke Port & H3F8 dan & H3F9, masing-masing, untuk COM1, atau Port & H2F8 dan & H2F9, masing-masing, untuk COM2. LSB dan MSB byte untuk tingkat baud ditunjukkan pada tabel berikut ini:

   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

Sekarang setelah laju baud telah diubah, parameter lainnya harus menetapkan (untuk contoh, ketik paritas, bit berhenti, data bit, dll). Parameter ini ditetapkan dengan mengirimkan byte sesuai untuk mendaftarkan kontrol baris (port & H3FB COM1, atau port & H2FB untuk COM2). Byte untuk mengirim dibuat oleh pengaturan bit sesuai berdasarkan diagram berikut:
                          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

(Tabel ini diambil dari halaman 180 "8088 Assembler bahasa pemrograman: IBM PC, edisi kedua" Willen dan Krantz [Howard W. Sams & perusahaan, Inc, 1988]. Silakan baca Bab 7, "Komunikasi Serial," untuk lebih banyak rincian teknis.)


Setelah menetapkan parameter ini, interupsi COM dapat reenabled dengan menetapkan bit untuk COM port kembali ke 0 pada IMR. Seperti sebelumnya, Anda harus berhati-hati untuk tidak mengganggu setiap bit dalam daftar ini, jadi untuk masker tertentu bit ke 0, logis "Dan" nilai register dengan 255 dikurangi nilai bit. Misalnya:
   OUT &H21, INP(&H21) AND 239    'enables COM1 (255 - 16 = 239)   OUT &H21, INP(&H21) AND 247    'enables COM2 (255 - 8 = 247)

Setelah langkah ini selesai, komunikasi dapat melanjutkan pengaturan komunikasi yang baru. Di bawah ini adalah contoh kode daftar perubahan tersebut laju baud dan parameter COM1 9600, N, 8, 1.


Buku berikut berisi informasi lebih lanjut tentang perangkat keras Alamat:
"Programmer PC Sourcebook," oleh Thom Hogan (Microsoft Press, 1988)
Berikut ini adalah contoh kode:
     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!

Properti

ID Artikel: 39255 - Tinjauan Terakhir: 29 Jan 2017 - Revisi: 1

Tanggapan