Đồ án i đề tài thiết kế chương trình chọn và tính tiền hàng hóa tự động sử dụng hệ vi xử lý 8086

Đồ án i: Thiết kế chương trình chọn và tính tiền hàng hóa tự động với vi xử lý 8086. Tài liệu tham khảo hữu ích cho sinh viên ngành điện tử, tự động hóa.

Chuyên ngành

Điện - Điện tử

Người đăng

Ẩn danh

Thể loại

Đồ án I

20

70
3
0

Phí lưu trữ

30 Point

Tóm tắt

I. Tổng quan đồ án 8086 Thiết kế hệ thống tính tiền tự động

Đồ án này tập trung vào việc ứng dụng kiến thức về hệ vi xử lý 8086 để xây dựng một chương trình chọn và tính tiền hàng hóa tự động. Đây là một bài toán thực tiễn, mô phỏng hoạt động của các máy bán hàng tự động hoặc các quầy thanh toán tự phục vụ. Mặc dù kiến trúc Intel 8086 đã cũ so với các vi xử lý hiện đại, việc thực hiện đề tài này mang lại giá trị học thuật cao, giúp người học nắm vững nguyên lý hoạt động của vi xử lý, kỹ thuật lập trình cấp thấp và phương pháp giao tiếp với thiết bị ngoại vi. Mục tiêu chính của đồ án không chỉ dừng lại ở việc tạo ra một sản phẩm hoạt động, mà còn là quá trình nghiên cứu và áp dụng lý thuyết vào thực tế. Quá trình này bao gồm việc lập trình Assembly 8086, thiết kế mạch nguyên lý, và thực hiện mô phỏng để kiểm chứng. Đề tài sử dụng các công cụ phổ biến trong ngành như phần mềm Emu8086 để lập trình và gỡ lỗi code, cùng với mô phỏng Proteus 8086 để xây dựng và kiểm tra mạch điện tử hoàn chỉnh. Việc lựa chọn vi xử lý 8086 làm trung tâm xử lý đặt ra nhiều thách thức nhưng cũng là cơ hội để hiểu sâu hơn về cách một hệ thống nhúng cơ bản được xây dựng từ phần cứng đến phần mềm. Thông qua việc hoàn thành báo cáo đồ án 8086 này, người thực hiện sẽ củng cố kiến thức về tập lệnh 8086, cách quản lý bộ nhớ, và các kỹ thuật phối ghép I/O quan trọng.

1.1. Mục tiêu cốt lõi của đồ án vi điều khiển 8086

Mục tiêu chính của đề tài là xây dựng thành công một chương trình mô phỏng hệ thống chọn và tính tiền hàng hóa. Chương trình này phải có khả năng hiển thị danh mục sản phẩm, cho phép người dùng lựa chọn, tính tổng số tiền và xuất hóa đơn. Để đạt được điều này, các mục tiêu cụ thể được đặt ra. Thứ nhất, xây dựng chương trình logic bằng ngôn ngữ Assembly trên phần mềm Emu8086 - Microprocessor Emulator. Giai đoạn này tập trung hoàn toàn vào thuật toán và xử lý dữ liệu. Thứ hai, tiến hành mô phỏng Proteus 8086 với các linh kiện phần cứng thực tế. Mục tiêu này yêu cầu thiết kế một sơ đồ khối vi xử lý 8086 hoàn chỉnh, bao gồm vi xử lý trung tâm, các IC giải mã địa chỉ như 74273, IC giao tiếp vào/ra 8255A, màn hình LCD và bàn phím ma trận. Việc này giúp kiểm tra tính khả thi của thiết kế phần cứng hệ VXL và sự tương tác giữa phần mềm và phần cứng.

1.2. Giới thiệu kiến trúc và sơ đồ khối vi xử lý 8086

