Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 105 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
105
Dung lượng
1,72 MB
Nội dung
skkndownloadbychat@gmail.com TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM KHOA ĐIỆN – ĐIỆN TỬ ĐỒ ÁN I Đề tài: Thiết kế chương trình chọn tính tiền hàng hóa tự động sử dụng hệ vi xử lý 8086 Giảng viên hướng dẫn: Nhóm Sinh viên thực hiện: Mã sinh viên: HẢI PHÒNG 20 skkndownloadbychat@gmail.com MỤC LỤC MỤC LỤC A Ý TƯỞNG Đặt vấn đề 2 Hướng thực 2.1 Mục tiêu 2.2 Sơ đồ khối 2.3 Hoạt động hệ thống 3 Cơ sở lý thuyết 3.1 Hệ vi xử lý 8086 3.2 IC 8255A 10 3.3 IC giải mã 74273 13 3.4 LCD 20x4 13 B HOÀN THIỆN Ý TƯỞNG 15 Xây dựng chương trình chọn tính tiền hàng hóa tự động phần mềm EMU 8086 - Microprocessor Emulator 15 1.1 Lưu đồ thuật toán 15 1.2 Lập trình 15 1.3 Kết 40 Mơ chương trình phần mềm Proteus 42 2.1 Lưu đồ thuật toán 43 2.2 Xây dựng mạch nguyên lý 43 2.3 Lập trình 45 2.4 Kết 66 skkndownloadbychat@gmail.com A Ý TƯỞNG Đặt vấn đề Ngày nay, phát triển khoa học công nghệ ngày trở lên mạnh mẽ máy bán hàng tự động hay máy giúp người mua hàng tự chọn hàng hóa tính tiền, in hóa đơn cách tự động khơng cịn xa lạ với người trở lên phổ biến Nhưng máy sử dụng hệ vi xử lý mạnh mẽ nhiều hệ vi xử lý 8086 Intel core i3, Intel core i5, Intel core i9,… Ngoài ra, cịn nhiều hệ vi xử lý cơng ty sản xuất chip bán dẫn khác sử dụng phổ biến chip AMD, chip Qualcomm,… Và với kiến thức học hệ vi xử lý 8086, bọn em xin áp dụng vào đề tài “Thiết kế chương trình chọn tính tiền hàng hóa tự động sử dụng hệ vi xử lý 8086” Hướng thực 2.1 Mục tiêu - Xây dựng chương trình chọn tính tiền hàng hóa tự động phần mềm EMU 8086 - Microprocessor Emulator - Mô chương trình phần mềm Proteus với: • Vi xử lý 8086: vi xử lý trung tâm • IC 74273 IC số tích hợp flip-flop loại D: dùng để tách đường địa vi xử lý 8086 • IC 8255A: mạch phối ghép vào/ra lập trình 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 2.2 Sơ đồ khối - Từ mục tiêu trên, nhóm em xây dựng sơ đồ khối hệ thống mô sau: skkndownloadbychat@gmail.com 2.3 Hoạt động hệ thống Dựa vào ngơn ngữ lập trình hợp ngữ assembly học với tập lệnh cho vi xử lý 8086, chúng em viết chương trình cho vi xử lý 8086 thông qua IC 8255A để giao tiếp với hình bàn phím Màn hình đóng vai trị hiển thị bàn phím nhận tương tác người mua hàng Khi khởi chạy, vi xử lý 8086 tách bit địa thông qua IC 74273 tùy theo thiết lập cho trước, 8255A lấy bit địa liệu để sử dụng đồng thời thiết lập tín hiệu địa cho ghi bên Khi đó, IC 8255A phối ghép với hình bàn phím để hiển thị menu, tương tác hiển thị kết hóa đơn Cơ sở lý thuyết 3.1 Hệ vi xử lý 8086 - Hệ vi xử lý 8086 thuộc họ Intel 80x86 với 16 bit liệu 20 bit địa 3.1.1 Sơ đồ khối 8086 - Bên vi xử lý 8086 bao gồm khối chính: + Khối thực lệnh (EU- Execution Unit) nơi giải mã thi hành 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 8086 với thiết bị ngoại vi - Sau tìm hiều cấu tạo bên khối: Hình Sơ đồ khối vi xử lý 8086 ❖Khối thực lệnh (EU) Khối thực lệnh (EU- Execution Unit) nơi giả mã thi hành lệnh EU bao gồm: skkndownloadbychat@gmail.com - Bộ xử lý số học logic(ALU - Arithmatic Logiccal Unit) nơi thưc lệnh số học lệnh logic - Các ghi đa năng: Có chứa ghi đa 16 bit, ghi chứa loại liệu, nhiên số công việc, ghi lại có chức đặc biệt riêng mà ghi khác không thực + Thanh ghi AX: ghi chứa, kết thao tác thường chứa Nếu kết bit ghi AL sử dụng + Thanh ghi BX: ghi sở, thương chứa địa sở bảng sử dụng lệnh XLAT + Thanh ghi CX: ghi đếm, thường chứa số lần lặp lại trường hợp dùng lênh LƠP, cịn CL thường chứa số lần quay hay dịch bít ghi + Thanh ghi DX: ghi liệu, thường sử dụng với ghi AX để thực phép nhân hay chia số 16 bit DX sử dụng để chứa địa cổng lệnh vào/ra liệu trực tiếp - Trong 8086 cịn có ghi trỏ (IP, BP, SP) ghi số (SI, DI) 16 bit Các ghi (trừ IP) dùng ghi đa Nhưng ứng dụng ghi chúng ngầm định ghi lệch cho đoạn tương ứng + Bảng tóm tắt kết hợp ngầm định ghi đoạn ghi lệch: Thanh ghi đoạn Thanh ghi lệch Địa CS IP DS BX, DI, SI Địa đoạn liệu SS SP BP Địa đoạn ngăn xếp ES DI Địa lệnh thực Địa chuỗi đích - Thanh ghi cờ F ghi đặc biệt gọi ghi cờ hay ghi trạng thái Mỗi bit ghi dùng để phản ánh trạng thái định kết phép toán ALU thực trạng thái hoạt động CPU Thanh ghi cờ có 16 bit dùng hết bit làm bit cờ skkndownloadbychat@gmail.com Ca ùc cờcủa bộvi xửlý8086 x x x x O D I T S Z x A x P x C X : Không định nghóa - Các bit cờ chia thành hai loại: + Các cờ trạng thái: có cờ trạng thái C, P, A, Z, S O Các cờ trạng thái thiết lập xóa sau hầu hết lệnh toán học 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ó cờ T, I, D Các cờ thiết lập xóa thông qua lệnh để điều khiển chế độ làm việc 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 tín hiệu điều khiển phận bên bên 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 8086 với linh kiện bên BIU gồm : - Một cộng để tạo địa vật lý 20 bit từ ghi 16 bit - Bốn ghi đoạn 16 bit gồm CS, DS, SS ES để giúp 8086 truy cập tới đoạn nhớ + Thanh ghi đoạn mã CS (Code Segment), + Thanh ghi đoạn liệu DS (Data Segment) + Thanh ghi đoạn liệu phụ ES (Extra Segment) + Thanh ghi đoạn ngăn xếp SS (Stack Segment) skkndownloadbychat@gmail.com - Mạch logic điều khiển có nhiệm vụ đảm bảo giao tiếp 8086 với thiết bị bên ngồi - Hàng đợi lệnh có độ dài byte nơi chứa mã lệnh đọc nằm sẵn để chờ EU xử lý 3.1.2 Sơ đồ chân 8086 Vi xử lý 8086 thiết kế để hoạt động 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 điện áp chân số 33 mức 5V chế độ tong hệ thống có 8086 vi mạch nhớ , vi mạch ghép nối vào - Chế độ tối đa (chế độ MAX) thiết lập điện áp chân số 33 mức 0V, chế độ áp dụng cho hệ thống đa xử lý, đồng xử lý (8086 đồ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 từ A0 đến A19 16 đường dây địa thấp từ A0 đến A15 ghép kênh liệu từ D0 đến D15 chân từ AD0 đến AD15 ; đường dây địa cao từ A16 đến A19 ghép kênh với tín hiệu trạng thái từ S3 đến S6 chân A16/S3 đến A19/S6 - Các chân mang thơng tin liệu: Vi xử ly 8086 có 16 đường dây liệu từ Do đến D15 ghép kênh với 16 đường địa thấp từ D0 đến D15 Khi hoạt động chu kỳ bus liệu đường dây mang thong tin liệu, liệu đọc hay vào nhớ - Các chân tín hiệu trang thái + Bốn đường dây địa cao từ A16 đến A19 8086 ghép kênh, trường hợp ghép kênh với tín hiệu trạng skkndownloadbychat@gmail.com thái từ S3 đến S6 Các bit trang thái đưa thời điểm với liệu truyền chân AD0 đến AD15 + READY: Tín hiệu báo cho CPU biết tình trạng sẵn sàng thiết bị ngoại vi hay nhớ Khi READY = CPU thực đọc/ghi liệu mà chèn thêm chu kỳ đợi Khi thiết bị ngoại vi hay nhớ cótốc độ chậm, chúng đưa tin hiệu READY = để báo cho CPU biết mà chờ chúng Lúc CPU tự kéo dài thời gian thực đọc/ghi cách chèn thêm 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 Khi ALE = có nghĩa chân ghép kênh AD có địa thiết bị vào/ra ônhớ Khi CPU chấp nhận treo chân không trạng thái trở kháng cao mà ALE = + DEN : [O] Data bus Enable Kích hoạt đệm bus liệu + M / IO: Chọn nhớ (= 0) thiếtbị vào/ra (= 1) làm việc với CPU Khi bus địa có địa chỉtương ứng thiết bị Chân trạng thái trở kháng cao CPU chấp nhận treo + DT / R: [O] Data Transmit/Receive Tín hiệu cho biết bus liệu vận chuyển liệu vào CPU hay khỏi CPU Tín hiệu dùng để điều khiển đệm chiều bus liệu + BHE: Dùng để báo truy cập cao hay băng thấp nhớ + RD: :[O] Read signal Xung cho phép đọc Khi RD = bus liệu nhận liệu từ nhớ thiết bị ngoại vi Chân trạng thái trở kháng caokhi 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 Khi có yêu cầu ngắt (INTR = 1) mà cờ cho phép ngắt IF = CPU kết thúc lệnh làm dở, sau vào chu kỳ chấp nhận ngắt đưa bên ngồi tín hiệu INTA = + TEST : [I] Tín hiệu chân kiểm tra lệnh WAIT Khi CPU thực lệnh WAIT mà lúc tín hiệu TEST = chờ tín hiệu TEST = thực lệnh + NMI: [I] None-Maskable Interrupt Tín hiệu u cầu ngắt khơng che Tín hiệu không bị khống chế cờ IF CPU nhận biết tác động sườn lên xung yêu cầu ngắt Nhận yêu cầu ngắt (NMI = 1) CPU kết thúc lệnh đạng làm dở,sau chuyển sang thực chương trình phục vụ ngắt kiểu INT2 skkndownloadbychat@gmail.com + RESET: Dùng để thiết lập lại phần cứng cho CPU Chuyển RESET xuống mức logic dùng để khởi tạo ghi nội vi xử lý khởi tạo chương trình 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 8086 gồm hai tín hiệu HOLD HLDA Khi thiết bị muốn giành quyền điều khiển bus hệ thống thực truy cập nhớ trực tiếp , báo yêu cầu cho CPU cách chuyển HOLD lên mức logic 1.Sau CPU chuyển sang trạng thái cô lập sau chu kỳ bus thực xong Khi trạng thái lập , đường dây tín hiệu AD0- AD15, A16/S3- A19/S6, BHE/S7, , , , INTR 3.1.3 Các hàm ngắt tập lệnh 8086 - Một số lệnh 8086 + Lệnh ADD/SUB: cộng/trừ toán hạng (ADD Đích, Gốc) + Lệnh DIV: thực phép chia khơng dấu, tốn hạng nguồn nhớ hay đoạn ghi Nếu toán hạng nguồn bit thương số nằm AL, số dư nằm AH; tốn hạng nguồn 16 bit, thương số nằm AX số dư nằm DX (DIV Gốc) + Lệnh INT : dùng để gọi hàm DOS BIOS (VD: int 21h) + Lệnh MOV: chuyển liệu từ toán hạng nguồn vào tốn hạng đích (MOV đích, gốc) + Lệnh OUT: xuất liệu từ đoạn chứa cổng (OUT cổng,thanh ghi) + Lệnh IN: đọc liệu từ cổng vào đoạn ghi (IN ghi, cổng) + Lệnh MUL(Multiply): thực phép nhân không dấu Nhân nội dung đoạn AL với tốn hạng nguồn Nếu nguồn kiểu byte tích chứa AX, nguồn kiểu từ tích chứa DX:AX (MUL nguồn) + Lệnh JNZ: KQ lệnh trước khác thi thực lệnh nhảy đến nhãn_đích, ngược lại thực lệnh sau (JNZ nhãn_đích) + Lệnh JA, JG: nhảy lớn + Lệnh JB, JL : nhảy nhỏ + Lệnh JNA, JNG: nhảy không lớn + Lệnh JE: nhảy + Lệnh JC : nhảy cờ CF=1 + Lệnh JMP: nhảy không điều kiện nhảy đến nhãn_nguồn gặp lệnh (JMP nhan_nguon) + Lệnh CMP (CoMPare) : so sánh toán hạng cách trừ toán hạng cho mà khơng lưu lại kết (CMP đích, gốc) + Lệnh lặp : lặp lại nhãn_nguồn gặp lệnh Số lần lặp định ghi CX (LOOP nhan_nguon) + Các lệnh AND, OR, XOR TEST: ● AND dich,nguon ;AND đích với nguồn, kết lưu đích skkndownloadbychat@gmail.com ● OR dich,nguon ;OR đích với nguồn, kết lưu đích ● XOR dich,nguon ;XOR đích với nguồn, kết lưu đích ● TEST dich,nguon ;AND đích với nguồn, kết khơng lưu lại + Lệnh dịch: ● SHL/SAL dich,1 ;dịch sang trái bit ● SHL/SAL dich,CL ; dịch sang trái nhiều bit ● SHR dich,1 ; dịch sang phải bit ● SHR dich,CLL ; dịch sang phải nhiều bit + Lệnh quay: ● ROL/ROR dich,1 ; quay đích sang trái/phải bit ● ROL/ROR dich,CL ; quay đích sang trái/phải n bit, với CL=n ● RCL/RCR dich,1 ; quay đích sang trái/phải bit ● RCL/RCR dich,CL ; quay đích sang trái/phải n bit, với CL=n + Lệnh HLT (HaLT): đưa vi xử lý vào trạng thai dừng để chờ ngắt ngồi + Lệnh LOCK: khóa bus mơi trường có nhiều vi xử lý + Lệnh NOP: không thực thao tác + Lệnh PUSH: cất liệu vào ngăn xếp, giảm SP (PUSH nguon) + Lệnh POP: lấy liệu khỏi ngăn xếp đưa vào tốn hạng đích (POP dich) + Lệnh CALL: gọi thủ tục (CALL nhan) + Lệnh RET: trả lại điều khiển thủ tục thực xong - Các hàm ngắt 21h 8086: + Hàm 1: hàm chờ đọc vào ký tự từ thiết bị vào chuẩn(bàn phím) Kết lưu vào AL Cú pháp : MOV AH,1 INT 21H + Hàm : hàm hiển thị nội dung ghi DL lên hình thi hành chức điều khiển Cú pháp : MOV AH,2 MOV DL,’A’ INT 21H skkndownloadbychat@gmail.com PROC OUT_B ;input: AL skkndownloadbychat@gmail.com ;output: PORTB_VAL PUSH DX MOV DX,PORTB OUT DX,AL MOV PORTB_VAL,AL POP DX RET ENDP OUT_B ;Ban Phim 3x3 KEYPORT proc QUET_COT: mov al, 00000000b out PORTA, al in al,PORTC test al,00000001b je phim_1 test al,00000010b je phim_2 test al,00000100b je phim_3 test al,00001000b je phim_4 test al,00010000b je phim_5 test al,00100000b je phim_6 jmp QUET_COT phim_1: mov bl, 01H ;xor bh,bh ;PUSH bx RET phim_2: mov bl, 02H ;xor bh,bh ;PUSH bx RET ; phim_3: mov bl, 03H skkndownloadbychat@gmail.com ;xor bh,bh ;PUSH bx RET skkndownloadbychat@gmail.com phim_4: mov bl, 04H ;xor bh,bh ;PUSH bx RET ; phim_5: mov bl, 05H ;xor bh,bh ;PUSH bx RET phim_6: mov bl, 06H ;xor bh,bh ;PUSH bx RET KEYPORT endp ;tinh tien tong tinh_tien_tong proc CALL LCD_CLEAR MOV DL,1 MOV DH,1 CALL LCD_SET_CUR LEA SI,TB21 CALL LCD_PRINTSTR MOV CX,100 CALL DELAY ;jmp menu_da_chon menu_da_chon: cmp cf1,1 je menu_11 cmp cf2,1 je menu_12 cmp cf3,1 je menu_13 cmp tm1,1 je menu_21 skkndownloadbychat@gmail.com cmp tm2,1 je menu_22 cmp tm3,1 je menu_23 skkndownloadbychat@gmail.com cmp bs1,1 je menu_31 cmp bs2,1 je menu_32 cmp bs3,1 je menu_33 jmp cam_on ; menu_11: mov cf1,0 MOV DL,2 MOV DH,1 CALL LCD_SET_CUR LEA SI,TB22 CALL LCD_PRINTSTR MOV CX,100 CALL DELAY ;MOV DONG_MAY, jmp menu_da_chon menu_12: mov cf2,0 ;CMP DONG_MAY ,1 ;JE IN_12_DONG_4 MOV DL,2 MOV DH,1 CALL LCD_SET_CUR LEA SI,TB23 CALL LCD_PRINTSTR MOV CX,100 CALL DELAY ;MOV DONG_MAY, jmp menu_da_chon menu_13: mov cf3,0 ;CMP DONG_MAY ,1 ;JE IN_13_DONG_4 MOV DL,2 MOV DH,1 CALL LCD_SET_CUR LEA SI,TB24 CALL LCD_PRINTSTR MOV CX,100 CALL DELAY skkndownloadbychat@gmail.com ;MOV DONG_MAY, jmp menu_da_chon skkndownloadbychat@gmail.com ; menu_21: mov tm1,0 ;CMP DONG_MAY ,1 ;JE IN_12_DONG_4 MOV DL,3 MOV DH,1 CALL LCD_SET_CUR LEA SI,TB25 CALL LCD_PRINTSTR MOV CX,100 CALL DELAY ;MOV DONG_MAY, jmp menu_da_chon menu_22: mov tm2,0 ;CMP DONG_MAY ,1 ;JE IN_12_DONG_4 MOV DL,3 MOV DH,1 CALL LCD_SET_CUR LEA SI,TB26 CALL LCD_PRINTSTR MOV CX,100 CALL DELAY ;MOV DONG_MAY, jmp menu_da_chon menu_23: mov tm3,0 ;CMP DONG_MAY ,1 ;JE IN_12_DONG_4 MOV DL,3 MOV DH,1 CALL LCD_SET_CUR LEA SI,TB27 CALL LCD_PRINTSTR MOV CX,100 CALL DELAY ;MOV DONG_MAY, jmp menu_da_chon ; menu_31: skkndownloadbychat@gmail.com mov bs1,0 ;CMP DONG_MAY ,1 ;JE IN_12_DONG_4 MOV DL,4 skkndownloadbychat@gmail.com MOV DH,1 CALL LCD_SET_CUR LEA SI,TB28 CALL LCD_PRINTSTR MOV CX,100 CALL DELAY ;MOV DONG_MAY, jmp menu_da_chon menu_32: mov bs2,0 ;CMP DONG_MAY ,1 ;JE IN_12_DONG_4 MOV DL,4 MOV DH,1 CALL LCD_SET_CUR LEA SI,TB29 CALL LCD_PRINTSTR MOV CX,100 CALL DELAY ;MOV DONG_MAY, jmp menu_da_chon menu_33: mov bs3,0 ;CMP DONG_MAY ,1 ;JE IN_12_DONG_4 MOV DL,4 MOV DH,1 CALL LCD_SET_CUR LEA SI,TB30 CALL LCD_PRINTSTR MOV CX,100 CALL DELAY ;MOV DONG_MAY, jmp menu_da_chon ; cam_on: CALL KEYPORT MOV CX,50 CALL DELAY CMP BL,06H JE tra_ve jmp cam_on skkndownloadbychat@gmail.com tra_ve: RET skkndownloadbychat@gmail.com tinh_tien_tong endp CODE ENDS END START 2.4 Kết - Sau q trình viết, mơ kiểm tra, chương trình chúng em hoạt động tốt xác Tuy nhiên, giới hạn số dòng, số kí tự hiển thị LCD 20x4 nên chúng em khơng hiển thị nhiều hàng hóa in số lần lặp lại hàng hóa chương trình mơ EMU 8086 - Sau số hình ảnh mơ phỏng: skkndownloadbychat@gmail.com skkndownloadbychat@gmail.com skkndownloadbychat@gmail.com ... tb21 int 21 h mov ah, lea dx, tb 22 int 21 h mov ah, lea dx, tb23 int 21 h mov ah, lea dx, tb24 int 21 h mov ah, lea dx, tb25 int 21 h mov ah, lea dx, tb26 int 21 h nhap_chinh _2: mov ah, lea dx, tb27... tb27 int 21 h mov ah, int 21 h cmp al, 31h je nhap1 _2 cmp al, 32h je nhap2 _2 cmp al, 33h je nhap3 _2 cmp al, 34h je nhap4 _2 cmp al, 35h je nhap5 _2 cmp al, 36h je nhap6 _2 cmp al, 37h je nhap7 _2 jmp... nhap_sai _2 nhap1 _2: inc tm1 mov ax, 45 skkndownloadbychat@gmail.com jmp chung _2 skkndownloadbychat@gmail.com nhap2 _2: inc tm2 mov ax, 42 jmp chung _2 nhap3 _2: inc tm3 mov ax, 59 jmp chung _2 nhap4 _2: