1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình lập trình hệ thống

129 12 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 129
Dung lượng 1,97 MB

Nội dung

Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống Giáo trình lập trình hệ thống

Tài liệu Lập trình hệ thống Chương Chương KIẾN TRÚC VÀ HOẠT ĐỘNG CỦA HỆ VI XỬ LÝ / MÁY TÍNH Cấu trúc luận lý Máy tính số (Digital computer) máy giải vấn đề cách thực thị người cung cấp Chuỗi thị gọi chương trình (program) Các mạch điện tử máy tính số thực số giới hạn thị đơn giản cho trước Tập hợp thị gọi tập lệnh máy tính Tất chương trình muốn thực thi phải biến đổi sang tập lệnh trước thi hành Các lệnh là: - Cộng số So sánh với Di chuyển liệu Tập lệnh máy tính tạo thành ngơn ngữ giúp người tác động lên máy tính, ngơn ngữ gọi ngôn ngữ máy (machine language) Tuy nhiên, hầu hết ngôn ngữ máy đơn giản nên để thực yêu cầu đó, người thiết kế phải thực cơng việc phức tạp Đó chuyển yêu cầu thành thị có chứa tập lệnh máy Vấn đề giải cách thiết kế tập lệnh thích hợp cho người tập lệnh cài đặt sẵn máy (built-in) Ngôn ngữ máy gọi ngôn ngữ cấp (L1) ngôn ngữ vừa hình thành gọi ngơn ngữ cấp (L2) Tuy nhiên, thực tế, để thực được, ngôn ngữ L1 L2 không khác nhiều Như vậy, ngôn ngữ L2 không thật giúp ích nhiều cho người thiết kế Do đó, tập lệnh hình thành hướng người nhiều máy tính, tập lệnh tạo thành ngôn ngữ ta gọi ngơn ngữ L3 Ta viết chương trình L3 tồn máy tính sử dụng ngơn ngữ L3 (máy ảo L3) Các chương trình dịch sang ngơn ngữ L2 thực thi chương trình dịch L2 Việc xây dựng tồn chuỗi ngơn ngữ, ngơn ngữ tạo thích hợp ngơn ngữ trước tiếp tục nhận ngơn ngữ thích hợp Sơ đồ máy ảo n cấp biểu diễn sau: Trang Tài liệu Lập trình hệ thống Chương Cấp n Máy ảo Mn dùng ngôn ngữ máy Ln Chương trình Ln dịch thành ngơn ngữ máy cấp thấp Cấp Máy ảo M3 dùng ngơn ngữ máy L3 Chương trình L3 dịch thành ngôn ngữ L2 hay L1 Cấp Máy ảo M2 dùng ngơn ngữ máy L2 Chương trình L2 dịch thành ngôn ngữ máy L1 Cấp Máy tính số M1 dùng ngơn ngữ máy L1 Chương trình L1 thực thi trực tiếp mạch điện tử Hình 1.1 Máy ảo n cấp Một máy tính số có n cấp xem có n-1 máy ảo khác nhau, máy ảo có ngơn ngữ máy riêng Các chương trình viết máy ảo thực thi trực tiếp mà phải dịch thành ngôn ngữ máy cấp thấp Chỉ có máy thật dùng ngơn ngữ máy L1 thực thi trực tiếp mạch điện tử Một lập trình viên sử dụng máy ảo cấp n khơng cần biết tất trình dịch Chương trình máy ảo cấp n thực thi cách dịch thành ngôn ngữ máy cấp thấp ngôn ngữ máy dịch thành ngôn ngữ máy thấp hay dịch trực tiếp thành ngôn ngữ máy L1 thực thi trực tiếp mạch điện tử Trang Tài liệu Lập trình hệ thống Chương Về bản, máy tính gồm có cấp: Cấp Cấp ngơn ngữ hướng vấn đề Dịch (chương trình dịch) Cấp Cấp ngôn ngữ hợp dịch Dịch (hợp dịch) Cấp Cấp hệ điều hành Dịch phần (hệ điều hành) Cấp Cấp máy quy ước Thơng dịch (vi chương trình) Cấp Cấp vi lập trình Vi chương trình (phần cứng) Cấp Cấp logic số Hình 1.2 – Các cấp máy tính số Cấp phần cứng máy tính Các mạch điện tử cấp thực thi chương trình ngơn ngữ máy cấp Trong cấp logic số, đối tượng quan tâm cổng logic Các cổng xây dựng từ nhóm transistor Cấp cấp ngơn ngữ máy thật Cấp có chương trình gọi vi chương trình (microprogram), vi chương trình có nhiệm vụ thơng dịch thị cấp Hầu hết lệnh cấp di chuyển liệu từ phần đến phần khác máy hay thực việc số kiểm tra đơn giản Mỗi máy cấp có hay nhiều vi chương trình chạy chúng Mỗi vi chương trình xác định ngôn ngữ cấp Các máy cấp có nhiều điểm chung máy cấp hãng sản xuất khác Các lệnh máy cấp thực thi cách thông dịch vi chương trình mà khơng phải thực thi trực tiếp phần cứng Cấp thứ thường cấp hỗn hợp Hầu hết lệnh ngôn ngữ cấp máy có ngơn ngữ cấp thời có thêm tập lệnh mới, tổ chức Trang Tài liệu Lập trình hệ thống Chương nhớ khác khả chạy hay nhiều chương trình song song Các lệnh thêm vào thực thi trình thơng dịch chạy cấp 2, gọi hệ điều hành Nhiều lệnh cấp thực thi trực tiếp vi chương trình số lệnh khác thơng dịch hệ điều hành (do đó, cấp cấp hỗn hợp) Cấp thật dạng tượng trưng cho ngôn ngữ Cấp cung cấp phương pháp viết chương trình cho cấp 1, 2, dễ dàng Các chương trình viết hợp ngữ dịch sang ngôn ngữ cấp 1, 2, sau thơng dịch máy ảo hay thực tương ứng Cấp bao gồm ngôn ngữ thiết kế cho người lập trình nhằm giải vấn đề cụ thể Các ngôn ngữ gọi cấp cao Một số ngôn ngữ cấp cao Basic, C, Cobol, Fortran, Lisp, Prolog, Pascal ngơn ngữ lập trình hướng đối tượng C++, J++, … Các chương trình viết ngôn ngữ thường dịch sang cấp hay trình biên dịch (compiler) Giao tiếp ngoại vi Ta phân biệt tất phương pháp xuất / nhập liệu: - Nhập / xuất cách hỏi trạng thái thiết bị ngoại vi (polling) Nhập / xuất ngắt (interrupt) Nhập / xuất cách truy xuất trực tiếp vào nhớ dùng phần cứng phụ trợ (DMA) 2.1 Nhập / xuất liệu cách hỏi vòng (polling) Ta biết vấn đề điều khiển nhập / xuất liệu đơn giản trường hợp thiết bị ngoại vi lúc làm việc với μP Ta ví dụ hiển thị Led đoạn lúc sẵn sàng hiển thị liệu mà μP gởi liệu Tuy nhiên, thực tế, lúc μP làm việc với thiết bị ngoại vi có tính Ví dụ làm việc với máy in, μP yêu cầu in máy in không sẵn sàng (giả sử hết giấy, kẹt giấy, …) Khi đó, μP phải kiểm tra xem thiết bị mà cần giao tiếp có sẵn sàng hay khơng thiết bị sẵn sàng thực trao đổi liệu Để kiểm tra thiết bị ngoại vi, μP phải sử dụng tín hiệu bắt tay (handshake) xác định thiết bị, xem thiết bị có yêu cầu trao đổi liệu Các tín hiệu lấy từ mạch giao tiếp người thiết kế tạo Giả sử hệ thống có thiết bị ngoại vi, thiết bị có liệu cần truyền đến μP gởi xung để chốt liệu đồng thời tạo tín hiệu sẵn sàng cho thiết bị Khi μP kiểm tra tín hiệu sẵn sàng thiết bị đọc liệu vào từ mạch chốt xoá tín hiệu sẵn sàng Trong trường hợp μP muốn gởi liệu thiết bị 2, đọc tín hiệu sẵn sàng thiết bị 2, thiết bị nhận liệu μP gởi liệu mạch chốt thiết bị đọc liệu vào Trang Tài liệu Lập trình hệ thống Chương 2.2 Ngắt xử lý ngắt Trong cách thức thực trao đổi liệu cách hỏi vòng trên, trước tiến hành thực μP phải kiểm tra trạng thái sẵn sàng thiết bị ngoại vi Tuy nhiên thực tế ta cần phải tận dụng khả μP để làm công việc khác mà tốn thời gian kiểm tra thiết bị, có yêu cầu trao đổi liệu tạm dừng cơng việc Cách làm việc gọi ngắt μP, có ngắt xảy ta phải thực gọi chương trình phục vụ ngắt địa xác định μP Các tín hiệu ngắt từ thiết bị ngoại vi đưa vào μP thông qua chân NMI hay INTR 2.2.1 Các loại ngắt ™ Ngắt cứng: yêu cầu ngắt từ chân NMI hay INTR Ngắt cứng NMI ngắt khơng che cịn ngắt cứng INTR che Các lệnh CLI (Clear Interrupt) STI (Set Interrupt) ảnh hưởng đến việc μP có chấp nhận yêu cầu ngắt chân INTR hay không Yêu cầu ngắt chân INTR có kiểu ngắt từ 00h ÷ FFh Kiểu ngắt đưa vào bus liệu để μP xác định kiểu ngắt (dùng cho thiết bị ngoại vi khác nhau) 74LS245 VCC 19 INT7 INT6 INT5 INT4 INT3 INT2 INT1 INT0 DIR G A8 A7 A6 A5 A4 A3 A2 A1 B8 B7 B6 B5 B4 B3 B2 B1 11 12 13 14 15 16 17 18 8 10 11 12 13 14 15 16 17 18 19 20 GND VCC AD14 AD15 AD13 A16/S3 AD12 A17/S4 AD11 A18/S5 AD10 A19/S6 AD9 BHE/S7 MN/MX AD8 AD7 RD AD6 HOLD (RQ/GT0) AD5 HLDA (RQ/GT1) WR (LOCK) AD4 AD3 IO/M (S2) DT/R (S1) AD2 AD1 DEN (S0) ALE (QS0) AD0 NMI INTA (QS1) INTR TEST CLK READY GND RESET 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 8086 11 12 Hình 1.3 – Kết nối ngắt đơn giản ™ Ngắt mềm: ngắt thực phần mềm tác động người sử dụng 2.2.2 Đáp ứng μP có yêu cầu ngắt Khi có yêu cầu ngắt đến μP phép ngắt, μP thực công việc sau: - [SP] ← SP – 2, [SP] ← FR (Flag Register): cất ghi cờ vào stack IF ← 0, TF ← 0: không cho thực ngắt khác SP ← SP – 2, [SP] ← CS: cất địa đoạn mã vào stack SP ← SP – 2, [SP] ← IP: cất địa trở sau phục vụ ngắt Trang Tài liệu Lập trình hệ thống - Chương IP ← [Số_hiệu_ngắt*4], CS ← [Số_hiệu_ngắt*4 + 2]: lấy lệnh địa phục vụ ngắt tương ứng Sau kết thúc chương trình phục vụ ngắt (khi gặp lệnh IRET): + IP ← [SP], SP ← SP + + CS ← [SP], SP ← SP + 2: lấy lại địa trước gọi chương trình phục vụ ngắt + FR ← [SP], SP ← SP + 2: lấy lại giá trị ghi cờ 2.2.3 Xử lý ưu tiên ngắt Như ta biết trên, μP thực lệnh, có ngắt xảy μP tạm ngừng chương trình thực thi chương trình phục vụ ngắt Trong thực tế có trường hợp có nhiều yêu cầu ngắt khác lúc, μP phục vụ cho ngắt theo thứ tự ưu tiên với nguyên tắc ngắt có mức ưu tiên cao phục vụ cho ngắt trước Các mức ưu tiên ngắt (từ mức thấp đến mức cao nhất): - Ngắt thực chạy lệnh (INT 1) Ngắt che INTR Ngắt không che NMI Ngắt nội (INT 0: xảy phép chia số 0, ngắt mềm) 2.3 Nhập / xuất liệu DMA (Direct Memory Access) Trong phương thức trao đổi liệu hai phần trình bày việc trao đổi liệu thiết bị ngoại vi hệ thống thường theo trình tự sau: từ ngoại vi đến vi xử lý vào nhớ hay từ nhớ đến vi xử lý ghi ngoại vi Trong thực tế có trường hợp ta cần thực trao đổi liệu ngoại vi nhớ Khi người ta đưa chế truy xuất nhớ trực tiếp (DMA) Để thực vấn đề này, hệ vi xử lý thông thường dùng thêm mạch chuyên dụng để điều khiển trình truy xuất nhớ trực tiếp (DMAC – Direct Memory Access Controller) Có tất chế hoạt động: ¾ Tận dụng thời gian CPU không dùng bus: Ta phải dùng thêm mạch phát chu kỳ xử lý nội CPU tận dụng chu kỳ để thực trao đổi liệu ¾ Treo CPU để trao đổi byte: CPU không bị treo khoảng thời gian dài mà bị treo thời gian ngắn đủ để trao đổi byte liệu nhớ ngoại vi Do đó, cơng việc CPU khơng bị gián đoạn mà bị chậm ¾ Treo CPU khoảng thời gian để trao đổi khối liệu: Trong chế này, CPU bị treo suốt trình trao đổi liệu - CPU ghi từ lệnh từ chế độ làm việc vào DMAC Khi thiết bị ngoại vi có yêu cầu trao đổi liệu, gởi tín hiệu DRQ = (DMA Request) đến DMAC Trang Tài liệu Lập trình hệ thống - Chương DMAC gởi tín hiệu HRQ (Hold Request) đến chân HOLD CPU để yêu cầu treo CPU Tín hiệu giữ mức cao hết trình trao đổi liệu Sau nhận yêu cầu treo, CPU thực hết chu kỳ bus m?nh treo bus gởi tín hiệu HLDA (Hold Acknowledge) để báo cho DMAC biết sử dụng bus DMAC chuyển liệu từ nhớ đến ngoại vi cách: đưa địa byte bus địa đưa tín hiệu MEMR để đọc byte từ nhớ, DMAC đưa tín hiệu IOW để ghi liệu ngoại vi Sau đó, DMAC giảm số byte cần truyền, cập nhật địa nhớ lặp lại trình hết byte cần truyền μP HOLD HLDA Address bus Data bus DMAC HRQ DRQ I/O DRQ HACK DACK DACK Memory Control bus Hình 1.4 – Giao tiếp DMAC với hệ vi xử lý Hai tín hiệu dùng để yêu cầu treo chấp nhận yêu cầu treo CPU dùng cho chế DMA HOLD HLDA mơ tả sau: T4 hay T1 CLK HOLD HLDA Hình 1.5 – Tín hiệu HOLD HLDA Trang Tài liệu Lập trình hệ thống Chương Bus CPU Bus hệ thống (system bus) Registers ALU Memory board I/O board Bus nội (on-chip bus) Bus cục (local bus) Đồng xử lý Hình 1.6 - Các bus hệ thống máy tính Bus đường truyền tín hiệu điện nối thiết bị khác hệ thống máy tính Bus thường có từ 50 đến 100 dây dẫn gắn mainboard, dây có đầu nối đưa ra, đầu xếp cách khoảng quy định để cắm vào I/O board hay board nhớ (bus hệ thống – system bus) Cũng có bus dùng cho mục đích chuyên biệt, thí dụ nối vi xử lý với hay nhiều vi xử lý khác nối với nhớ cục (local bus) Trong vi xử lý có số bus để nối thành phần bên vi xử lý với Người thiết kế chip vi xử lý tuỳ ý lựa chọn loại bus bên nó, cịn với bus liên hệ bên ngồi cần phải xác định rõ quy tắc làm việc đặc điểm kỹ thuật điện khí bus để người thiết kế mainboard ghép nối chip vi xử lý với thiết bị khác Nói cách khác, bus phải tuân theo chuẩn Tập quy tắc chuẩn cịn gọi giao thức bus (bus protocol) Thường có nhiều thiết bị nối với bus, số thiết bị tích cực (active) địi hỏi truyền thơng bus, có thiết bị thụ động chờ yêu cầu từ thiết bị khác Các thiết bị tích cực gọi chủ (master) cịn thiết bị thụ động tớ (slave) Ví dụ: Khi CPU lệnh cho điều khiển đĩa đọc/ghi khối liệu CPU master cịn điều khiển đĩa slave Tuy nhiên, điều khiển đĩa lệnh cho nhớ nhận liệu lại giữ vai trò master Trang Tài liệu Lập trình hệ thống Chương 3.1 Bus Driver Bus Receiver Tín hiệu điện máy tính phát thường không đủ để điều khiển bus, bus dài có nhiều thiết bị nối với Chính mà hầu hết bus master nối với bus thông qua chip gọi bus driver, khuếch đại tín hiệu số Tương tự vậy, hầu hết slave nối với bus thông qua bus receiver Đối với thiết bị đóng vai trị master, đóng vai trị slave, người ta sử dụng chip kết hợp gọi transceiver Các chip đóng vai trị ghép nối thiết bị trạng thái, cho phép trạng thái thứ – hở mạch (thả nổi) Giống vi xử lý, bus có đường địa chỉ, đường số liệu đường điều khiển Tuy nhiên, không thiết có ánh xạ – tín hiệu chân vi xử lý đường dây bus Thí dụ: số chíp vi xử lý có chân ra, truyền tín hiệu báo chíp vi xử lý thực thao tác MEMR , MEMW , IOR , IOW hay thao tác khác Một bus điển hình thường có đường Các vấn đề quan trọng liên quan đến thiết kế bus là: xung clock bus (sự phân chia thời gian, hay gọi bus blocking), chế phân xử bus (bus arbitration), xử lý ngắt xử lý lỗi Các bus chia theo giao thức truyền thông thành hai loại riêng biệt bus đồng bus không đồng phụ thuộc vào việc sử dụng clock bus 3.2 Bus đồng (Synchronous bus) Mỗi chu kỳ bus bắt đầu việc xuất địa nhớ I/O port (chu kỳ xung nhịp T1) Bus điều khiển có tín hiệu tác động mức thấp MEMR , MEMW , IOR IOW Các chuỗi kiện xảy chu kỳ bus đọc nhớ: T1: μP xuất địa nhớ 20 bit Các đường liệu không hoạt động đường điều khiển bị cấm T2: Đường điều khiển MEMR xuống mức thấp Đơn vị nhớ ghi nhận chu kỳ bus trình đọc nhớ đặt byte hay word có địa lên data bus T3: μP đặt cấu hình để đường data bus nhập Trạng thái chủ yếu để nhớ có thời gian tìm kiếm byte hay word liệu T4: μP đợi liệu data bus Do đó, thực chốt data bus giải phóng đường điều khiển đọc nhớ Quá trình kết thúc chu kỳ bus Trang Tài liệu Lập trình hệ thống T1 Chương T2 T3 T4 Clk Address bus Địa Đọc nhớ hay I/O IOR hay MEMR Data bus Dữ liệu vào Address bus Địa Ghi nhớ hay I/O IOW hay MEMW Dữ liệu Data bus Hình 1.7 – Định chu kỳ bus đồng Trong chu kỳ bus, μP thực đọc I/O, ghi I/O, đọc nhớ hay ghi nhớ Các đường address bus control bus dùng để xác định địa nhớ hay I/O hướng truyền liệu data bus Chú ý μP điều khiển tất trình nên nhớ bắt buộc phải cung cấp liệu vào lúc MEMR lên mức cao trạng thái T4 Nếu không, μP đọc liệu ngẫu nhiên không mong muốn data bus Để giải vấn đề này, ta dùng thêm trạng thái chờ (wait state) ™ Truyền theo khối: Ngoài chu kỳ đọc/ghi, số bus truyền liệu đồng hỗ trợ truyền liệu theo khối Khi bắt đầu thao tác đọc khối, bus master báo cho slave biết số byte cần truyền đi, thí dụ truyền số chu kỳ T1, sau truyền byte, slave đưa chu kỳ byte đủ số byte thông báo Như vậy, đọc liệu theo khối, n byte liệu cần n+2 chu kỳ clock 3n chu kỳ Một cách khác truyền liệu nhanh giảm chu kỳ Tuy nhiên, giảm chu kỳ bus dẫn đến khó khăn mặt kỹ thuật, tín hiệu truyền đường khác khơng phải ln có tốc độ, dẫn đến hiệu ứng bus skew Điều quan trọng thời Trang 10 Tài liệu Lập trình hệ thống Chương Chương GIAO TIẾP CỐNG SONG SONG Cấu trúc cổng song song Cổng song song gồm có đường điều khiển, đường trạng thái đường liệu bao gồm chế độ hoạt động: - Chế độ tương thích (compatibility) - Chế độ nibble - Chế độ byte - Chế độ EPP (Enhanced Parallel Port) - Chế độ ECP (Extended Capabilities Port) chế độ sử dụng port song song chuẩn (SPP – Standard Parallel Port) chế độ 4, cần thêm phần cứng phép hoạt động tốc độ cao Sơ đồ chân máy in sau: Chân 10 Tín hiệu STR (Out) D0 D1 D2 D3 D4 D5 D6 D7 ACK (In) 11 BUSY (In) 12 13 14 PAPER EMPTY (In) SELECT (In) 15 17 ERROR (In) INIT (Out) SELECTIN (Out) 18-25 GROUND 16 AUTOFEED (Out) Mơ tả Mức tín hiệu thấp, truyền liệu tới máy in Bit liệu Bit liệu Bit liệu Bit liệu Bit liệu Bit liệu Bit liệu Bit liệu Mức thấp: máy in nhận ký tự có khả nhận Mức cao: ký tự nhận; đệm máy in đầy; khởi động máy in; máy in trạng thái off-line Mức cao: hết giấy Mức cao: máy in trạng thái online Tự động xuống dòng; mức thấp: máy in xuống dòng tự động Mức thấp: hết giấy; máy in offline; lỗi máy in Mức thấp: khởi động máy in Mức thấp: chọn máy in 0V Cổng song song có ba ghi truyền liệu điều khiển máy in Địa sở ghi cho tất cổng LPT (line printer) từ LPT1 đến LPT4 lưu trữ vùng liệu BIOS Thanh ghi liệu định vị offset 00h, ghi trang Trang 116 Tài liệu Lập trình hệ thống Chương thái 01h, ghi điều khiển 02h Thông thường, địa sở LPT1 378h, LPT2 278h, địa ghi trạng thái 379h 279h địa ghi điều khiển 37Ah 27Ah Tuy nhiên số trường hợp, địa cổng song song khác trình khởi động BIOS BIOS lưu trữ địa sau: Địa Chức 0000h:0408h Địa sở LPT1 0000h:040Ah Địa sở LPT2 0000h:040Ch Địa sở LPT3 Định dạng ghi sau: Thanh ghi liệu (hai chiều): Tín hiệu máy in D7 D6 D5 D4 D3 D2 D1 D0 Chân số Thanh ghi trạng thái máy in (chỉ đọc): Tín hiệu máy in BUSY Số chân cắm 11 ACK 10 PAPER EMPTY SELECT 12 ERROR IRQ 13 15 - 1 x x - - Thanh ghi điều khiển máy in: DIR IRQ hiệu x x Tín SELECTIN INIT AUTOFEED Enable máy in Số chân cắm - - 17 16 14 x: không sử dụng IRQ Enable: yêu cầu ngắt cứng; = cho phép; = không cho phép STROBE Chú ý chân BUSY nối với cổng đảo trước đưa vào ghi trạng thái, bit SELECTIN , AUTOFEED STROBE đưa qua cổng đảo trước đưa chân cổng máy in Thông thường tốc độ xử lý liệu thiết bị ngoại vi máy in chậm PC nhiều nên đường ACK , BUSY STR sử dụng cho kỹ thuật bắt tay Khởi đầu, PC đặt liệu lên bus sau kích hoạt đường STR xuống mức thấp để thông tin cho máy in biết liệu ổn định bus Khi máy in xử lý xong liệu, trả lại tín hiệu ACK xuống mức thấp để ghi nhận PC đợi đường BUSY từ máy in xuống thấp (máy in khơng bận) đưa tiếp liệu lên bus Trang 117 Tài liệu Lập trình hệ thống Chương Giao tiếp với thiết bị ngoại vi 2.1 Giao tiếp với máy tính Q trình giao tiếp với cổng song song dùng chế độ: chế độ chuẩn SPP chế độ mở rộng Việc giao tiếp chế độ chuẩn mô tả sau: 13 25 12 24 11 23 10 22 21 20 19 18 17 16 15 14 13 25 12 24 11 23 10 22 21 20 19 18 17 16 15 14 Hình 5.1 - Trao đổi liệu qua cổng song song PC dùng chế độ chuẩn Sơ đồ chân kết nối mô tả sau: PC1 Chức D0 D1 D2 D3 D4 BUSY ACK PAPER EMPTY SELECT ERROR GND PC2 Chân Chân 11 10 12 13 15 25 15 13 12 10 11 25 Chức ERROR SELECT PAPER EMPTY ACK BUSY D4 D3 D2 D1 D0 GND Ngồi ra, việc kết nối máy tính sử dụng cổng song song dùng chế độ mở rộng, chế độ cho phép giao tiếp với tốc độ cao Trang 118 Tài liệu Lập trình hệ thống Chương 13 25 12 24 11 23 10 22 21 20 19 18 17 16 15 14 13 25 12 24 11 23 10 22 21 20 19 18 17 16 15 14 Hình 5.2 - Trao đổi liệu qua cổng song song PC dùng chế độ mở rộng Sơ đồ chân kết nối mô tả sau: PC1 PC2 Chức Chân Chân Chức D0 D1 D2 D3 D4 D5 D6 D7 SELECT BUSY ACK SELECTIN INIT STROBE 13 11 10 17 16 17 16 13 11 10 D0 D1 D2 D3 D4 D5 D6 D7 SELECTIN INIT STROBE SELECT BUSY ACK 2.2 Giao tiếp thiết bị khác Quá trình giao tiếp với thiết bị ngoại vi thực thơng qua chế độ chuẩn Để đọc liệu, dùng IC ghép kênh 2Ỉ1 74LS257 dùng bit trạng thái cổng song song cịn xuất liệu sử dụng đường liệu D0 – D7 Trang 119 Tài liệu Lập trình hệ thống Chương 74LS06 STROBE 14 15 16 17 18 19 20 21 22 10 23 11 24 12 25 13 10K1 13 14 17 18 11 D0 D1 D2 D3 D4 D5 D6 D7 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 12 15 16 19 VCC CLK OE 74LS374 ACK PAPER EMPTY 74LS257 SELECT 74LS06 BUSY 12 1Y 2Y 3Y 4Y 74LS06 AUTO FEED 1B 2B 3B 4B A/B G 74LS06 SELECT IN 1A 2A 3A 4A SW0-7 11 14 10 13 15 12 15 16 19 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 D0 D1 D2 D3 D4 D5 D6 D7 CLK OE 13 14 17 18 10K 11 74LS374 Hình 5.3 – Mạch giao tiếp đơn giản thông qua cổng máy in Giao diện: Hình 5.4 – Giao diện chưnơg trình giao tiếp với cổng máy in Chương trình giao tiếp VB sử dụng thư viện liên kết động để trao đổi liệu với cổng máy in Thư viện IO.DLL bao gồm hàm sau: - Hàm PortOut: xuất byte cổng Trang 120 VCC Tài liệu Lập trình hệ thống Chương Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte) Port: địa cổng, Data: liệu xuất - Hàm PortWordOut: xuất word cổng Private Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer) - Hàm PortDWordOut: xuất double word cổng Private Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long) - Hàm PortIn: nhập byte từ cổng, trả giá trị nhập Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte - Hàm PortWordIn: nhập word từ cổng Private Declare Function PortWordIn (ByVal Port As Integer) As Integer Hàm PortDWordIn: nhập double word từ cổng Private Declare Function PortDWordIn (ByVal Port As Integer) As Long Lib "IO.DLL" Lib "IO.DLL" - Chương trình nguồn: VERSION 5.00 Begin VB.Form Form1 Caption = "Printer Interface Example" ClientHeight = 4665 ClientLeft = 60 ClientTop = 345 ClientWidth = 3585 LinkTopic = "Form1" ScaleHeight = 4665 ScaleWidth = 3585 StartUpPosition = 'Windows Default Begin VB.CommandButton cmdReceive Caption = "Receive" Height = 495 Left = 1200 TabIndex = 18 Top = 3960 Width = 1095 Trang 121 Tài liệu Lập trình hệ thống End Begin VB.CheckBox Height Index Left TabIndex Top Width End Begin VB.CheckBox Height Index Left TabIndex Top Width End Begin VB.CheckBox Height Index Left TabIndex Top Width End Begin VB.CheckBox Height Index Left TabIndex Top Width End Begin VB.CheckBox Height Index Left Chương chkSW = 375 = = 1800 = 17 = 3480 = 1575 chkSW = 375 = = 1800 = 16 = 3000 = 1575 chkSW = 375 = = 1800 = 15 = 2520 = 1575 chkSW = 375 = = 1800 = 14 = 2040 = 1575 chkSW = 375 = = 1800 Trang 122 Tài liệu Lập trình hệ thống Chương TabIndex = 13 Top = 1560 Width = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = Left = 1800 TabIndex = 12 Top = 1080 Width = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = Left = 1800 TabIndex = 11 Top = 600 Width = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = Left = 1800 TabIndex = 10 Top = 120 Width = 1575 End Begin VB.CommandButton cmdExit Caption = "Exit" Height = 495 Left = 2400 TabIndex = Top = 3960 Width = 975 End Begin VB.CommandButton cmdSend Trang 123 Tài liệu Lập trình hệ thống Caption = Height = Left = TabIndex = Top = Width = End Begin VB.Label lblLED BackStyle = Caption = Height = Index = Left = TabIndex = Top = Width = End Begin VB.Label lblLED BackStyle = Caption = Height = Index = Left = TabIndex = Top = Width = End Begin VB.Label lblLED BackStyle = Caption = Height = Index = Left = TabIndex = Top = Width = End Chương "Send" 495 3960 1095 'Transparent "LED7" 375 240 3480 1095 'Transparent "LED6" 375 240 3000 975 'Transparent "LED5" 375 240 2520 975 Trang 124 Tài liệu Lập trình hệ thống Begin VB.Label BackStyle Caption Height Index Left TabIndex Top Width End Begin VB.Label BackStyle Caption Height Index Left TabIndex Top Width End Begin VB.Label BackStyle Caption Height Index Left TabIndex Top Width End Begin VB.Label BackStyle Caption Height Index Left TabIndex Chương lblLED = = = = = = = = 'Transparent "LED4" 375 240 2040 975 lblLED = = = = = = = = 'Transparent "LED3" 375 240 1560 975 lblLED = = = = = = = = 'Transparent "LED2" 375 240 1080 975 lblLED = = = = = = 'Transparent "LED1" 375 240 Trang 125 Tài liệu Lập trình hệ thống Top Width End Begin VB.Label BackStyle Caption Height Index Left TabIndex Top Width End Begin VB.Shape BorderColor FillColor FillStyle Height Index Left Shape Top Width End Begin VB.Shape BorderColor FillColor FillStyle Height Index Left Shape Top Width End Begin VB.Shape BorderColor Chương = = 600 975 lblLED = = = = = = = = 'Transparent "LED0" 375 240 120 975 shpLED = = = = = = = = = &H000000FF& &H000000FF& 'Solid 375 840 'Circle 3480 375 shpLED = = = = = = = = = &H000000FF& &H000000FF& 'Solid 375 840 'Circle 3000 375 shpLED = &H000000FF& Trang 126 Tài liệu Lập trình hệ thống FillColor = FillStyle = Height = Index = Left = Shape = Top = Width = End Begin VB.Shape shpLED BorderColor = FillColor = FillStyle = Height = Index = Left = Shape = Top = Width = End Begin VB.Shape shpLED BorderColor = FillColor = FillStyle = Height = Index = Left = Shape = Top = Width = End Begin VB.Shape shpLED BorderColor = FillColor = FillStyle = Height = Index = Chương &H000000FF& 'Solid 375 840 'Circle 2520 375 &H000000FF& &H000000FF& 'Solid 375 840 'Circle 2040 375 &H000000FF& &H000000FF& 'Solid 375 840 'Circle 1560 375 &H000000FF& &H000000FF& 'Solid 375 Trang 127 Tài liệu Lập trình hệ thống Chương Left = 840 Shape = 'Circle Top = 1080 Width = 375 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 'Solid Height = 375 Index = Left = 840 Shape = 'Circle Top = 600 Width = 375 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 'Solid Height = 375 Index = Left = 840 Shape = 'Circle Top = 120 Width = 375 End End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False 'IO.DLL Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte) Trang 128 Tài liệu Lập trình hệ thống Chương Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte 'Variable Private BA_LPT As Integer Private Sub cmdExit_Click() End End Sub Private Sub cmdReceive_Click() Dim n As Integer Dim n1 As Integer Dim i As Integer PortOut BA_LPT + 2, &H8 'SELECTIN = PortOut BA_LPT + 2, 'SELECTIN = n1 = PortIn(BA_LPT + 1) 'Doc bit thap n1 = n1 / &H10 'Dich phai bit PortOut BA_LPT + 2, 'AUTOFEED=1 n = PortIn(BA_LPT + 1) 'Doc bit cao n = n And &HF0 n = n + n1 For i = To chkSW(i).Value = n Mod If chkSW(i).Value = Then chkSW(i).Caption = "Switch " & Str(i) & " off" Else chkSW(i).Caption = "Switch " & Str(i) & " on" End If n = Fix(n / 2) Next i End Sub Private Sub cmdSend_Click() Dim t As Integer Dim i As Integer Trang 129 Tài liệu Lập trình hệ thống Dim s As String t = For i = To t = t + (2 ^ Next i PortOut BA_LPT, PortOut BA_LPT, PortOut BA_LPT, End Sub Chương i) * (1 - shpLED(i).FillStyle) t 'STROBE = 'STROBE = Private Sub Form_Load() BA_LPT = &H378 PortOut BA_LPT + 2, End Sub Private Sub lblLED_Click(Index As Integer) shpLED(Index).FillStyle shpLED(Index).FillStyle End Sub Trang 130 ... WH_JOURNALRECORD Hệ thống WH_JOURNALPLAYBACK Hệ thống WH_FOREGROUNDIDLE Luồng hay hệ thống WH_SHELL Luồng hay hệ thống WH_KEYBOARD Luồng hay hệ thống WH_MOUSE Luồng hay hệ thống WH_MSGFILTER Luồng hay hệ thống. .. liệu Lập trình hệ thống Chương m vi thực hàm câu móc mơ tả sau: Hook m vi WH_CALLWNDPROC Luồng hay hệ thống WH_CBT Luồng hay hệ thống WH_DEBUG Luồng hay hệ thống WH_GETMESSAGE Luồng hay hệ thống. .. Quá trình ngắt mơ tả sau: Chương trình ISR Lưu trữ ghi cần thiết … Khôi phục ghi Quay chương trình (IRET) Hình 2.1 – Quá trình thực ngắt Trang 34 Tài liệu Lập trình hệ thống Chương Trong trình

Ngày đăng: 06/04/2021, 14:30

TỪ KHÓA LIÊN QUAN

w