Tài liệu môn học Ghép nối và điều khiển thiết bị ngoại vi - Nguyễn Văn Minh Trí (Phần 1)

Tóm tắt Tài liệu môn học Ghép nối và điều khiển thiết bị ngoại vi - Nguyễn Văn Minh Trí (Phần 1): ...ịnh bởi địa chỉ addr_port Gửi một byte ra cổng vào/ra, 8 bít thấp xác định bởi địa chỉ addr_port, 8 bít cao xác định bởi địa chỉ addr_port+1 Ðọc một word từ cổng vào/ra, 8 bít thấp xác định bởi địa chỉ addr_port, 8 bít cao xác định bởi địa chỉ addr_port+1 Ví dụ các lệnh sau xuất 5 (8 bít 0... nhận. Tín hiệu IBF được xác lập khi tín hiệu STB đang ở mức thấp và được khởi tạo lại khi cĩ sườn dương của đầu vào RD . • INTR ( Interrupt Request ) Mức cao của tín hiệu ra này cĩ thể được sử dụng để yêu cầu ngắt tới CPU. Khi một thiết bị vào yêu cầu phục vụ, tín hiệu INTR được xác lập bởi...u trên đường truyền. Trên đường dây điện thoại, người ta khơng phát từng bit 0/1 mà dùng MODEM (modulation-demodulation) để điều chế tín hiệu thành dạng xoay chiều (0÷2400 Hz, 1÷1200 Hz) và truyền tín hiệu xoay chiều đĩ. 3.1.2 Mạch trao đổi dữ liệu nối tiếp. 1. Mạch khơng cần bộ ghép nối: ...

pdf54 trang | Chia sẻ: havih72 | Lượt xem: 316 | Lượt tải: 0download
Nội dung tài liệu Tài liệu môn học Ghép nối và điều khiển thiết bị ngoại vi - Nguyễn Văn Minh Trí (Phần 1), để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
ệu mơn học: Ghép nối và điều khiển thiết bị ngoại vi 
Giảng viên: Nguyễn Văn Minh Trí 43 
BGN cĩ chức năng chuyển dữ liệu song song từ máy tính (hệ VXL) thành tín hiệu 
dạng nối tiếp và truyền đến TBNV. ðể truyền chính xác, BGN ngồi chức năng 
chuyển dữ liệu song song thành nối tiếp, nĩ cịn tạo ra các bit Start, stop, parity để 
đĩng khung dữ liệu. Loại này làm việc đơn giản nhưng khơng mở rộng được thiết 
bị ngoại vi, khoảng cách truyền tin ngắn. 
Hình 3.2: Mạch cần BGN ss-nt 
Trong đĩ, song song là ss, nối tiếp là nt. 
3. Mạch cĩ KGN song song- nối tiếp và nối tiếp-song song: 
Hệ này cũng giống như hệ trên, chỉ khác là TBNV làm việc với dữ liệu song song, 
nên cần cĩ BGN trung gian chuyển dữ liệu song song thành nối tiếp. 
Hình 3.3: Mạch cần BGN ss-nt và nt-ss 
4. Mạch cĩ BGN, MODEM và RS232C: 
Hình 3.4: Mạch cần BGN ss-nt, RS 232 và MODEM. 
Hệ này thơng dụng và thường xuyên gặp trong thực tế. Trong đĩ VXL thường là 1 
máy vi tính, cịn thiết bị đầu cuối (TBðC) cĩ thể là 1 đối tượng bất kỳ. Nếu 
TBðC là máy vi tính thì hệ thống dùng để trao đổi File. 
Chú ý: 
Chuẩn RS232C cĩ mức điện áp là ±12V. 
Chuẩn RS422 cĩ mức điện áp là ±15V. 
Chuẩn RS485 cĩ mức điện áp là ±30V (điện thoại). 
ðể chuyển từ RS232C thành RS485 hay RS422 sẽ cĩ những bộ chuyển (shift) 
trung gian, thơng thường đĩ là những bộ đệm, vừa tạo mức tín hiệu,vừa phối hợp 
trở kháng. 
VXL 
BGN 
ss-nt 
TBNV 
(VXL) 
nt 
VXL 
BGN 
ss-nt 
TBNV 
(VXL) 
ss 
BGN 
nt-ss 
VXL 
BGN 
ss-nt 
R
S-
23
2C
M
O
D
EM
M
O
D
EM
R
S-
23
2C
BGN 
ss-nt 
TBðC 
(VXL) 
ss 
đường dây 
điện thoại 
Tài liệu mơn học: Ghép nối và điều khiển thiết bị ngoại vi 
Giảng viên: Nguyễn Văn Minh Trí 44 
3.1.3 Thủ tục trao đổi dữ liệu nối tiếp 
1. Thủ tục phát dữ liệu TxD (Tranceiver Data) : 
• TBðC (hay MVT) gửi tín hiệu DTR (Data Terminal Ready) ở mức 0 đến 
MODEM báo hiệu đã sẵn sàng. 
• MODEM trả lời TBðC bằng tín hiệu DSR (Date Set Ready) ở mức 0. 
• Nếu TBðC cĩ 1 ký tự sẵn sàng gửi đi, nĩ gửi RTS (Request To Send) đến 
MODEM 
• MODEM gửi tín hiệu CD (Carrier Detect) cho TBðC để báo hiệu liên lạc đã 
thơng với MTV. 
• Khi MODEM sẵn sàng phát số liệu trên đường dây, MODEM phát xung nhịp 
và tín hiệu CTS (Clear To Send) đến TBðC (xung nhịp ở trên đường dây). 
• TBðC gửi các ký tự số liệu (SDU) cho MODEM. 
• Khi TBðC gửi xong, nĩ nâng tín hiệu RTS lên cao để báo cho modem biết là 
đã phát xong. 
• MODEM trả lời cho TBðC bằng tín hiệu CTS ở mức cao, báo hiệu hồn 
thành việc truyền tin. 
Qua đĩ ta thấy việc gửi đi kí tự bằng modem nhiều thủ tục và do đĩ tốc độ chậm 
2. Thủ tục nhận dữ liệu RxD (Receiver Data) 
Trong quá trình nhận tin, phải bảo đảm máy tính đã sẵn sàng nhận ,khi đĩ : 
• TBðC phía thu gửi DTR mức thấp cho MODEM báo nĩ đã sẵn sàng 
(Data terminal ready) 
• MODEM thu gửi tín hiệu trả lời bằng DSR . 
• MODEM thu nhận tín hiệu CD từ đường dây và kích gửi tín hiệu nhịp 
MODEM cho TBðC. 
• TBðC phát tín hiệu RTS cho modem (Request to Send). 
• MODEM gửi tín hiệu CTS mức thấp cho TBðC (Clear to Send) để 
báo MODEM sẵn sàng nhận tin. 
• MODEM nhận TxD trên đường dây, sau đĩ phải điều chế thành các bit 
0/1 và lần lượt gửi chuỗi tín hiệu RxD cho TBðC. 
• Khi thu xong, TBðC nâng tín hiệu RTS lên cao, báo cho MODEM là 
đã thu xong 
• MODEM trả lời bằng nâng tín hiệu CTS lên cao, để báo quá trình nhận 
đã xong. 
Việc tiến hành chuyển dữ liệu ss/nt hay nt/ss được thực hiện bởi các thanh ghi dịch 
(Shift register). Các thanh ghi này cĩ tác dụng khi nhận 1 byte song song ở đầu vào nĩ sẽ 
cho ở đầu ra một chuỗi bit kế tiếp nhau theo thứ tự từ bit thấp đến bit cao của byte. ðối 
với máy tính, các chức năng trên được thực hiện thơng qua vi mạch 8251 của hãng 
INTEL. 
Tài liệu mơn học: Ghép nối và điều khiển thiết bị ngoại vi 
Giảng viên: Nguyễn Văn Minh Trí 45 
3.2 Mạch thu phát di bộ vạn năng UART 8250 
Mạch URAT 8250 (Universal Asynchronous Receiver/Transmitter) được lắp ráp trong 
các máy IBM XT, là một IC thu phát khơng đồng bộ cĩ thể lập trình được, nĩ thực hiện 
chức năng giao tiếp giữa máy tính và TBNV. 
Trong các máy PC/AT hiện nay sử dụng UART 16450 cịn trong PS/2 và các AT đời 
mới lại dùng UART 16550 vì 8250 và 16450 khơng đạt đến tốc độ 115200 baud được. 
Thực ra tốc độ này ứng dụng tốt trong kỹ thuật truyền tin trên mạng, cịn trong các thiết 
bị cơng nghiệp TBNV nĩi chung, thường chỉ cần tối đa 19200 baud là được, thơng dụng 
là 9600 baud. 
3.2.1 Sơ đồ khối và chức năng các khối của UART 8250 
1. Mơ tả vi mạch: 
Vi mạch 8250 cĩ 40 chân như trên hình vẽ : 
Hình 3.5: Sơ đồ chân 8250 
Chức năng các chân gồm: 
- Các chân từ 1- 8 (D0- D7 ): Các chân dữ liệu, 8 chân này được nối với bus dữ liệu. 
Qua 8 chân dữ liệu này mà dữ liệu được đi từ bus tới dưới dạng song song sau khi 
qua vi mạch 8250 biến đổi thành tuần tự để đi tới cổng RS232. Dữ liệu từ cổng 
RS232 tới dưới dạng tuần tự, sau khi đi qua vi mạch 8250 được biến đổi thành song 
song và qua 8 chân này truyền lên bus. 
 - Chân số 9 (RCLK ): nhận xung đồng hồ đưa ra từ bộ tạo tốc độ. 
- Chân số 10 (SIN): nhận dữ liệu tuần tự đi tới từ cổng RS232. 
- Chân số 11 (SOUT): Gửi dữ liệu tuần tự sang cổng RS232. 
- Chân số 12,13,14 (CS0 -CS2): Chip select - tín hiệu chọn vi mạch. 
- Chân số 15 ( BOUDOUT ) : Lối ra của bộ tạo tốc độ. 
- Chân số 16,17 (XTAL1,XTAL2) :Lấy xung Clock từ bộ phát nhịp bằng thạch anh 
tới với tần số 3,072 MHz. 
- Chân 18(DOSTR ): I/O write. 
- Chân số 19 ( DOSTR ) : Ðảo của I/O write 
- Chân số 20 (Vss ): nối đất 
Tài liệu mơn học: Ghép nối và điều khiển thiết bị ngoại vi 
Giảng viên: Nguyễn Văn Minh Trí 46 
- Chân số 21 (DISTR) : I/O Read . 
- Chân số 22 ( DISTR ): Ðảo của I/O Read . 
- Chân số 26,27,28 ( A0 - A2 ): nhận địa chỉ truyền tới để giải mã lệnh . 
- Chân số 30 (INTRPT) : Interrupt Control Logic . 
- Chân số 32 ( RTS ) : Request To Send ( yêu cầu gửi ) . 
- Chân số 33 ( DTR ) : Data Terminal Ready .(Dữ liệu sẵn sàng ) 
- Chân số 35 (MR) : Reset . 
- Chân số 36 ( CTS) : Clear To Send 
- Chân số 37 ( DSR ) : Data Set Ready . 
- Chân số 38 ( DCD ) : Data Carrier Detect . 
- Chân số 39 ( RI ): Ring Indicate . 
- Chân số 40 (VDo) : nối với nguồn một chiều +5V. 
Hình 3.6: Sơ đồ khối 8250 
Như vậy, 8250 cĩ 11 thanh ghi nội, với cách truy cập như bảng sau: 
Bảng 3.1: ðịa chỉ các thanh ghi của 8085 
DLAB A2 A1 A0 ðọc/ghi Thanh ghi 
(3F8) 
(3F8) 
(3F9) 
(3F8) 
(3F9) 
(3FA) 
(3FB) 
(3FC) 
(3FE) 
(3FD) 
Tài liệu mơn học: Ghép nối và điều khiển thiết bị ngoại vi 
Giảng viên: Nguyễn Văn Minh Trí 47 
0 
0 
 1 
 1 
 x 
 x 
 x 
 x 
 x 
 x 
0 
 0 
 0 
 0 
 0 
 0 
 1 
 1 
 1 
 1 
0 
 0 
 0 
 0 
 1 
 1 
 0 
 0 
 1 
 1 
0 
 1 
 0 
 1 
 0 
 1 
 0 
 1 
 0 
 1 
ðọc/ghi 
ðọc/ghi 
ðọc/ghi 
ðọc 
ðọc/ghi 
ðọc/ghi 
ðọc/ghi 
ðọc/ghi 
ðọc/ghi 
đệm thu (RBR) và đệm phát (THR) 
cho phép yêu cầu ngắt (IER) 
chốt chia phần thấp (LSB) 
chốt chia phần cao (MSB) 
nhận dạng ngắt (IIR) 
điều khiển dịng (LCR) 
điều khiển MODEM (MC) 
trạng thái dịng (LSR) 
trạng thái modem (MSR) 
nhớ nháp (DM) 
 Mỗi thanh ghi trong 8250 tương ứng với một địa chỉ cổng, trong đĩ cĩ hai thang ghi 
đặc biệt, nĩ cĩ chức năng cĩ thể thay thế tuỳ thuộc giá trị bit DLAB (divitor latch access 
bit –Bit truy cập chốt) (DLAB là bit D7 của thanh ghi dạng số liệu). 
• Nếu DLAB = 1 thì thanh ghi thực hiện chức năng chốt chia phần cao và phần 
thấp. 
• nếu DLAB = 0 , hai thanh ghi dùng để đệm và nhận dữ liệu, và IER. 
2. Mơ tả các thanh ghi: 
a) Thanh ghi đệm thu (Receiver Buffer Register – RBR) ứng với DLAB = 0, thanh ghi 
cĩ địa chỉ là 3F8h (COM1), hay 2F8h (COM2): 
Khi 8250 nhận được ký tự qua chân SIN (chân 10) ký tự được chuyển vào thanh 
ghi dịch, tại đây nĩ được tháo khung (các bit start, stop, parity) và nạp song 
song vào thanh đệm thu (lưu ý thanh ghi cĩ 8 bit). CPU chỉ đọc dữ liệu trong 
thanh ghi này vì nĩ thao tác với BUS dữ liệu song song tối thiểu mỗi lần là 1 
byte. 
b) Thanh ghi đệm phát (Transmitter Holding Register – THR) tương ứng với DLAB 
= 0, địa chỉ là 3F8h (2F8h) 
Ký tự cần phát đi phải được ghi từ thanh ghi vào, thanh ghi này nĩ nằm chờ 
(holding) ở đĩ cho đến khi ký tự trước nĩ được phát đi, sau đĩ nĩ đưa vào thanh 
ghi dịch của bộ phát, tại đây nĩ được đĩng khung và đưa ra từng bit một vào 
chân SOUT (chân 11) của 8250, dữ liệu đầu ra ở đây cĩ dạng nối tiếp. 
c) Thanh ghi cho phép ngắt (Interrupt Enable Register - IER), bit DLAB = 0 , địa chỉ 
3F9h (COM1) hay 2F9h (COM2) 
Thanh ghi này thực hiện để cho phép/cấm các nguyên nhân gây ra ngắt khác 
nhau. Trong khi 8250 hoạt động, cĩ tác động đến CPU thơng qua chân INTRPT 
(chân 30), mỗi bit trong các bit D3, D2, D1, D0 ở mức cao sẽ cho phép các hoạt 
động tương ứng với các bit để đưa ra nguyên nhân ngắt tương ứng, và cấm ngắt 
khi ghi 0 vào các bit. 
Bit Chức năng 
7-4 Dự trữ, luơn đặt bằng 0. 
3 cho phép 8250 phát yêu cầu ngắt trạng thái MODEM 
Tài liệu mơn học: Ghép nối và điều khiển thiết bị ngoại vi 
Giảng viên: Nguyễn Văn Minh Trí 48 
2 cho phép 8250 phát yêu cầu ngắt theo trạng thái dừng truyền nhận hoặc 
ngắt dịng thơng tin (lỗi chẵn lẽ, tràn khung). 
1 cho phép 8250 phát yêu cầu ngắt khi thanh ghi đệm phát rỗng. 
0 cho phép 8250 phát yêu cầu ngắt khi thanh ghi đệm thu đầy, dữ liệu đã 
sẵn sàng 
d) Thanh ghi chốt chia phần thấp (Divisor Latch - LS) tương ứng DLAB = 1, địa chỉ 
là 3F8h, hay 2F8h. 
e) Thanh ghi chốt chia phần cao (Divisor Latch – MS) tương ứng DLAB = 1, địa chỉ 
là 3F9h, hay 2F9h. 
 ðể đạt tốc độ truyền mong muốn, giá trị tính tốn được đặt trong hai thanh ghi, 