Vi xử lý 8086 là một CPU 16-bit của Intel, hoạt động với 20 đường địa chỉ và 16 đường dữ liệu, cho phép quản lý 1MB bộ nhớ. Cấu trúc bên trong 8086 được chia thành hai khối chính hoạt động song song: Khối Giao tiếp Bus (BIU - Bus Interface Unit) và Khối Thực thi Lệnh (EU - Execution Unit). BIU chịu trách nhiệm tìm nạp lệnh, đọc/ghi dữ liệu từ bộ nhớ hoặc cổng I/O. EU có nhiệm vụ giải mã và thực thi các lệnh đã được BIU nạp sẵn vào hàng đợi. Theo tài liệu nghiên cứu, sơ đồ khối của bộ vi xử lý 8086 cho thấy sự phân chia rõ ràng này, giúp tăng hiệu suất xử lý thông qua cơ chế đường ống (pipelining). EU chứa các thanh ghi đa năng (AX, BX, CX, DX), các thanh ghi con trỏ và chỉ số, cùng với bộ số học và logic (ALU). Sự hiểu biết về kiến trúc Intel 8086 và chức năng của từng khối là nền tảng để xây dựng và gỡ lỗi cho đồ án vi điều khiển này.

II. Phân tích thách thức khi thiết kế máy bán hàng tự động 8086

Việc sử dụng vi xử lý 8086 cho một ứng dụng hiện đại như máy tính tiền tự động mang đến nhiều thách thức đặc thù. Khác biệt lớn nhất nằm ở tài nguyên hệ thống hạn chế và sự phức tạp trong lập trình cấp thấp. Các vi xử lý ngày nay như Core i3, i5 có sức mạnh tính toán vượt trội, bộ nhớ khổng lồ và hệ điều hành hỗ trợ. Ngược lại, 8086 đòi hỏi lập trình viên phải quản lý trực tiếp từng byte bộ nhớ, tối ưu hóa mã lệnh và tự xây dựng các trình điều khiển cho thiết bị ngoại vi. Thách thức đầu tiên là lập trình Assembly 8086, một ngôn ngữ gần với mã máy, đòi hỏi sự tỉ mỉ và hiểu biết sâu về tập lệnh 8086. Việc xử lý chuỗi ký tự, các phép toán số học phức tạp và quản lý giao diện người dùng đều phải được viết từ đầu. Một thách thức khác là thiết kế phần cứng hệ VXL. Việc giao tiếp với các thiết bị như LCD hay bàn phím không có sẵn thư viện hỗ trợ. Lập trình viên phải hiểu rõ nguyên lý hoạt động của các IC phụ trợ như 8255A để cấu hình các cổng vào/ra, cũng như các IC giải mã địa chỉ để phân vùng không gian I/O. Việc quản lý sản phẩm VXL 8086 cũng phức tạp hơn do không có hệ thống file, mọi dữ liệu về sản phẩm và giá cả phải được lưu trữ dưới dạng các biến hoặc hằng số trong mã chương trình.

2.1. Hạn chế của tập lệnh 8086 trong xử lý giao dịch

Bộ tập lệnh 8086 được thiết kế cho các tác vụ tính toán cơ bản, không được tối ưu cho các nghiệp vụ phức tạp như quản lý giao dịch hay xử lý giao diện đồ họa. Các lệnh số học như ADD, SUB, MUL, DIV chỉ hoạt động trên các số 16-bit. Khi cần tính toán với các số lớn hơn (ví dụ: tổng tiền vượt quá 65535), lập trình viên phải tự xây dựng các thủ tục xử lý số lớn, làm tăng độ phức tạp của code máy tính tiền assembly. Hơn nữa, việc xử lý chuỗi ký tự để hiển thị trên màn hình LCD cũng khá cồng kềnh, đòi hỏi phải sử dụng kết hợp các lệnh lặp (LOOP) và lệnh di chuyển dữ liệu (MOV) một cách khéo léo. So với các ngôn ngữ lập trình hiện đại, việc thiếu các cấu trúc dữ liệu phức tạp và hàm dựng sẵn là một rào cản lớn, buộc mọi logic phải được xây dựng từ những viên gạch cơ bản nhất.

