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: ...
ệ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:
- tai_lieu_mon_hoc_ghep_noi_va_dieu_khien_thiet_bi_ngoai_vi_ng.pdf