được gọi là thanh ghi chốt chia tốc độ được tính theo cơng thức 
 Bộ chia = 
- tần số nhịp chuẩn do đồng hồ thạch anh của 8250 phát ra, nĩ bằng 1,8432 
MHZ 
- tốc độ tối đa tính tốn là 115200 baud. 
- tốc độ baud để thực hiện các chân SIN, SOUT. 
Bảng chỉ mối liên hệ giữa tốc độ số liệu và các hệ số chia ở dạng hexa decimal như sau: 
 Baud Số chia Baud Số chia 
50 0900 1200 0060 
110 0417 2400 0030 
150 0300 4800 0018 
300 0180 9600 000C 
600 00C0 11520 0001 
Qua đĩ ta thấy giá trị trong thanh chốt chia cần 1 byte rưỡi để lưu tất cả. ðể thuận tiện, 
người ta sẽ dùng 2 byte và ghi vào 2 thanh ghi, đĩ chính là LSB và MSB. 
f) Thanh ghi nhận dạng ngắt (Interrupt Identification Register - IIR), địa chỉ là 
3FAh, hay 2FAh. 
 Thanh ghi nhận dạng ngắt (chỉ cĩ thể đọc) chứa mã mức ưu tiên cao nhất của 
các yêu cầu ngắt (tại chân 30-INPUT của 8250) đang chờ được phục vụ. Nếu cĩ 
nhiều ngắt cùng một lúc thì IIR sẽ chứa mã ngắt nào cần xử lý trước. Do vậy khi 
cần xử lý ngắt, CPU cần đọc bit D0 của thanh ghi này để biết cĩ yêu cầu ngắt và 
kiểm tra các bit D1 và D2 để xác định nguồn gốc các yêu cầu ngắt. Sau khi 8250 
bị Reset, chỉ cĩ yêu cầu ngắt ưu tiên số một được phục vụ. Ta cĩ thể thay đổi 
Tần số nhịp chuẩn 
16 x tốc độ baud mong muốn 
Tài liệu mơn học: Ghép nối và điều khiển thiết bị ngoại vi 
Giảng viên: Nguyễn Văn Minh Trí 49 
điều này bằng cách dùng mặt nạ che đi các bit yêu cầu ngắt nào đĩ bằng cách 
ghi vào thanh ghi IIR các giá trị bit thích hợp. 
Các bit D7÷D3 luơn đặt bằng 0. 
D2, D1: mã hố các yêu cầu ngắt cĩ mức ưu tiên cao nhất đang chở phục vụ. 
D2 D1 Mức ưu tiên Nhận diện ngắt 
0 0 4 Trạng thái MODEM ⇒ chương trình 
đọc trạng thái MODEM 
0 1 3 Thanh ghi đệm phát rỗng 
1 0 2 TG đệm thu đầy, số liệu đã sẵn sàng 
1 1 1 trạng thái dịng đã thay đổi 
D0=0: cĩ yêu cầu ngắt 
D0=1: khơng cĩ yêu cầu ngắt 
Từ các nhận dạng ngắt trên, VXL sẽ chuyển đến các địa chỉ chứa các chương 
trình con phục vụ ngắt. VXL sẽ xố các bit D0, D1, D2 về 0 sau các thao tác: 
-đọc thanh ghi trạng thái chuỗi. 
-đọc dữ liệu từ thanh ghi đệm thu. 
-ghi vào bộ phát hoặc đọc thanh ghi nhận diện ngắt. 
-đọc trạng thái thanh ghi thao tác MODEM (RS232-C). 
g) Thanh ghi điều khiển dịng (Line Control Register – LCR), địa chỉ là 3FBh, hay 
2FBh. 
Thanh ghi này cịn cĩ tên là thanh ghi định khuơn dạng dữ liệu vì nĩ quyết định 
khuơn dạng của dữ liệu truyền trên đường dây. 
Bit Chức năng 
7 =1 truy nhập thanh ghi chốt chia (LSB & MSB) để lập tốc độ baud 
=0 truy nhập IER,THR,RBR 
6 ðặt cho phép tín hiệu Break 
5-3 B5 B4 B3 Chọn chẵn lẻ 
 x x 0 Non 
 0 0 1 Odd 
 0 1 0 Even 
 1 0 1 High Parity 
 1 1 1 Low Parity 
