Đồ án Tốt nghiệp - Phân tích thiết kế hệ thống - GIAO TIẾP MÁY TÍNH VỚI KIT VI XỬ LY 8085

Đường dẫn TxD dẫn trực tiếp đến chân 11 của vi mạch MAX 232 còn bộ đệm nối ra ở chân 14 được nối trực tiếp tới chân số 2 của cổng nối tiếp. Việc sắp xếp chân ở ổ cắm nối tiếp được lựa chọn sao cho có thể dùng một cáp nối trực ti ếp cổng nối tiếp của hệ phát triển, với cổng nối tiếp của máy tính th ường là COM 2. Với đường dẫn RxD mọi việc cũng diễn ra tương tự chân 13 của vi mạch được nối đến chân 3 của cổng nối tiếp.

pdf101 trang | Chia sẻ: lylyngoc | Lượt xem: 2667 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đồ án Tốt nghiệp - Phân tích thiết kế hệ thống - GIAO TIẾP MÁY TÍNH VỚI KIT VI XỬ LY 8085, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
LED5 LED4 LED3 LED2 LED1 Hình 4.3 LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1 Hình 4.3 80H 81H 82H 83H 84H 85H 86H 87H Phím Mã 4 00 5 01 6 02 7 03 Phím Mã 0 04 1 05 2 06 3 07 Phím Mã C 0C D 0D E 0E F 0F Phím Mã 8 08 9 09 A 0A B 0B Bảng mã các phím số: Bảng mã các phím chức năng: CHƯƠNG V: GIAO TIẾP NỐI TIẾP DÙNG VI MẠCH 8251 I. TRUYỀN THÔNG TIN NỐI TIẾP Việc truyền thông tin giữa các bộ phận nằm gần nhau trong hệ vi xử lý có thể được thực hiện thông qua bus song song mở rộng hoặc các mạch phối ghép song song. Trong đó các byte hoặc các từ được chuyển từ bộ phận này sang bộ phận khác trên một tập các đường mạch in hoặc dây cáp. Trong trường hợp cần phải truyền thông tin ở các thiết bị cách xa nhau làm sao tiết kiệm được số đường dây dẫn cần thiết cho việc truyền. Từ yêu cầu trên đã ra đời phương pháp truyền thông tin nối tiếp. Ở đầu phát dữ liệu song song đầu tiên được chuyển thành dữ liêu dạng nối tiếp sau đó được truyền đi liên tiếp trên một đường dây. Ở đầu thu, tín hiệu nối tiếp sẽ được biến đổi ngược lại để tái tạo tín hiệu dạng song song thích hợp cho việc xử lý tiếp theo. Trong thực tế có 2 phương pháp truyền thông tin kiểu nối tiếp: truyền đồng bộ và truyền không đồng bộ. Trong phương pháp truyền đồng bộ, dữ liệu được truyền theo từng mảng với tốc độ xác định. Mảng dữ liệu trước khi được truyền đi sẽ được gắn thêm ở đầu và ở cuối mảng các byte hoặc một nhóm bit định dấu đặc biệt. Ở hình 5.1 biểu diễn một bản tin để truyền đồng bộ theo giao thức BISYNC (giao thức truyền thông tin hệ 2 đồng bộ, binary synchronous communication protocal) đây thực chất là giao thức điều khiển theo byte, vì các byte (ký tự) đặc biệt được dùng để đánh dấu các phần khác nhau của bản tin. Trong cách truyền không đồng bộ, dữ liệu được truyền đi theo từng ký tư. Ký tự cần truyền đi được gắn thêm một bit đánh dấu ở đầu để báo bắt đấu ký tự (start) và 1 hoặc 2 bit đánh dấu cuối để báo kết thúc ký tự (stop). Vì cuối ký tự được nhận dạng riêng biệt nên nó có thể được truyền đi theo phương pháp không đồng bộ, được thể hiện trên hình 5.1. SYN SYN SOH STX TEXT ETX hay ETB BCC HEADER SYN : Ký tự đồng bộ SOH : Ký tự bắt đầu phần mào đầu HEADER : Phần mào đầu STX : Ký tự bắt đầu văn bản TEXT :Thân văn băn ETX : Ký tự kết thúc văn bản ETB : Ký tự kết thúc văn bản BCC : Ký tự kiểm tra khối HÌNH 5.1 Tuỳ theo loại mã được chọn dùng trong khi truyền (Baudot, Ascii,… ) độ dài cho mã ký tự có thể là 5 , 6 , 7, 8 bit. Tuỳ theo hệ thống truyền tin, bên cạnh các bit dữ liệu còn có thể tuỳ chọn có hay không có 1 bit parity để kiểm tra lỗi khi truyền có thể tuỳ chọn 1 hoăc 2 bit stop, nhưng bắt buộc phải có một bit start. Như vậy để truyền một ký tự theo phương pháp không đồng bộ, ngoài ký tự mang tin ta buộc phải truyền thêm ít nhất 2 và nhiều nhất là 4 bit phụ để tạo ra khung cho ký tự đó, vì thế phương pháp nầy tuy đơn giản nhưng có hiệu suất không cao. Tốc độ truyền dữ liệu theo phương pháp nối tiếp được đo bằng bit/s. Ngoài ra người ta cũng hay dùng đơn vị baud, đó là giá trị ngịch đảo của thời gian giữa các lần thay đổi mức tín hiệu, với dữ liệu chỉ có hai mức (0 và 1) và mỗi thay đổi mức tín hiệu chỉ mã hóa một bit thì có thể hiểu baud = bit/s, các tốc độ truyền thường gặp trong thực tế là 11, 300, 600, 1200, 2400, 4800, 9600, 19200 baud. Để tạo điều kiện dể dàng cho việc phối ghép đường truyền nối tiếp với hệ vi xử lý và để giảm tối đa các mạch phụ thêm ở bên ngoài người ta đã chế tạo ra các vi mạch tổ hợp cỡ lớn lập trình được có khả năng hoàn thành phần lớn các công việc cần thiết trong khi phối ghép. Đó là các mạch thu phát di bộ vạn năng IN8250/16450 của National và mạch thu phát đồng bộ – dị bộ vạn năng 8251 của Intel. II. VI MẠCH USART 8251: Trong phần này ta sẽ giới thiệu mạch 8251A đó là vi mạch USART có thể dùng cho cả hai kiểu truyền thông tin nối tiếp đồng bộ, dị bộ. Sơ đồ chân và sơ đồ thanh ghi được trình bày ở hình 5.3 1. Sơ đồ chân và sơ đồ khối a. nhóm tín hiệu ghép nối với vi xử lý gồm: - /CS nối với bộ giải mã địa chỉ A1.. An để chọn 2 thanh ghi. (A0 = 1điều khiển trạng thái, A0 = 0 đệm số liệu). - C/D nối với đường dây địa chỉ A0 để một trong 2 cặp thanh ghi trên. - /WR nối với chân /WR của vi xử lý. - /RD nối với chân /RD của vi xử lý. - CLK nối với đường dây CLK của vi xử lý. - Reset nối với đường dây reset của vi xử lý. - D0 … D7 nối với các đường dẫn D0…D7 của VXL. b. Nhóm tín hiệu ghép nối vối Modem - /DTR - /DSR - /RTS - /CTS c. Nhóm tín hiệu gép nối với đường dây truyền – nhận và KGN: - TxEMTY thanh ghi đệm truyền rỗng. Chiều của dòng ký tự Luôn ở mức cao Luôn ở mức thấp Start D0 D1 D2 D3 D4 D5 D6 Parity Stop Stop Mã của ký tự cần truyền HÌNH 5.2 : Khung của một ký tự ể truyền không ồng bộ - TxR cho số liệu truyền. - TxRDy báo số liệu truyền đã sẵn sàng. - RxRDy báo số liệu nhận đã sẵn sàng. - Syn det/Break : chỉ đồng bộ/đứt dòng tin. d. Nhóm tín hiệu ghép nối với máy phát xung nhịp. - TxD : nhịp truyền. - RxC : nhịp nhận.  1 2 3 4 5 6 7 8 9 10 11 12 13 14 28 27 26 25 24 23 22 21 20 19 18 17 16 15 8251A D1 D0 Vcc /RxC /DTR /RTS /DSR Reset CLK TxD TxEMPTY /CTS Syndet/BR TxRDY D2 D3 RxD GND D4 D5 D6 D7 /TxC /WR /CS C/D /RD RxRDY /CS /RD /WR C/D D0 D1 D2 D3 D4 D5 D6 D7 CLK RST RxRDY TxRDY TxEMTy Vcc GND /DSR /DTR /CTS /RTS Syn/BRK TxC RxC Thanh ghi truyền Thanh ghi đệm truyền Thanh ghi nhận Thanh ghi đệm nhận Thanh ghi chế độ Thanh ghi lệnh Thanh ghi trạng thái TxD RxD Hình 5.3 : Sơ ồ chân (a) và các thanh ghi (b) của 8251A (a) (b) /CS chíp chọn vi mạch /RD read – đọc /WR write – viết C/D control/data - điều khiển số liệu CLK – clock – nhịp D0..D7 data O/I – bus dữ liệu vào ra /TxC – transmit clock - nhịp truyền RxC – receiver clock RST – reset /DTR dada terminal ready /DSR – data set ready /RTS request to send /CTS clear to send TxD – transmit data RxD – receiver data TxRDy – transmit ready RxRDy – receiver ready TxEMTY – transmist register empty Syn/BRK- Break detect 2. Các thanh ghi: Ở hình 5.4a và hình 5.4b mô tả bộ thanh ghi của 8251, gồm: thanh ghi trạng thái và thanh ghi điều khiển. Hai thanh ghi trên có cùng một địa chỉ với A0 = 1, một dùng để ghi (/WR) lệnh điều khiển và một để đọc (/RD) trạng thái. Hai thanh ghi đệm số liệu ghi và đọc có cùng một địa chỉ (A0 = 0) và dùng để ghi và đọc số liệu cần truyền và nhận của KGN. Các lệnh cho các thanh ghi trên như bảng sau: /CE C/D /WR /RD LỆNH 0 0 0 0 1 1 1 0 0 x 0 1 0 1 x 1 0 1 0 x Ghi vào thanh ghi điều khiển (chế độ, lệnh). Đọc thanh ghi trạng thái. Ghi số liệu vào thanh ghi đệm truyền. Đọc số liệu từ thanh ghi đệm nhận. Trở kháng cao (không dùng). - Thanh ghi điều khiển - Thanh ghi trạng thái a. Thanh ghi điều khiển: - dùng để ghi: + lời điều khiển chế độ. Hình 5.4a D7 D6 D5 D4 D3 D2 D1 D0 Tốc độ truyền 00 đồng bộ 01 không đồng bộ x1 10 không đồng bộ x 16 11 không đồng bộ x64 Độ dài ký tự 00 5 bit 01 6bit 10 7bit 11 8 bit Điều khiển khung. 00 không giá trị 01 một bit dừng 10 1.5 bit dừng 11 2 bit dừng Bit chẵn lẻ X0 không kiểm tra chẳn lẻ 01 kiểm tra lẻ 10 kiểm tra chẵn b. Lời lệnh: D7 D6 D5 D4 D3 D2 Cho phép phát 1= cho phép Chế độ bất đồng bộ 1= tìm ký tự đồng bộ Ngắt mềm 1= xoá các thanh ghi Yêu cầu phát 1= đưa tín hiệu Xoá cờ báo lỗi 1= xoá cờ Gửi tín hiệu cắt 1= đưa TxD = 0 Cho phép thu 1= cho phép RxRDy Số liệu đầu cuối Sẵn sàng, DTR\ =1 EH IR RTS ER SBRK RxEN DTR TxEN HÌNH 5.4b c. thanh ghi trạng thái. Dùng để đọc lời trạng thái: Chỉ modem đã Sẵn sàng để truyền số liẹu Chỉ chữ đồng bộ đã được 8251 nhận Chỉ thanh ghi biến đổi song song - nối tiếp rỗng Chỉ 8251 sẵn sàng nhận 1 chữ hay lệnh để truyền Bit báo sai chẳn lẻ Pe= 1 khi có sai xóa bằng ER của lệnh Chỉ sẵn sàng nhận số liệu để truyền cho VXL Bit chỉ lỗi tràn Khi VXL chưa đọc lời trước, lời sau đã tới thì OE =1 xoá bằng ER của lệnh Bit chỉ sai khung (không đồng bộ) khi số bit dừng bị sai FE= 1 xoá bằng ER =1 Hình 5.4c D7 D6 D5 D4 D3 D2 D1 D0 DSR SYNDET FE OE PE TxEM RxRDy TxRDy * Với lời điều khiển chế độ: hình 5.4a - Chế độ đồng bộ: (trong, ngoài hai hay một ký tự đồng bộ SYNC) bởi nội dung ghi vào D7, D6. - Tốc độ truyền với giá trị: + D1D0 = 00: Dùng cho chế độ đồng bộ, tốc độ nơi thu bằng tốc độ nơi phát, không có sự thay đổi tần số xung nhịp. + D1D0=01 : dùng cho chế độ không đồng bộ, tốc độ giữa nơi thu và nơi phát không đổi. + D1D0=01: tốc độ thu = tốc độ truyền X1, tức tốc độ thu = tốc độ truyền. +D1D0=10: tốc độ thu =16x tốc độ truyền. + D1D0=11: tốc độ thu =64x tốc độ truyền. - Độ dài ký tự, tức độ dài một đơn vị tin SDU với các giá trị D3d2 = 00 (5bit), 01(6bit), 10(7bit) và 11(8bit) - Kiển tra chẵn lẻ D5D4 =00 (không kiểm tra), 01 (kiểm tra lẻ), 11 (kiểm tra chẵn) - Điều khiển khung, xác định số bit dừng. Với D7D6 = 01 – một bit dừng D7D6 = 10 – một bit rưỡi dừng D7D6 = 11 – hai bit dừng  Với lời lệnh (hình5.4b) ta có thể ghi lệnh để: - Điều khiển modem: DTR(D1=1), RTS(D5=1) - Xoá mềm( bằng chương trình có IR (D6=1) để xoá về 0 các thanh ghi nội - Xóa cờ báo lỗi ER (D4=1) - Ghi cho phép truyền TxEN (D0=1) cho phép nhận RxE(D2=1) - Gửi tín hiệu cắt ( các bit bằng 0-Break) để cắt dòng tin liên tục đang truyền. - Tìm ký tự đồng bộ EH(D7=1) trong chế độ đồng bộ  Thanh ghi trạng thái (hình 5.4c): dùng để đọc. - Sẵn sàng truyền TxRDY (D0=1), sẵn sàng nhận RXRDY( D1=1) - Thanh ghi đệm số liệu rỗng TxE (D2=1) - Tuy chỉ có một địa chỉ (CS\=0, A1=1) nhưng ta có thể ghi được 2 lời điều khiển chế độ và lời lệnh ở 2 thanh ghi điều khiển khác nhau vì còn có chung một flip flop nội điều khiển lần lượt vào hai thanh ghi trên III. ỨNG DỤNG 8251A ĐỂ TRUYỀN THÔNG TIN NỐI TIẾP: 1. Truyền thông tin nối tiếp giữa 2 kit VXL: a. Khởi phát 8251A: Muốn 8251 hoạt động đúng chế độ (không đồng bộ), tốc độ (300, 600, 1200, 2400, 4800, 9600bps hoặc lớn hơn), số bit tin (5, 6, 7, 8) có kiểm tra chẵn hoặc lẻ và xác đinh số bit dừng (1; 1,5; 2 bit) ta phải ghi lời điều khiển chế độ vào thanh ghi điều khiển cuả 8251. Ví dụ: Một 8251 có điạ chỉ gốc CS\ với 0FFF0h, cần trao đổi thông tin 8 bit, tốc độ x16 không có kiểm tra Parity chẵn lẻ, 2bit stop. Lời điều khiển là: 1 1 0 0 1 1 1 0 TxD RxD DTR\ 8251 DSR\ RTS\ CTS\ TxD RxD DTR\ 8251 DSR\ RTS\ CTS\ VXL2 VXL1 HÌNH 5.5 Lưu đồ khởi tạo 8251A 00h thanh ghi điều khiển Begin 03h AH AH - 1 AH = 0 ? Delay Nạp từ chế độ cào thanh ghi chế độ Delay End sai Đúng HÌNH 5.5 chương trình khởi phát: MOV DX, 0FFF2h MOV AL,00h OUT DX,AL MOV CX 2h D0 : LOOP D0 OUT DX, AL D1: MOV CX,2h LOOP D1 OUT DX, AL MOV CX,2h D2: LOOP D2 MOV AL, 40h OUT DX, AL MOV CX, 2h D3: LOOP D3 MOV AL, 11001110B OUT DX, AL MOV CX, 2h D4: LOOP D4 END 2. Truyền thông tin nối tiếp giữa kit VXL và máy tính: 1 5 6 9 O O O O O O O O O A 1 – A 11 D 0 –D 7 Reset CLK A 0 RD \ WR \ INTR INTA \ CS \ GND D 0 – D7 TxD Rest RxD CLK DTR C/D\ RD \ DSR\ WR\ RTS \ TxD CTS\ RxRDy Giải mã điạ chỉ Xử lý ngắt (8259A hai mức) 8251 VXL Cổng COM của máy tính HÌNH 5.6 CHƯƠNG VI: GIAO TIẾP SONG SONG DÙNG VI MẠCH 8255 I. GIỚI THIỆU VỀ VI MẠCH 8255A: Để vi xử lý giao tiếp với những thiết bị bên ngoài, người ta thường dùng vi mạch giao tiếp 8255A, vi mạch này có khả năng giao tiếp rất rộng, vừa có thể xuất dữ liệu, vừa có thể nhận dữ liệu tùy theo người lập trình điều khiển bằng cách thay đổi thông số của thanh ghi điều khiển. II. SƠ ĐỒ CHÂN, SƠ ĐỒ LOGIC, CHỨC NĂNG CÁC CHÂN CỦA VI MẠCH 8255A. Sơ đồ chân và sơ đồ logic của vi mạch 8255A được thể hiện qua hình vẽ: Hình 6.1 : Sơ đồ chân và sơ đồ logic của vi mạch 8255A Trong đó: Chân 1  4, 37  40 (PA0 – PA7): là các đường xuất nhập có tên là cổng A. Chân 18  25 (PB0 – PB7): là các đường nhập xuất có tên cổng B. Chân 10  13, 14  17 (PB0 – PB7): là các đường nhập xuất có tên cổng C. Chân 27  34 (D0 – D7): là các đường dữ liệu (data) hoạt động hai chiều, dẫn tín hiệu điều khiển từ vi xử lý ra các thiết bị bên ngoài đồng thời nhận các dữ liệu từ các thiết bị điều khiển bên ngoài vào vi xử lý. Chân 35 (Reset input): ngõ vào xóa, chân reset phải được nối với tín hiệu reset out của vi xử lý để không làm ảnh hướng đến mạch điều khiển. Khi reset, các cổng của 8255A là các ngõ vào, đồng thời tất cả các dữ liệu trên thanh ghi bên trong 8255A đều bị xóa, 8255A trở về trạng thái ban đầu săn sàng làm việc. Chân 6 (CS\): tín hiệu ngõ vào chip select (CS\) được điều khiển bởi vi xử lý, dùng để lựa chọn 8255A làm việc khi vi xử lý giao tiếp với nhiều thiết bị. Chân 5 (RD\): ngõ vào đọc dữ liệu (Read Input). Chân 36 (WR\) : ngõ vào ghi dữ liệu (Write Input). Chân 8,9 (A1, A0): ngõ vào địa chỉ (Address Input), dùng nhận địa chỉ vào để PA3 PA2 PA1 PA0 RD\ CS\ GND A1 A0 PC7 PC6 PC5 PC4 PC0 PC1 PC2 PC3 PB0 PB1 PB2 PA4 PA5 PA6 PA7 WR\ RESET D0 D1 D2 D3 D4 D5 D6 D7 Vcc PB7 PB6 PB5 PB4 PB3 1 20 21 40 D0 – D7 PA0 – PA7 PB0 – PB7 PC0 – PC7 RD\ WR\ RESET A0 A1 CS\ 8255A 8255A lựa chọn thanh ghi và các cổng. Bảng địa chỉ lựa chọn thanh ghi và các cổng: A1 A0 Cổng và thanh ghi 0 0 Cổng A 0 1 Cổng B 1 0 Cổng C 1 1 Thanh ghi điều khiển Chân 26 (Vcc) : nguồn 5 VDC. Chân 7 (GND) : GND 0 VDC. III. CẤU TRÚC BÊN TRONG VÀ HOẠT ĐỘNG CỦA VI MẠCH 8255A. 1. Sơ đồ khối cấu trúc bên trong của vi mạch 8255A. Hình 6.2: Sơ đồ khối cấu trúc bên trong của 8255A 2. Hoạt động của vi mạch 8255A: Từ sơ đồ khối cấu trúc bên trong của vi mạch 8255A ta thấy các cổng của 8255A được chia thành 2 nhóm: Nhóm A gồm cổng A và 4 bit cao của cổng C. Nhóm B gồm cổng B và 4 bit thấp của cổng C. Cấu hình làm việc của 2 nhóm sẽ do nội dung của thanh ghi điều khiển quyết định. Vi mạch 8255 giao tiếp với vi xử lý thông qua các đường sau : - Đường dữ liệu: gồm 8 đường dữ liệu (D0 - D7). Mã lệnh, các dữ liệu đều được truyền đi trên đường này. Port A Port C (4 bit cao) Nhóm A Port C (4 bit thấp) Port B Nhóm B Điều khiển nhóm A Điều khiển nhóm B Đệm bus dữ liệu Logic iều khiển ghi/ọc RD\ WR\ CS\ A0 A1 D7 – D0 PA7 – PA0 PC7 – PC4 PC3 – PC0 PB7 – PC0 - Đường địa chỉ: gồm 2 đường (A0 – A1) dùng để lựa chọn cổng hoặc thanh ghi điều khiển như đã trình bày ở phần trước. - Đường điều khiển: gồm các đường RD\, WR\, CS\, Reset dùng để điều khiển việc hoạt động của 8255A. Để sử dụng các cổng làm công cụ giao tiếp, người sử dụng phải gửi từ điều khiển ra thanh ghi điều khiển để 8255A định cấu hình làm việc cho các cổng đúng như yêu cầu của người lập trình. 3. Từ điều khiển: Từ điều khiển là dữ liệu được gởi tới thanh ghi điều khiển. Giá trị của từ điều khiển sẽ xác định cấu hình làm việc cho các cổng của 8255A, đó là việc lựa chọn chức năng nhập hay xuất của các cổng. a. Cấu trúc của từ điều khiển: Do các cổng của 8255A được chia làm hai nhóm nên từ điều khiển cũng được chia làm hai nhóm điều khiển tương ứng. Các bit D3, D4, D5, D6 dùng để xác định cấu hình cho nhóm A: - Bit D3 dùng để thiết lập 4 bit cao của cổng C. D3 = 0 cổng C là cổng xuất dữ liệu. D3 = 1 cổng C là cổng nhập dữ liệu. - Bit D4 dùng để thiết lập cổng A. D4 = 0 cổng A là cổng xuất dữ liệu. D4 = 1 cổng A là cổng nhập dữ liệu. - Bit D5 và D6 dùng thiếp lập mode điều khiển của nhóm A. D6D5 = 00 : nhóm A hoạt động ở mode 0. D6D5 = 01 : nhóm A hoạt động ở mode 1. D6D5 = 1x : nhóm A hoạt động ở mode 2. Các bit D0, D1, D2 dùng để xác định cấu hình cho nhóm B. - Bit D0 dùng để thiết lập 4 bit thấp của cổng C. D0 = 0 cổng C là cổng xuất dữ liệu. D0 = 1 cổng C là cổng nhập dữ liệu. - Bit D1 dùng để thiết lập cổng B. D1 = 0 cổng B là cổng xuất dữ liệu. D1 = 1 cổng B là cổng nhập dữ liệu. - Bit D2 dùng thiếp lập mode điều khiển của nhóm B. D2 = 0 : nhóm B hoạt động ở mode 0. D2 = 1 : nhóm B hoạt động ở mode 1. D7 D6 D5 D4 D3 D2 D1 D0 Nhóm B Cổng C (4 bit thấp) 1 = Input 0 = Output Cổng B 1 = Input 0 = Output Mode select Hình 6.3 : Cấu trúc từ điều khiển của vi mạch 8255A b. Cơ chế hoạt động các cổng của 8255A ở các trạng thái. * Nhóm A và Nhóm B cấu hình ở mode 0. Khi được định ơ cấu hình này, các cổng của hai nhóm hoạt động xuất hoặc nhập dữ liệu độc lập với nhau. Từ điều khiển: 1 0 0 D4 D3 0 D1 D0 Với D0, D1. D3, D4 tùy chọn theo yêu cầu của người sử dụng. * Nhóm A được cấu hình ở mode 1. Ở mode 1, các cổng làm việc có chốt (Strobed I/O), thiết bị giao tiếp muốn 8255A nhận dữ liệu thì thiết bị đó phải tạo ra một tín hiệu yêu cầu 8255A nhận dữ liệu và ngược lại, 8255A muốn gởi dữ liệu cho một thiết bị khác thì nó phải gởi 1 tín hiệu yêu cầu thiết bị đó nhận dữ liệu, tín hiệu đó gọi là tín hiệu chốt. + Khi cổng A được cấu hình là cổng nhập dữ liệu, chức năng các đường tín hiệu được trình bày như hình vẽ: Từ điều khiển : 1 0 1 1 D3 x x x Hình 6.4 : Chức năng các đường tín hiệu khi cổng A là cổng nhập dữ liệu Các đường tín hiệu của cổng C trở thành các đường điều khiển của cổng A. Trong đó : Bit INTEA (Interrupt Enable) được thiết lập mức logic dưới sự điều khiển của phần mềm dùng cấu trúc Set/Reset của 8255A. Bit PC4 trở thành bit STBA (Strobed Input, tác động mức thấp), được dùng để chốt các dữ liệu ở các ngõ vào PA0 – PA7 vào mạch chốt bên trong. Bit PC5 trở thành bit IBFA (Input Buffer Full, tác động mức cao), dùng để báo cho bên ngoài biết dữ liệu đã được chốt bên trong. Bit PC3 trở thành bit INTRA (Interrupt Request, tác động mức cao), bit này có mức logic 1 khi bit STRA = 1, bit IBFA = 1 và bit INTEA = 1. Thông thường bit này dùng để tác động vào ngõ vào ngắt của vi xử lý để báo cho vi xử lý biết : dữ liệu mới đã xuất hiện ở ngõ vào. Các bit PC6, PC7 của cổng C là các bit xuất/ nhập bình thường tùy thuộc vào từ điều khiển trong thanh ghi điều khiển. Còn cổng B được điều khiển bằng các bit D0 – D2 trong RD\ PC4 PC5 PC3 PC6,7 PA0–PA7 INTE A STBA\ IBFA INTRA I/O thanh ghi điều khiển (nếu cổng B hoạt động ở mode 1 thì các bit PC0 – PC2 là các bit điều khiển). + Cổng A được cấu hình là cổng xuất dữ liệu. Chức năng các đường tín hiệu được trình bày ở hình vẽ: Từ điều khiển : 1 0 1 0 D3 X x x Hình 6.5 : Chức năng các đường tín hiệu khi cổng A là cổng xuất dữ liệu Bit PC7 trở thành bit OBFA (Output Buffer Full, tác động mức thấp), khi có dữ liệu từ vi xử lý gởi ra cổng A, tín hiểu OBF sẽ yêu cầu thiết bị bên ngoài nhận dữ liệu. Bit PC6 trở thành bit ACKA (Acknowledge Input, tác động mức thấp), thiết bị nhận dữ liệu dùng tín hiệu này để báo cho 8255A biết dữ liệu đã được nhận và sẵn sàng nhận dữ liệu mới. Bit PC3 trở thành bit INTRA (Interrupt Request, tác động mức cao), bit này có mức logic bằng 1 khi bit OBFA = 1, ACKA = 1 và bit INTEA = 1. Tín hiệu INTRA tác động đến ngõ vào ngắt của vi xử lý để báo cho vi xử lý biết thiết bị bên ngoài đã nhận dữ liệu từ cổng A. Các bit PC4, PC5 vẫn là bit nhập/ xuất dữ liệu bình thường tùy thuộc vào từ điều khiển. Các bit D0 – D2 trong thanh ghi điều khiển dùng để thiết lập cấu hình cho cổng B. * Nhóm B được cấu hình ở mode 1. + Cổng B được cấu hình là cổng nhập dữ liệu. Chức năng các đường tín hiệu được trình bày như hình vẽ: WR\ PC7 PC6 PC3 PC4,5 PA0–PA7 INTE A OBFA\ ACKA\ INTRA I/O WR\ PC1 PC2 PC0 PB0–PB7 INTE B OBFB\ ACKB\ INTRB Từ điều khiển : 1 x x x X 1 1 x Hình 6.6 : Chức năng các đường tín hiệu khi cổng B là cổng nhập dữ liệu Chức năng của các bit điều khiển giống như khi nhóm A hoạt động ở mode 1 và cổng A được cấu hình là cổng nhập dữ liệu. + Cổng B được cấu hình là cổng xuất dữ liệu. Chức năng các đường tín hiệu được trình bày như hình vẽ : Từ điều khiển: 1 x X x x 1 0 x Hình 6.7 : Chức năng các đường tín hiệu khi cổng B là cổng xuất dữ liệu Chức năng của các từ điều khiển giống như khi nhóm A hoạt động ở mode 1 và cổng A được cấu hình là cổng xuất dữ liệu. * Nhóm A được cấu hình ở mode 2. Mode 2 là kiểu hoạt động strobed bi-directional IO : có hai chức năng nhập xuất dữ liệu. Từ điều khiển khi nhóm A được cấu hình ở mode 2 và chức năng của các đường tín hiệu được trình bày ở hình vẽ: RD\ PC2 PC1 PC0 PB0–PB7 INTE B STBB\ IBFB INTRB Từ điều khiển : 1 0 1 1 D3 x x x Hình 6.8: Chức năng các đường tín hiệu khi nhóm A hoạt động ở mode 2 Các đường tín hiệu của cổng C trở thành các đường điều khiển của cổng A. Bit PC7 trở thành bit OBFA, PC6 trở thành bit ACKA, PC4 trở thành bit STBA, PC5 trở thành bit IBFA và bit PC3 trở thành bit INTRA, chức năng của các bit điều khiển giống như ở mode 1, chỉ khác tín hiệu INTRA = 1 khi OBFA = 1 và INTE1 = 1 hoặc IBFA = 1 và INTE2 = 1. Các bit PC0 – PC2 là các bit nhập xuất dữ liệu bình thường tùy thuộc vào từ điều khiển trong thanh ghi điều khiển. Một chú ý cần thiết là khi nhóm A được cấu hình ở mode 2 thì nhóm B chỉ được cấu hình ở mode 0. IV. GIAO TIẾP GIỮA VI XỬ LÝ VỚI 8255A: Vi mạch 8255A có thể giao tiếp với vi xử lý theo 2 kiểu: kiểu nhập/xuất (kiểu I/O) và kiểu bộ nhớ. Khi vi xử lý giao tiếp với 8255A theo kiểu I/O nó chỉ dùng được 8 đường địa chỉ từ A0 – A7 mà thôi còn khi giao tiếp kiểu bộ nhớ, nó dùng được cả 16 đường địa chỉ, vì vậy dung lượng giao tiếp kiểu I/O thấp hơn dung lượng giao tiếp kiểu bộ nhớ. 1. Giao tiếp kiểu I/O. Khi thiết kế vi xử lý giao tiếp với 8255A theo kiểu I/O thì dữ liệu sẽ được truy xuất bằng 2 lệnh : IN addr-port và OUT addr-port. Dữ liệu giao tiếp luôn chứa trong thanh ghi A. Địa chỉ cổng (addr-port) có độ dài là 8 bit. Cũng giống như bộ nhớ, vi xử lý có thể giao tiếp với nhiều vi mạch 8255, với 8 đường địa chỉ thì có tất cả 256 địa chỉ, mà mỗi vi mạch chiếm 4 địa chỉ (3 cổng và thanh ghi điều khiển) nên số vi mạch 8255 tối đa có thể giao tiếp của vi xử lý là 256/4 = 64 vi mạch. Khi kết nối giữa vi xử lý với vi mạch 8255A thì đường địa chỉ A0 và A1 dùng để lựa chọn các cổng và thanh ghi điều khiển, còn các đường địa chỉ còn lại từ A2 – A7 dùng để lựa chọn vi mạch hoạt động, thông thường các đường địa chỉ này được đưa vào vi mạch giải mã rồi các ngõ ra của vi mạch giải mã sẽ đưa đến CS\ của các vi mạch 8255A. Một ví dụ khi thiết kế vi xử lý giao tiếp với 4 vi mạch 8255A: WR\ PA0–PA7 OBFA\ ACKA\ PC3 PC7 PC6 PC4 PC5 STBA\ IBFA RD\ INTE 1 INTE 2 PC2,1,0 I/O INTE A Sơ đồ kết nối như hình vẽ : (vi mạch 74139). Hình 6.9: Sơ đồ kết nối vi xử lý với vi mạch 8255A Trong đó, đường A0 và A1 được nối với 8255A như đã trình bày ở trên, đường A2, A3 được đưa vào vi mạch giải mã 2 đường thành 4 đường để lựa chọn vi mạch 8255A. Từ đó, ta có bảng địa chỉ của các vi mạch 8255A như sau : IC A7 A6 A5 A4 A3 A2 A1 A0 Hex 8255A-1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 00 03 8255A-2 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 04 07 8255A-3 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 08 0B 8255A-4 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 0C 0F 2. Giao tiếp kiểu bộ nhớ. Khi thiết kế 8255A giao tiếp với vi xử lý theo kiểu bộ nhớ thì chức năng của 8255A không thay đổi, chỉ thay đổi kiểu truy xuất. Với kiểu I/O thì địa chỉ của các cổng và thanh ghi điều khiển là 8 bit thì ở kiểu bộ nhớ, địa chỉ của các cổng và thanh ghi điều khiển là 16 bit, khi đó cách kết nối cũng tương tự như kết nối vi xử lý với bộ nhớ thông thường, và mỗi vi mạch 8255A cũng được coi như là bộ nhớ với 4 ô nhớ: 3 cổng và thanh ghi điều khiển, truy xuất dữ liệu bằng cách dùng các lệnh truy xuất dữ liệu của bộ nhớ. Cách kết nối tương tự như khi vi xử lý kết nối với bộ nhớ nên ở đây không cần trình bày lại. DECODER 2 TO 4 LINE đến CS\ của 8255A -1 đến CS\ của 8255A -2 đến CS\ của 8255A -3 đến CS\ của 8255A -4 A2 A3 BEGIN KHỞI PHÁT: GHI TỪ CHẾ ĐỘ GHI LỆNH : DTR, A{RxEN,RTS ĐỌC TRẠNG THÁI: DSR, RxRDy Kiểm tra sẵn sàng :DSR= RxRDY=1 ĐỌC SỐ LIỆU TỪ THANH GHI ĐỆM SỐ LIỆU END HÌNH 7.2 BEGIN KHỞI PHÁT: GHI TỪ CHẾ ĐỘ GHI LỆNH : DTR, TxEN ĐỌC TRẠNG THÁI: DSR, TxRDy GHI SỐ LIỆU RA THANH GHI ĐỆM SỐ LIỆU GHI LỆNH PHÁT: RTS END HÌNH 7.1 Kiểm tra sẵn sàng: DSR = TxRDY =1 CHƯƠNG VII: PHẦN CỨNG VÀ PHẦN MỀM GIAO TIẾP I. LƯU ĐỒ VÀ CHƯƠNG TRÌNH TRUYỀN DỮ LIỆU 1. LƯU ĐỒ TRUYỀN DỮ LIỆU: 2. LƯU ĐỒ NHẬN DỮ LIỆU: 3. CHƯƠNG TRÌNH TRUYỀN DỮ LIỆU ;xxxxxxxxxxxxxxxxxxxxx ;chuong trinh con delay org 6200h delay: mvi b,3 x0: dcr b jnz X0 ret ;xxxxxxxxxxxxxxxxxxxxx ;chuong trinh truyen du lieu org 4100h mvi a,00h ;xoa reg lenh out 01h call delay out 01h call delay out 01h call delay mvi a,40h ;xoa cac thanh ghi noi out 01h call delay mvi a,0ceh ;goi tu dk che do out 01h call delay lxi d,6500h mvi a,03h ;goi tu lenh out 01h call delay x1: in 01 ;doc tg trang thai ani 10000001b ;giu MSB va LSB cpi 81h jnz x1 ldax d mov l,a out 00h ;doc byte dia chi de truyen call delay mvi a,21h ;goi tu lenh de truyen di out 01 call delay inr e mvi a,03h out 01h call delay x2: in 01h ani 81h cpi 81h jnz x2 ldax d mov h,a out 00h call delay mvi a,21h out 01h call delay inr e mvi a,03h out 01h call delay x13: in 01h ani 81h cpi 81h jnz x13 ldax d mov c,a out 00 call delay mvi a,21h out 01h call delay x4: mvi a,03h out 01h call delay x3: in 01h ani 81h cpi 81h jnz x3 mov a,m ;truyen du lieu out 00h call delay mvi a,21h out 01h call delay inr l dcr c jnz x4 ;hien chu E de biet cham dut lxi h,0a000h mvi m,79h hlt 4. CHƯƠNG TRÌNH NHẬN DỮ LIỆU: ;x-chuong trinh nhan du lieu-x org 4300h mvi a,00h ; xoa cac thanh ghi out 01h call delay out 01h call delay out 01h call delay mvi a,40h ;xoa cac thanh ghi noi out 01h call delay mvi a,0ceh ;nap tu che do out 01h call delay mvi a,26h ;nap tu lenh out 01h call delay y5: in 01h ani 82h cpi 82h jnz y5 in 00h ;cat byte dia chi thap mov e,a mov l,a y6: in 01h ani 82h cpi 82h jnz y6 in 00h ;cat byte dia chi cao mov d,a mov h,a y7: in 01h ani 82h cpi 82h jnz y7 in 00h mov c,a y8: in 01h ani 81h cpi 81h jnz y8 in 00h ;nap du lieu vao o nho stax d inr e dcr c jnz y8 pchl end II. THIẾT KẾ VÀ THI CÔNG PHẦN GIAO TIẾP: 1. GIỚI THIỆU VI MẠCH MAX 232: Vi mạch MAX 232 chuyển đổi mức TTL ở ngõ vào thành mức +10V hoặc –10V ở phía truyền và các mức +3V… +15V hoặc –3V … -15V thành mức TTL ở phía nhận. Trên hình 7.3 mô tả cách sắp xếp chân và sơ đồ cấu trúc của vi mạch MAX 232. Đường dẫn TxD dẫn trực tiếp đến chân 11 của vi mạch MAX 232 còn bộ đệm nối ra ở chân 14 được nối trực tiếp tới chân số 2 của cổng nối tiếp. Việc sắp xếp chân ở ổ cắm nối tiếp được lựa chọn sao cho có thể dùng một cáp nối trực tiếp cổng nối tiếp của hệ phát triển, với cổng nối tiếp của máy tính thường là COM 2. Với đường dẫn RxD mọi việc cũng diễn ra tương tự chân 13 của vi mạch được nối đến chân 3 của cổng nối tiếp. 2. SƠ ĐỒ MẠCH KẾT NỐI: Vì sử dụng kit 8085 đã có nên kết nối các đường data của 8255 của kit với 8251 của board giao tiếp. Sơ đồ kết nối như sau: O 1 16 2 15 3 MAX 14 232 4 13 5 12 6 11 7 10 8 9 C1+ V+ C1- C2+ C2- V- T2OUT R2IN Vcc GND T1OUT R1IN R1OUT T1IN T2IN R2OUT HÌNH 7.3 HÌNH 7.4 3. SƠ DỒ MẠCH IN: Gồm hai mặt :mặt trên và mặt dưới. Board mạch cụ thể như sau: MẶT DƯỚI MẶT TRÊN KếT LUậN Qua thời gian thực hiện, dưới sự hướng dẫn tận tình của Thầy Nguyễn Đình Phú cùng sự giúp đỡ rất nhiều của quý thầy cô trong khoa, em đã cố gắng hoàn thành luận văn đúng theo yêu cầu và thời gian quy định. Trong luận văn chúng em đã thực hiện được những công việc sau:  Khảo sát phần lý thuyết: - Giới thiệu vi xử lý. - Giới thiệu cách giao tiếp. - khảo sát kit vi xử lý 8085.  Thi công mạch điện cho phần giao tiếp. Mặc dù đã rất cố gắng, nhưng do kiến thức và thời gian có hạn nên có những phần chúng em chưa làm được như: phần giao diện màn hình. Và em sẽ không tránh khỏi những điều thiếu sót, nhầm lẫn khác, kính mong quý thầy cô thông cảm bỏ qua. Người thực hiện mong mỏi các bạn sinh viên khoa điện ở những khóa sau bổ xung cho luận văn này hoàn chỉnh hơn. Sinh viên thực hiện Nguyễn Trung Dũng HƯỚNG PHÁT TRIỂN ĐỀ TÀI Ngày nay với sự phát triển nhanh chóng của khoa học kỹ thật và đất nước ta đang chuyển mình sang nền sản xuất công nghiệp. Do đó, để đáp ứng với nhu cầu thực tế thì chúng ta cần phải nghiên cứu thêm các loại giao diện nối tiếp khác để tăng thêm được khoảng cách và tốc độ truyền. Ngoài ra, còn có thể dựa trên tập luận án này để viết thêm nhiều chương trình khác có thể ứng dụng trong thực tế và cải tiến lại chương trình này để tiện lợi cho người sử dụng … Sinh viên thực hiện Nguyễn Trung Dũng TÀI LIỆU THAM KHẢO 1. ĐO LƯỜNG VÀ ĐIỀU KHIỂN BẰNG MÁY VI TÍNH Ngô Diện Tập _ NXB KHKT Hà Nội _ 1996 1. ĐIỀU KHIỂN VÀ GHÉP NỐI CÁC THIẾT BỊ NGOẠI VI Trần Bá Thái _ NXB KHKT Hà Nội _ 1984 2. KỸ THUẬT GHÉP NỐI MÁY VI TÍNH Nguyễn Mạnh Giang _ NXB GD Hà Nội _1997 3. TRUYỀN DỮ LIỆU Tống Văn On _ ĐH KỸ THUẬT TPHCM _ 1999 4. VI XỬ LÝ TRONG ĐO LƯỜNG VÀ ĐIỀU KHIỂN Ngô Diện Tập _ NXB KHKT Hà Nội _ 1996 5. KỸ THUẬT VI XỬ LÝ Văn Thế Minh _ NXB GD _ 1997 6. ASSEMBLY LANGUAGE TOOLS and TECHNIQUES FOR THE IBM MICROCOMPUTERS Julio Sanches _ Prentice Hall _ 1990 7. MICROCOMPUTER INTERFACING Bruce A.Artwick _ Prentice Hall _ 1980 PHỤ LỤC CHƯƠNG TRÌNH TRUYỀN DỮ LIỆU CỦA MÁY TÍNH ; TERMINAL.ASM ; STACK stack segment stack db 300 dup('?') stack ends ; DATA data segment prompt db 'File name:$' filename db 30 dup(0) buffer db 512 dup(0) buffrr db 512 dup(0) handle dw ? openerr db 0dh,0ah,'OPEN ERROR - COPDE' errcode db 30h,'$' ;messages MENU_MS db ' **TERMINAL PROGRAM**',0dh,0ah db ' to redisplay this MENU',0dh,0ah db ' to set communications protocol',0dh,0ah db ' to display protocol installed',0dh,0ah db ' to open file.hex and trasnmit',0dh,0ah db ' to exit the TERMINAL program',0dh,0ah db 'All character typed are transmitter',0dh,0ah db 'All character receiver are display',0dh,0ah db 0dh,0ah,'$' PROT_MS db '* Installed communications protocol',0dh,0ah db 'Baud rate:' Baud% db '2400',0dh,0ah db 'Parity:' Par% db 'Even',0dh,0ah db 'Stop bit:' Stop% db '1',0dh,0ah db 'Word length:' Word% db '8',0dh,0ah,0ah,'$' Baud$$ db '110 150 300 600 1200 2400 4800 9600' Par$$ db 'odd noneven' baud_menu db 0dh,0ah,'**New communication parameter' db 'rs input **',0dh,0ah db 'baud rate:',0dh,0ah db '1 = 110',0dh,0ah db '2 = 150',0dh,0ah db '3 = 300',0dh,0ah db '4 = 600',0dh,0ah db '5 = 1200',0dh,0ah db '6 = 2400',0dh,0ah db '7 = 4800',0dh,0ah db '8 = 9600',0dh,0ah db 'Select: $' par_menu db 0dh,0ah,'Pariry:',0dh,0ah db '1 = odd',0dh,0ah db '2 = none',0dh,0ah db '3 = even',0dh,0ah db 'Select: $' Stop_menu db 0dh,0ah,'Stop bit:',0dh,0ah db '1 = 1 stop bit',0dh,0ah db '2 = 2 stop bit',0dh,0ah db 'Select: $' Word_menu db 0dh,0ah,'Word length:',0dh,0ah db '1 = 7 bit',0dh,0ah db '2 = 8 bit',0dh,0ah db 'Select: $' err1_ms db 0dh,0ah,'*** cannot transmit ***',0dh,0ah card_base dw 02f8h ;address of RS 232 card inT_num db 0ch setup_byte db 0bbh ; ;Origin O_int_seg dw 0000h ;segment O_int_off dw 0000h ;offset ;circular buffer and pointer: circ_buf db 20 dup(00h) dw 0 data_in dw 0 ;imput pointer data_out dw 0 ;output pointer data ends ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx CODE xxxxxxxxxxxxxxxxxx code segment assume CS:code start: mov ax,data mov ds,ax assume ds:data mov es,ax assume es:data ;display MENU at cursor mov dx,offset menu_ms ;messages call show_message ;hardware type push ds mov dx,0f000h mov ds,dx mov al,ds:[0fffeh] ;code to AL ;get addr of the RS232 card from BIOS data area mov dx,0 mov ds,dx mov cx,ds:0400h pop ds mov card_base,cx ;determine interrupt number: ; 0bh IRQ4 all other cmp al,0fdh jne set_address mov int_num,0bh ;save/install interrupt set_address: mov ah,53 mov al,int_num int 21h mov o_int_seg,es mov o_int_off,bx mov ah,37 mov al,int_num mov dx,offset cs:rs232_int push ds push cs pop ds int 21h pop ds ;set protocol mov al,10111011b mov ah,0 mov dx,0 int 14h call comm_on call flush ; monitor: mov ah,1 int 16h jz ser_imp jmp char_typed ser_imp: sti ;interrupt on mov cx,50 delay: nop nop loop delay ;test for new data received cli mov bx,data_out cmp bx,data_in jne new_data sti jmp monitor ;process char char_typed: mov ah,0 int 16h ;test for ,,, and keys cmp ax,3b00h jne test_f2 jmp show_menu ;F1 key pressed test_f2: cmp ax,3c00h jne test_f3 jmp set_protocol ;F2 key pressed test_f3: cmp ax,3d00h jne test_f4 jmp show_protocol ;F3 key pressed test_f4: cmp ax,3e00h jne test_f9 jmp tran_file ;F4 key pressed test_f9: cmp ax,4300h je dos_exit jmp show_and_send ;F2 key pressed dos_exit: call comm_off mov ah,37 mov al,int_num mov dx,o_int_off mov ax,o_int_seg mov ds,ax int 21h ;exit mov ah,76 mov al,0 int 21h ;redisplay menu show_menu: mov dx,offset menu_ms call show_message jmp monitor ;new data receiver new_data: lea si,circ_buf mov bx,data_out add si,bx mov al,byte ptr[si] ;update output pointer inc bx cmp bx,20 jne ok_out_ptr mov bx,0 ok_out_ptr: mov data_out,bx sti call tty jmp monitor set_protocol: call comm_off baud_rates: mov dx,offset baud_menu call show_message call get_key call tty cmp al,'1' jc baud_rates cmp al,'9' jnc baud_rates sub al,30h ;ascii to binary sub al,1 ;to range 0 to 7 push ax mov cl,4 mul cl mov si,offset baud$$ mov ah,0 add si,ax mov di,offset baud% mov cx,4 cld push ds pop es rep movsb pop ax mov cl,5 shl al,cl mov setup_byte,al parity: mov dx,offset par_menu call show_message call get_key call tty ;valid input range is "1" to "3" cmp al,'1' jc parity cmp al,'4' jnc parity ;input is valid range sub al,30h push ax ;select 4 byte parity message and place in display area sub al,1 mov al,4 mul cl mov si,offset par$$ mov ah,0 add si,ax mov di,offset par% mov cx,4 cld push ds pop es rep movsb pop ax mov cl,3 shl al,cl or setup_byte,al stopbits: mov dx,offset stop_menu call show_message call get_key call tty ;valid input range is "1" or "2" cmp al,'1' jc stopbits cmp al,'3' jnc stopbits mov si,offset stop% mov byte ptr[si],al sub al,31h mov cl,2 shl al,cl or setup_byte,al word_length: mov dx,offset word_menu call show_message call get_key call tty ;valid input range is '1' or '2' cmp al,'1' jc word_length cmp al,'3' jnc word_length push ax ;Input in valid range. Add 6 and move input to display area add al,6 mov si,offset word% mov byte ptr[si],al pop ax sub al,30h inc al or setup_byte,al ;install new parameter mov al,setup_byte mov dx,0 mov ah,0 int 14h ;line feed and cariage reture before exit mov al,0dh call tty mov al,0ah call tty ;communication call comm_on jmp monitor ; ;display protocol show_protocol: mov dx,offset prot_ms call show_message jmp monitor ;************************************************************** ;output and display show_and_send: mov cx,2000 push ax thre_wait: mov dx,card_base add dx,5 in al,dx jmp short $+2 test al,20h jnz ok_2_send loop thre_wait ;wait period timed out,display error message and exit pop ax mov dx,offset err1_ms call show_message jmp monitor ok_2_send: pop ax ;place in transmitter hoding register to send mov dx,card_base out dx,al jmp short $+2 ;display character call tty jmp monitor ;************************************************************** ;CAC CHUONG TRINH CON comm_on proc near cli ;interrupt off ;reset buffer pointer to start of buffer mov data_in,0 mov data_out,0 ;set dx to base address of RS 232 card from BIOS mov dx,card_base mov dl,0fch mov al,00001011b out dx,al jmp short $+2 ;set bit 7 mov dl,0fbh in al,dx jmp short $+2 and al,7fh out dx,al jmp short $+2 in al,21h jmp short $+2 and al,0e7h out 21h,al jmp short $+2 ;I/o delay ;reenable interrupt sti ret comm_on endp comm_off proc near in al,21h or al,18h out 21h,al jmp short $+2 ret comm_off endp show_message proc near mov ah,9 int 21h ret show_message endp tty proc near tty_one: push ax mov ah,14 mov bx,0 int 10h pop ax cmp al,0dh jne not_cr mov al,0ah jmp tty_one not_cr: ret tty endp flush proc near flush_1: mov ah,1 int 16h jz no_old_chars mov ah,0 int 16h jmp flush_1 no_old_chars: ret flush endp get_key proc near mov ah,0 int 16h ret get_key endp rs232_int: sti ;interrupt on push ax push bx push dx push di push ds mov dx,data mov ds,dx assume ds:data data_check: mov dx,card_base mov dl,0fdh in al,dx jmp short $+2 test al,1eh jnz data_error jmp data_check data_error: mov al,'1' jmp store_byte data_ready: mov dl,0f8h in al,dx jmp short $+2 and al,7fh store_byte: lea di,circ_buf mov bx,data_in add di,bx mov byte ptr[di],al inc bx cmp bx,20 jne ok_in_ptr mov bx,0 ok_in_ptr: mov data_in,bx mov al,20h out 20h,al jmp short $+2 pop ds pop di pop dx pop bx pop ax iret ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx tran_file: call get_name ;doc ten file lea dx,filename ;dx chua offset cua ten file mov al,0 call open jc open_error mov handle,ax read_loop: lea dx,buffer ;tro toi vung dem mov bx,handle ;lay the file call read ;doc file,AX = so byte doc duoc or ax,ax ;ket thuc file je pexit ;dung, ket thuc file mov cx,ax ;CX chua so byte doc duoc call display ;hien thi file jmp read_loop ;lap lai open_error: lea dx,openerr ;lay thong bao loi add errcode,al mov ah,9 int 21h ;hien thi thong bao loi ;************************************************************** ;output and display ;show_and_send: pexit: mov cx,2000 pthre_wait: mov dx,card_base add dx,5 in al,dx jmp short $+2 test al,20h jnz pok_2_send loop pthre_wait ;wait period timed out,display error message and exit mov dx,offset err1_ms call show_message jmp ppexit pok_2_send: call con_hex ;goi chtr con chuyen sang so hex lea dx,buffrr mov cx,256 call display mov cx,256 ;place in transmitter hoding register to send mov dx,card_base lea di,buffrr ;tro toi vung dem ppl: mov al,[di] ;lay byte data out dx,al jmp short $+2 call edelay inc di loop ppl ;display character ; call tty ppexit: mov bx,handle ;lay the file call close ;dong the file jmp monitor ;************************************************************** get_name proc near push ax push dx push di mov ah,9 ;ham hien thi chuoi lea dx,prompt int 21h cld lea di,filename ;DI tro toi ten file mov ah,1 ;ham doc ki tu tu ban phim read_name: int 21h cmp al,0dh ;co phai CR je done ;dung ket thuc stosb ;luu no vao trong chuoi jmp read_name ;tiep tuc doc vao done: mov al,0 stosb ;luu byte 0 pop di pop dx pop ax ret get_name endp open proc near mov ah,3dh ;ham mo file mov al,0 ;chi doc int 21h ret open endp read proc near push cx mov ah,3fh ;ham mo file mov cx,512 ;chi doc int 21h pop cx ret read endp display proc near push bx mov ah,40h ;ham ghi file mov bx,1 ;the file cho man hinh int 21h ;dong file pop bx ret display endp close proc near mov ah,3eh ;ham dong file int 21h ;dong file ret close endp edelay proc near push ax push bx mov ax,06h edel2: mov bx,0ffffh edel1: dec bx jnz edel1 dec ax jnz edel2 pop bx pop ax ret edelay endp ;++++++++++++++++++++++++++++++++++++++++++++ con_hex proc near push ax push bx push cx push dx push di push si mov ax,0b800h mov bx,0 cld lea si,buffrr mov cx,260 mov al,0 xxx8: mov [si],al inc si loop xxx8 lea si,buffrr lea di,buffer xxx3: mov al,[di] ;lay byte data cmp al,3ah ;so sanh voi ma dau ':' jz xxx2 ;nhay neu la dau ':' inc di jmp xxx3 ;quay lai de tim dau ':' xxx2: call ktra_end ;goi chuong trinh kiem tra ket thuc cmp ax,0 ;dung la het data thi lam cho AX=0000 jnz xxx4 xxx6: pop si pop di pop dx pop cx pop bx pop ax ret xxx4: mov al,[di] ;lay byte data mov [si],al ;dung la byte 3Ah can luu vao call goi_ht inc di inc si ;xu li so byte can goi mov al,[di] ;lay so can goi MSD sub al,30h ;tru di 30 de thanh so hex call so_lon ;kiem tra so ABCDEF mov cl,4 rol al,cl mov ah,al inc di mov al,[di] ;lay so can go LSD sub al,30h ;tru di 30 de thanh so hex call so_lon ;kiem tra so ABCDEF or al,ah ;or 2 data lai thanh 1 byte mov [si],al ;cat so HEX ADDR_H add al,1 mov dl,al ;luu so byte can xu li con lai call goi_ht ;xu li phan dia chi can goi inc di inc si mov al,[di] ;lay byte ADDR_L-MSD sub al,30h ;tru di 30 de thanh so hex call so_lon ;kiem tra so ABCDEF mov cl,4 rol al,cl mov ah,al inc di mov al,[di] ;lay byte ADDR_L-LSD sub al,30h ;tru di 30 de thanh so hex call so_lon ;kiem tra so ABCDEF or al,ah ;or 2 data lai thanh 1 byte mov [si],al ;cat so HEX ADDR_H call goi_ht inc di inc si mov al,[di] ;lay byte ADDR_H-MSD sub al,30h ;tru di 30 de thanh so hex call so_lon ;kiem tra so ABCDEF mov cl,4 rol al,cl mov ah,al inc di mov al,[di] ;lay byte ADDR_H-LSD sub al,30h ;tru di 30 de thanh so hex call so_lon ;kiem tra so ABCDEF or al,ah ;or 2 data lai thanh 1 byte mov [si],al ;cat so byte can goi dang HEX call goi_ht ;xu li cac byte con lai inc di ;bo byte 00 inc di ; xxx1: inc di inc si mov al,[di] ;lay so byte thu nhat sub al,30h ;tru di 30 de thanh so hex call so_lon ;kiem tra so ABCDEF mov cl,4 rol al,cl mov ah,al inc di mov al,[di] ;lay so byte thu 2 sub al,30h ;tru di 30 de thanh so hex call so_lon ;kiem tra so ABCDEF or al,ah ;or 2 data lai thanh 1 byte mov [si],al ;cat so byte can goi dang HEX call goi_ht dec dl cmp dl,0 jnz xxx1 ;quay lai vi chua inc di ;bo byte cuoi thu nhat inc di ;bo byte thu 2 inc di ;bo ma xuong hang jmp xxx3 ;het 1 hang data con_hex endp ;chuong trinh kiem tra ket thuc ktra_end proc near push di inc di mov al,[di] ;lay byte data cmp al,30h ;kiem tra byte 0 thu nhat jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte 0 thu 2 mov al,[di] ;lay byte data cmp al,30h jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte 0 thu 3 mov al,[di] ;lay byte data cmp al,30h jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte 0 thu 4 mov al,[di] ;lay byte data cmp al,30h jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte 0 thu 5 mov al,[di] ;lay byte data cmp al,30h jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte 0 thu 6 mov al,[di] ;lay byte data cmp al,30h jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte 0 thu 7 mov al,[di] ;lay byte data cmp al,30h jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte 1 thu 8 mov al,[di] ;lay byte data cmp al,31h jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte F thu 9 mov al,[di] ;lay byte data cmp al,46h jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte F thu 10 mov al,[di] ;lay byte data cmp al,46h jnz kt_exit ;nhay den de thoat vi khong phai mov ax,0 pop di ret kt_exit: mov ax,1111h ;nap data sao cho khac khong la 1 pop di ret ktra_end endp goi_ht proc near RET push di mov di,bx mov ah,1 stosw mov bx,di pop di ret goi_ht endp so_lon proc near cmp al,9 jg yyy ret yyy: sub al,7 ret so_lon endp code ends end start MỤC LỤC Trang Lời cảm tạ Lời nói đầu PHẦN GIỚI THIỆU CHUNG CHƯƠNG CƠ SỞ LÝ LUẬN Chương I: CẤU TRÚC VI XỬ LÝ 8085 I. Cấu Trúc Bên Trong Của Vi Xử Lý 8085 .......................................... II. Sơ Đồ Cấu Trúc Bên Ngoài Và Chứ Năng Các Chân Của Vi Xử Lý 8085 ................................................................................. III. Bộ Nhớ .......................................................................................... IV. Kết Nối Bộ Nhớ Với Vi Xử Lý ....................................................... V. Vấn Đề Giải Mã Cho Bộ Nhớ .......................................................... Chương II: GIỚI THIỆU TẬP LỆNH CỦA VI XỬ LÝ 8085 ............... Chương III: GIAO TIẾP VỚI MÁY TÍNH I. Giao Tiếp Song Song 1. Giao Tiếp Qua Cổng Máy In ........................................................... 2. Giao Tiếp Qua Cổng Slot Card ....................................................... II. Giao Tiếp Nối Tiếp Qua Cổng COM RS232 1. Vài Nét Cơ Bản Về Cổng nối Tiếp ................................................. 2. Sự Trao Đổi Của Các Đường Tín Hiệu ........................................... Chương IV: GIỚI THIỆU HỆ THỐNG KIT 8085 1. Tần Số Làm Tần Số Làm Việc ........................................................ 2. Tổ Chức Bộ Nhớ ............................................................................ 3. Các IC Ngoại Vi ............................................................................. 4. Khối Giải Mã Hiển Thị Sử Dụng IC 8279 ...................................... 5. Khối Giài Mã Bàn Phím .................................................................. PHẦN GIAO TIẾP Chương V: Giao Tiếp Nối Tiếp Dùng Vi Mạch 8251 I. Truyền Thông Tin Nối Tiếp ............................................................... II. Vi Mạch Usart 8251 ......................................................................... 1. Sơ Đồ Chân Và Sơ Đồ Khối ........................................................... 2. Các Thanh Ghi ................................................................................ III. Ưng Dụng Của 8251 Để Truyền Thông Tin Nối Tiếp 1. Truyền Thông Tin Nối Tiếp Giữa Hai Kit Vi Xử Lý ....................... 2. Truyền Thông Tin Nối Tiếp Giữa Vi Xử Lý Và Máy Tính .............. Chương VI: Giao Tiếp Song Song Dùng Vi Mạch 8255 I. Giơi Thiệu Về Vi Mạch 8255 ............................................................ II. Sơ Đồ Chân, Sơ Đồ Logic, Chức Năng Các Chân Của Vi Mạch 8255 .. III. Cấu Trúc Bên Trong và Hoạt Động Của Vi Mạch 8255 .................. 1. Sơ Đồ Khối, Cấu Trúc Bên Trong Của Vi Mạch 8255 ................... 2.Hoạt Động Của Vi Mạch 8255 ......................................................... 3. Từ Điều Khiển ................................................................................ IV. Giao Tiếp Giữa Vi Xử Lý Với 8255 ............................................... 1. Giao Tiếp Kiểu I/O ......................................................................... 2. Giao Tiếp Kiểu Bộ Nhớ .................................................................. Chương VII. Phần Cứng Và Phần Mềm Giao Tiếp I. Lưu Đồ Và Chương Trình Truyền- Nhận Dữ Liệu 1. Lưu Đồ Truyền Dữ Liệu ................................................................. 2. Lưu Đồ Nhận Dữ Liệu .................................................................... 3. Chương Trình Truyền Dữ Liệu ....................................................... 4. Lưu Đồ Nhận Dữ Liệu .................................................................... II. Thiết Kế Và Thi Công Phần Giao Tiếp 1. Giới Thiệu Về Vi Mạch Max 232.................................................... 2. Sơ Đồ Mạch Kết Nối ...................................................................... 3. Sơ Đồ Mạch In ................................................................................ PHẦN TỔNG KẾT Phụ Lục Hướng Phát Triển Đề Tài Kết Luận Tài Liệu Tham Khảo Mục Lục

Các file đính kèm theo tài liệu này:

  • pdfĐồ án tốt nghiệp - Phân tích thiết kế hệ thống - GIAO TIẾP MÁY TÍNH VỚI KIT VI XỬ LY 8085.pdf