1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Thiết kế, thi công và viết chương trình điều khiển mạch thực hành cho z80 CPU giao tiếp với máy tính qua ngõ máy in

135 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 135
Dung lượng 805,98 KB

Nội dung

TRƯỜNG ĐẠI HỌC KỸ THUẬT KHOA CÔNG NGHỆ THÔNG TIN  LUẬN VĂN TỐT NGHIỆP Đề tài: Thiết kế, thi cơng viết chương trình điều khiển mạch thực hành cho Z80 CPU Giao tiếp với máy tính qua ngõ máy in Giáo viên hướng dẫn: Thầy Nguyễn Xuân Minh Sinh viên thực : Hồng Lê Bình Lưu Đình Dũng Lớp : KSII_K6_T LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Thiết kế, thi công viết chương trình điều khiển mạch thực hành cho Z80 CPU với đặc điểm sau: - Giao tiếp với máy tính qua ngõ máy in - Giả lập ROM để nhận chương trình từ máy tính - Có khả chạy bước từ bên máy tính - Có khả thông báo trạng thái ghi bên máy tính - Có khả điều khiển số cổng xuất nhập đơn giản - Thi công mạch, thử mạch - Viết chương trình thử chạy theo chức     LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com MỤC LỤC Mở đầu trang  Chương I Phân tích yêu cầu 1.1 Phân tích yêu cầu trang 1.2 Phương hướng giải vấn đề trang  Chương II Thiết kế phần cứng  2.1 Phân tích chức cổng ghép nối với máy in trang  2.2 Kiến trúc Z80 CPU trang 10  2.3 Thiết kế chi tiết trang 48  2.4 Nguyên lý hoạt động trang 49  Chương III Giới thiệu phần soạn thảo văn 3.1 Các thành phần main menu trang 55 3.2 Hướng dẫn sử dụng hình soạn thảo trang 55  Chương IV Giải thuật trang 57  Chương V Chương trình nguồn 5.1 Chương trình đưa data RAM chung, Debug, Dump, Run trang 71 5.2 Chương trình viết ngơn ngữ Assembler Z80 dùng đọc trạng thái ghi trang 109 5.3 Chương trình viết ngôn ngữ Assembler Z80 dùng dump memory trang 111 5.4 Chương trình tạo tiện ích soạn thảo văn vàhỗ trợ chế độ chạy debug Z80 trang 111 5.5 Các chương trình ví dụ trang 133  Phụ lục A: Các thông báo lỗi trang 142  Phụ lục B: Vi mạch 8255 trang 143  Tài liệu tham khảo trang 145    LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Lời nói đầu Sự phát triển lên vượt bậc ngành kỹ thuật máy tính điện tử minh chứng cụ thể qua sống ngày tất lĩnh vực Việc ứng dụng máy vi tính vào kỹ thuật đo lường điều khiển đem lại kết đầy tính ưu việt Các thiết bị, hệ thống đo lường điều khiển ghép nối với máy tính có độ xác cao, thời gian thu thập số liệu ngắn, đáng quan tâm mức độ tự động hoá việc thu nhận xử lý liệu Kỹ thuật số đời khắc phục khuyết điểm kỹ thuật tương tự, làm cho phận máy móc trở nên đơn giản, gọn nhẹ, tốn lượng xử lý thơng tin nhanh, xác so với kỹ thuật tương tự Tuy vậy, sử dụng điều khiển dùng IC số chúng mắc số khuyết điểm mà so với kỹ thuật vi xử lý tồn như: - Kích thước lớn - Năng lượng tiêu thụ lớn - Tính mềm dẽo thấp, khó thay đổi - Khó sửa chữa, bảo trì Vi xử lý vi mạch điện tử có mật độ tích hợp cao, gồm mạch số có khả nhận, xử lý xuất liệu Đặc biệt trình xử lý liệu điều khiển theo chương trình gồm tập hợp lệnh từ bên mà người sử dụng thay đổi cách dễ dàng Một vi xử lý thực nhiều yêu cầu điều khiển khác Kỹ thuật vi xử lý đời với kết hợp phần cứng phần mềm làm cho hoạt động mạch điện trở nên mềm dẽo với phần mềm linh hoạt mà ta sửa chữa, thay đổi bổ sung làm cho chương trình điều khiển thêm phong phú tùy theo nhu cầu người sử dụng Kỹ thuật vi xử lý có tính phức tạp hoạt động, thiết kế lại kinh tế giá thành hạ kích thước chiếm chỗ khơng nhiều, có dung lượng cao Ngồi mặt kỹ thuật hẳn kỹ thuật số trình hoạt động mềm dẽo, tốc độ xử lý cao lại mở rộng tính hoạt động sau cho mạch điện Đây ưu điểm thuận lợi mà kỹ thuật vi xử lý mang lại Chúng em xin chân thành cảm ơn Thầy Nguyễn Xn Minh tận tình hướng dẫn để hồn thành luận văn Chúng xin chân thành cảm ơn bạn bè đóng góp ý kiến dẫn thực đề tài Vì trình độ có hạn làđề tài thực cách có hệ thống chắn khơng thể tránh khỏi nhiều thiếu sót    LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Chương I Phân tích yêu cầu 1.1 Phân tích yêu cầu 1.1.1 Đặc điểm cổng ghép nối với máy in Việc nối máy in với máy tính thực qua ổ cắm 25 chân phiá sau máy tính Nhưng khơng chỗ nối với máy in mà sử dụng máy tính vào mục đích đo lường điều khiển việc ghép nối thực qua ổ cắm Qua cổng liệu truyền song song nên đơi cịn gọi cổng ghép nối song song tốc độ truyền liệu đạt đến mức lớn đáng kể Tất đường dẫn cổng tương thích TTL, nghĩa chúng cung cấp mức điện áp nằm 0V 5V Do ta cần phải lưu ý đường dẫn lối vào cổng không đặt mức điện áp lớn 1.1.2 Đặc điểm chung Z80 CPU Z80 CPU vi xử lý bit hãng ZILOG thiết kế để làm việc cách độc lập, giao tiếp với xử lý khác thông qua thiết bị ngoại vi Đặc điểm chung: - Data bus: bits - Addr bus: 16 bits - Tập ghi phân thành loại: Tập ghi (8 bit) Tập ghi phụ (8 bit) Tập ghi chuyên dụng (16 bits) - Tập lệnh CPU Z80 chia làm nhiều nhóm khác theo nhiều cách Ở chia thành nhóm sau: Nhóm lệnh xử lý kiện Nhóm lệnh truyền kiện Nhóm lệnh kiểm sốt chương trình Nhóm lệnh kiểm sốt trạng thái Phần mơ tả chi tiết Z80 CPU nói kỹ chương II 1.2 Phương hướng giải vấn đề 1.2.1 Giao tiếp PC & KIT Z80 Để thực việc giao tiếp máy tính KIT Z80 dùng hai phương pháp sau: Phương pháp thứ nhất: Thực việc bắt tay máy tính KIT Z80 thao tác truyền liệu Muốn thực điều máy tính KIT Z80 trạng thái sẵn sàng hoạt động trước thực thao tác bắt tay để truyền liệu Như KIT Z80 có chương trình để thực thao tác này, việc ghép nối bus với việc phát tín hiệu bắt tay máy tính KIT Z80 chương trình bên KIT Z80 chương trình bên máy tính đảm LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com nhiệm Phương pháp có ưu điểm việc thu nhận data diễn đồng bộ, nhanh chóng xác lại phức tạp việc thực thao tác bắt tay Phương pháp thứ hai: Mọi thao tác truyền liệu máy tính chủ động, liệu truyền chứa RAM (được gọi RAM chung) RAM giả lập ROM để chạy chương trình từ máy tính Để đơn giản cho việc thiết kế (cả phần cứng phần mềm) phù hợp với nội dung yêu cầu đặt ra, người thiết kế lựa chọn phương pháp thứ hai để thực yêu cầu toán đặt 1.2.2 Dừng cho chạy Z80 CPU Sử dụng mức logic thích hợp đưa vào chân WAIT để tạm thời dừng hoạt động Z80 CPU, đặt Z80 CPU vào trạng thái chờ cho Z80 CPU hoạt động chế độ bình thường Khi chân WAIT mức logic '1', Z80 CPU hoạt động bình thư ờng Khi mức logic chân WAIT '0', Z80 CPU đặt vào trạng thái chờ Ở trạng thái liệu đường địa data giữ ổn định, đồng thời CPU liên tục đọc vào mức logic chân WAIT chân đạt trở lại mức logic '1' Sau thoát khỏi trạng thái WAIT Z80 CPU dành chu kỳ xung clock để làm tươi nhớ Ram động, sau thi hành bước lệnh thi hành lệnh kế Như đặt Z80 CPU vào trạng thái chờ ta đọc liệu data bus, address bus can thiệp vào hoạt động CPU cách đặt giá trị khác lên data bus thời gian CPU lấy mã lệnh truy xuất nhớ chương trình (lúc cần thiết phải cấm CS nhớ chương trình (ROM chương trình)) 1.2.3 Hướng mở rộng đề tài Do có ý đồ mở rộng đề tài theo hướng dùng KIT để sử dụng thiết bị mô dùng cho Z80 CPU nên phần thiết kế cố gắng tránh can thiệp nhiều vào Z80 CPU Để Z80 CPU chạy chế độ Debug cần lấy tín hiệu CSROM M1 để điều khiển trình Như vậy, dùng KIT để làm mô ( simulator) cho thiết kế khác có sử dụng Z80 CPU Sơ đồ khối sau : LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com PC Jack 25 pin KIT Z80 Simulator Adrres bus Data bus Rom chương trình Z80 CPU Các linh kiện khác Ctrl bus Addr bus : lấy trực tiếp từ adress bus KIT Data bus : lấy trực tiếp từ data bus KIT Ctrl bus gồm : Wait : nối vào chân số  74LS74 (U8A) Reset : nối vào chân số  74LS04 (U2E) Chú ý : Trong chế độ Debug cần phải có biện pháp can thiệp vào chân interrupt KIT Z80 bất kỳ, KIT chạy chế độ có dùng ngắt Tín hiệu INT 16 T.h cho phép/cấm Z80 CPU Cấm=’0’ : Khi chạy chế độ Debug(cấm ngắt)    LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Chương II Thiết kế phần cứng 2.1 Phân tích chức cổng ghép nối với máy in Sự xếp chân cổng máy in với tất đường dẫn mô tả Chân 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Ký hiệu STB D0 D1 D2 D3 D4 D5 D6 D7 ACK BUSY PE SLCT AF ERROR INIT SLCTIN GND GND GND GND GND GND GND GND Vào/Ra Output Output Output Output Output Output Output Output Output Input Input Input Input Output Input Output Output hình 2.1 Mơ tả Bit ghi điều khiển Đường liệu D0 Đường liệu D1 Đường liệu D2 Đường liệu D3 Đường liệu D4 Đường liệu D5 Đường liệu D6 Đường liệu D7 Bit ghi trạng thái Bit ghi trạng thái Bit ghi trạng thái Bit thang ghi trạng thái Bit ghi điều khiển Bit ghi trạng thái Bit ghi điều khiển Bit ghi điều khiển Hình 2.1 Bố trí chân cổng máy in máy tính PC Ta thấy bên cạnh bit liệu cịn có đường dẫn tín hiệu khác, tổng cộng người sử dụng trao đổi cách riêng biệt với 17 đường dẫn, bao gồm 12 đường dẫn đường dẫn vào Bởi đường dẫn liệu D0 - D7 đường dẫn chiều tất loại máy tính, nên ta sử dụng D0 - D7 lối Các lối khác STB, AF, INIT SLCTIN Các đường dẫn lối vào là: ERROR, SLCT, PE, ACK, BUSY Tất đường dẫn tín hiệu vừa giới thiệu cho phép trao đổi qua địa nhớ máy tính PC 17 đường dẫn cổng máy in xếp thành ghi: ghi data, ghi trạng thái, ghi điều khiển Hình 2.2 xếp đường dẫn tín hiệu tới bit liệu riêng biệt ghi LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Thanh ghi data (Địa bản) D7 D6 D5 D4 D3 D2 D1 D0 D0 (pin 2) D1 (pin 3) D2 (pin 4) D3 (pin 5) D4 (pin 6) D5 (pin 7) D6 (pin 8) D7 (pin 9) Thanh ghi trạng thái (Địa chỉ_cơ + 1) D7 D6 D5 D4 D3 0 ERROR (pin 15) SLCT (pin 13) PE (pin 12) ACK (pin 10) BUSY (pin 11) Thanh ghi điều khiển (Địa + 2) D7 D6 D5 D4 D3 D2 D1 D0 STB (pin 1) AF (pin 14) INIT (pin 16) SLCTIN (pin 17) IRQ-Enable Hình 2.2 Thanh ghi cổng máy in máy tính PC Địa đạt đến cổng máy in xem địa Ở máy tính PC địa cổng máy in xếp sau: LPT1 (Cổng máy in thứ nhất) => Địa = 378H Hoặc 3BCH máy Laptop LPT2 (Cổng máy in thứ hai) => Địa = 278H Địa đồng với ghi liệu Thanh ghi trạng thái có địa = địa + Cần ý mức logic BUSY (chân 11) xếp ngược với bit D7 ghi trạng thái Thanh ghi điều khiển với đường dẫn lối có địa = địa + Ở lại cần ý tới đảo ngược tín hiệu: STB, AF, SLCTIN 2.2 Kiến trúc Z80 CPU 2.2.1 Sơ đồ khối Z80 CPU Bus kiện bits Kiểm soát kiện Bus nội Giải mã & điều khiển Thanh ghi lệnh ALU LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tín điều hệ & hiệu khiển thống CPU Kiểm soát CPU Thanh ghi Kiểm soát địa Bus địa 16 bits Hình 1-1: Sơ đồ khối Z80 CPU Sơ đồ khối kiến trúc bên Z80 CPU cho hình 1-1 Sơ đồ trình bày tất phần tử CPU xem xét kỹ qua phần mô tả sau 2.2.2 Các ghi CPU Z80 CPU chứa nhớ R/W 208 bit Bộ nhớ truy xuất người lập trình Hình 1-2 cho thấy nhớ cấu tạo ghi bit ghi 16 bit Tất ghi Z80 CPU dùng RAM tĩnh Cac ghi bao gồm tập ghi đa dụng, tập ghi sử dụng độc lập ghi bit cặp ghi 16 bit Có hai tập ( phụ) ghi tích lũy, ghi cờ sáu ghi đặc biệt Tập ghi đặc biệt Program Counter (PC): giữ địa mười sáu bit lệnh lấy từ nhớ PC tự động tăng sau nội dung đặt lên bus địa Khi lệnh nhảy xảy ra, giá trị tự động đặt vào PC thay cho giá trị tăng Stack pointer (SP): giữ địa 16 bit đỉnh ngăn xếp hành nhớ RAM Bộ nhớ ngăn xếp bên tổ chức file vào sau trước (LIFO) Dữ liệu đẩy vào ngăn xếp từ ghi xác định CPU hay lấy khỏi ngăn xếp để đưa vào ghi xác định CPU qua việc thi hành lệnh Push Pop Dữ liệu lấy từ ngăn xếp luôn liệu đẩy vào ngăn xếp sau Ngăn xếp cho phép đơn giản hóa việc thi hành loại ngắt qng khơng giới hạn chương trình lồng đơn giản hóa nhiều kiểu thao tác liệu Hai ghi mục (IX IY): Hai ghi mục độc lập giữ địa 16 bit dùng chế độ định địa chỉ mục Trong chế độ này, ghi mục dùng vị trí đến vùng nhớ nơi mà liệu bắt đầu chứa hay khôi phục Byte thêm câu lệnh mục để xác định khoảng cách đến vị trí Khoảng cách xác định phép bù số nguyên có dấu Chế độ làm đơn giản nhiều cho chương trình Đặc biệt cho bảng liệu sử dụng Thanh ghi địa trang ngắt (I) Z80 CPU điều khiển chế độ mà lệnh gọi trực tiếp đến vùng nhớ thực cách đáp ứng ngắt Thanh ghi I dùng cho mục đích để chứa bit cao địa trực tiếp thiết bị ngắt 10 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com print_string(2,count_line+2,help_text,0x5F); count_line++; } fclose(fp); } else { set_cursor_style(0x20,0x20); set_attr_screen(23,11,33,3,0x4F); gotoxy(24,12); puts("Error”); gotoxy(24,13); puts(" Can not open file help.hlp!  "); if (getch()==0) getch(); } // phim=get_key(); while ( phim != K_ESC ) phim=get_key(); update_screen(); } ///////////////////////////////////////////////////////////////////// void Intro(void) { set_cursor_style(0x20,0x20); set_attr_screen(21,6,38,14,0x5F); set_attr_screen(36,18,8,1,MENU_ATTR); gotoxy(22,7); puts("Trouble shootting"); gotoxy(22,8); puts(" Ram 's fail: Replace  "); gotoxy(22,9); puts(" Power off: Power on  "); gotoxy(22,10); puts(" Jack 25 pin:  "); gotoxy(22,11); puts(" - Check jack 25 or connect to PC  "); gotoxy(22,12); puts(" File 's too long:  "); gotoxy(22,13); puts(" - File (*.bin) may be < 32Kb  "); gotoxy(22,14); puts(" Hard wave error:  "); gotoxy(22,15); puts(" - Check 74LS: 157,244,374,8255  "); gotoxy(22,16); puts(" Invalid breakpoint:  "); gotoxy(22,17); puts(" - Set breakpoint again  "); gotoxy(22,18); puts(" - Possible is incorrect  "); gotoxy(22,19); puts(" OK  "); if (getch()==0) getch(); } ///////////////////////////////////////////////////////////////////// void delToggle(void) { set_attr_screen(0, 1, 80, 23, TEXT_ATTR); arr_bp=0; sub_bp=0; } ///////////////////////////////////////////////////////////////////// unsigned func_func(unsigned key) { switch (key) 121 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com { case K_F1: About(); return (1); case K_F2: save(SAVE); return (1); case K_F3: open(); return (1); case K_F7: debug(K_F7); return (1); case K_F8: debug(K_F8); return (1); case K_CTRL_F8: toggle(); return (1); case K_CTRL_F9: run(); return (1); case K_ESC: return (1); default: return 0; } } //////////////////////////////////////////////////////////////////// void main(void) { unsigned key,pos; int number; init_program(); { set_attr_screen(0,0,80,1,MENU_ATTR); //Xu ly man hinh soan thao key = edit_text(); //return F10 if (key==K_ALT_X) break; //Alt + X = Exit if ( !(func_func(key) ) ) { key = main_menu(); if (key==K_ALT_X) break; if ( !(func_func(key) ) ) if (key==K_ENTER) //(1) { { if (selection1==0) //Select File menu { key = menu_file(); if (key==K_ALT_X) break; else if (key==K_RIGHT) selection1=1; else if (key==K_LEFT) selection1=3; conv_attr(0); } else if (selection1==1) { key = menu_run(); if (key==K_ALT_X) break; else if (key==K_LEFT) selection1=0; else if (key==K_RIGHT) selection1=2; conv_attr(1); } 122 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com else if (selection1==2) { key = menu_debug(); if (key==K_ALT_X) break; else if (key==K_LEFT) selection1=1; else if (key==K_RIGHT) selection1=3; conv_attr(2); } else if (selection1==3) { key = menu_help(); if (key==K_ALT_X) break; else if (key==K_LEFT) selection1=2; else if (key==K_RIGHT) selection1=0; conv_attr(3); } } while ( (!(key == K_ENTER)) && ( !(func_func(key)) ) ); if (key==K_ENTER) //(2) { if (selection1==0) { if (selection2==5) break; else if (selection2==0) new_file(); else if (selection2==1) open(); else if (selection2==2) save(SAVE); else save(SAVE_AS); } else if (selection1==1) { if (selection3==0) run(); else if (selection3==1) debug(K_F7); else if (selection3==2) debug(K_F8); } else if (selection1==2) { if (selection4==0) toggle(); else if (selection4==1) delToggle(); } else if (selection1==3) { if (selection5==0) Intro(); else if (selection5==1) Instruction(); else if (selection5==3) About(); } } //end if (key==K_ENTER) (2) } //end if (key==K_ENTER) (1) } //end if (!(func_func())) } while (1); clear_screen(0,0,80,25,0x07); 123 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com gotoxy(1,1); set_cursor_style(6,7); } /*========================END OF FILE==========================*/ 5.5 Các chương trình ví dụ 5.5.1 Chương trình ví dụ No.1 ; Đọc trạng thái SW ; Xuất trạng thái tương ứng LED ; Người viết: Lưu Đình Dũng ; Ngày viết: 11/03/1999 ; Cập nhật lần cuối:09/07/1999 org 0000h ld sp,0fe00h start: in a,(04h) out (00h),a jp start ;================= End of file ==================== 5.5.2 Chương trình ví dụ No.2 ; Load data vao RAM từ bảng ; Xuất data từ RAM LED ; Xuất data từ bảng LED ; Người viết: Lưu Đình Dũng ; Ngày viết: 11/03/1999 ; Cập nhật lần cuối: 09/07/1999 org 0000h start: ;Set giá trị ban đầu cho Stack ld sp,0fe00h ;Nạp bảng vào RAM ld ix,8000h ld b,01h loop: ld a,b ; cp 01h jp z,sw001 ;Nếu a=01h, nhảy đến sw001 cp 02h jp z,sw002 124 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com jp cp 03h z,sw003 jp cp 04h z,sw004 cp jp 05h z,sw005 cp 06h z,sw006 cp 07h z,sw007 cp 08h z,sw008 jp start1 jp jp jp ; sw001: inc b ld jp sw002: inc b ld jp sw003: hl,table1 loop02 hl,table2 loop02 inc b ld hl,table3 jp loop03 sw004: inc b ld hl,table4 jp loop03 sw005: inc b ld hl,table5 jp loop02 sw006: inc b ld hl,table6 jp loop02 sw007: inc b ld hl,table7 jp loop02 125 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com sw008: inc b ld hl,table8 jp loop04 ; loop02: ld jp loop03: ld jp d,08h loop01 d,0ah loop01 loop04: ld ; jp loop01: ld d,10h loop01 a,(hl) ld (ix+00h),a inc ix inc hl dec d jp nz,loop01 jp loop ; start1: ld iy,8000h start2: ld a,(iy+00) out (00h),a call delay ; loop00: in a,(04h) ; cp 0feh ;1111 1110 jp z,sw1 ; cp 0fdh ;1111 1101 jp z,sw2 ; cp 0fbh ;1111 1011 jp z,sw3 ; cp 0f7h ;1111 0111 jp z,sw4 ; cp 0efh ;1110 1111 jp z,sw5 ; cp 0dfh ;1101 1111 126 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com jp z,sw6 ; cp 0bfh ;1011 1111 jp z,sw7 ; cp jp ; ; ; jp 7fh ;0111 1111 z,sw8 start1 inc iy push iy push ix pop de ; ld de,ix pop bc ; ld bc,iy ld a,c ; so sánh ix & iy (cho iy tới ix max) cp e ; (giá trị lớn nạp vào RAM) jp nz,start2 ld a,b cp d jp nz,start2 jp start1 ; sw1: ld jp hl,table1 sw00 ld jp hl,table2 sw00 ld jp hl,table3 sw02 ld hl,table4 jp sw02 ; sw2: ; sw3: ; sw4: ; sw5: ld jp hl,table5 sw00 ; sw6: ld jp hl,table6 sw00 ; sw7: ld hl,table7 127 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com jp sw00 ; sw8: ld jp hl,table8 sw03 ; sw00: ld jp b,8 sw01 ld jp b,0ah sw01 ; sw02: ; sw03: ld b,10h jp sw01 ; ; sw01: ld a,(hl) out (00h),a call delay inc hl dec b jp nz,sw01 ; jp loop00 ; table1: db 0feh ;1111 1110 db 0fdh ;1111 1101 db 0fbh ;1111 1011 db 0f7h ;1111 0111 db 0efh ;1110 1111 db 0dfh ;1101 1111 db 0bfh ;1011 1111 db 7fh ;0111 1111 ; table2: db 7fh ;0111 1111 db 0bfh ;1011 1111 db 0dfh ;1101 1111 db 0efh ;1110 1111 db 0f7h ;1111 0111 db 0fbh ;1111 1011 db 0fdh ;1111 1101 db 0feh ;1111 1110 ; table3: 128 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com db db db db db db db db db db ; table4: db db db db db db db db db db ; table5: db db db db db db db db ; table6: db db db db db db db db ; table7: db db db db db 0ffh ;1111 1111 0e7h ;1110 0111 0c3h ;1100 0011 81h ;1000 0001 00h ;0000 0000 0ffh ;1111 1111 0e7h ;1110 0111 0c3h ;1100 0011 81h ;1000 0001 00h ;0000 0000 00h ;0000 0000 81h ;1000 0001 0c3h ;1100 0011 0e7h ;1110 0111 0ffh ;1111 1111 00h ;0000 0000 81h ;1000 0001 0c3h ;1100 0011 0e7h ;1110 0111 0ffh ;1111 1111 0aah ;1010 1010 55h ;0101 0101 0aah ;1010 1010 55h ;0101 0101 0aah ;1010 1010 55h ;0101 0101 0aah ;1010 1010 55h ;0101 0101 7fh 3fh 1fh 0fh 07h 03h 01h 00h ;0111 1111 ;0011 1111 ;0001 1111 ;0000 1111 ;0000 0111 ;0000 0011 ;0000 0001 ;0000 0000 0feh ;1111 1110 0fch ;1111 1100 0f8h ;1111 1000 0f0h ;1111 0000 0e0h ;1110 0000 129 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com db 0c0h ;1100 0000 db 80h ;1000 0000 db 00h ;0000 0000 ; table8: db 0ffh ;1111 1111 db 7fh ;0111 1111 db 3fh ;0011 1111 db 0bfh ;1011 1111 db 1fh ;0001 1111 db 0dfh ;1101 1111 db 0fh ;0000 1111 db 0efh ;1110 1111 db 07h ;0000 0111 db 0f7h ;1111 0111 db 03h ;0000 0011 db 0fbh ;1111 1011 db 01h ;0000 0001 db 0fdh ;1111 1101 db 00h ;0000 0000 db 0feh ;1111 1110 ; delay: push hl ;3M, 11T ld d,0fh ;2M, 7T delay01: ld e,0fh ;2M, 7T delay001: ld h,0fh ;2M, 7T delay002: ld l,0fh ;2M, 7T ; delay003: dec l ;1M, 4T jr nz,delay003 ;2M, 7T ; dec h ;1M, 4T jr nz,delay002 ;2M,7T ; dec e ;1M, 4T jr nz,delay001 ;2M, 7T ; dec d ;1M, 4T jr nz,delay01 ;2M, 7T ; pop hl ;3M, 10T ret ;3M, 10T ; ; T1 = 11*15 = 165 130 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ; T2 = ( 18+T1 ) * 15 = ( 18+165 ) * 15 = 183 * 15 = 2745 ; T3 = ( 18+T2 ) * 15 = ( 18+2745 ) * 15 = 2763 * 15 = 41445 ; T4 = ( 18+T3 ) * 15 = ( 18+41445 ) * 15 = 41463 * 15 = 621945 ; T5 = T4+59 = 621945+59 = 622004 ; T (Thời gian delay) = T5/2.4576 (uS) = 253094(uS) = 0.253 (S) ; T = 1/4 (S) ; ;================= End of file ====================    131 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phụ lục A Các thông báo lỗi Các loại lỗi có chạy chương trình mode Debug Run: File có phần mở rộng asm chưa mở Nhập không tên file mở có yêu cầu nhập tên file từ chương trình dịch (Chú ý: khơng nhập phần mở rộng) Thiếu file có phần mở rộng lst chạy chương trình chế độ Debug (Chú ý: nhập ‘Y’ có thơng báo tạo file listing dịch chương trình) Chưa cấp nguồn +5V cho KIT Phần cứng có vấn đề: a Có byte vùng RAM chung hư b Chưa cắm Jack 25 pin c Các IC 8255, 74LS157, 74LS244, 74LS374, 74LS74, 74LS04 có cố Nguồn +5V bị đột ngột chương trình chạy File *.bin lớn (>32 Kb) Các loại lỗi thông báo lên hình (nếu có) Chú ý: Trong thực phải KIT Z80 cấp nguồn +5V    132 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phụ lục B Vi mạch 8255 Vi mạch 8255 thường hay sử dụng việc xuất nhập liệu số, việc điều khiển trình biến đổi A/D 8255 có 24 đường xuất nhập xếp thành cổng song song (cổng A, B vàC) Tính linh hoạt vi mạch thể khả lập trình Qua ghi điều khiển, người sử dụng xác định loại hoạt động cổng cần sử dụng lối lối vào Đường data chiều D0 - D7 rộng bits Tất liệu truy xuất ghi đọc dẫn qua đường dẫn Trạng thái logic ghi/đọc nhận biết qua tín hiệu điều khiển /CS, /RD, /WR Khi /CS = '0', /RD = '0' tín hiệu cổng lựa chọn dẫn đến data bus Khi /CS = '0', /WR = việc xảy ngược lại Các bit địa A0 A1 với tín hiệu ghi đọc báo hiệu cho biết truy nhập lên cổng Bảng thật tóm tăt kết luận vừa trình bày trên: A1 0 0 1 X X A0 0 1 X X /RD 0 1 1 X /WR 1 0 0 X /CS 0 0 0 Chức Port A => Data bus Port B => Data bus Port C => Data bus Data bus => Port A Data bus => Port B Data bus => Port C Ghi từ điều khiển Data bus trạng thái HiZ Data bus trạng thái HiZ Trong chu trình ghi lên ghi điều khiển, người sử dụng khẳng định cổng vào/ kiểu hoạt động từ điều khiển Một mức logic '1' chân RESET đặt trở lại ghi điều khiển định nghiã toàn 24 đRờng dẫn lối vào Sự xếp từ điều khiển mơ tả hình sau: 133 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com D7 D6 D5 D4 D3 D2 D1 D0 Nhóm B Cổng C = in = out Cổng B = in = out Mode = Mode = Mode Nhóm A Cổng C = in = out Cổng A = in = out Mode 00 = Mode 01 = Mode 0X = Mode Mode - Flag = Active Sự xếp từ điều khiển vi mạch 8255 Ta thấy 24 đường dẫn cổng A, B, C phân chia thành nhóm Trong nửa cổng C (PC4 PC7) thuộc vào nhóm A, cịn nửa thuộc nhóm B Tổng cộng người sử dụng có kiểu hoạt động khác Mode 0, mode 1, mode Mode 0: Xuất nhập liệu theo cách đơn giản qua PA, PB, PC Ta không đề cập tới mode mode    134 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tài liệu tham khảo [1] Ngô Diên Tập, Đo lường điều khiển máy tính Nhà xuất khoa học kỹ thuật - 1996 [2] Lê Văn Việt, Cấu trúc máy tính Nhà xuất Đồng Nai - 1995 [3] Lance A Leventhal, Z80 Assembly language programming McGraw-Hill, Inc - 1986 [4] Atkinson and Atkinson, Using Borland C++ QUE - 1991 [5] Gerald Leblanc, Turbo C Nhà xuất khoa học kỹ thuật - 1996 [6] Motorola, DATA BOOK DIGITAL IC - 1992 [7] Z80 Microprocessor Family User’s Manual -    135 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ...Đề tài: Thi? ??t kế, thi cơng viết chương trình điều khiển mạch thực hành cho Z80 CPU với đặc điểm sau: - Giao tiếp với máy tính qua ngõ máy in - Giả lập ROM để nhận chương trình từ máy tính - Có... việc thi hành lệnh việc điều khiển ngắt có độ ưu tiên lồng thực xác Lệnh cặp với thi? ??t bị thi? ??t bị ngoại vi Z80 để thi hành lệnh quay đơn giản từ ngắt Chương trình sau báo cho thi? ??t bị ngắt chương. .. tuyến, mạch giao tiếp để điều khiển số cổng xuất nhập đơn giản Giai đoạn 2: Thay ROM chương trình thi? ??t kế bước RAM có chức tương tự RAM chứa chương trình từ máy tính gởi đến thông qua mạch giao tiếp,

Ngày đăng: 01/11/2022, 20:06

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w