2 = 1 thì dùng 1.5 bit Stop nếu độ dài từ là 5, cịn nếu độ dài từ 6-8 bit thì cĩ 2 bit 
Stop. 
= 0 thì dùng 1 bit Stop 
1-0 B1 B0 Số bit data 
0 0 5 
0 1 6 
1 0 7 
1 1 8 
Tài liệu mơn học: Ghép nối và điều khiển thiết bị ngoại vi 
Giảng viên: Nguyễn Văn Minh Trí 50 
ðể hiểu tín hiệu Break, ta xem ví dụ khung dữ liệu trên với 8 bit data, 
khơng kiểm tra chẵn lẻ và 1 bit Stop. 
Khi đường dây ở trạng thái Mark, mức logic là 1. Bit Start sẽ là mức logic 
0. Sau đĩ từng bit data sẽ được gởi trên đường dây. Bit Stop (logic 1) sau 
đĩ được gán vào để kết thúc việc truyền. Sau bit Stop sẽ là bit logic 0, cĩ 
nghĩa là bit Start của một dữ liệu mới. Nếu khơng cĩ thêm dữ liệu truyền 
đi, đường dây phải ở trạng thái rỗi, mức logic 1. Do đĩ nếu đường dây giữ 
trạng thái 0 sau bit Stop trong một thời gian bằng độ dài 1 từ, tín hiệu 
Break sẽ được tạo ra. 
Tín hiệu Break là tín hiệu báo cho CPU hay MODEM biết ký tự truyền đã 
xong và đang tạm ngắt việc truyền. 
h) Thanh ghi điều khiển MODEM (MODEM Control Register – MCR), địa chỉ 3FCh 
Thanh ghi này cịn gọi là thanh ghi điều khiển các tín hiệu ra của MODEM vì 
nĩ cho phép điều khiển các tín hiệu tại các chân DTR (chân 33) và DTS (chân 
32) của 8250. 
Bit Chức năng 
7-5 Dự trữ, luơn được thiết lập về 0. 
4 =1 cho phép 8250 làm việc ở chế độ nối vịng cục bộ để kiểm tra các chức năng 
của 8250. 
=0 làm việc ở chế độ thường. 
3 =1 : kích hoạt kết xuất OUT2 
2 =1 : kích hoạt kết xuất OUT1 
1 
=1 : tín hiệu tại chân RTS của 8250 được chuyển về mức 0, máy tính phát 
chuyển tín hiệu RTS tới MODEM để báo hiệu nĩ đã sẵn sàng phát dữ liệu. 
0 =1 : tín hiệu tại chân DTR của 8250 đạt mức 0, lúc này máy tính gửi tín hiệu 
DTR tới MODEM (hay tới MVT đầu kia nếu giao tiếp khơng dùng MODEM) để 
báo hiệu nĩ sẵn sàng làm việc (tín hiệu gửi tới chân số 4 của DB9 hay chân 20 
của DB25). 
i) Thanh ghi trạng thái dịng (Line Status Register – LSR) địa chỉ 3FDh 
Chức năng thanh ghi này cho biết trạng thái dịng tín hiệu trên đường dây 
như thế nào, các bit D0÷D5 đều cĩ thể gây ra ngắt nếu các bit tương ứng 
trong thanh ghi IER được lập . 
Các bit trạng thái cĩ ý nghĩa như sau: 
Bit Chức năng 
Tài liệu mơn học: Ghép nối và điều khiển thiết bị ngoại vi 
Giảng viên: Nguyễn Văn Minh Trí 51 
7 Dự trữ 
6 =1: báo thanh ghi chuyển phát rỗng (Transmitter Shift Register Empty), báo một 
kí tự đã được phát đi, bit này bị xố khi cĩ một kí tự chuyển từ THR sang TSR. 
5 =1: báo thanh ghi đệm truyền rỗng, ký tự chuyển từ THR sang TSR (Transmitter 
Shift Register), bit này bị xố khi CPU đưa kí tự đến THR. 
4 =1: báo nhận được tín hiệu Break, bit này bị xố khi đọc thanh ghi LSR. 
3 =1: báo lỗi khung (framming error) chẳng hạn bit stop =0, bit này bị xố khi 
CPU đọc thanh ghi LSR. 
2 =1: nhận báo được lỗi kiểm tra chẳn lẽ (parity error), bit này bị xố khi CPU đọc 
thanh ghi LSR. 
1 =1: cĩ lỗi tràn (over run) xảy ra khi kí tự trước đĩ bị mất, bit này bị xố khi CPU 
đọc thanh ghi LSR. 
0 =1: đã nhận được 1 ký tự và để nĩ trong thanh ghi đệm thu (RBR), bit này bị 
xố về 0 khi CPU đọc thanh ghi RBR. 
j) Thanh ghi trạng thái modem (MODEM Status Regisster – MSR), địa chỉ 3FEh 
 Thanh ghi này cịn được gọi là thanh ghi trạng thái vào từ RS232C vì nĩ cho biết trạng 