2.2. Khó khăn trong việc giao tiếp LCD và bàn phím ma trận

Giao tiếp với thiết bị ngoại vi là một trong những phần phức tạp nhất của đồ án vi điều khiển. Đối với giao tiếp LCD với 8086, cần phải gửi một chuỗi các lệnh khởi tạo đúng trình tự để màn hình hoạt động. Sau đó, mỗi khi cần ghi dữ liệu hay lệnh, phải tuân thủ nghiêm ngặt quy trình: đặt dữ liệu lên bus, chọn đúng thanh ghi (lệnh hay dữ liệu) qua chân RS, và tạo một xung cho phép trên chân E. Tương tự, giao tiếp bàn phím ma trận yêu cầu thực hiện quét cột và đọc hàng liên tục để phát hiện phím nhấn. Toàn bộ quá trình này phải được điều khiển thông qua IC 8255A, bằng cách ghi các giá trị điều khiển vào các cổng của nó. Việc gỡ lỗi phần cứng và phần mềm trong giai đoạn này rất tốn thời gian, vì một sai sót nhỏ trong việc cấu hình cổng hoặc thời gian chờ cũng có thể khiến toàn bộ hệ thống không hoạt động.

III. Giải pháp phần cứng cho đồ án 8086 Sơ đồ khối và linh kiện

Để hiện thực hóa chương trình tính tiền, một hệ thống phần cứng hoàn chỉnh đã được thiết kế và mô phỏng. Trái tim của hệ thống là vi xử lý 8086, chịu trách nhiệm thực thi toàn bộ logic của chương trình. Xung quanh nó là các vi mạch phụ trợ đóng vai trò quan trọng trong việc kết nối và điều khiển các thiết bị ngoại vi. Sơ đồ khối vi xử lý 8086 của hệ thống được xây dựng dựa trên nguyên tắc module hóa, bao gồm: khối xử lý trung tâm, khối giải mã địa chỉ, khối giao tiếp vào/ra, khối hiển thị và khối nhập liệu. Khối giải mã địa chỉ sử dụng các IC 74273 để tách các đường địa chỉ/dữ liệu đa hợp của 8086, cung cấp các tín hiệu địa chỉ ổn định cho bộ nhớ và các cổng I/O. Đây là bước nền tảng cho việc thiết kế phần cứng hệ VXL. Khối giao tiếp vào/ra sử dụng IC 8255A, một vi mạch giao tiếp ngoại vi lập trình được, đóng vai trò trung gian giữa 8086 và các thiết bị bên ngoài. Khối hiển thị là màn hình LCD 20x4, và khối nhập liệu là một bàn phím ma trận. Sự lựa chọn các linh kiện này không chỉ phổ biến trong các kit thực hành 8086 mà còn giúp giảm độ phức tạp của mạch điện, tập trung vào giải quyết bài toán logic.

3.1. Vai trò của IC 74273 trong việc tách bus địa chỉ dữ liệu

Vi xử lý 8086 sử dụng kỹ thuật đa hợp (multiplexing) để tiết kiệm số chân, trong đó các đường AD0-AD15 vừa mang tín hiệu địa chỉ, vừa mang tín hiệu dữ liệu. Để hệ thống hoạt động ổn định, cần phải tách hai loại tín hiệu này. IC 74273, một chốt D-type 8-bit, được sử dụng cho mục đích này. Theo thiết kế trong tài liệu gốc, ba IC 74273 được sử dụng để chốt lại 20 bit địa chỉ từ bus đa hợp khi tín hiệu ALE (Address Latch Enable) của 8086 ở mức cao. Khi ALE chuyển xuống mức thấp, các đường AD0-AD15 sẽ được giải phóng để truyền dữ liệu. Việc sử dụng IC 74273 đảm bảo rằng các thiết bị ngoại vi và bộ nhớ luôn nhận được một địa chỉ ổn định trong suốt chu kỳ bus, là điều kiện tiên quyết cho một hệ thống nhúng hoạt động chính xác.

3.2. Sử dụng IC 8255A để phối ghép vào ra lập trình được

