BÀI TẬP LỚN MÔN: VI XỬ LÝ VÀ CẤU TRÚC MÁY TÍNH
Có thể bạn quan tâm
Trang chủ Tìm kiếm Trang chủ Tìm kiếm BÀI TẬP LỚN MÔN: VI XỬ LÝ VÀ CẤU TRÚC MÁY TÍNH doc 29 683 KB 6 121 4.3 ( 6 lượt) Xem tài liệu Nhấn vào bên dưới để tải tài liệu Tải về Đang chuẩn bị: 60 Bắt đầu tải xuống Để tải xuống xem đầy đủ hãy nhấn vào bên trên Chủ đề liên quan linh kiện điện tử mạch điện ứng dụng giáo trình kỹ thuật điện luận văn thiết kế điện vi xử lý cấu trúc máy tính
Nội dung
LỜI GIỚI THIỆU Sự ra đời và phát triển nhanh chóng của kỹ thuật vi điện tử mà đặc trưng là kỹ thuật vi xử lý đã tạo ra một bước ngoặt quan trọng trong sự phát triển của khoa học tính toán, điều khiển và xử lý thông tin. Kỹ thuật vi xử lí đóng một vai trò rất quan trọng trong tất cả các lĩnh vực của cuộc sống và khoa học kỹ thuật, đặc biệt là lĩnh vực Tin học và Tự động hóa. Bộ vi xử lí 8086 – 16-bit là thế hệ tiếp theo sau bộ vi xử lí 8-bit đầu tiên của Intel mang tên Intel-8008. 8086- với những tính chất và sự cải tiến vượt trội, nó đã được sử dụng rộng rãi với rất nhiều ứng dụng trong thực tiễn Đây là lần đầu tiên nhóm em tiếp xúc và làm quen với môn học vi xử lý, cũng như với cách làm bài tập lớn. Chính vị vậy, trong quá trình thực hiện sẽ gặp không ít những sai sót, mong thầy cô bỏ qua và cho nhóm em những nhận xét, ý kiến đóng góp để nhóm em rút kinh nghiệm cho những bài tập lớn sau nay đươc hoàn thiện và đạt kết quả tốt hơn. Tài liệu tham khảo:kỹ thuật vi xử lý(văn thế minh). Nhóm sinh viên thực hiện: Nguyễn Văn Chuyền MSV 1231050120 Đỗ Bá Duy MSV 1231050147 Lê Tất Đại MSV 1231050151 Chúng em xin chân thành cảm ơn! 1 Nhận xét và đóng góp ý kiến của giáo viên …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… ……………………………………………………………………………………………. …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… ……………………………………………………………………………………………. …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… ……………………………………………………………………………………………. …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… ……………………………………………………………………………………………. …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… ……………………………………………………………………………………………. ……………………………………………………………………………………………. . Chúng em xin chân thành cảm ơn! 2 PHỤC LỤC PHẦN I: NỘI DUNG THỰC HIỆN..............................................................................4 1.1. NỘI DUNG............................................................................................................ 4 1.2. MỤC ĐÍCH...........................................................................................................4 PHẦN II.......................................................................................................................... 5 HỆ VI XỬ LÝ VÀ TỔNG QUAN VI XỬ LÝ CỦA MÁY TÍNH...............................5 I-TỔNG QUAN CỦA VI XỬ LÝ..................................................................................5 1. các hệ đếm và việc mã hóa thông tin............................................................................5 2. Các mã thường dùng trong máy tính............................................................................6 II- CẤU TRÚC CỦA MÁY TÍNH................................................................................7 1- Khái niệm.................................................................................................................... 7 2- phần cứng và phần mền...............................................................................................7 PHẦN III: CƠ SỞ LÝ THUYẾT...............................................................................8 I- Bộ vi xử lý 8086 của intel..........................................................................................8 2- Các thanh ghi............................................................................................................... 9 II- SƠ ĐỒ VÀ CHỨC NĂNG CỦA 8086...................................................................10 1-Sơ đồ của 8086...........................................................................................................10 2-Chức năng của 8086...................................................................................................10 III- CÁC THIẾT BỊ NGOẠI VI.................................................................................12 1. IC8255A……………………………………………………………………………..12 2. IC giải mã địa chỉ 74273……………………………………………………………14 3. IC giải mã địa chỉ 74LS139……………………………………………………….. 14 PHẦN IV: LẬP TRÌNH HỢP NGỮ........................................................................16 I - SƠ LƯỢC VỀ NGÔN NGỮ ASM.........................................................................16 II- CẤU TRÚC CHƯƠNG TRÌNH VÀ CÁC TẬP LỆNH CHO 8086....................16 1- Cấu trúc chương trình................................................................................................16 2 - Tập lệnh thao tác với bộ vi xử lý 8086.....................................................................16 3 - Các nhóm lệnh của 8086...........................................................................................17 4 - Ngăn xếp và thủ tục.................................................................................................19 PHẦN V. MỘT SỐ BÀI TẬP......................................................................................20 I. BÀI TẬP 1.............................................................................................................20 1. Sơ đồ thuật toán......................................................................................................20 2. Code chương trình..................................................................................................20 II. BÀI TẬP 2.............................................................................................................22 1. Phân tích đề bài và vẽ mạch ghép nối.....................................................................22 2. Nguyên lý hoạt động...............................................................................................23 III. BÀI TẬP 3.........................................................................................................24 1. Phân tích đề bài và cách chọn cách ghép nối..........................................................24 2. mạch ghép nối.........................................................................................................25 3. Sơ đồ thuật toán.......................................................................................................25 4 Code chương trình....................................................................................................26 PHẦN VI. KẾT LUẬN……………………………………………………………. . .27 3 PHẦN I: NỘI DUNG THỰC HIỆN 1.1. NỘI DUNG - Thực hiện một số ví dụ cụ thể để chúng ta hiểu rõ hơn về cấu trúc, tập lệnh và chức năng các chân của bộ vi xử lý 8086. - Một số bài tập cụ thể như sau: 1.1.1. Bài 1: chương trình thực hiện phép toán AX = 7!, sau đó hiển thị kết quả dưới dạng số nhị phân và số thập phân. 1.1.2. Bài 2:Xây dựng bộ nhớ dung lượng 64KB từ các vi mạch nhớ RAM(1Kx4), 3 vi mạch nhớ R0M(4Kx8) 1 vi mạch nhớ R0M(16Kx8) và 1 vi mạch nhớ R0M(32Kx8), địa chỉ đầu của vi mạch thứ nhất là 00000H. 1.1.3. Bài 3:Thiết kế mạch điều khiển đóng ngắt cho 3 thiết bị ghép với các cổng của 8255, địa chỉ của cổng PA, PB, PC, thanh ghi điều khiển lần lượt là 80h, 82h, 84h, 86h. 1.2. MỤC ĐÍCH - Giúp mọi người biết và hiểu rõ hơn về cách ghép nối giữa vi xử lý 8086 và 8255 - Giúp mọi người biết và hiểu rõ hơn cách ghép nối bộ nhớ từ các vi mạch nhớ khác nhau tùy theo yêu cầu đề bài. - Hiểu rõ hơn về cấu trúc lập trình cũng như tập lệnh của bộ vi xử lý 8086 PHẦN II. HỆ VI XỬ LÝ VÀ TỔNG QUAN VI XỬ LÝ CỦA MÁY TÍNH I-TỔNG QUAN CỦA VI XỬ LÝ Ngày nay xu hướng số hóa tín hiệu càng được khẳng định rõ nét trong nhiều lĩnh vực :điện tử,tin học,viễn thông,công nghệ thông tin,kỹ thuật điều khiển tự động...vì tín hiệu số có cấu trúc đơn giản,dễ tính toán và xử lý gia công... Việc xử lý , tính toán , điều khiển được thực hiện chủ yếu trên các máy tính PC(hay hệ vi xử lý nói chung).Mỗi hệ vi xử lý nàythường được ghép nối và giao tiếp với nhiều thiết bị ngoại vi khác nha. Mỗi thiết bị làm việc ở môi trường khác nhau cũng như chức năng , nhiệm vụ khác nhau. *Môi trường của thiết bị có thể là : + Điện,điện tử + Cơ,cơ điện tử +Quang điện tử. *Chức năng , nhiệm vụ của thiết bị như : + Thông tin vô tuyến,hữu tuyến. + Kỹ thuật viễn thông. 4 + Rô bốt, máy công cụ,dây truyền sản xuất tự động. 1. Các hệ đếm và việc mã hóa thông tin 1.1. các hệ đếm 1.1.1. Hệ thập phân (hệ đếm cơ số mười) Trong hệ này ta sử dụng các số trong phạm vi từ 0 đến 9, để biểu diễn các giá trị. Hệ thập phân là một hệ đếm phụ thuộc vị trí , có nghĩa là mỗi chữ số gắn liền vở một lũy thừa 10 với số mũ phụ thuộc vào vị trí của con số trong số được biểu diễn. Ví dụ : 1234=1.103+2.102+3.101+4.100 1.1.2- Hệ nhị phân Trong hệ nhị phân, cơ số đếm là 2 nên chỉ sử dụng hai số 0 và 1 đẻ biể diễn các trị số. Ví dụ : 101011=1.25+0.24+1.23+0.22+1.21+1.25+1.20 1.1.3- Hệ thập lục phân Hệ thập lục phân là hệ đếm cơ số 16 Nên ta thường sử dụng các số từ 0 đến 9 và các chữ cái từ A đến F để biểu diễn các số. Bảng sau chỉ mối quan hệ giữa số hệ thập phân và hệ thập lục phân. Hệ thập phân Hệ thập lục phân Hệ thập phân Hệ thập lục phân 0 0 9 9 1 1 10 A 2 2 11 B 3 3 12 C 4 4 13 D 5 5 14 E 6 6 15 F 7 7 16 10 8 8 17 11 1.2- Chuyển đổi giữa các hệ đếm 1.2.1- chuyển từ hệ nhị phân sang hệ thập phân Ta sử dụng công thức sau : (bnbn-1...b1b0)B=bn*2n+ bn-1*2n-1+...+b121+b0*20 1.2.2- Chuyển từ hệ thập phân sang hệ nhị phân Ta sử dụng phương pháp sau : Lấy số cần chuyển chia cho 2 và ghi nhớ phần dư, tiếp theo lấy thương của phép chia trước đó chia cho 2 và ghi nhớ phần dư... cứ tiếp tục cho đến khi thương bằng 0. kết quả của phép chuyển đổi chính là dãy các số dư lấy theo thứ tự đảo ngược. Ví dụ : Đổi số 25 sang hệ nhị phân . 25 12 6 3 1 0 1 0 0 1 1 25 chia 2 được 12 dư 1 12 chia 2 được 6 dư 0 6chia 2 được 3 dư 0 3 chia 2 được 1 dư 1 1 chia 2 được 0 dư 1 5 1.3-các phép toán số học 1.3.1- phép cộng Phép cộng tương tự như với các số hệ thập phân theo quy tắc sau : 0+0=0 0+1=1 1+0=1 1+1=0 nhớ 1 1.3.2- phép trừ Phép trừ được thực hiện tương tự như với các số hệ thập phân. 1.3.3- phép nhân Phép nhân được thực hiện tương tự như nhân hai số với hệ thập phân theo quy tắc sau : 0*0=0 0*1=0 1*0=0 1*1=1 2. Các mã thường dùng trong máy tính. 2.1- Mã BCD Dùng để mã hóa các chữ số từ 0 đến 9 trong vi xử lý, PLC... Ví dụ : mã BCD của 5 là 0101,của 9 là 1001… Ta chia mã BCD thành : mã BCD đóng gói và mã BCD không đóng gói. Ví dụ :mã BCD đóng gói của 59 là 0101 1001B,của 62 là 0110 0010B. Mã BCD đóng gói của 5 la 0000 0101B,của 4 là 0000 0100B. 2.2- Mã ASCII Trong bảng mã ASCII tiêu chuẩn người ta sử dụng 7 bit để mã hóa các ký tự thông dụng . như vậy bảng này sẽ có 128 ký tự ứng với mã từ 0 đến 127. Vi dụ : mã ASCII của ‘A’ là 65(01000001) ;của ‘a’ là (01100001) II- CẤU TRÚC CỦA MÁY TÍNH 1- Khái niệm Vi xử lý là một thành phần không thể thiếu của máy tính, ngoài ra để tạo ra một hệ hoàn chỉnh phải cần có các bộ phận khác như bộ nhớ, thiết bị vào/ra như bàn phím,màn hình.. 1.1- Các bộ phậncủa cấu trúc máy tính : 6 1.1.1-Bộ vi xử lý (CPU- Central Processin Unit) Đóng vai trò như một bộ não của máy tính. Đây là một vi mạch số với mức độ tích hợp cực lớn, bên trong nó bao gồm nhiều khối chức năng khác nhau như đơn vị số nguyên để thao tác tính toán với các số nguyên,.... Các thông số quan trọng của một bộ vi xử lý : + Tần số làm việc + Độ rộng bus dữ liệu m + Độ rộng bus địa chỉ n 1.1.2 – Bộ nhớ Chia được chia thành RAM và ROM + RAM (Random Access Memory): là bộ nhớ có thể ghi/đọc, có nghĩa là ta có thể đọc thông tin từ bộ nhớ, xóa thông tin cũ trong bộ nhớ hoặc ghi thông tin mới vào bộ nhớ; nội dung thông tin trong RAM sẽ bị mất đi khi bị mất nguồn. + ROM (Read Only Memory) :dùng để chứa các chương trình điều khiển hệ thống như chương trình để kiểm tra các thiết bị mỗi khi bật nguồn, chương trình khởi động máy… Nội dung bên trong ROM không bị mất đi khi bị mất nguồn. 1.1.3- Mạch ghép nối vào/ra Mạch ghép nối vao/ra có nhiệm vụ tạo ra khả năng giao tiếp giữa hệ vi xử lý với thế giới bên ngoài. Bao gồm các thiết bị như : thiết bị vào (bàn phím, chuột, máy quét….).thiết bị ra(màn hình, máy in, …..) 1.1.4- Bus hệ thống Gồm có: + Bus điều khiển:là các đương dây mang các tín hiệu điều khiển hoạt động hoặc phản ánh trạng thái của các khối như /RD, /WR, /INT… + Bus dữ liệu là các đường dây mang số liệu mà vi xử lý đang trao đổi với thiết bị nhớ hoặc thiết bị ra/vào. + Bus địa chỉ : mang thông tin về địa chỉ của ô nhowshay một thiết bị vào/ra. 2- phần cứng và phần mền 2.2.1- Phần cứng Phần cứng (hardware) là thuật ngữ dùng để chỉ toàn bộ những thiết bị cơ khí, điện tử tạo nên máy tính như các ổ đĩa, màn hình,… 2.2.2- Phần mền Phần mền (software) là thuật ngữ dùng để chỉcác chương trình máy tính, nó được thực thi trên phần cứng bằng cách điều khiển sự hoạt động của phần cứng. Các phần mền được chia thành các loại sau: Hệ điều hành như DOS, Windows,…. Trình tiện ích như NC, NU, BKAV,… Chương trình ứng dụng như MS Word, Protel,…… Ngôn ngữ lập trình pascal, C, C++, Java,…. 7 PHẦN III: CƠ SỞ LÝ THUYẾT I-Bộ vi xử lý 8086 của intel 1.1- Tổng quan về 8086 Như chúng ta đã biết, bộ vi xử lý 8086 được giới thiệu năm 1978, là bộ vi xử lý 16 bit đầu tiên của Intel, mở đầu cho họ vi xử lý x86. Bên trong 8086 gồm 29000 transistor, được sản xuất bằng công nghệ NMOS hoặc CMOS với 3 phiên bản: 8086 hoạt động ở tần số 4,77MHZ; 8086-8 hoạt động ở tần số 8MHZ; 8086-10 hoạt động ở tần số 10MHZ 1.2 - Sơ đồ khối của 8086: 1.3 –Khối thực hiện lệnh (EU) Khối thực hiện (EU- Execution Unit) là nơi giả mã và thi hành các lệnh. EU bao gồm: - Bộ xử lý số học và logic(ALU - Arithmatic Logiccal Unit) là nơi thưc hiện các lệnh số học và lệnh logic. - Các thanh ghi 16 bit chứ toán hạng. - Thanh ghi cờ F. - Khối điều khiển (CU- Control unit). Có nhiệm vụ tạo ra các tín hiệu điều khiển các bộ phận bên trong và bên ngoài CPU. 1.4- Khối giao tiếp bus (BIU) Khối giao tiếp bus (BIU- Bus Interface Unit) có nhiệm vụ đẩm bảo việc trao đổi thong tin giữa 8086 với các linh kiện bên ngoài). BIU gồm : - Một bộ cộng để tạo địa chỉ vật lý 20 bit từ các thanh ghi 16 bit. - Bốn thanh ghi đoạn 16 bit gồm CS,DS,SS và ES để giúp 8086 truy cạp tới các đoạn trên bộ nhớ. 8 - Thanh ghi con trỏ lệnh IP. - Mạch logic điều khiển có nhiệm vụ đảm bảo giao tiếp giữa 8086 với thiết bị bên ngoài. - Hàng đợi lệnh có độ dài 6 byte là nơi chứa các mã lệnh đọc được nằm sẵn để chờ EU xử lý. 2- Các thanh ghi 2.1- Các thanh ghi đa năng. Bộ vi xử lý 8088 có 4 đoạn ghi đa năng 16 bit: AX, BX, CX, DX. Khi cần chứa dữ liệu 8 bit thì mỗi đoạn nghi này có thể tách ra thành hai đoạn ghi 8 bit cao và 8 bit thấp, đó là các cặp AH và AL, BH và BL, CH và CL, DH và DL. 2.2- Các thanh ghi đoạn Để quản lý các đoạn nhớ trên, bộ vi xử lý 8088 có 4 đoạn ghi đoạn xác định địa chỉ bắt đầu của 4 đoạn nhớ 64 KB: CS (Code Segment), DS (Data Segment), ES (Extra Segment), SS (Stack Segment). Địa chỉ vật lý = Nội dung thanh ghi đoạn * 16 + Nội dung thanh ghi đoạn. 2.3- Thanh ghi con trỏ và chỉ số. Bộ vi xử lý 8086 có 3 đoạn ghi con trỏ (IP, BP, SP) và 2 đoạn ghi chỉ số (SI, DI). Các đoạn ghi này ngầm định được sử dụng làm các đoạn ghi lệch cho các đoạn tương ứng. IP (Instruction Pointer), BP (Base Pointer ), SP (Stack Ponter), SI (Source Index): DI (Destinaton Index). 2.4- Thanh ghi cờ (Flag registor). Bên trong bộ vi xử lý 8088 có một đoạn ghi đặc biệt gọi là đoạn ghi cờ hay đoạn ghi trạng thái. Mỗi bit của đoạn ghi này được dùng để phản ánh một trạng thái nhất định của kết quả phép toán do ALU thực hiện hoặc một trạng thái hoạt động của CPU. Đoạn ghi cờ có 16 bit nhưng chỉ dùng hết 9 bit làm bit cờ. 2.5- Thanh ghi cờ (Flag registor). Bên trong bộ vi xử lý 8088 có một đoạn ghi đặc biệt gọi là đoạn ghi cờ hay đoạn ghi trạng thái. Mỗi bit của đoạn ghi này được dùng để phản ánh một trạng thái nhất định của kết quả phép toán do ALU thực hiện hoặc một trạng thái hoạt động của CPU. Đoạn ghi cờ có 16 bit nhưng chỉ dùng hết 9 bit làm bit cờ. - Các bit cờ chia thành hai loại: - Các cờ trạng thái: có 6 cờ trạng thái là C, P, A, Z, S và O. Các cờ trạng thái này được thiết lập bằng 1 hoặc xóa bằng 0 sau hầu hết các lệnh toán học và logic. 9 - C (Carry): cờ nhớ; P (Parity): cờ chẵn lẻ; A (Auxiliary): cờ nhớ phụ; Z (Zero): cờ rỗng,; S (Sign): cờ dấu; O (Overflow): cờ tràn, - Các cờ điều khiển: có 3 cờ T, I, D. Các cờ này được thiết lập bằng 1 hoặc xóa bằng 0 thông qua các lệnh để điều khiển chế độ làm việc của bộ vi xử lý. - T (Trap): cờ bẫy, I (Interrupt): cờ ngắt; D (Direction): cờ hướng. II . SƠ ĐỒ VÀ CHỨC NĂNG CỦA 8086 1-Sơ đồ của 8086 2-Chức năng của 8086 Vi xử lý 8086 được thiết kế để hoạt động một trong hai chế độ, tùy thuộc vào mức điện áp đặt ở chân số 33 (chân MN/MX): - chế độ tối thiểu (chế độ MIN) đươc thiết lập nếu điện áp ở chân số 33 ở mức 5V, là chế độ trong hệ thống chỉ có 8086 và các vi mạch nhớ , các vi mạch ghép nối vào /ra. - Chế độ tối đa (chế độ MAX) được thiết lập nếu điện áp ở chân số 33 ở mức 0V, là chế độ áp dụng cho hệ thống đa xử lý, đồng xử lý (8086 và bộ đồng xử lý toán học 8087). * Các chân mang thông tin địa chỉ. -Vi xử lý 8086 có 20 đường địa chỉ từ A0 đến A19 tong đó 16 đường dây địa chỉ thấp từ A0 đến A15 được ghép kênh dữ liệu từ D0 đến D15 trên các chân từ AD0 đến AD15 ; còn 4 đường dây địa chỉ cao nhất từ A16 đến A19 được ghép kênh với tín hiệu trạng thái từ S3 đến S6 trên các chân A16/S3 đến A19/S6. * Các chân mang thông tin dữ liệu. Vi xử ly 8086 có 16 đường dây dữ liệu từ Do đến D15 được ghép kênh với 16 đường địa chỉ thấp từ D0 đến D15. Khi hoạt động ở chu kỳ bus dữ liệu thì các đường dây này mang thông tin về dữ liệu, là dữ liệu đọc ra hay vào bộ nhớ. *Các chân tín hiệu trang thái. - Bốn đường dây địa chỉ cao nhất từ A16 đến A19 của 8086 cũng được ghép kênh , nhưng trong trường hợp này nó được ghép kênh với các tín hiệu trạng thái từ S 3 đén S6. Các bít trang thái này được đưa ra cùng thời điểm với các dữ liệu được truyền trên các chân AD0 đén AD15. - READY: Tín hiệu báo cho CPU biết tình trạng sẵn sàng của thiết bị ngoại vi hay bộ nhớ. Khi READY = 1 thì CPU thực hiện đọc/ghi dữ liệu mà không phải chèn thêm các chu kỳ đợi. Khi các thiết bị ngoại vi hay bộ nhớ cótốc độ chậm, chúng có thể đưa tin hiệu READY = 0 để báo cho CPU biết mà chờ chúng. Lúc này CPU tự kéo dài thời gian 10 thực hiện đọc/ghi bằng cách chèn thêm các chu kỳ đợi. * Các chân tìn hiệu điều khiển. -ALE: [I] Address Latch Enable. Xung cho phép chốt địa chỉ. Khi ALE = 1 có nghĩa là trên các chân ghép kênh AD có địa chỉ của thiết bị vào/ra hoặc ônhớ. Khi CPU chấp nhận treo chân này không ở trạng thái trở kháng cao mà ALE = 0. : [O] Data bus Enable. Kích hoạt các bộ đệm bus dữ liệu. : Chọn bộ nhớ (= 0) hoặc thiếtbị vào/ra (= 1) làm việc với CPU. Khi đó trên bus địa chỉ sẽ có địa chỉ tương ứng của các thiết bị đó. Chân này ở trạng thái trở kháng cao khi CPU chấp nhận treo. :[O] Data Transmit/Receive. Tín hiệu này cho biết bus dữ liệu đang vận chuyển dữ liệu vào CPU hay ra khỏi CPU. Tín hiệu này cũng dùng để điều khiển các bộ đệm 2 chiều của bus dữ liệu. : Dùng để báo răng đang truy cập năng cao hay băng thấp của bộ nhớ :[O] Read signal. Xung cho phép đọc. Khi RD = 0 thì bus dữ liệu nhận dữ liệu từ bộ nhớ hoặc thiết bị ngoại vi. Chân này ở trạng thái trở kháng cao khi CPU chấp nhận treo * Các chân tín hiệu ngắt: -INTR: [I] Interrupt request. Tín hiệu yêu cầu ngắt che được. Khi có yêu cầu ngắt (INTR = 1) mà cờ cho phép ngắt IF = 1 thì CPU kết thúc lệnh đang làm dở, sau đó đi vào chu kỳ chấp nhận ngắt và đưa ra bên ngoài tín hiệu INTA = 0. :[I] Tín hiệu tại chân này được kiểm tra bởi lệnh WAIT. Khi CPU thực hiện lệnh WAIT mà lúc đó tín hiệu TEST = 1 thì nó sẽ chờ cho đến khi tín hiệu TEST = 0 thì mới thực hiện lệnh tiếp theo. -NMI: [I] None-Maskable Interrupt. Tín hiệu yêu cầu ngắt không che được. Tín hiệu này không bị khống chế bởi cờ IF và nó sẽ được CPU nhận biết bằng tác động của sườn lên của xung yêu cầu ngắt. Nhận được yêu cầu ngắt này (NMI = 1) CPU kết thúc lệnh đạng làm dở,sau đó chuyển sang thực hiện chương trình phục vụ ngắt kiểu INT2. -RESET: Dùng để thiết lập lại phần cứng cho CPU. Chuyển RESET xuống mức logic 0 dùng để khởi tạo các thanh ghi nội của vi xử lý và khởi tạo chương trình con phục vụ thiết lập hệ thống. *Các chân mang tín hiệu phục vụ DMA : Ở chế độ MIN của 8086 gồm hai tín hiệu HOLD và HLDA. Khi một thiết bị ngoài muốn giành quyền điều khiển bus hệ thống thực hiện truy cập bộ nhớ trực tiếp , nó báo yêu cầu này cho CPU bằng cách chuyển HOLD lên mức logic 1.Sau đó CPU chuyển sang trạng thái cô lập sau khi chu kỳ bus hiện tại thực hiện xong. Khi ở trạng thái cô 11 lập, các đường dây tín hiệu AD0- AD15, A16/S3- A19/S6, BHE/S7, và INTR. , , , III-CÁC THIẾT BỊ NGOẠI VI 1. IC 8255A 1.1.1. sơ đồ chân - Trên thị trường và nghiên cứu chúng ta chỉ nghiên cứu loại đóng gói dạng DIP 40 chân của IC 8255A: - Các chân 14, 15, 16, 17, 13, 12, 11, 10: tương ứng theo thứ tự từ PC0 đến PC7. Đây là cổng giao tiếp dữ liệu 8 bít PC, khi cần thiết, nó có thể tách thành 2 phần PC cao từ bít PC7 đến PC4 và PC thấp từ bít PC0 đến PC3.Đặc biệt, hai phần này có thể hoạt động độc lập với nhau nếu cần - Các chân 4, 3, 2, 1, 40, 39, 38, 37: tương ứng với cổng PA từ PA0 đến PA7. Đây là cổng giao tiếp dữ liệu 8 bit vào/ ra PA. Cổng này khác với cổng PC, nó không thể tách làm 2 độc lập với nhau được. - Các chân từ 18 đến 25: tương ứng với cổng PB từ PB0 đến PB7 . Tương tự như cổng PA, cổng PB cũng có thể đưa dữ liệu 8 bít ra hoặc vào bằng cách thiết lập giá trị của thanh ghi điều khiển. - Các chân từ 27 đến 34 : tương ứng theo thứ tự từ D7 đến D0 - Bus dữ liêu(2 chiều). Bus dữ liệu 2 chiều này được nối tới các tín hiệu tương ứng của vi xử lý để trao đổi dữ liệu vào/ra do chip 8086 xử lý - Chân 35: là chân Reset - khởi tạo trạng thái ban đầu của IC 8255. Nếu đặt mức này lên mức 1 thì IC bị RESET lại từ đầu. Để mạch có thể chạy được, chúng ta phải đặt chân này về mức 0V – GND. - Chân 6: chân /CS - Tín hiệu chọn vi mạch. Đây là tín hiệu tích cực ở mức thấp 0v, vì vậy chúng ta phải đặt chân này ở mức thấp để chọn IC 8255 hoạt động. - Chân 5: chân /RD (Read)- là chân tín hiệu cho phép đọc. - Chân 36: chân /WR(Write) – là chân tín hiệu cho phép ghi. - Chân 9 và 8: tương ứng với chân tín hiệu địa chỉ A0 – A1, 2 chân này được nối với 2 bít được tách ra từ bộ tách địa chỉ của 8086, 2 chân này dùng để giải mã cho các cổng của 8255 với quy luật sau: + A1A0 là 00: mã hóa cho cổng PA 12 + A1A0 là 01: mã hóa cho cổng PB + A1A0 là 10: mã hóa cho cổng PC + A1A0 là 11: mã hóa cho thanh ghi điều khiển Chính vì vậy, để chọn đúng vị trí cổng chúng ta phải đưa 2 bít bất kì được tách ra từ bộ tách tín hiệu địa chỉ sao cho 2 chân này cũng được mã hóa đúng như quy luật của A1, A0 trên 8255 1.1.2 chế độ hoạt động Tùy thuộc vào đoạn ghi điều khiển khi khởi tạo mà vi mạch có thể hoạt động ở các chế độ 0, 1, 2 khác nhau, chiều của các cổng A, B, C có thể ra hoặc vào. Thanh ghi điều khiển gồm có 8 bit, mỗi bít có các chức năng khác nhau : D7 D6 D5 D4 D3 D2 D1 D0 + Bit D6 và D5 dùng để chọn chế độ nhóm A Nếu D6 D5 là 00 thì chọn chế độ 0 Nếu D6 D5 là 01 thì chọn chế độ 1 Các trường hợp khác chọn chế độ 2 + Bít D4: chọn chiều cho cổng A Nếu D4=0: cổng A sẽ xuất dữ liệu ra. Nếu D4=1: cổng A sẽ nhận dự liệu bên ngoài vào + Bít D3: chọn chiều ra/vào cho 4 bit cao của cổng C Nếu D3=0 thì cho phép cổng C cao xuất dữ liệu ra Nếu D3=1 thì cho phép cổng C ca0 nhận dữ liệu + Bít D2: chọn chế độ nhóm B Nếu D2=0 thì chọn chế độ 0 Nếu D2=1 thì chọn chế độ 1 + Bít D1: chọn chiều ra/vào cho cổng B Nếu D1=0 thì cho phép cổng B xuất dữ liệu ra Nếu D1=1 thì cho phép cổng B nhận dữ liệu + Bít D0: chọn chiều ra/vào cho 4 bit thấp của cổng C Nếu D0=0 thì cho phép cổng C thấp xuất dữ liệu ra Nếu D0=1 thì cho phép cổng C thấp nhận dữ liệu VD: để chọn chọn chế độ nhóm A là chế độ 0, nhóm B là chế độ 0, cổng PA, PB xuất dữ liệu, cổng PC nhận dữ liệu , ta cài đặt thanh ghi điều khiển như sau: Mov al, 100010001B Out DK, al 13 Chế độ 0: + các cổng A, B, C được sử dụng độc lập với nhau. + Cổng A, B, C có thể vào hoặc ra tùy vào đoạn ghi điều khiển - Chế độ 1: chế độ này được gọi là chế độ vào/ra đột cửa hay đối thoại với các bit của cổng C. Các cổng A, B, C được chia thành 2 nhóm: + Nhóm A gồm cổng A để trao đổi dữ liệu và cổng C cao để đối thoại với vi xử lý và thiếu bị ngoài. + Nhóm B gồm cổng B để trao đổi dữ liệu và cổng C thấp để đối thoại với vi xử lý và thiếu bị ngoài 1. IC giải mã địa chỉ 74273 2.2.1. Cấu tạo bên trong và chức năng các chân IC 74273 là IC số được tích hợp bởi 8 con flip-flop loại D lắp theo kiểu đồng bộ xung đồng hồ và chân clear. IC gồm có 20 chân trong đó: + Chân 20 nối với Vcc nằm ở dải 4,75 đến 5,25 Volt + Chân 10 nối với Mass + Chân 1 là chân Clear (MR) + Chân 11 là chân xung đồng hồ (CP) + Các chân 3, 4, 7, 8, 13, 14, 17, 18 là chân tín hiệu vào nối với các dây tín hiệu đa hợp của Vi Xử Lý. + Các chân 2, 5, 6, 9, 12, 15, 16, 19 là các chân tín hiệu địa chỉ được tách ra. 14 - Do nó được tích hợp bởi 8 con FF_D nên mỗi IC chỉ có thể tách được 8 đường địa chỉ đa hợp của 8086. Vì vậy mạch cần 2 con IC 74273 để tách hết 16 đường địa chỉ của 8086. - Tùy theo đề bài yêu cầu mà các đầu ra này được sử dụng với mục đích khác nhau, các chân này được nối với mạch giải mã địa chỉ đưa vào chân CS của 8255 và dành ra 2 bit để mã hóa cho các cổng của 8255, 2 chân này được nối vào chân A1, A0 của 8255 3. IC giải mã địa chỉ 74LS139 3.3.1 . Sơ đồ cấu tạo bên trong và chức năng các chân của IC 74LS139 - IC 74LS1389 là IC giải mã 2 bít với các đầu ra tích cực ở mức âm. IC này được đóng gói dạng DIP 16 chân. Bên trong IC này được tích hợp 2 bộ giải mã 2 bit với chức năng các chân như sau: o Chân 1 (1G) và 15(2G): là 2 chân chọn chip của 2 bộ giải mã tích cực ở mức thấp, nghĩa là, để cho phép bộ giải mã nào hoạt động thì chân G tương ứng của bộ đó đặt ở mức 0V. o Chân 2, 3 và 14, 13: là 2 chân tín hiệu cần giải mã vào tương ứng của 2 bộ giải mã. o Chân 4, 5, 6, 7: là các chân tín hiệu ra Y0, Y1, Y2, Y3 của bộ giải mã thứ nhất o Chân 12, 11, 10, 9: là các chân tín hiệu ra của bộ giải mã thứ hai o Chân 8 (GND) và chân 16 (Vcc): là 2 chân nguồn nuôi chip. - Cơ chế mã hóa như sau: nếu 2 chân tín hiệu đầu vào B,A được đặt mức logic tương ứng là: o 00: thì chân Y0 ở mức logic thấp(0v), các chân ra còn lại ở mức cao. o 01: thì chân Y1 ở mức logic thấp(0v), các chân ra còn lại ở mức cao. o 10: thì chân Y2 ở mức logic thấp(0v), các chân ra còn lại ở mức cao. 15 o 11: thì chân Y3 ở mức logic thấp(0v), các chân ra còn lại ở mức cao PHẦN IV: LẬP TRÌNH HỢP NGỮ I - SƠ LƯỢC VỀ NGÔN NGỮ ASM Lập trình hợp ngữ (Assembly) là một ngôn ngữ lập trình bậc thấp, nó sử dụng chính các câu lệnh trong tập lệnh của bộ vi xử lý tương ứng để viết nên một chương trình. Ưu điểm: là tính hiệu quả vì chương trình viết bằng hợp ngữ chạy nhanh và chiếm bộ nhớ chương trinh ít hơn so với các chương trình viết bằng ngôn ngữ bậc cao. Lập trình bằng hợp ngữ cho phép đọc hoặc ghi trực tiếp vào các ô nhớ, đoạn ghi hay các cổng vào/ra một cách dễ dàng. Nhược điểm: chương trình viết bằng hợp ngữ dài nên khó kiểm soát lỗi, khó bảo trì hơn là sử dụng ngôn ngữ lập trinh bậc cao. Chương trình viết bằng hợp ngữ chỉ thực thi trên hệ thống máy tương ứng, không thực thi trên hệ thống máy có kiến trúc và tệp lệnh khác. II- CẤU TRÚC CHƯƠNG TRÌNH VÀ CÁC TẬP LỆNH CHO 8086 1- Cấu trúc chương trình .model small ;khai bao kieu bo nho la small .stack 100h ;khai bao kich thuoc ngan xep la 100h .data ;khai bao doan du lieu ;khai báo các biến, các hằng ở đây .code ;khai bao doan ma Main proc ;các lệnh chương trình chính Main endp ;các hàm và thủ tục End main 2 - Tập lệnh thao tác với bộ vi xử lý 8086 - Lệnh INT : dùng để gọi các hàm của DOS và BIOS ; Cú pháp : int 21h 16 -Hàm 1 : là hàm chờ đọc vào 1 ký tự từ thiết bị vào ra chuẩn (bàn phím). Kết quả được lưu vào trong AL. cú pháp : MOV AH,1 INT 21H -Hàm 2 : là hàm hiển thị kí tự lên màn hình hoặc thi hành các chức năng điều khiển. Cú pháp : MOV AH,2 MOV DL,’A’ Int 21H - Hàm 4CH : là hàm kết thúc chương trình hiện tại và trả điều khiển về cho chương trình gọi nó. Cú pháp : MOV AH,4CH INT 21H - Hàm 9 : Là hàm hiển thị ra màn hình một chuỗi kí tự Cú pháp : MOV AX,@DATA MOV DS,AX ;khoi tao đoạn ghi DX MOV AH,9 LEA DX,’chuoi ki tu’ INT 21H 3 - Các nhóm lệnh của 8086 3.1- Nhóm lệnh dịch chuyển dữ liệu - Lệnh MOV: chuyển dữ liệu từ toán hạng nguồn vào toán hạng đích MOV dich, nguon - Lệnh OUT: xuất dữ liệu từ đoạn chứa ra cổng OUT cong,đoạn_chua - Lệnh IN: đọc dữ liệu từ cổng vào đoạn ghi. IN đoạnghi, cong - Lệnh XCHG: toán hạng đích và nguồn được đổi lẫn cho nhau XHCG đich, nguồn - Lệnh XLAT: XLAT nhan_nguồn - Lệnh ADD, SUB: ADD dich,nguon; cong nguon vao dich SUB dich,nguon ; tru dich cho nguon -Lệnh ADC: cờ nhớ được cộng vào toán hạng đích và nguồn ADC dich,nguon 17 Lệnh DIV: thực hiện phép chia không dấu, toán hạng nguồn có thể là một ô nhớ hay đoạn ghi. Nếu toán hạng nguồn là 8 bit thì thương số nằm trong AL, số dư nằm trong AH; nếu toán hạng nguồn là 16 bit, thì thương số nằm trong AX còn số dư nằm trong DX DIV nguon; -Lệnh IDIV (integer divide): thực hiện phép chia có dấu. IDIV nguon; -Lệnh MUL(Multiply): thực hiện phép nhân không dấu. Nhân nội dung của đoạn AL với toán hạng nguồn. Nếu nguồn kiểu byte thì tích chứa trong AX, nếu nguồn là kiểu từ thi tích chứa trong DX:AX MUL nguon; Lệnh IMUL: thực hiện phép nhân có dấu. IMUL nguon; - Lệnh NEG (NEGate): toán hạng đích bị trừ đi từ số toàn chữ số 1 (0FFH với kiểu byte và 0FFFFH với kiểu từ). NEG dich; - Lệnh SBB (SuBtract with Borrow): Trừ có nhớ. Trừ toán hạng đích cho toán hạng nguồn và nếu CF=1 thì trừ kết quả nhận được cho 1. SBB dich, nguon; 3.2- Lệnh nhảy có điều kiện: + Lệnh JNZ: nếu KQ của lệnh trước đó khác 0 thi thực hiện lệnh nhảy đến nhãn_đích, ngược lại thì thực hiện lệnh kế tiếp sau đó. JNZ nhan_dich; + Lệnh JA, JG: nhảy nếu lớn hơn + Lệnh JB, JL : nhảy nếu nhỏ hơn. + Lệnh JNA, JNG: nhảy nếu không lớn hơn. + Lệnh JE: nhảy nếu bằng. + Lệnh JC : nhảy nếu cờ CF=1. Đây là một số lệnh nhảy cở bản, còn có rất nhiều lệnh nhảy có điều kiện khác như : JNC, JNZ, JBE, JP, JS,……… 3.3 Lệnh nhảy không điều kiện Lệnh JMP (JuMP) : nhảy đến nhãn_nguồn khi gặp lệnh này. JMP nhan_nguon ; Lệnh CMP (CoMPare) : so sánh 2 toán hạng bằng cách trừ 2 toán hạng cho nhau mà không lưu lại két quả. CMP dich, nguon ; 18 Lệnh lặp : lặp lại nhãn_nguồn khi gặp lệnh này. LOOP nhan_nguon ; 3.4. Nhóm lệnh xử lý bit : + Các lệnh AND, OR, XOR và TEST AND dich,nguon ;AND dich voi nguon, ket qua luu o dich OR dich,nguon ;OR dich voi nguon, ket qua luu o dich XOR dich,nguon ;XOR dich voi nguon, ket qua luu o dich TEST dich,nguon;AND dich voi nguon,ket qua khong luu lai; +Lệnh dịch: SHL/SAL dich,1 ;dich sang trai 1 bit SHL/SAL dich,CL ; dich sang trai nhieu bit SHR dich,1 ; dich sang phai 1 bit SHR dich,CLL ; dich sang phai nhieu bit +Lệnh quay: ROL/ROR dich,1 ; quay sang trai/phai 1 bit ROL/ROR dich,CL ;quay sang trai/phai nhieu ;bit khong qua co nho CF RCL/RCR dich,1 ; quay sang trai/phai 1 bit RCL/RCR dich,CL ;quay sang trai/phai nhieu ;bit qua co nho CF 3.5 Nhóm lệnh xử lý điều khiển: + Lệnh HLT (HaLT): đưa bộ vi xử lý vào trạng thai dừng để chờ ngắt ngoài. Dạng lệnh: HLT + Lệnh LOCK: khóa bus tong môi trường có nhiều bộ vi xử lý. + Lệnh NOP: không thực hiện một thao tác nào. + Lệnh STI: IF được thiết lập 1. + Lệnh WAIT: Bộ vi xử lý ở trạng thái chờ cho đến khi ngắt ngoài 4 - Ngăn xếp và thủ tục: Lệnh PUSH: cất dữ liệu vào ngăn xếp, giảm SP đi 2. PUSH nguon; Lệnh PUSHF: chuyển đoạn ghi cờ vào ngăn xếp. PUSHF; Lệnh POP: lấy dữ liệu ra khỏi ngăn xếp và đưa vào toán hạng đích. POP dich; 19 Lệnh POPF: chuyển nội dung của 2 byte từ đinh ngăn xếp vào đoạn ghi cờ, sau đó tăng con trỏ ngăn xếp lên 2. POPF; Lệnh CALL: gọi thủ tục. CALL name; PHẦN V: MỘT SỐ BÀI TẬP I. - BÀI TẬP 1 Đề bài: Viết chương trình thực hiện phép toán AX = 7!, sau đó hiển thị kết quả dưới dạng số nhị phân và số thập phân 1. Sơ đồ thuật toán 2. Code chương trình .model small .stack 100h .data tb1 db "ket qua dang nhi phan:7!= $" tb2 db 10,13,"ket qua dang thap phan: 7!= $" .code main proc mov ax, data mov ds, ax ;; mov ax,1 mov cx,7 20 giaithua: mul cx loop giaithua mov bx,ax nhiphan: mov ah,9 lea dx,tb1 int 21h mov ah,2 mov cx,16 lap1: rol bx,1 jc ht1 mov dl,'0' int 21h loop lap1 jmp thapphan ht1: mov dl,'1' int 21h loop lap1 thapphan: mov ah,9 lea dx,tb2 int 21h mov ax,bx mov bx, 10 mov cx,0 lap2: cmp ax,0 je ht2 mov dx,0 div bx push dx inc cx jmp lap2 ht2: mov ah,2 ht3: pop dx add dl,30h int 21h 21 loop ht3 thoat: mov ah,4ch int 21h main endp end main II. BÀI TẬP 2 ĐỀ BÀI: Xây dựng bộ nhớ dung lượng 64KB từ các vi mạch nhớ RAM(1Kx4), 3 vi mạch nhớ R0M(4Kx8) 1 vi mạch nhớ R0M(16Kx8) và 1 vi mạch nhớ R0M(32Kx8), địa chỉ đầu của vi mạch thứ nhất là 00000H. 1. Phân tích đề bài và vẽ mạch ghép nối - - Từ yêu cầu của để bài ta cần ghép nối bộ nhớ 64Kx8 với các vi mạch nhớ như sau: + 1 vi mạch nhó ROM 32Kx8 + 1 vi mạch nhớ ROM 16Kx8 + 3 vi mạch nhớ ROM 4Kx8 + 4 vi mạch nhớ 1Kx8 – được ghép nối từ 8 vi mạch nhớ 1Kx4 Từ đó ta có bảng giải mã địa chỉ cho các vi mạch nhớ như sau: Vi mạch nhớ ROM1 32Kx8 ROM2 16Kx8 ROM3 4Kx8 ROM4 4Kx8 ROM5 4Kx8 RAM1 1Kx8 RAM2 1Kx8 RAM3 1Kx8 RAM4 1Kx8 - AAAA AAAA 11 1 1 98 7 6 1 1 1 1 5 4 3 2 AAAA 1 1 9 8 1 0 AAAA 7 6 5 4 AAAA 3 2 1 0 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0111 1000 1011 1100 1100 1101 1101 1110 1110 1111 1111 1111 1111 1111 1111 1111 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 0011 0100 0111 1000 1011 1100 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 Địa chỉ 00000 07FFF 08000 0BFF 0C000 0CFFF 0D000 0DFFF 0E000 0EFFF 0F000 0F3FF 0F400 0F7FF 0F800 0FB00 0FC00 0FFFF Qua bảng giải mã địa chỉ của từng vi mạch nhớ ta nhận thấy, trong giải địa chỉ của toàn bộ nhớ từ 00000H đến 0FFFFH 22 - Ta nhận thấy, các bit từ A16 đến A19 đều có mức logic không đổi, vi vậy ta sẽ lợi dụng các bit này để đưa vào mạch điều khiển bộ nhớ hoạt động. Mặt khác, 3 bít A14, A13 và A12 có 8 mức logic khác nhau biến đổi tuần tự theo quy luật số đếm, 5 vi mạch nhớ đầu tiên có các giá trị của 3 bit này khác nhau từ 000 đến 110. Riêng 4 vi mạch nhớ RAM cuối cùng đều có chung 1 giá trị là 1111, đặc biệt 4 vi mạch này lại có 2 bit A10 và A11 biến đổi theo thứ tự tăng dần tương ứng 4 giá trị 00, 01, 10, 11 với 4 vi mạch nhớ này. Lợi dụng những đặc điểm này, ta có mạch ghép nối bộ nhớ như sau: D0 D1 D2 D3 ROM(4KX8) A0 8 A1 7 A2 6 A3 5 A4 4 A5 3 A6 2 A7 1 A8 23 A9 22 A10 19 A11 21 ROM(32KX8) A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 RD 10 9 8 7 6 5 4 3 25 24 21 23 2 26 27 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 ROM1 20 22 1 D0 D1 D2 D3 D4 D5 D6 D7 11 12 13 15 16 17 18 19 D0 D1 D2 D3 D4 D5 D6 D7 ROM3 RD ROM4 ROM(16KX8) RD A0 5 A1 6 A2 7 A3 4 A4 3 A5 2 A6 1 A7 17 A8 16 A9 15 RAM1 WR 8 10 CE OE/VPP A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 D0 D1 D2 D3 A0 5 A1 6 A2 7 A3 4 A4 3 A5 2 A6 1 A7 17 A8 16 A9 15 14 13 12 11 RAM1 CE WE WR 8 10 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 D0 D1 D2 D3 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 D0 D1 D2 D3 D4 D5 D6 D7 RD 11 12 13 15 16 17 18 19 D0 D1 D2 D3 D4 D5 D6 D7 18 20 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 CE WE 2114 U4 RAM2 ROM3(4KX8) CE OE PGM VPP RD ROM5 18 20 27128 WR 8 10 D0 D1 D2 D3 D4 D5 D6 D7 9 10 11 13 14 15 16 17 D0 D1 D2 D3 D4 D5 D6 D7 A0 5 A1 6 A2 7 A3 4 A4 3 A5 2 A6 1 A7 17 A8 16 A9 15 U3 A0 5 A1 6 A2 7 A3 4 A4 3 A5 2 A6 1 A7 17 A8 16 A9 15 CE OE/VPP A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 D4 D5 D6 D7 D0 D1 D2 D3 D0 D1 D2 D3 D4 D5 D6 D7 9 10 11 13 14 15 16 17 D0 D1 D2 D3 D4 D5 D6 D7 2732 A0 8 A1 7 A2 6 A3 5 A4 4 A5 3 A6 2 A7 1 A8 23 A9 22 A10 19 A11 21 14 13 12 11 2114 ROM2(4KX8) 27256 20 22 27 1 U1 D0 D1 D2 D3 D4 D5 D6 D7 9 10 11 13 14 15 16 17 D0 D1 D2 D3 D4 D5 D6 D7 2732 A0 8 A1 7 A2 6 A3 5 A4 4 A5 3 A6 2 A7 1 A8 23 A9 22 A10 19 A11 21 CE OE VPP A0 10 A1 9 A2 8 A3 7 A4 6 A5 5 A6 4 A7 3 A8 25 A9 24 A10 21 A11 23 A12 2 A14 26 18 20 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 U2 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 D0 D1 D2 D3 14 13 12 11 RAM2 WR 8 10 CE WE A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 D0 D1 D2 D3 14 13 12 11 D4 D5 D6 D7 CE WE 2114 2114 D0 D1 D2 D3 U6 U5 A0 5 A1 6 A2 7 A3 4 A4 3 A5 2 A6 1 A7 17 A8 16 A9 15 CE OE/VPP 2732 U1 RAM3 WR 8 10 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 D0 D1 D2 D3 A0 5 A1 6 A2 7 A3 4 A4 3 A5 2 A6 1 A7 17 A8 16 A9 15 14 13 12 11 RAM3 CE WE WR 8 10 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 D0 D1 D2 D3 14 13 12 11 D4 D5 D6 D7 CE WE 2114 2114 D0 D1 D2 D3 AND_4 U3 1 2 3 A12 A13 A14 A B C 6 4 5 M/IO E U5 E1 E2 E3 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 15 14 13 12 11 10 9 7 A10 A11 2 3 A B 1 74LS138 E Y0 Y1 Y2 Y3 4 5 6 7 A0 5 A1 6 A2 7 A3 4 A4 3 A5 2 A6 1 A7 17 A8 16 A9 15 RAM1 RAM2 RAM3 RAM4 74LS139 NOT U19 A16 A17 E A15 U4 RAM4 ROM1 A15 OR E A18 A19 U8 U7 U2:A ROM3 ROM4 ROM5 WR 8 10 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 CE WE D0 D1 D2 D3 A0 5 A1 6 A2 7 A3 4 A4 3 A5 2 A6 1 A7 17 A8 16 A9 15 14 13 12 11 RAM4 WR 8 10 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 D0 D1 D2 D3 14 13 12 11 D4 D5 D6 D7 CE WE 2114 2114 OR_4 1. Nguyên lý hoạt động. Đối với các vi mạch nhớ ROM, Nếu các bit từ A12 đến A19 nhận các giá trị: + 0000 0000 đến 0000 0111: chọn vi mạch nhớ ROM1 đầu tiên + 0000 1000 đến 0000 1011: chọn vi mạch nhớ ROM2 + 0000 1100: chọn vi mạch nhớ ROM3 + 0000 1101: chọn vi mạch nhớ ROM4 + 0000 1110: chọn vi mạch nhớ ROM5 23 - Đối với các vi mạch nhớ RAM, nếu các bit từ A9,A10 đến A19 có giá trị: + 0000 1111 00: chọn vi mạch nhớ RAM1 + 0000 1111 01: chọn vi mạch nhớ RAM2 + 0000 1111 10: chọn vi mạch nhớ RAM3 + 0000 1111 11: chọn vi mạch nhớ RAM4 - Như vậy với mỗi giá trị nằm trong giải địa chỉ của từng vi mạch nhớ nào thì vi mạch nhớ đó sẽ được chọn. ngược lại, nếu các địa chỉ mà vi xử lý truy suất tới không nằm trong không gian địa chỉ của bộ nhớ thì tất cả các vi mạch đều không được chọn. III. BÀI TẬP 3 Đề bài: Thiết kế mạch điều khiển đóng ngắt cho 3 thiết bị ghép với các cổng của 8255, địa chỉ của cổng PA, PB, PC, thanh ghi điều khiển lần lượt là 80h, 82h, 84h, 86h. 1. Phân tích đề bài và cách chọn cách ghép nối. Theo giả thiết, chúng ta sẽ ghép nối 8086 và 8255 với địa chỉ cổng cổng PA, PB, PC, thanh ghi điều khiển lần lượt là 80h, 82h, 84h, 86h. chúng ta phải chọn ra 2 bit của 8086 để làm 2 bit chọn cổng cho 8255. Mặt khác, 2 bít để chọn cổng cho 8255 phải tuân theo quy tắc biến đổi của 2 bit A1 và A0 của 8255. Bảng giải mã địa chỉ cho các cổng của IC 8255A: Cổng A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Địa chỉ PA PB 0000 0000 0000 0000 1000 1000 0000 0010 80h 82h PC 0000 0000 1000 0100 84h ĐK 0000 0000 1000 0110 86h -Từ bảng giải mã địa chỉ của các cổng của 8255, chúng ta sẽ chọn ra 2 bit để đưa vào 2 chân A1 và A0 của 8255 để mã hóa cho các cổng. Từ quy tắc mã hóa cho cổng PA, PB, PC và thanh ghi điều khiển, ta nhận thấy 2 bit A2 và A1 cũng có quy tắc biến đổi tương tự với A1 và A0 của 8255. Vì vậy chúng ta sẽ đưa 2 bit A2, A1 vào 2 đầu vào tương ứng A1, A0 để mã hóa cho các cổng của 8255. - Nhận thấy các bit A0 và A3 đến A15 đều có một mức logic cố định, vì vậy chúng ta sẽ đưa các chân này qua cổng OR với đầu ra đưa vào chân CS của Chip 8255 để chọn chip, nếu 1 trong các bit này thay đổi mức logic, nghĩa là địa chỉ này bị lệch thì chip 8255 sẽ không được chọn. 24 - Để điều khiển đóng ngắt cho 3 thiết bị, chúng ta sẽ dùng nút bấm để điều khiển. Do dòng điện và điện áp mà mỗi chân Vi xử lý tạo ra rất nhỏ so với công suật mà thiết bị tiêu thụ, vì vậy chúng ta sẽ sử dụng các transistor để làm khóa điện tử đóng ngắt các thiết bị này. 2. mạch ghép nối R4 220 thiêt bi 1 U1 21 22 24 18 31 30 23 17 33 19 U4 AD[0..7] RESET AD[0..15] READY A[16..19] INTA/QS1 INTR ALE/QS0 HOLD/GT1 BHE HLDA/GT0 DT/R/S1 TEST DEN/S2 NMI RD MN/MX WR/LOCK CLK M/IO/S0 AD[0..15] U2 25 CK 34 27 26 32 RD 29 WR 28 M/IO AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 8086 LOAD_SEG=0x0800 3 4 7 8 13 14 17 18 11 1 U5 CK AD8 AD9 AD10 AD11 AD12 AD13 AD14 AD15 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 2 A0 5 A1 6 A2 9 A3 12 A4 15 A5 16 A6 19 A7 CLK MR U3 74LS273 3 4 7 8 13 14 17 18 11 1 NOT D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 2 5 6 9 12 15 16 19 A8 A9 A10 A11 A12 A13 A14 A15 U7 A0 A3 A4 NOT A6 A5 A8 A9 U6 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 34 33 32 31 30 29 28 27 RD 5 WR 36 A1 9 A2 8 35 6 A10 A11 A12 A13 A14 A15 M/IO D0 D1 D2 D3 D4 D5 D6 D7 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 RD WR A0 A1 RESET PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 CS PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 OR_16 CLK MR 74LS273 8255A 4 3 2 1 40 39 38 37 18 19 20 21 22 23 24 25 14 15 16 17 13 12 11 10 R5 R6 220 220 thiet bi 2 D1 D2 D3 thiet bi 3 R9 10k Q1 Q2 Q3 NPN NPN NPN R8 10k R7 100 R1 10k R2 R3 10k 10k 3. Sơ đồ thuật toán Với nội dung mà đề bài đưa ra, chúng ta sẽ lập trình theo sơ đồ thuật toán sau: Bắt đầu Lấy g.trị PC vào AL Bật thiết bị 1 Đ AL=70h ? S Bật thiết bị 2 Đ AL = B0h? 25 S Bật thiết bị 3 Đ AL = D0h? 4. Code chương trình data segment pa equ 80h pb equ 82h pc equ 84h creg equ 86h ends stack segment dw 128 dup(0) ends code segment start: mov ax, data mov ds, ax mov es, ax mov al, 88h out creg,al chonthietbi: in al,pc cmp al,70h je thietbi1 cmp al,0B0h je thietbi2 cmp al,0D0h je thietbi3 mov al,0h out pa,al out pb,al out pc,al jmp chonthietbi thietbi1: mov al,01h out pa,al jmp chonthietbi thietbi2: 26 S Tắt hết các thiết bị mov al,01h out pb,al jmp chonthietbi thietbi3: mov al,01h out pc,al jmp chonthietbi ends end start PHẦN VI: KẾT LUẬN Nhìn chung, bộ vi xử lý 8086 là một bước tiến lớn của hãng sản xuất Intel trong nền lập trình vi xử lý, là bước mở đầu cho sự phát triển các thế hệ vi xử lý tiếp theo cùng với những tính năng mạnh mẽ, kết nối với các thiết bị ngoại dễ dàng cùng với tập lệnh hỗ trợ ngày càng lớn. Với những gì chúng em đã thực hiện và mô phỏng bằng phần mêm chuyên dụng, chúng ta thấy được những gì mà bộ vi xử lý có thể làm được và những gì mà bộ vi xử lý 8086 vẫn chưa thể giải quyết được như: mạch kết nối cồng kềnh, chi phí lắp đặt cao, tốc độ xử lý còn thấp. Với những gì mà nhóm em được tiếp thu và học tập, nhóm em đã hoàn thành bài tập lớn thành công. Tuy nhiên trong quá trình trình bày không thiếu những sai sót, mong các thầy cô bỏ qua và đóng góp cho chúng em những ý kiến hữu ích để mỗi chúng em được hoàn thiện bản thân hơn, cũng như thành công hơn trong các bài tập lớn tiếp theo. Được vậy, cũng nhờ sự chỉ dạy nhiệt tình của cô Hằng cũng như các thầy cô trong khoa điện tử. chúng em xin chân thành cảm ơn cô Hằng và các thầy cô trong khoa nói riêng, cũng như nhà trường nói chung. Trong bài báo cáo có tham khảo tài liệu của các nhóm khác, và trang web hỗ trợ thông tin cấu trúc của mỗi linh kiện www.alldatasheet.com 27 This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.Tìm kiếm
Chủ đề
Atlat Địa lí Việt Nam Bài tiểu luận mẫu Mẫu sơ yếu lý lịch Đề thi mẫu TOEIC Đơn xin việc Tài chính hành vi Giải phẫu sinh lý Đồ án tốt nghiệp Trắc nghiệm Sinh 12 Hóa học 11 Lý thuyết Dow Thực hành Excel adblock Bạn đang sử dụng trình chặn quảng cáo?Nếu không có thu nhập từ quảng cáo, chúng tôi không thể tiếp tục tài trợ cho việc tạo nội dung cho bạn.
Tôi hiểu và đã tắt chặn quảng cáo cho trang web nàyTừ khóa » Bài Tập Về Vi Xử Lý 8086
-
Top 30 Bài Tập Vi Xử Lý 8086 Có Lời Giải - ViecLamVui
-
Bài Tập Vi Xử Lý 8086 Có Lời Giải
-
Bài Tập Vi Xử Lý 8086 Có Lời Giải - 123doc
-
Bài Tập Vi Xử Lý Có đáp án Số 2 - Tài Liệu Text - 123doc
-
Bài Tập Vi Xử Lý 8086 Có Lời Giải, (Pdf) Vi Xử Lý 8051 ...
-
[PDF] BÀI TẬP MÔN HỌC KỸ THUẬT VI XỬ LÝ VÀ ỨNG DỤNG
-
Bài Tập Lớn: Vi Xử Lý Và Cấu Trúc Máy Tính - TaiLieu.VN
-
Bài Tập Vi Xử Lý 8086 Có Lời Giải
-
[PDF] Chương 2 – Bộ Vi Xử Lý Intel 8086/8088
-
[PDF] CHƯƠNG II: HỌ VI XỬ LÝ INTEL 80x86
-
TẬP LỆNH VI XỬ LÝ 8086/8088 PDF - Thư Viện Miễn Phí
-
[PDF] KIẾN TRÚC MÁY TÍNH - Topica
-
Tài Liệu Bài Tập Môn Học Kỹ Thuật Vi Xử Lý
-
Vi Xử Lý Và Cấu Trúc Máy Tính Vi Xử Lý 8086 | Xemtailieu