thái hiện thời của các tín hiệu điều khiển MODEM. 
Bit Chức năng 
7 =1 : DCD đang hoạt động, báo liên lạc với MODEM đã được thiết lập. 
6 =1 : RI đang hoạt động 
5 =1 : MODEM (hay MVT đầu kia) gởi tín hiệu DSR (Data Set Ready) về máy 
tính để cho biết đã sẵn sàng nhận dữ liệu (qua chân 6 của DB9 hay DB25) 
4 =1 : MODEM (hay MVT đầu kia) gởi tín hiệu CTS (Clear To Send) về máy tính 
để cho biết đã sẵn sàng nhận dữ liệu (qua chân 8 của DB9 hay chân 5 của 
DB25). 
3 =1 : bit D7 vừa đổi trạng thái 
2 =1 : bit D6 vừa đổi trạng thái 
1 =1 : bit D5 vừa đổi trạng thái 
0 =1 : bit D4 vừa đổi trạng thái 
 k) Thanh ghi nhớ nháp (Scratch Register), địa chỉ 3FFh 
(dành cho CPU, ít sử dụng nên khơng nghiên cứu) 
Tài liệu mơn học: Ghép nối và điều khiển thiết bị ngoại vi 
Giảng viên: Nguyễn Văn Minh Trí 52 
3.2.2 Ghép nối với UART 8250: 
Hình 3.7: Sơ đồ ghép nối với 8250 
3.2.3 Lập trình cho UART 8250: 
Lưu đồ thuật tốn: 
a. Khởi phát vi mạch theo trình tự sau: 
- Ghi vào thanh ghi dạng số liệu theo : 
+ D7 = DLAB = 1 để chuẩn bị ghi chốt cho bộ chia tốc độ. 
+ Khung tin với số bit Stop 
+ Số bit của tin 
- Ghi giá trị bộ chia tần số vào các thanh ghi chốt chia LSB, MSB tuỳ theo tốc 
độ baud. 
- Ghi các phép yêu cầu ngắt vào thanh ghi yêu cầu ngắt. 
b. Phát số liệu nối tiếp: 
- ðọc thanh ghi nhận dạng ngắt để biết bộ đệm rỗng, cĩ thể phát tin. 
- Ghi vào thanh ghi điều khiển MODEM để đưa lệnh DRT (bit D0-1) điều khiển 
MODEM chuẩn bị phát. 
- ðọc thanh ghi trạng thái MODEM để kiểm tra các bit DSR (D5), RI (D6), 
DCD (D7) xem đã chuẩn bị phát chưa? ( giá trị chúng =1) 
- ðọc thanh ghi trạng thái dịng để xem cĩ sai số khơng và hai thanh truyền và 
đệm cĩ trống khơng? (để đưa tin ra) 
- Ghi tin ra vào thanh ghi đệm phát từ MVT. 
- Ghi lệnh RTS (D1=1) vào thanh ghi điều khiển MODEM để điều khiển phát 
số liệu. 
VXL 
Reset 
0 7D D÷ 
2A 
0A 
1A 
3 15A A÷ 
8250 
MR 
0 7D D÷ 
2A 
0A 
1A 
Giải 
mã địa 
chỉ 
 MO 