IC 8255A là cầu nối không thể thiếu giữa 8086 và các thiết bị ngoại vi. Nó cung cấp 24 chân I/O có thể lập trình được, chia thành ba cổng 8-bit: Port A, Port B và Port C. Trong đồ án này, 8255A được cấu hình ở Chế độ 0 (Basic I/O). Cụ thể, Port A được cấu hình làm cổng ra để gửi dữ liệu 8-bit tới màn hình LCD. Port B được dùng làm cổng ra để gửi các tín hiệu điều khiển (RS, R/W, E) đến LCD. Port C được cấu hình làm cổng vào để đọc trạng thái từ bàn phím ma trận. Việc lựa chọn địa chỉ cho các cổng của 8255A và thanh ghi điều khiển (CWR) được thực hiện thông qua mạch giải mã địa chỉ. Tài liệu đề án chỉ rõ việc cấu hình 8255A bằng cách gửi một từ điều khiển đến địa chỉ E7H, ví dụ MOV AL, 10001001B để đặt Port A, B là output và Port C là input.

IV. Phương pháp lập trình Assembly 8086 cho máy tính tiền tự động

Phần mềm là linh hồn của hệ thống, được xây dựng hoàn toàn bằng lập trình Assembly 8086. Chương trình được cấu trúc một cách logic, bao gồm các module chính: khởi tạo hệ thống, hiển thị menu, nhận lựa chọn từ người dùng, xử lý tính toán, và hiển thị hóa đơn. Lưu đồ giải thuật chương trình được thiết kế cẩn thận để đảm bảo luồng hoạt động chính xác và dễ dàng gỡ lỗi. Khi khởi động, chương trình sẽ gửi các lệnh cần thiết để khởi tạo màn hình LCD. Sau đó, một menu chính được hiển thị, cho phép người dùng chọn các danh mục sản phẩm. Dựa trên lựa chọn của người dùng, các menu con tương ứng sẽ xuất hiện. Chương trình sử dụng một vòng lặp chính để liên tục quét bàn phím, chờ đợi người dùng nhập liệu. Khi một sản phẩm được chọn, giá của nó sẽ được cộng dồn vào một thanh ghi tổng. Ngôn ngữ Assembly yêu cầu quản lý thủ công các thanh ghi, ngăn xếp và bộ nhớ. Các hàm ngắt 21h của DOS được sử dụng rộng rãi trong giai đoạn mô phỏng trên Emu8086 để nhập/xuất ký tự, nhưng khi chuyển sang mô phỏng phần cứng trên Proteus, các hàm này được thay thế bằng các thủ tục giao tiếp trực tiếp với IC 8255A.

4.1. Phân tích lưu đồ giải thuật và cấu trúc chương trình

Cấu trúc chương trình được chia thành các thủ tục (PROC) rõ ràng, mỗi thủ tục thực hiện một chức năng cụ thể như LCD_INIT (khởi tạo LCD), KEY_SCAN (quét bàn phím), DISPLAY_MENU (hiển thị menu), CALCULATE_TOTAL (tính tổng tiền). Lưu đồ giải thuật chương trình bắt đầu bằng khối khởi tạo, sau đó đi vào vòng lặp chính. Trong vòng lặp, chương trình hiển thị menu, gọi thủ tục quét phím. Nếu có phím được nhấn, chương trình sẽ so sánh mã phím để xác định hành động tiếp theo: chuyển đến menu con, chọn một món hàng, hoặc tiến hành thanh toán. Các biến được sử dụng để lưu số lượng từng mặt hàng và tổng số tiền. Cách tiếp cận module hóa này giúp code máy tính tiền assembly trở nên dễ đọc, dễ bảo trì và mở rộng hơn.

4.2. Khai thác tập lệnh 8086 và các hàm ngắt quan trọng

