Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 176 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
176
Dung lượng
1,9 MB
Nội dung
Chương I Các vi điều khiển 8051 1.1 vi điều khiển xử lý nhúng Trong mục bàn nhu cầu vi điều khiển (VĐK) so sánh chúng với vi xử lý dạng chung Pentium vi xử lý 86 khác Chúng ta xem xét vai trò vi điều khiển thị trường sản phẩm nhúng Ngoài ra, cung cấp số tiêu chuẩn cách lựa chọn vi điều khiển 1.1.1 Bộ vi điều khiển so với vi xử lý dùng chung Sự khác vi điều khiển vi xử lý gì? Bộ vi xử lý vi xử lý công dung chung họ Intell 86 (8086, 80286, 80386, 80486 Pentium) họ Motorola 680 0(68000, 68010, 68020, 68030, 68040 v.v ) Những VXL RAM, ROM cổng vào chíp Với lý mà chúng gọi chung vi xử lý công dụng chung Data bus CPU GeneralPurpose Microprocessor RAM ROM I/O Port Timer CPU RAM ROM I/O Timer Serial COM Port Serial COM Port Address bus (a) General-Purpose Microcessor System (b) Microcontroller Hình 1.1: Hệ thống vi xử lý so sánh với hệ thống vi điều khiển a) Hệ thống vi xử lý công dụng chung b) Hệ thống vi điều khiển Một nhà thiết kế hệ thống sử dụng vi xử lý công dụng chung chẳng hạn Pentium hay 68040 phải bổ xung thêm RAM , ROM, cổng vào định thời để làm cho chúng hoạt động Mặc dù việc bổ xung RAM, ROM cổng vào bên làm cho hệ thống cồng cềnh đắt hơn, chúng có ưu điểm linh hoạt chẳng hạn người thiết kế định số lượng RAM, ROM cổng vào cần thiết phù hợp với toán tầm tay Điều có vi điều khiển Một vi điều khiển có CPU (một vi xử lý) với lượng cố định RAM, ROM, cổng vào định thời tất chíp Hay nói cách khác xử lý, RAM, ROM cổng vào định thời nhúng với chíp; người thiết kế bổ xung thêm nhớ ngoài, cổng vào định thời cho Số lượng cố định RAM, ROM chíp số cổng vào - vi điều khiển làm cho chúng trở nên lý tưởng nhiều ứng dụng mà giá thành không gian lại hạn chế Trong nhiều ứng dụng, ví dụ điều khiển TV từ xa không cần công suất tính toán vi sử lý 486 chí 8086 Trong nhiều ứng dụng không gian chiếm, công suất tiêu tốn giá thành đơn vị cân nhắc nghiêm ngặt nhiều so với công suất tính toán Những ứng dụng thường yêu cầu số thao tác vào - để đọc tín hiệu tắt - mở bit định Vì lý mà số người gọi xử lý IBP (Itty-Bitty-Processor), (tham khảo Good things in small packages are Generating Big product opportunities Rick Grehan viết tạp BYTE tháng 9.1994; WWW Byte Com để biết trao đổi tuyệt vời vi điều khiển) Điều thú vị số nhà sản xuất vi điều khiển xa tích hợp chuyển đổi ADC ngoại vi khác vào vi điều khiển Bảng 1.1: Một số sản phẩm nhúng sử dụng vi điều khiển Thiết bị nội thất gia đình Đồ điện nhà Văn phòng ô tô Điện thoại Máy tính hành trình Máy đàm thoại Máy điện thoại Các hệ thống an toàn Các mở cửa ga-ra xe Máy trả lời Máy Fax Máy tính gia đình Tivi Truyền hình cáp VCR Máy quy camera Điều khiển từ xa Trò chơi điện tử Điện thoại tổ ong Các nhạc cụ điện tử Máy khâu Điều khiển ánh sáng Máy nhắn tin Máy chơi Pootball Đồ chơi Các dụng cụ tập thể hình Điều khiển động Máy tính Các hệ thống an Túi đệm khí Thiết bị ABS toàn Đo lường Máy Fax Hệ thống bảo mật Lò vi sóng Đíũu khiển truyền Máy chụp tin Máy in lazer Giải trí Máy in màu Điều hoà nhiệt độ Máy nhắn tin Điện thoại tổ ong Mở cửa không cần chìa khoá 1.1.2 Các VĐK cho hệ thống nhúng Trong tài liệu vi xử lý ta thường thấy khái niệm hệ thống nhúng (Embeded system) Các vi xử lý vi điều khiển sử dụng rộng rãi sản phẩm hệ thống nhúng Một sản phẩm nhúng sử dụng vi xử lý (hoặc vi điều khiển để thực nhiệm vụ mà Một máy in ví dụ việc nhúng xử lý bên làm việc nhận liệu in Điều khác với máy tình PC dựa xử lý Pentium (hoặc PC tương thích với IBM 86 bất kỳ) Một PC sử dụng cho số trạm dịch vụ in, đầu cuối kiểm kê nhà băng, máy chơi trò chơi điện tử, trạm dịch vụ mạng trạm đầu cuối mạng Internet Phần mềm cho ứng dụng khác nạp chạy Tất nhiên lý hiển nhiên để PC thực hàng loạt công việc có nhớ RAM hệ điều hành nạp phần mềm ứng dụng thường đốt vào ROM Một máy tính PC 86 chứa nối tới sản phẩm nhúng khác chẳng hạn bàn phím, máyin, Modem, điều khiển đĩa, Card âm thanh, điều khiển CD = ROM Chuột v.v Một nội ngoại vi có vi điều khiển bên để thực công việc, ví dụ bên chuột có vi điều khiển để thực thi công việc tìm vị trí chuột gửi đến PC Bảng 1.1 liệt kê số sản phẩm nhúng 4.1.3 Các ứng dụng nhúng PC 86 Mặc dù vi điều khiển lựa chọn ưa chuộng nhiều hệ thống nhúng có nhiều vi điều khiển không đủ cho công việc Vì lý mà năm gần nhíều nhà sản xuất vi sử lý công dụng chung chẳng hạn Intel, Motorla, AMD (Advanced Micro Devices, Inc ) Và Cyric (mà phận National Senicon ductir, Inc) hướng tới vi xử lý cho hiệu suất cao thị trường nhúng Trong Intel, AMD Cyrix đẩy xử lý 86 họ vào cho thị trường nhúng thị trường máy tính PC để bán Motorola kiên định giữ họ vi xử lý 68000 lại chủ yếu hướng cho hệ thống nhúng hiệu suất cao Apple không dùng 680 máy tính Macintosh Trong năm đầu thập kỷ 90 kỷ 20 máy tính Apple bắt đầu sử dụng vi xử lý Power PC (như 603, 604, 620 v.v ) thay cho 680 Macintosh Bộvi xử lý Power PC kết liên doanh đầu tư IBM Motorola hướng cho thị trướng nhúng hiệu suất cao cho thị trường máy tính PC Cần phải lưu ý công ty hướng vi xử lý công dụng chung cho thị trường nhúng tối ưu hoá xử lý sử dụng cho hệ thống nhúng Vì lý mà vi xử lý thường gọi xử lý nhúng hiệu suất cao Do khái niệm vi điều khiển xử lý nhúng thường sử dụng thay đổi Một nhu cầu khắt khe hệ thống nhúng giảm công suất tiêu thụ không gian Điều đạt cách tích hợp nhiều chức vào chíp CPU Tất xử lý nhúng dựa 86 680 có công suất tiêu thu thấp bổ xung số dạng cổng vào - ra, cổng COM nhớ ROM chíp Trong xử lý nhúng hiệu suất cao có xu hướng tích hợp nhiều nhiều chức chíp CPU cho phép người thiết kế định đặc tính họ muốn sử dụng Xu hướng chiếm lĩnh thiết kế hệ thống PC Bình thường thiết kế bo mạch chủ PC (Motherboard) ta cần CPU cộng chíp - set có chứa cống vào - ra, điều khiển cache, nhớ Flash ROM có chứa BIOS cuối nhớ cache thứ cấp Những thiết kế khẩn trương vào công nghiệp sản xuất hàng loạt Ví dụ Cyrix tuyên bố họ làm việc chíp có chứa toàn máy tính PC ngoại trừ DRAM Hay nói cách khác xắp nhìn thấy máy tính PC chíp Hiện chuẩn hoá MS - DOS Windows nên hệ thống nhúng sử dụng máy tình PC 86 Trong nhiều trường hợp việc sử dụng máy tính PC 86 cho ứng dụng nhúng hiệu suất cao không tiết kiệm tiền bạc, làm rút ngắn thời gian phát triển có thư viện phần mềm bao la viết cho DOS Windows Thực tế Windows sử dụng rộng rãi dễ hiểu có nghĩa việc phát triển sản phẩm nhúng dựa Windows làm giảm giá thành rút ngắn thời gian phát triển đáng kể 1.1.4 Lựa chọn vi điều khiển Có vi điều khiển bit Đó 6811 Motorola, 8051 Intel z8 Xilog Pic 16 Microchip Technology Mỗi kiểu loại có tập lệnh ghi riêng nhất, chúng không tương thích lẫn Cũng có vi điều khiển 16 bit 32 bit sản xuất hãng sản xuất chíp khác Với tất vi điều khiển khác lấy làm tiêu chuẩn lựa chọn mà nhà thiết kế phải cân nhắc? Có ba tiêu chuẩn để lựa chọn vi điều khiển là: 1) Đáp ứng nhu cầu tính toán toán cách hiệu mặt giá thành đầy đủ chức nhìn thấy (khả dĩ) 2) Có sẵn công cụ phát triển phần mềm chẳng hạn trình biên dịch, trình hợp ngữ gỡ rối 3) Nguồn vi điều khiển có sẵn nhiều tin cậy 1.1.5 Các tíêu chuẩn lựa chọn vi điều khiển Tiêu chuẩn đầu tiênvà trước hết tronglựa chọn vi điều khiển phải đáp ứng nhu cầu toán mặt công suất tính toán giá thành hiệu Trong phân tích nhu cầu dự án dựa vi điều khiển trước hết phải biết vi điều khiển bit, 16 bit hay 32 bit đáp ứng tốt nhu cầu tính toán toán mộ tcách hiệu nhất? Những tiêu chuẩn đưa để cân nhắc là: a) Tốc độ: Tốc độ lớn mà vi điều khiển hỗ trợ b) Kiểu đóng vỏ: Đó kíểu 40 chân DIP hay QFP kiểu đóng vỏ khác (DIP -đóng vỏ theo hàng chân QFP đóng vỏ vuông dẹt)? Đây điều quan trọng yêu cầu không gian, kiểu lắp ráp tạo mẫu thử cho sản phẩm cuối c) Công suất tiêu thụ: Điều đặc biệt khắt khe sản phẩm dùng pin, ắc quy d) Dung lượng nhớ RAM ROM chíp e) Số chân vào - định thời chíp f) Khả dễ dàng nâng cấp cho hiệu suất cao giảm công suất tiêu thụ g) Giá thành cho đơn vị: Điều quan trọng định giá thành cuối sản phẩm mà vi điều khiển sử dụng Ví dụ có vi điều khiển giá 50 cent đơn vị mua 100.000 lúc 2) Tiêu chuẩn thứ hai lựa chọn vi điều khiển khả phát triển sản phẩm xung quanh dễ dàng nào? Các câu nhắc chủ yếu bao gồm khả có sẵn trình lượng ngữ, gỡ rối, trình biên dịch ngôn ngữ C hiệu mã nguồn, trình mô hỗ trợ kỹ thuật khả sử dụng nhà môi trường Trong nhiều trường hợp hỗ trợ nhà cung cấp thứ ba (nghĩa nhà cung cấp khác hãng sản xuất chíp) cho chíp tốt như, không tốt hơn, hỗ trợ từ nhà sản xuất chíp 3) Tiêu chuẩn thứ ba lựa chọn vi điều khiển khả sẵn sàng đáp ứng số lượng tương lai Đối với số nhà thiết kế điều chí quan hai tiêu chuẩn Hiện nay, vi điều khiển bit dấu đầu, họ 8051 có số lương lớn nhà cung cấp đa dạng (nhiều nguồn) Nhà cung cấp có nghĩa nhà sản xuất bên cạnh nhà sáng chế vi điều khiển Trong trường hợp 8051 nhà sáng chế Intel, có nhiều hãng sản xuất (cũng trước sản xuất) Các hãng bao gồm: Intel, Atmel, Philips/signe-tics, AMD, Siemens, Matra Dallas, Semicndictior Bảng 1.2: Địa số hãng sản xuất thành viên họ 8051 Hãng Intel Antel Plips/ Signetis Siemens Dallas Semiconductor Địa Website www.intel.com/design/mcs51 www.atmel.com www.semiconductors.philips.co m www.sci.siemens.com www.dalsemi.com Cũng nên lưu ý Motorola, Zilog Mierochip Technology dành lượng tài nguyên lớn để đảm bảo khả sẵn sàng thời gian phạm vi rộng cho sản phẩm họ từ sản phẩm họ vào sản xuất ổn định, hoàn thiện trở thành nguồn Trong năm gần họ bắt đầu bán tế bào thư viện Asic vi điều khiển 1.2 Tổng quan họ 8051 Trong mục xem xét số thành viên khác họ vi điều khiển 8051 đặc điểm bên chúng Đồng thời ta điểm qua số nhà sản xuất khác sản phẩm họ có thị trường 1.2.1 Tóm tắt lịch sử 8051 Vào năm 1981 Hãng Intel giới thiệu số vi điều khiển gọi 8051 Bộ vi điều khiển có 128 byte RAM, 4K byte ROM chíp, hai định thời, cổng nối tiếp cổng (đều rộng bit) vào tất đặt chíp Lúc coi hệ thống chíp 8051 xử lý bit có nghĩa CPU làm việc với bit liệu thời điểm Dữ liệu lớn bit chia thành liệu bit xử lý 8051 có tất cổng vào - I/O cổng rộng bit (xem hình 1.2) Mặc dù 8051 có ROM chíp cực đại 64 K byte, nhà sản xuất lúc cho xuất xưởng với 4K byte ROM chíp Điều bàn chi tiết sau 8051 trở nên phổ biến sau Intel cho phép nhà sản xuất khác sản xuất bán dạng biến 8051 mà họ thích với điều kiện họ phải để mã lại tương thích với 8051 Điều dẫn đến đời nhiều phiên 8051 với tốc độ khác dung lượng ROM chíp khác bán nửa nhà sản xuất Điều quan trọng có nhiều biến thể khác 8051 tốc độ dung lương nhớ ROM chíp, tất chúng tương thích với 8051 ban đầu lệnh Điều có nghĩa ta viết chương trình cho phiên chạy với phiên khác mà không phân biệt từ hãng sản xuất Bảng 1.3: Các đặc tính 8051 Đặc tính ROM chíp RAM Bộ định thời Các chân vào - Cổng nối tiếp Nguồn ngắt Số lượng 4K byte 128 byte 32 1.2.2 Bộ ví điều khiển 8051 Bộ vi điều khiển 8051 thành viên họ 8051 Hãng Intel ký hiệu MCS51 Bảng 3.1 trình bày đặc tính 8051 ETC INTERRUPT CONTROL ON - CHIP RAM TIMER TIMER CPU OSC BUS CONTROL I/O PORTS SERIAL PORT COUNTER INPUTS EXTERNAL INTERRUPTS Hình 1.2: Bố trí bên sơ đồ khối 8051 1.2.3 thành viên khác họ 8051 Có hai vi điều khiển thành viên khác họ 8051 8052 8031 a- Bộ vi điều khiển 8052: Bộ vi điều khiển 8052 thành viên khác họ 8051, 8052 có tất đặc tính chuẩn 8051 có thêm 128 byte RAM định thời Hay nói cách khác 8052 có 256 byte RAM định thời Nó có 8K byte ROM Trên chíp thay 4K byte 8051 Xem bảng 1.4 Bảng1.4: so sánh đặc tính thành viên họ 8051 Đặc tính ROM chíp RAM Bộ định thời Chân vào - Cổng nối tiếp Nguồn ngắt 8051 4K byte 8052 8K byte 128 byte 32 256 byte 32 8031 OK 128 byte 32 Như nhìn thấy từ bảng 1.4 8051 tập 8052 Do tất chương trình viết cho 8051 chạy 8052 điều ngược lại không b- Bộ vi điều khiển 8031: Một thành viên khác 8051 chíp 8031 Chíp thường coi 8051 ROM chíp có OK byte ROM chíp Để sử dụng chíp ta phải bổ xung ROM cho ROM phải chứa chương trình mà 8031 nạp thực So với 8051 mà chương trình chứa ROM chíp bị giới hạn 4K byte, ROM chứa chương trinh gắn vào 8031 lớn đến 64K byte Khi bổ xung cổng, lại cổng để thao tác Để giải vấn đề ta bổ xung cổng vào - cho 8031 Phối phép 8031 với nhớ cổng vào - chẳng hạn với chíp 8255 trình bày chương 14 Ngoài có phiên khác tốc độ 8031 từ hãng sản xuất khác 1.2.4 Các vi điều khiển 8051 từ hãng khác Mặc dù 8051 thành viên phổi biến họ 8051 thấy kho linh kiện Đó 8051 có nhiều dạng kiểu nhớ khác UV - PROM, Flash NV RAM mà chúng có số đăng ký linh kiện khác Việc bàn luận kiểu dạng nhớ ROM khác trình bày chương 14 Phiên UV-PROM 8051 8751 Phiên Flash ROM bán nhiều hãng khác chẳng hạn Atmel corp với tên gọi AT89C51 phiên NV-RAM 8051 Dalas Semi Conductor cung cấp gọi DS5000 Ngoài có phiên OTP (khả trình lần) 8051 sản xuất nhiều hãng a- Bộ vi điều khiển 8751: Chíp 8751 có 4K byte nhớ UV-EPROM chíp Để sử dụng chíp để phát triển yêu cầu truy cập đến đốt PROM xoá UV- EPROM để xoá nội dung nhớ UVEPROM bên 8751 trước ta lập trình lại Do thực tế ROM chíp 8751 UV-EPROM nên cần phải 20 phút để xoá 8751 trước lập trình trở lại Điều dẫn đến nhiều nhà sản xuất giới thiệu phiên Flash Rom UV-RAM 8051 Ngoài có nhiều phiên với tốc độ khác 8751 từ nhiều hãng khác b- Bộ vi điều khiển AT8951 từ Atmel Corporation Chíp 8051 phổ biến có ROM chíp dạng nhớ Flash Điều lý tưởng phát triển nhanh nhớ Flash xoá vài giây tương quan so với 20 phút mà 8751 yêu cầu Vì lý mà AT89C51 để phát triển hệ thống dựa vi điều khiển yêu cầu đốt ROM mà Hình 15.2: Sơ đồ khối 8255 15.1.1.2 Các chân PB0 - PB7 (cổng B) Cả bit cổng B lập trình bit đầu vào bit đầu bit hai chiều vào/ 15.1.1.3 Các chân PC0 - PC7 (cổng C) Tất bit cổng C (PC0 - PC7) lập trình bit đầu vào bit đầu bit chia làm hai phần: Các bit cao (PC4 - PC7) CU bit thấp (PC0 - PC3) CL Mỗi phần dùng làm đầu vào làm đầu Ngoài bit cổng C từ PC0 PC7 lập trình riêng rẽ 15.1.1.4 Các chân RD WR Đây hai tín hiệu điều khiển tích cực mức thấp tới 8255 nối tới chân liệu RD WR từ 8031/51 nối tới chân đầu vào 15.1.1.5 Các chân liệu D0 - D7 Các chân liệu D0 - D7 8255 nối tới chân liệu vi điều khiển phép gửi liệu qua lại vi điều khiển chíp 8255 15.1.1.6 Chân RESET Đây đầu vào tín hiệu tích cực mức cao tới 8255 dùng để xoá ghi điều khiển Khi chân RESET kích hoạt tất cổng khởi tạo lại cổng vào Trong nhiều thiết kế chân nối tới đầu RESET bus hệ thống nối tới đất để không kích hoạt Cũng tất chân đầu vào IC để hở 15.1.1.7 Các chân A0, A1 CS Trong CS chọn toàn chíp A0 A1 lại chọn cổng riêng biệt Các chân dùng để truy cập cổng A, B, C ghi điều khiển theo bảng 15.1 Lưu ý CS tích cực mức thấp 15.1.2 Chọn chế độ 8255 Trong cổng A, B C dùng để nhập xuất liệu ghi điều khiển phải lập trình để chọn chế độ làm việc cổng Các cổng 8255 lập trình theo chế độ Chế độ (Mode0): Đây chế độ vào/ đơn giản chế độ cổng A, B CL CU lập trình đầu vào đầu Trong chế độ tất bit đầu vào đầu Hay nói cách khác điều khiển theo bit riêng rẽ ta thấy cổng P0 - P3 8051 Vì đa phần ứng dụng liên quan đến 8255 sử dụng chế độ vào/ đơn giản nên ta tập chung sâu vào chế độ Chế độ (Mode1): Trong chế độ cổng A B dùng cổng đầu vào đầu với khả bắt tay Tín hiệu bắt tay cấp bit cổng C (sẽ trình bày mục 15.3) Chế độ (Mode2): Trong chế độ cổng A dùng cổng vào/ hai chiều với khả bắt tay tín hiệu bắt tay cấp bit cổng C Cổng B dùng chế độ vào/ đơn giản chế độ có bắt tay Mode1 Chế độ không trình bày tài liệu Chế độ BSR: Đây chế độ thiết lập/ xoá bit (Bit Set/ Reset) chế độ có bit riêng rẽ cổng C lập trình (sẽ trình bày mục 15.3) Bảng 15.1: Chọn cổng 8255 CS A1 A0 Chọn cổng 0 0 0 1 x 1 X Cổng A Cổng B Cổng C Thanh ghi điều khiển 8255 không chọn Group A D7 D6 D5 Group A D4 D3 Mode Selection 00 = Mode 01 = Mode 1x = Mode2 D1 Mode Selcction = Mode = Mode Pont A = Input = Output = I/O Mode = BSR Mode D2 Port C (Upper PC7 - PCA) = Input = Output D0 Port (Lowe PC3 - PCC) = Input = Output Port B = Input = Output Hình 15.3: Định dạng từ điều khiển 8255 (chế độ vào/ ra) 15.1.3 Lập trình chế độ vào/ đơn giản Hãng Intel gọi chế độ chế độ vào/ sở Một thuật ngữ dùng chung vào/ đơn giản Trong chế độ cổng A, B, C lập trình cổng đầu vào cổng đầu Cần lưu ý chế độ cổng cho vừa làm đầu vào lại vừa làm đầu lúc Ví dụ 15.1: Hãy tìm từ điều khiển 8255 cho cấu hình sau: Tất cổng A, B C cổng đầu (chế độ 0) PA đầu vào, PB đầu ra, PCL đầu vào PCH đầu Lời giải: Từ hình 15.3 ta tìm được: a) 1000 0000 = 80H; b) 1001 000 = 90H 15.1.4 Nối ghép 8031/51 với 8255 Chíp 8255 lập trình bốn chế độ vừa trình bày cách gửi byte (hãng Intel gọi từ điều khiển) tới ghi điều khiển 8255 Trước hết phải tìm địa cổng gán cho cổng A, B, C ghi điều khiển Đây gọi ánh xạ cổng vào/ (mapping) Như nhìn thấy từ hình 15.4 8255 nối tới 8031/51 nhớ RAM Để việc sử dụng tín hiệu RD WR Phương pháp nối chíp vào/ nhớ ánh xạ vào không gian nhớ Hay nói cách khác, ta sử dụng không gian nhớ để truy cập thiết bị vào/ Vì ly??? mà ta dùng lệnh MOVX để truy cập RAM ROM Đối với 8255 nối tới 8031/51 ta phải dùng lệnh MOVX để truyền thông với Điều thể ví dụ 15.2 Ví dụ 15.2: Đối với hình 15.4: a) Hãy tìm địa vào/ gán cho cổng A, B, C ghi điều khiển b) Hãy lập trình 8255 cho cổng A, B C thành cổng đầu c) Viết chương trình để gửi 55H AAH đến cổng liên tục Lời giải: a) Địa sở dành cho 8255 sau: A1 x A1 A1 x A1 x A1 x A1 x A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 x x x x x x x X 0 =4000HPA x x x x x x x x x x x x X =4000HPB x x x x x x x x x x x x X =4000HPC x x x x x x x x x x x x X 1 =4000HCR b) Byte (từ) điều khiển cho tất cổng đầu 80H tính ví dụ 15.1 c) MOV MOV MOVX MOV MOV MOVX INC MOVX INC MOVX CPL ACALL SJMP AGAIN: A, #80H DPTR, # 4003H @DPTR, A A, # 55H DPTR, # 4000H @DPTR, A DPTR @DPTR, A DPTR @DPTR, A A DELAY AGAIN 8051 ; Từ điển khiển ; Nạp địa cổng ghi điều khiển ; Xuất từ điển khiển ; Gán A = 55 ; Địa cổng PA ; Lấy bit cổng PA ; Địa cổng PB ; Lấy bít cổng PB ; Địa cổng PC ; Lấy bít cổng PC ; Lấy bít ghi A ; Chờ ; Tiếp tục RD WR P3.7 P3.6 A1 CS WR RD P2.7 ALE P0.7 P0.0 AD7 AD0 8255 G DQ 74LS373 OC A1 A1 A0 A0 D7 D7 D0 Hình 15.4: Nối ghép 8051 với 8255 cho ví dụ 15.2 PA PB PC D0 Ví dụ 15.3: Đối với hình 15.5: a) Tìm địa cổng vào gán cho cổng A, B, C thanhg ghi điều khiển b) Tìm byte điều khiển PA đầu vào, PB đầu ra, PC đầu c) Viết chương trình để nhận liệu từ PA gửi đến cổng B cổng C Lời giải: a) Giả sử tất các bit không dùng đến địa cổng sở cho 8255 1000H Do ta có: 1000H PA; 1001H PB; 1002H PC 1003H ghi điều khiển b) Từ điều khiển cho trường hợp 10010000 hay 90H c) MOV MOV MOVX MOV MOVX INC MOVX INC MOVX A, #90H ; PA đầu vào, PB đầu ra, PC đầu DPTR, #1003H ; Nạp địa cổng ghi điều khiển @DPTR, A ; Xuất từ điều khiển DPTR, #1000H ; Địa PA A, @DPTR ; Nhận liệu từ PA DPTR ; Địa PB @DPTR, A ; Gửi liệu PB DPTR ; Địa PC @DPTR, A ; Gửi liệu PC 8051 RD WR P3.7 P3.6 A15 P2.7 A12 G ALE P0.7 P0.0 WR RD CS AD7 AD0 8255 A1 D Q 74LS373 OC A0 A1 A0 D7 PA PB PC D0 RE D7 D0 Hình 15.5: Nối ghép 8051 tới 8255 cho ví dụ 15.3 Đối với ví dụ 15.3 ta nên dùng lệnh EQU cho địa cổng A, B, C ghi điều khiển CNTPORT sau: APORT EQU BPORT EQU CPORT EQU CNTPORT 1000H 1001H 1002H EQU 1003H MOV MOV A, #90H DPTR, #CNTPORT ; PA đầu vào, PB đầu ra, PC đầu ; Nạp địa cổng ghi điều khiển MOVX @DPTR, A ; Xuất từ điều khiển MOV DPTR, #CNTPORT ; Địa PA MOVX DPTR, APORT ; Nhận liệu PA INC A, @DPTR ; Địa PB MOVX DPTR ; Gửi liệu PB INC DPTR ; Địa PC MOVX DPTR, A ; Gửi liệu PC viết lại sau: CONTRBYT EQU 90H Xác định PA đầu vào, PB PC đầu BAS8255P EQU 1000H ; Địa sở 8255 MOV MOV MOVX MOV A, #CONTRBYT DPTR, #BAS8255P+3 @DPTR, A DPTR, #BASS8255P ; Nạp địa cổng C ; Xuất từ điều khiển ; Địa cổng A Để ý ví dụ 15.2 15.3 ta sử dụng ghi DPTR địa sở gán cho 8255 16 bit Nếu địa sở dành cho 8255 bit, ta sử dụng lệnh MOVX A, @R0 MOVX @R0, A R0 (hoặc R1) giữ địa cổng bit cổng Xem ví dụ 15.4, ý ví dụ 15.4 ta sử dụng cổng lôgíc đơn giản để giải mã địa chỉa cho 8255 Đối với hệ thống có nhiều 8255 ta sử dụng 74LS138 để giải mã trình bày ví dụ 15.5 15.1.5 Các bí danh địa (Addren Alias) Trong ví dụ 15.4 15.4 ta giải mã bít địa A0 - A7, nhiên ví dụ 15.3 15.2 ta giải mã phần địa cao A8 - A15 Việc giải mã phần dẫn đến gọi bí danh địa (Address Aliases) Hay nói cách khác, cổng vật lý giống có địa khác nhau, cổng mà biết với tên khác Trong ví dụ 15.2 15.3 ta thay đổi tốt x thành tổ hợp số khác thành địa khác nhau, song thực chất chúng tham chiếu đến cổng vật lý Trong tài liệu thuyết minh phần cứng cần phải bảo đảm ghi đầy đủ bí danh địa chỉa có cho người dùng biết địa có sẵn để họ mở rộng hệ thống Ví dụ 15.4: Cho hình 15.6: a) Hãy tìm địa cổng vào/ gán cho cổng A, B, C ghi điều khiển b) Tìm từ điều khiển cho trường hợp PA đầu ra, PB đầu vào, PC - PC3 đầu vào CP4 - CP7 đầu c) Viết chương trình để nhận liệu từ PB gửi PA Ngoài ra, liệu từ PC1 gửi đến CPU Lời giải: a) Các địa cổng tìm thấy sau: BB CS A1 A0 Địa 0010 0010 0010 0010 00 00 00 00 0 1 1 20H 21H 22H 23H b) Từ điều khiển 10000011 hay 83H Cổng Cổng A Cổng B Cổng C Thanh ghi điều khiển c) CONTRBYT APORT BPORT CPORT CNTPORT EQU EQU EQU EQU EQU MOV MOV MOV MOVX MOV MOVX DEC MOVX MOV MOVX ANL SWAP MOVX 83H 20H 21H 22H 23H ; PA đầu ra, PB,PCL đầu vào A, #CONTRBYT A, #CONTRBYT R0, #CNTPORT @R0, A R0, #BPORT A, @R0 R0 @R0, A R0, #CPORT A, @R0 A, #0FH A @R0, A 8051 ; PA, PCU đầu ra, PB PCL đầu vào ; Nạp địa cổng ghi điều khiển ; Xuất từ điều khiển ; Nạp địa PB ; Đọc PB ; Chỉ đến PA (20H) ; Gửi đến PA ; Nạp địa PC ; Đọc PCL ; Che phần cao ; Trao đổi phần cao thấp ; Gửi đến PCU RD WR P3.7 P3.6 A7 WR RD CS ALE P0.7 P0.0 PA A2 8255 G AD7 A1 D Q A1 A0 D7 74LS373 AD0 A0 OC PB PCL PCU D0 RES D7 D0 Hình 15.6: Nối ghép 8051 với 8255 cho ví dụ 15.4 Ví dụ 15.5: Hãy tìm địa sở cho 8255 hình 15.7 Lời giải: GA G 2B G 2A C B A A7 A6 A5 A4 A3 A2 Địa A1 A0 88H 74LS138 A2 A4 A B C A5 G 2A A6 G 2B A7 G1 A3 A0 A1 8255 Y2 CS Hình 15.7: Giải mã địa 8255 sử dụng 74LS138 15.1.6 Hệ 8031 với 8255 Trong hệ thống dựa 8031 mà nhớ chương trình ROM bắt buộc tuyệt đối sử dụng 8255 trào đón Điều thực tế giải trình phối ghép 8031 với nhớ chương trình ROM ta bị hai cổng P0 P2 lại cổng P1 Do vậy, việc nối với 8255 cách tốt để có thêm số cổng Điều hình 15.8 EA 8031 P3.7 P3.6 RD WR VCC PSEN A12 P2.7 P2.0 ALE P0.7 P0.0 G AD7 AD0 D q 74LS373 OC A8 CE OE VCC A12 A8 A0 A0 A0 A0 D7 2864 (2764) 8K8 Program RAM D0 WR RD 5 PA PB PC A1 A0 RES D7 D0 Hình 15.8: Nối 8031 tới ROM chương trình 8255 15.2 Nối ghép với giới thực 15.2.1 Phối ghép 8255 với động bước Chương 13 nói chi tiết phối ghép động bước với 8051, ta trình bày nối ghép động bước tới 8255 lập trình (xem hình 15.9) 0855 D0 D7 from 8051 WR A0 A1 Decoding Circuyiry A7 ULN2003 PA0 RD A0 A1 A2 D0 D7 PA1 PA2 PA3 16 15 14 13 Stepper Motor CS ULN2003 Conection for Stepper Motor Pin = GND Pin = +5v COM COM +5V Hình 15.9: Nối ghép 8255 với động bước Chương trình cho sơ đồ nối ghép sau: AGAIN: MOV MOV MOVX MOV MOV MOVX RR ACALL SJMP A, #80H R1, #CRPORT @R1, A R1, #APORT A, #66H @R1, A A DELAY AGAIN ; Chọn từ điều khiển để PA đầu ; Địa cổng ghi điều khiển ; Cấu hình cho PA đầu ; Nạp địa cổng PA ; Gán A = 66H, chuyển xung động bước ; Xuất chuỗi động đến PA ; Quay chuỗi theo chiều kim đồng hồ ; Chờ 15.2.2 Phối ghép 8255 với LCD Chương trình 15.1 trình bày cách xuất lệnh liệu tới LCD nối tới 8255 theo sơ đồ hình 15.10 Trong chương trình 15.1 ta phải đặt độ trễ trước lần xuất thông tin (lệnh liệu) tới LCD Một cách tốt kiểm tra cờ bận trước xuất thứ tới LCD nói chương 12 Chương trình 15.2 lặp lại chương trình 15.1 có sử dụng kiểm tra cờ bận Để ý lúc không cần thời gian giữ chậm vị trí 15.1 Chương 15.1: 0855 PA0 LCD D0 VCC VEE PA1 A7 VSS RS R/W E 10K POT PB0 PB1 PB2 RESET Hình 5.10: Nối ghép 8255 với LCD ; Ghi lệnh liệu tới LCD kiểm tra cờ bận ; Giả sử PA 8255 nối tới D0 - D7 LCD ; IB - RS, PB1 = R/W, PB2 = E để nối chân điều khiển LCD MOV A, #80H ; Đặt tất cổng 8255 đầu MOV R0, #CNTPORT ; Nẹp địa ghi điều khiển MOVX @R0, A ; Xuất từ điều khiển MOV A, #38H ; Cấu hình LCD có hai dòng ma trận 57 ACALL CMDWRT ACALL DELAY MOV A, # 0EH ACALL CMDWRT ACALL DELAY MOV A, # 01H ACALL CMDWRT ACALL DELAY MOV A, # 06 ACALL CMDWRT ACALL DELAY MOV A, # 'N' ACALL DATAWRT ACALL DELAY MOV A, # '0' ACALL DATAWRT ACALL DELAY ; Chương trình ghi lệnh CMDWRT LCD CMDWRT: MOV R0, # APORT MOVX @R0, A MOV R0, # BPORT MOV A, # 00000100B MOVX NOP NOP MOV @R0, A ; Ghi lệnh LCD ; Chờ đến lần xuất (2ms) ; Bật trỏ cho LCD ; Ghi lệnh LCD ; Chờ lần xuất ; Xoá LCD ; Ghi lệnh LCD ; Dịch trỏ sang phải ; Ghi lệnh LCD ; Chờ lần xuất sau ; Ghi lệnh LCD ; v.v cho tất lệnh LCD ; Hiển thị liệu (chữ N) ; Gửi liệu LCD để hiển thị ; Chờ lần xuất sau ; Hiển thị chữ "0" ; Gửi LCD để hiển thị ; Chờ lần xuất sau ; v.v cho liệu khác ; Nạp địa cổng A ; Xuất thông tin tới chân liệu LCD ; Nạp địa cổng B ; RS=0, R/W=1, E=1 cho xung cao xuống thấp ; Kích hoạt chânRS, R/W, E LCD ; Tạo độ xung cho chân E A, # 00000000B ; RS=0, R/W=1, E=1 cho xung cao xuống thấp MOVX @R0, A ; Chốt thông tin chân liệu LCD RET ; Chương trình ghi lệnh DATAWRT ghi liệu LCD CMDWRT: MOV R0, # APORT ; Nạp địa cổng A MOVX @R0, A ; Xuất thông tin tới chân liệu LCD MOV R0, # BPORT ; Đặt RS=1, R/W=0, E=0 cho xung cao xuống thấp MOV A, # 00000101B ; Kích hoạt chân RS, R/W, E MOVX @R0, A ; Tạo độ xung cho chân E NOP NOP MOV A, # 00000001B ; Đặt RS=1, R/W=0, E=0 cho xung cao xuống thấp MOVX @RC, A ; Chốt thông tin chân liệu LCD RET Chương trình 15.2: ; Ghi lệnh liệu tới LCD có sử dụng kiểm tra cờ bận ; Giả sử PA 8255 nối tới D0 - D7 LCD ; PB0 = RS, PB1 = R/W, PB2 = E 8255 tới chân điều khiển LCD MOV A, #80H ; Đặt tất cổng 8255 đầu MOV R0, #CNTPORT ; Nạp địa ghi điều khiển MOVX @R0, A ; Xuất từ điều khiển MOV A, #38H ; Chọn LCD có hai dòng ma trận 57 ACALL NMDWRT ; Ghi lệnh LCD MOV A, # 0EH ; Lệnh LCD cho trỏ bật ACALL NMDWRT ; Ghi lệnh LCD MOV A, # 01H ; Xoá LCD ACALL NMDWRT ; Ghi lệnh LCD MOV A, # 06 ; Lệnh dịch trỏ sang phải ACALL CMDWRT ; Ghi lệnh LCD ; v.v cho tất lệnh LCD MOV A, # 'N' ; Hiển thị liệu (chữ N) ACALL NCMDWRT ; Gửi liệu LCD để hiển thị MOV A, # '0' ; Hiển thị chữ "0" ACALL NDADWRT ; Gửi LCD để hiển thị ; v.v cho liệu khác ; Chương trình ghi lệnh NCMDWRT có hiển thị cờ bận NCMDWRT: MOV R2, A ; Lưu giá trị ghi A MOV A, #90H ; Đặt PA cổng đầu vào để đọc trạng thái LCD MOV R0, # CNTPORT ; Nạp địa ghi điều khiển MOVX @R0, A ; Đặt PA đầu vào, PB đầu MOV A, # 00000110B ; RS=0, R/W=1, E=1 đọc lệnh MOV @R0, BPORT ; Nạp địa cổng B MOVX R0, A ; RS=0, R/W=1 cho chân RD RS MOV R0, APORT ; Nạp địa cổng A MOVX @R0 ; Đọc ghi lệnh RLC A ; Chuyển D7 (cờ bận) vào bit nhớ carry JC READY ; Chờ LCD sẵn sàng MOV A, #80H ; Đặt lại PA, PB thành đầu MOV R0, #CNTPORT ; Nạp địa cổng điều khiển MOVX @R0, A ; Xuất từ điều khiển tới 8255 MOV A, R2 ; Nhận giá trị trả lại tới LCD MOV R0, #APORT ; Nạp địa cổng A MOVX @R0, A ; Xuất thông tin tới chân liệu LCD MOV R0, #BPORT ; Nạp địa cổng B MOV A, #00000100B ; Đặt RS=0, R/W=0, E=1 cho xung thấp lên cao MOVX @R0, A ; Kích hoạt RS, R/W, E LCD NOP ; Tạo độ rộng xung chân E NOP MOV A, #00000000B ; Đặt RS=0, R/W=0, E=0 cho xung cao xuống thấp MOVX @R0, A ; Chốt thông tin chân liệu LCD RET ; Chương trình ghi liệu NDATAWRT sử dụng cờ bận NCMDWRT: MOV R2, A ; Lưu giá trị ghi A MOV A, #90H ; Đặt PA cổng đầu vào để đọc trạng thái LCD MOV R0, # CNTPORT ; Nạp địa ghi điều khiển MOVX @R0, A ; Đặt PA đầu vào, PB đầu MOV A, # 00000110B ; RS=0, R/W=1, E=1 đọc lệnh MOV @R0, BPORT ; Nạp địa cổng B MOVX R0, A ; RS=0, R/W=1 cho chân RD RS READY: READY: MOV MOVX RLC JC MOV MOV MOVX MOV MOV MOVX MOV MOV R0, APORT @R0 A READY A, #80H R0, #CNTPORT @R0, A A, R2 R0, #APORT @R0, A R0, #BPORT A, #00000101B ; Nạp địa cổng A ; Đọc ghi lệnh ; Chuyển D7 (cờ bận) vào bit nhớ carry ; Chờ LCD sẵn sàng ; Đặt lại PA, PB thành đầu ; Nạp địa cổng điều khiển ; Xuất từ điều khiển tới 8255 ; Nhận giá trị trả lại tới LCD ; Nạp địa cổng A ; Xuất thông tin tới chân liệu LCD ; Nạp địa cổng B ; Đặt RS=1, R/W=0, E=1 cho xung thấp lên cao MOVX NOP NOP MOV MOVX RET @R0, A ; Kích hoạt RS, R/W, E LCD ; Tạo độ rộng xung chân E A, #00000001B ; Đặt RS=1, R/W=0, E=0 cho xung cao xuống thấp @R0, A ; Chốt thông tin chân liệu LCD 15.2.3 Nối ghép ADC tới 8255 Các ADC trình bày chương 12 Dưới chương trình ADC nối tới 8255 theo sơ đồ cho hình 115.11 BACK: sàng chưa MOV MOV MOVX MOV MOVX ANL A, #80H R1, #CRPORT @R1, A R1, #CPORT A, @R1 A,, #00000001B ; Từ điều khiển với PA = đầu PC = đầu vào ; Nạp địa cổng điều khiển ; Đặt PA = đầu PC = đầu vào ; Nạp địa cổng C ; Đọc địa cổng C để xem ADC sẵn sàng chưa ; Che tất bít cổng C để xem ADC sẵn JNZ BACK MOV MOVX R1, #APORT A, @R1 ; Giữ hiển thị PC0 che EOC ; Kết thúc hội thoại nhận liệu ADC ; Nạp địa PA ; A = đầu vào liệu tương tự Cho đến ta trao đổi chế độ vào/ đơn giản 8255 trình bày nhiều ví dụ Ta xét tiếp chế độ khác ADC804 RD 8255 D0 D7 A2 A7 PA0 PA7 PC0 Decoding Circuyiry RESET WR D0 D7 INTR VCC CLK R 5V 10k 150pF CLK IN Vin(+) Vin(-) A GND Vref/2 GND 10K POT CS Hình 15.11: Nối ghép ADC 804 với 8255 15.3 Các chế độ khác 8255 15.3.1 Chế độ thiết lập/ xoá bit BSR Một đặc tính cổng C bit điều khiển riêng rẽ Chế độ BSR cho phép ta thiết lập bit PC0 - PC7 lên cao xuống thấp hình 15.12 Ví dụ 15.6 15.7 trình bày cách sử dụng chế độ nào? D7 D6 D5 x x BSR Mode D4 D3 D2 x Not Used Generally = D1 D0 S/R Bit Select 000=Bit0 100=Bit4 001 = Bit1 101=Bit5 010 = Bit2 110=Bit6 011 = Bit3 111=Bit7 Set=1 Reset=0 Hình 15.12: Từ điều khiển chế độ BSR Ví dụ 15.6: Hãy lập trình PCA 8255 chế độ BSR bit D7 từ điều khiển phải mức thấp Để PC4 mức cao, ta cần từ điều khiển "0xxx1001" mức thấp ta cần "0xxx1000" Các bít đánh dấu x ta không cần quan tâm thường chúng đặt MOV MOV MOVX ACALL MOV MOVX ACALL A, 00001001B R1, #CNTPORT @R1, A DELAY A, #00001000B @R1, A DELAY ; Đặt byte điều khiển cho PC4 =1 ; Nạp cổng ghi điều khiển ; Tạo PC4 = ; Thời gian giữ chậm cho xung cao ; Đặt byte điều khiển cho PC4 = ; Tạo PC4 = D0 D7 WR RD A2 A7 Decoding Circuyiry A0 A7 8255 WR RD A0 A7 PC4 CS Hình 15.13: Cấu hình cho ví dụ 15.6 15.7 Ví dụ 15.7: Hãy lập trình 8255 theo sơ đồ 15.13 để: a) Đặt PC2 lên cao b) Sử dụng PC6 để tạo xung vuông liên tục với 66% độ đầy xung Lời giải: a) MOV R0, # CNTPORT MOV A, # 0XXX0101 MOV @R0, A b) AGAIN: MOV MOV MOVX ACALL ACALL MOV ; Byte điều khiển A, #00001101B R0, #CNTPORT @R0, A DELAY DELAY A, #00001100B ; Chọn PC6 = ; Nạp địa ghi điều khiển ; Tạo PC6 = ; PC6 = D7 D6 D5 D4 D3 D2 D1 D0 Port A Output PC1 OBFB PC2 ACKB X INTEB OBFB INTEB iNTEA PB7 PB0 I/O WR I/O s D7 D6 D5 D4 D3 D2 D1 D0 INTEA PC0 1/0 StatusWord-Mode1Output OBFA INTEB Port B with Hanshake Signals INTEB Port B Output PC6 I/O Mode INTEA Port B Mode1 ACKA Port B Output PC6 PC4.51=Input,0=Outpput OBFA Port A Output PC7 Port A Mode1 S ControlWord-Mode1Output Port A Mode1 INTEA PC4 PC4 DELAY ; Thời gian giữ chậm AGAIN Port A with Hanshake Signals ACALL SJMP Port A Output INTEA is controlled by PC6 in BSR mode PC4.5 INTEB is controlled by PC2 in BSR mode Hình 15.14: Biểu đồ đầu 8255 chế độ WR OBF INTEB ACK Output Hình 15.15: Biểu đồ định thời 8255 chế độ 15.3.2 8255 chế độ 1: Vào/ với khả bắt tay Một đặc điểm mạnh 8255 khả bắt tay với thiết bị khác Khả bắt tay trình truyền thông qua lại hai thiết bị thông minh Ví dụ thiết bị có tín hiệu bắt tay máy in Dưới ta trình bày tín hiệu bắt tay 8255 với máy in Chế độ 1: Xuất liệu với tín hiệu bắt tay Như trình bày hình 15.14 cổng A B sử dụng cổng đầu để gửi liệu tới thiết bị với tín hiệu bắt tay Các tín hiệu bắt tay cho hai cổng A B cấp bit cổng C Hình 15.15 biểu đồ định thời 8255 Dưới phần giải thích tín hiệu bắt tay tính hợp lý chúng cổng A, cổng B hoàn toàn tương tự Tín hiệu OBFa : Đây tín hiệu đệm đầu đầy cổng A tích cực mức thấp từ chân PC7 để báo CPU ghi byte liệu tới cổng A Tín hiệu phải nối tới chân STROBE thiết bị thu nhận liệu (chẳng hạn máy in) để báo đọc byte liệu từ chốt cổng Tín hiệu ACKa : Đây tín hiệu chấp nhận cổng A có mức tích cực mức thấp nhân chân PC6 8255 Qua tín hiệu ACKa 8255 biết tín hiệu cổng A thiết bị thu nhận lấy Khi thiết bị nhận lấy liệu từ cổng A báo 8255 qua tín hiệu ACKa Lúc 8255 bật OBFa lên cao để báo liệu cổng A liệu cũ CPU ghi byte liệu tới cổng A OBFa lại xuống thấp v.v Tín hiệu INTRa: Đây tín hiệu yêu cầu ngắt cổng A có mức tích cực cao từ chân PC3 8255 Tín hiệu ACK tín hiệu có độ dài hạn chế Khi xuống thấp (tích cực) làm cho OBFa không tích cực, mức thấp thời gian ngắn sau trở nên cao (không tích cực) Sườn lên ACK kích hoạt INTRa lên cao Tín hiệu cao chân INTRa dùng để gây ý CPU CPU thông báo qua tín hiệu INTRa máy in nhận byte cuối sẵn sàng để nhận byte liệu khác INTRa ngắt CPU ngừng thứ làm ép gửi byte tới cổng A để in Điều quan trọng ý INTRa bật lên INTRa, OBFa ACKa mức cao Nó xoá không CPU ghi byte tới cổng A Tín hiệu INTEa: Đây tín hiệu cho phép ngắt cổng A 8255 cấm INTRa để ngăn không ngắt CPU Đây chức tín hiệu INTEa Nó mạch lật Flip - Flop bên thiết kế để che (cấm) INTRa Tín hiệu INTRa bật lên bị xoá qua cổng C chế độ BSR INTEa Flip - Plop điều khiển PC6 Từ trạng thái: 8255 cho phép hiển thị trạng thái tín hiệu INTR, OBF INTE cho hai cổng A B Điều thực cách đọc cổng C vào ghi tổng kiểm tra bit Đặc điểm cho phép thực thi thăm dò thay cho ngắt phần cứng 13 14 25 Hình 15.16: Đầu cắm DB-25 (hình 15.17 mờ không vẽ được) Hình 15.17: Đầu cáp máy in Centronics Bảng 15.2: Các chân tín hiệu máy in Centronics Chân số 10 Mô tả STROBE Dữ liệu D0 Dữ liệu D1 Dữ liệu D2 Dữ liệu D3 Dữ liệu D4 Dữ liệu D5 Dữ liệu D6 Dữ liệu D7 Chân số 11 12 13 14 15 16 17 18-25 Mô tả Bận (busy) Hết giấy (out of paper) Chọn (select) Tự nạp ( Autofeed ) Lỗi ( Error ) Khởi tạo máy in Chọn đầu vào ( Select input ) Đất (ground) ACK (chấp nhận) Các bước truyền thông có bắt tay máy in 8255 Một byte liệu gửi đến bus liệu máy in Máy in báo có byte liệu cần in cách kích hoạt tín hiệu đầu vào STROBE Khi máy nhận liệu báo bên gửi cách kích hoạt tín hiệu đầu gọi ACK (chấp nhận) Tín hiệu ACK khởi tạo trình cấp byte khác đến máy in Như ta thấy từ bước byte liệu tới máy in không đủ Máy in phải thông báo diện liệu Khi liệu gửi máy in bận hết giấy, máy in phải báo cho bên gửi nhận lấy liệu Hình 15.16 15.17 trình ổ cắm DB25 đầu cáp máy in Centronics tương ứng