DEM 
2CS 
DISTRMEMR I/O R 
MEMW I/O W DOSTR
CS1 
CS0 5V
ADS
CSDOSTR
DISTR
0V
SOUT 
SIN 
RTS 
DTR 
DSR 
DCD 
CTS 
RI 
1OUT 
2OUT 
XTAL1
CSXTAL2
CS
BAUDOUT
RCKL 
RxD 
TxD 
DSR 
DTR 
RTS 
CTS 
DCD 
RI 
Tài liệu mơn học: Ghép nối và điều khiển thiết bị ngoại vi 
Giảng viên: Nguyễn Văn Minh Trí 53 
c. Nhận số liệu nối tiếp: 
- Ghi lệnh DTR (D0=1) vào thanh ghi điều khiển MODEM 
- ðọc trạng thái MODEM DSR, RI, DCD ở thanh ghi trạng thái MODEM. 
- ðọc thanh ghi trạng thái dịng để biết đã cĩ số liệu thu chưa (D0=1); hoặc đọc 
thanh ghi nhận diện ngắt để biết thêm số liệu thu. 
- ðọc số liệu vào từ thanh ghi đệm số liệu vào. 
Ví dụ 8250 cần trao đổi tin 8 bit, tốc độ 9600 baud, khơng kiểm tra chẵn lẻ, 2 bit Stop, 
địa chỉ làm việc đầu 03F8h. 
Ghi thanh ghi điều khiển dịng 
D0D1=11 , D2=1, D3=0, D4=0, D5=0, D6=0, D7=1 ⇒ data1_LCR=87h 
 nếu D7=0⇒data2_LCR=07h 
 addr_LCR=03FBh 