Chương trình tận dụng hiệu quả tập lệnh 8086. Lệnh MOV được dùng để di chuyển dữ liệu giữa các thanh ghi và bộ nhớ. Các lệnh số học ADDINC được dùng để cộng giá tiền và tăng số lượng sản phẩm. Các lệnh so sánh CMP kết hợp với các lệnh nhảy có điều kiện như JE (nhảy nếu bằng), JNE (nhảy nếu không bằng), JA (nhảy nếu lớn hơn) tạo thành xương sống của logic lựa chọn và điều khiển luồng chương trình. Trong phiên bản mô phỏng trên Emu8086, các hàm ngắt 21h đóng vai trò then chốt: MOV AH, 9 để hiển thị chuỗi, MOV AH, 1 để đọc một ký tự từ bàn phím. Những hàm này giúp đơn giản hóa việc lập trình trong môi trường giả lập, cho phép tập trung vào logic nghiệp vụ trước khi chuyển sang giai đoạn tích hợp phần cứng phức tạp hơn.

V. Bí quyết mô phỏng đồ án 8086 trên Emu8086 và Proteus hiệu quả

Quá trình kiểm chứng hoạt động của hệ thống được thực hiện qua hai giai đoạn mô phỏng chính. Giai đoạn đầu tiên là mô phỏng vi xử lý 8086 trên phần mềm Emu8086. Giai đoạn này cho phép kiểm tra logic của chương trình một cách độc lập, không bị ảnh hưởng bởi các vấn đề phần cứng. Lập trình viên có thể dễ dàng theo dõi giá trị của các thanh ghi, các ô nhớ và thực thi chương trình từng bước để phát hiện lỗi thuật toán. Emu8086 cung cấp một môi trường giả lập DOS, giúp việc sử dụng các hàm ngắt để hiển thị thông tin ra màn hình console và nhận dữ liệu từ bàn phím trở nên đơn giản. Đây là bước đệm quan trọng để đảm bảo code máy tính tiền assembly hoạt động đúng như mong đợi về mặt logic. Sau khi chương trình đã chạy ổn định trên Emu8086, giai đoạn hai bắt đầu với mô phỏng Proteus 8086. Đây là bước kiểm tra toàn diện, tích hợp cả phần cứng và phần mềm. Trong Proteus, toàn bộ mạch điện tử được vẽ lại, bao gồm 8086, các IC giải mã, 8255A, LCD và bàn phím. Mã chương trình (thường là file .hex) được nạp vào vi xử lý 8086 để chạy mô phỏng. Giai đoạn này giúp phát hiện các lỗi liên quan đến giao tiếp phần cứng, chẳng hạn như sai địa chỉ cổng, cấu hình sai IC 8255A, hoặc lỗi timing trong giao tiếp LCD.

5.1. Chạy thử nghiệm và gỡ lỗi chương trình trên Emu8086

Trong tài liệu gốc, phần "Hoàn thiện ý tưởng" bắt đầu bằng việc xây dựng chương trình trên Emu8086. Kết quả cho thấy chương trình có thể hiển thị menu, cho phép người dùng lựa chọn nhiều loại hàng hóa, tính tổng tiền và in ra hóa đơn chi tiết. Các ảnh chụp màn hình kết quả chạy thử nghiệm là minh chứng rõ ràng cho việc logic chương trình đã hoạt động chính xác. Ví dụ, người dùng có thể chọn nhiều món trong cùng một danh mục hoặc các danh mục khác nhau, và hệ thống vẫn tính đúng tổng tiền. Việc gỡ lỗi trong Emu8086 cho phép kiểm tra các biến đếm số lượng sản phẩm (cf1, tm1,...) và các biến tổng tiền (a, b,...) sau mỗi lựa chọn, đảm bảo các phép toán cộng dồn được thực hiện đúng.

5.2. Kết quả mô phỏng hệ thống thanh toán trên Proteus