Ghi thanh ghi chốt bộ chia 
9600 baud ⇒ số chia=000C 
data_LS = 0Ch và data_MS = 00h 
addr_LS=03F8h và addr_MS=03F9h 
Ghi thanh ghi cho phép ngắt khơng làm việc, cấm ngắt: 
data_IER=00h; 
addr_IER=03F9h 
 ðọc thanh ghi nhận dạng ngắt 
THR_rong= 02h 
addr_IIR=03FAh 
Ghi thanh ghi điều khiển MODEM 
Addr_MCR=3FCh 
Data_DRT=01h 
Data_RTS=02h 
ðọc thanh ghi trạng thái MODEM 
Addr_MSR=3FEh 
DSR (D5), RI (D6), DCD (D7) = 1 ⇒data1_MSR=E0h 
ðọc thanh ghi trạng thái dịng 
Addr_LSR=3FDh 
Khơng lỗi D1 D2 D3 = 0; t/g đệm rỗng D5 D6 =1⇒data1_LSR=60h 
Chương trình con thực hiện các cơng việc trên: 
1. Khởi phát vi mạch theo trình tự sau: 
port[addr_LCR] :=data1_LCR; 
port[addr_LS] :=data_LS; 
port[addr_MS] :=data_MS; 
port[addr_LCR] :=data2_LCR; 
Tài liệu mơn học: Ghép nối và điều khiển thiết bị ngoại vi 
Giảng viên: Nguyễn Văn Minh Trí 54 
port[addr_ IER] :=data_IER; 
2. Phát số liệu nối tiếp 
repeat 
Var1 := port[addr_IIR]; 
Until ((var1 and THR_rong)=THR_rong); 
port[addr_MCR] := data_DRT; 
repeat 
Var2 := port[addr_MSR]; 
Until ((var2 and data1_MSR)=data1_MSR); 
Repeat 
var3 := port[addr_LSR]; 
until ((var3 and data1_LSR)=data1_LSR); 
port[addr_THR] :=$50; {số liệu truyền đi} 
port[addr_MCR] := data_RTS; 
3.Nhận số liệu nối tiếp 
port[addr_MCR] := data_DRT; 
Repeat 
Var2 := port[addr_MSR]; 
Until ((var2 and data1_MSR)=data1_MSR); 
Repeat 
var3 := port[addr_LSR]; 
until ((var3 and data1_LSR)=data1_LSR); 
Var4 :=port[addr_RBR]; 

File đính kèm:

  • pdftai_lieu_mon_hoc_ghep_noi_va_dieu_khien_thiet_bi_ngoai_vi_ng.pdf