Phần mô phỏng trên Proteus là bài kiểm tra cuối cùng về tính khả thi của thiết kế phần cứng hệ VXL. Sơ đồ mạch nguyên lý trong Proteus cho thấy sự kết nối chi tiết giữa các linh kiện. Sau khi nạp chương trình đã được điều chỉnh để giao tiếp với 8255A, hệ thống mô phỏng hoạt động như một thiết bị thực. Màn hình LCD hiển thị menu chào mừng và các lựa chọn. Người dùng có thể nhấn các nút trên bàn phím ma trận để điều hướng và chọn sản phẩm. Kết quả mô phỏng thành công trên Proteus khẳng định rằng thiết kế mạch và logic điều khiển ngoại vi là chính xác. Nó chứng minh rằng đồ án vi điều khiển này không chỉ là một chương trình lý thuyết mà hoàn toàn có thể được hiện thực hóa trên một kit thực hành 8086 với các linh kiện thực tế.

VI. Kết luận đồ án vi điều khiển 8086 và tiềm năng ứng dụng

Đề tài "Thiết kế chương trình chọn và tính tiền hàng hóa tự động sử dụng hệ vi xử lý 8086" đã hoàn thành xuất sắc các mục tiêu đề ra. Hệ thống đã được xây dựng và kiểm chứng thành công qua hai giai đoạn mô phỏng trên Emu8086 và Proteus. Kết quả cho thấy, mặc dù có những hạn chế về tài nguyên và hiệu năng, vi xử lý 8086 vẫn đủ khả năng để xử lý các bài toán điều khiển và giao tiếp cơ bản, làm nền tảng cho nhiều hệ thống nhúng đơn giản. Việc hoàn thành báo cáo đồ án 8086 này không chỉ là một bài tập kỹ thuật mà còn là một quá trình học tập và nghiên cứu sâu sắc. Nó giúp củng cố kiến thức nền tảng về kiến trúc Intel 8086, kỹ năng lập trình Assembly 8086, và kinh nghiệm thực tiễn trong việc thiết kế, tích hợp và gỡ lỗi một hệ thống vi xử lý hoàn chỉnh. Những kiến thức này là vô giá và có thể áp dụng cho việc phát triển các hệ thống sử dụng các vi điều khiển hiện đại hơn trong tương lai. Đồ án đã chứng minh được khả năng ứng dụng lý thuyết vào giải quyết một vấn đề thực tế, từ việc phân tích yêu cầu, thiết kế giải pháp, đến triển khai và kiểm thử.

6.1. Đánh giá kết quả đạt được và những hạn chế của đề tài

Kết quả lớn nhất là đã xây dựng được một chương trình tính tiền tự động hoàn chỉnh, hoạt động ổn định trong môi trường mô phỏng. Hệ thống đáp ứng được các yêu cầu cơ bản: hiển thị menu, nhận lựa chọn, tính tổng và xuất hóa đơn. Tuy nhiên, đề tài vẫn còn một số hạn chế. Giao diện người dùng còn đơn giản và dựa trên văn bản. Hệ thống chưa có các tính năng nâng cao như quản lý tồn kho, thanh toán không dùng tiền mặt, hay kết nối mạng. Cơ sở dữ liệu sản phẩm và giá cả được lưu trữ cứng trong code, gây khó khăn khi cần cập nhật. Tốc độ xử lý của 8086 cũng là một giới hạn nếu hệ thống cần mở rộng với nhiều sản phẩm và tính năng phức tạp hơn.

6.2. Hướng phát triển trong tương lai cho hệ thống thanh toán

Từ nền tảng của đồ án này, có nhiều hướng phát triển tiềm năng. Thứ nhất, có thể nâng cấp phần cứng bằng cách sử dụng các vi điều khiển hiện đại hơn như AVR, PIC hoặc ARM, cho phép xử lý nhanh hơn và tích hợp nhiều tính năng hơn. Thứ hai, có thể cải tiến giao diện người dùng bằng màn hình cảm ứng thay vì LCD và bàn phím cơ. Thứ ba, tích hợp thêm các module phần cứng khác như máy in nhiệt để in hóa đơn giấy, đầu đọc mã vạch để chọn sản phẩm nhanh hơn, hoặc module thanh toán điện tử. Về phần mềm, có thể phát triển một hệ thống quản lý sản phẩm VXL 8086 linh hoạt hơn bằng cách lưu dữ liệu sản phẩm trong bộ nhớ ngoài như EEPROM, cho phép dễ dàng cập nhật mà không cần biên dịch lại toàn bộ chương trình.

16/09/2025

Trích đoạn nội dung tài liệu

Đặt vấn đề Ngày nay, khi sự phát triển của khoa học và công nghệ ngày càng trở lên mạnh mẽ thì những chiếc máy bán hàng tự động hay những chiếc máy giúp người mua hàng có thể tự chọn hàng hóa và tính tiền, in ra hóa đơn một cách tự động đã không còn xa lạ với mọi người và trở lên rất phổ biến. Nhưng những chiếc máy này đều được sử dụng trên những hệ vi xử lý mạnh mẽ hơn rất nhiều hệ vi xử lý 8086 như Intel core i3, Intel core i5, Intel core i9,… Ngoài ra, còn rất nhiều hệ vi xử lý của các công ty sản xuất chip bán dẫn khác được sử dụng phổ biến như chip AMD, chip Qualcomm,… Và với những kiến thức đã được học về hệ vi xử lý 8086, bọn em xin được áp dụng vào đề tài “Thiết kế chương trình chọn và tính tiền hàng hóa tự động sử dụng hệ vi xử lý 8086”. Hướng thực hiện 2. Mục tiêu - Xây dựng 1 chương trình chọn và tính tiền hàng hóa tự động trên phần mềm EMU 8086 - Microprocessor Emulator - Mô phỏng chương trình trên phần mềm Proteus với: • Vi xử lý 8086: vi xử lý trung tâm.

• IC 74273 là IC số được tích hợp bởi 8 flip-flop loại D: dùng để tách các đường địa chỉ của vi xử lý 8086. • IC 8255A: mạch phối ghép vào/ra lập trình được gồm 24 chân I/O. • Màn hình: dùng để hiển thị menu sản phẩm ,hóa đơn. • Bàn phím: dùng để lựa chọn sản phẩm.

Sơ đồ khối - Từ những mục tiêu trên, nhóm em xây dựng được 1 sơ đồ khối hệ thống mô phỏng như sau: Màn hình Hệ vi xử lý IC 74273 IC 8255A 8086 Bàn phím 2 TIEU LUAN MOI download : skknchat@gmail. Hoạt động của hệ thống Dựa vào ngôn ngữ lập trình hợp ngữ assembly đã được học với những tập lệnh cho vi xử lý 8086, chúng em sẽ viết 1 chương trình cho vi xử lý 8086 thông qua IC 8255A để giao tiếp với màn hình và bàn phím. Màn hình sẽ đóng vai trò hiển thị và bàn phím sẽ nhận tương tác của người mua hàng. Khi khởi chạy, vi xử lý 8086 sẽ được tách các bit địa chỉ thông qua IC 74273 và tùy theo thiết lập cho trước, 8255A sẽ lấy 8 bit địa chỉ và dữ liệu để sử dụng đồng thời thiết lập tín hiệu địa chỉ cho 4 thanh ghi bên trong.

Khi đó, IC 8255A sẽ phối ghép với màn hình và bàn phím để hiển thị menu, tương tác và hiển thị kết quả hóa đơn. Hệ vi xử lý 8086 - Hệ vi xử lý 8086 thuộc họ Intel 80x86 với 16 bit dữ liệu và 20 bit địa chỉ. Sơ đồ khối của 8086 - Bên trong bộ vi xử lý 8086 bao gồm 2 khối chính: + Khối thực hiện lệnh (EU- Execution Unit) là nơi giải mã và thi hành các lệnh + Khối giao tiếp bus (BIU- Bus Interface Unit) có nhiệm vụ đảm bảo việc trao đổi thông tin giữa 8086 với các thiết bị ngoại vi. - Sau đây chúng ta sẽ tìm hiều cấu tạo bên trong của từng khối: Hình 1.

Sơ đồ khối của bộ vi xử lý 8086  Khối thực hiện lệnh (EU) Khối thực hiện lệnh (EU- Execution Unit) là nơi giả mã và thi hành các lệnh. EU bao gồm: 3 TIEU LUAN MOI download : skknchat@gmail.com - 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 đa năng: Có chứa 4 thanh ghi đa năng 16 bit, mỗi thanh ghi có thể chứa bất kì các loại dữ liệu, tuy nhiên một số công việc, các thanh ghi này lại có chức năng đặc biệt của riêng nó mà các thanh ghi khác không thực hiện được. + Thanh ghi AX: đây là thanh ghi chứa, kết quả của các thao tác thường được chứa ở đây.

Nếu kết quả là 8 bit thì thanh ghi AL sẽ được sử dụng + Thanh ghi BX: đây là thanh ghi cơ sở, thương được chứa địa chỉ cơ sở của một bảng khi sử dụng lệnh XLAT. + Thanh ghi CX: đây là thanh ghi đếm, nó thường được chứa số lần lặp lại trong trường hợp dùng lênh LÔP, còn CL thì thường được chứa số lần quay hay dịch bít của các thanh ghi. + Thanh ghi DX: đây là thanh ghi dữ liệu, nó thường được sử dụng cùng với thanh ghi AX để thực hiện các phép nhân hay chia của các số 16 bit. DX còn được sử dụng để chứa địa chỉ các cổng trong các lệnh vào/ra dữ liệu trực tiếp.

- Trong 8086 còn có 3 thanh ghi con trỏ (IP, BP, SP) và 2 thanh ghi chỉ số (SI, DI) 16 bit. Các thanh ghi này (trừ IP) đều có thể được dùng như các thanh ghi đa năng. Nhưng ứng dụng chính của mỗi thanh ghi là chúng được ngầm định như là thanh ghi lệch cho các đoạn tương ứng. + Bảng tóm tắt sự kết hợp ngầm định giữa thanh ghi đoạn và thanh ghi lệch: Thanh ghi đoạn Thanh ghi lệch Địa chỉ Địa chỉ lệnh sắp thực CS IP hiện Địa chỉ trong đoạn dữ DS BX, DI, SI liệu Địa chỉ trong đoạn ngăn SS SP hoặc BP xếp ES DI Địa chỉ chuỗi đích - Thanh ghi cờ F là một thanh ghi đặc biệt gọi là thanh ghi cờ hay thanh ghi trạng thái.

Mỗi bit của thanh 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. Thanh ghi cờ có 16 bit nhưng chỉ dùng hết 9 bit làm bit cờ. 4 TIEU LUAN MOI download : skknchat@gmail.8086 Ca ù c côøcuûa boävi xöûlyù8086 x x x x O D I T S Z x A x P x C X : Khoâ ng ñöôïc ñònh nghóa Hình 3.3 Sô ñoàthanh ghi côøcuû a boävi xöûlyù8086/88 - 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.

 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; - 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.  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 thông 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ớ. + Thanh ghi đoạn mã CS (Code Segment),. + Thanh ghi đoạn dữ liệu DS (Data Segment).

+ Thanh ghi đoạn dữ liệu phụ ES (Extra Segment). + Thanh ghi đoạn ngăn xếp SS (Stack Segment).8086 TIEU LUAN MOI download : skknchat@gmail.8086 - 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ý. Sơ đồ chân 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ế độ tong 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. - Các chân mang thông tin địa chỉ: Vi xử lý 8086 có 20 đường địa chỉ từ A0 đến A19 trong đó 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 thong 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 6 DO.8086 TIEU LUAN MOI download : skknchat@gmail.8086 thái từ S3 đến S6. Các bit 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 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.

+ DEN : [O] Data bus Enable. Kích hoạt các bộ đệm bus dữ liệu. + M / IO: 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. + DT / R : [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.

+ BHE: Dùng để báo răng đang truy cập năng cao hay băng thấp của bộ nhớ + RD : :[O] Read signal. Xung cho phép đọc.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