TRAO ĐỔI DỬ LIỆU BẰNG NGẮT

Một phần của tài liệu giáo trình nghề sửa chữa điện tử công nghiệp (Trang 84)

Trong cách tổ chức trao đổi dử liệu thơng qua việc thăm dị trạng thái sẳn sàng của thiết bị ngoại vi như trình bày ở trên, trước khi tiến hành bất kỳ một cuộc trao đổi dử liệu nào CPU phải dành tồn bộ thời gian vào việc xác định trạng thái sẳn sàng làm việc của thiết bị ngoại vi. Trong hệ thống vi xử lý với cách làm việc như vậy, thơng thường CPU được thiết kế chủ yếu chỉ là để phục vụ cho việc vào/ra dử liệu và thực hiện các xử lý liên quan.

Trong thực tế để tận dụng khả năng của CPU nhằm thực hiện thêm nhiều cơng việc khác, chỉ khi nào cần trao đổi dử liệu thì mới yêu cầu CPU tạm dừng cơng việc đang làm để thực hiên thao tác trao đổi dử liệu. Sau khi hồn thành việc trao đổi dử liệu thì CPU lại quay về làm tiếp cơng việc dang dở vừa rồi. Cách làm việc theo kiểu này gọi là ngắt CPU. Muốn đạt được điều này phải tổ chức hệ thống sao cho cĩ thể tận dụng được khả năng thực hiện các chương trình phục vụ ngắt tại các địa chỉ xác định. Như đã biết trong 8085A cĩ các chân vào ngắt INTR, TRAP, RST 5.5-7.5 được sử dụng vào việc đưa các yêu cầu ngắt vào cho CPU. Các ngắt này được chia thành 3 nhĩm.

• Nhĩm ngắt INTR

• Nhĩm ngắt RST

• Nhĩm ngắt TRAP

2.1 T chc ngt

Hình 4.3 trình bày sơ đồ tổ chức ngắt INTR. CPU sẻ tạm dừng chương triình chính khi cĩ tín hiệu ngắt đưa vào chân INTR, một điều cần thiết là ngay đầu chương trình phái cĩ lệnh cho phép ngắt EI (Enable Interrupt), trong sơ đồ cho phép tối đa đến 8 yêu cầu ngắt INTR đĩ là: INT0…INT7 được đưa đến ngỏ vào của mạch mã hĩa để tạo mã lệnh cho từng ngắt, ngỏ ra mạch mã hĩa được nối đến bus dử liệu bởi tín hiệu INTA từ CPU, qua đĩ CPU sẻ đọc mã lệnh của ngắt và nạp địa chỉ tương ứng vào PC, nội dung chứa tại địa chỉ sẻ cho biết vị trí của chương trình phục vụ ngắt cần thực hiện.

Mả hĩa 74LS148 INTR INTA VI XỬ LÝ Đệm (3 state) EN Data bus AD7…AD0 A15…A8 INT0 INT7 1 1 1 1 1 Hình 4.3 Sơđồ tổ chức ngắt INTR

BẢNG MẢ LỆNH CÁC NGẮT INT Ngắt INT Mã lệnh ngắt D7D6D5D4D3D2D1D0 Địa chỉ bộ nhớ (HEX) 0 1 1 0 0 0 1 1 1 0000 1 1 1 0 0 1 1 1 1 0008 2 1 1 0 1 0 1 1 1 0010 3 1 1 0 1 1 1 1 1 0018 4 1 1 1 0 0 1 1 1 0020 5 1 1 1 0 1 1 1 1 0028 6 1 1 1 1 0 1 1 1 0030 7 1 1 1 1 1 1 1 1 0038 RST0 → 0000 0007 RST1 → 0008 000F RST2 → 0010 0017 RST3 → 0018 001F RST4 → 0020 0023 TRAP → 0024 0027 RST5 → 0028 002B RST5.5 → 002C 0029 RST6 → 0030 0033 RST6.5 → 0034 0037 RST7 → 0038 003B RST7.5 → 003C 003F 0040 0FFF

Trong hình vẻ 4.4 cho thấy vùng nhớ dành cho mỗi ngắt được chứa trong ROM cĩ kích thước khá hẹp khơng đủ để cài đặt một chương trình phục vụ ngắt, do đĩ thơng

ROM

Vùng chương trình

Vùng ngắt Hình 4.4 Tổ chức địa chỉ

thường tại đây chỉ là một lệnh nhảy đến một nơi khác trong ROM mà tại đĩ chính là vị trí của chương trình phục vụ ngắt.

2.2 Quy trình x lý yêu cu ngt

Trước khi CPU thực hiện yêu cầu ngắt, nĩ sẻ đem cất nội dung của bộ đếm chương trình PC vào ngăn xếp, điều này rất cần thiết để sau khi thực hiện xong CPU sẻ quay trở về đúng địa chỉ mà nĩ rời khỏi trước đĩ, Thật ra là CPU lấy nội dung đã cất trong ngăn xếp nạp lại cho PC.

Tạo tín hiệu INTA

Đọc mả lênh RST2 Giãm con trỏ ngăn xếp

Cất byte cao của PC vào ngăn xếp Giam con trỏ ngăn xếp Cất byte thấp PC vào ngăn xếp Nạp địa chỉ của RST2 vào PC và thực hiện lệnh chứa tại đĩ Lấy ngăn xếp nạp vào PC Tăng con trỏ ngăn xếp Lấy ngăn xếp nạp vào PC Tăng con trỏ ngăn xếp Thực hiện tiếp chương trình chính Hình 4.5 Quy trình thực hiện ngắt INT2

Trong bản đồ bộ nhớ hình 4.4 cho thấy địa chỉ các ngắt chiếm một vùng nhơ từ 0000 đến 003F, các ngắt RST0…RST3 mõi ngắt chiếm 8 ơ nhớ, các ngắt cịn lại mỗi ngắt chiếm 4 ơ nhớ.

Trong hình 4.5 yêu cầu ngắt INT2 xảy ra khi CPU đang thực hiện lênh MOV B, A tại địa chỉ 0040, địa chỉ của lệnh tiếp theo MOV M, A là 0041 cũng chính là địa chỉ trở về khi CPU thực hiện xong yêu cầu ngắt.

Ví dụ:

Viết chương trình khi ấn phím I trên KIT 8085 (phím I là tín hiệu RST 7.5), dịng chử

Int.-Rout. sẽ được hiển thị trên led 7 đoạn trong vịng 3 giây (chương trình chính hiển thị

dịng chử Haupt.-Pr.) Chương trình chính 8000 EI A1: 8001 LXI H, 8100 8004 SHLD 9F01 8007 MVI A, 0B 8009 SIM c d e f g h i 0040 0041 Xuất hiện ngắt INT2 Địa chỉ PC 00 41 SP FFFF Stack xx FFFE 00 FFFD 41 d d e 00 10 f 41 g FFFE g 00 41 FFFF h h MOV B,A MOV M,A

800A LXI B, 8300 800D Call TEXT 8 8010 JMP: A1 Chương trình phục vụ ngắt 8100 PUSH F 8101 PUSH B 8102 LXI B, 8308 8105 Call TEXT 8 8108 MVI A, 30

810A Call SECD

810D MVI A, 10 810F SIM 8110 POP B 8111 POP F 8112 EI 8113 RET Vùng dữ liệu 8300 76 H 8301 77 A 8302 3E U 8303 73 P 8304 F8 t. 8305 40 - 8306 73 P 8307 D0 r. 8308 30 I 8309 54 n 830A F8 t. 830B 40 - 830C 50 r 830D 5C o 830E 1C U 830F F8 t. 3. VI MCH X LÝ NGT 8259A

Trong trường hợp cĩ nhiều ngắt che được từ bên ngồi cần phục vụ, cĩ thể dùng vi mạch 8259A để giải quyết vấn đề ưu tiên, Mạch 8259A gọi là mạch điều khiển ngắt lập trình được (Programmable Interrupt Control – PIC). Đĩ là một vi mạch cở lớn lập trình được, cĩ thể xử lý được 8 yêu cầu ngắt với 8 mức ưu tiên khác nhau để tạo ra một yêu cầu ngắt đưa đến đầu vào INTR của CPU 8085. Nếu nối tầng một vi mạch 8259A chủ với 8 vi mạch 8259A tớ cĩ thể tăng số yêu cầu ngắt với các mức ưu tiên khác nhau lên 64 mà khơng cần ráp thêm linh kiện ngồi.

3.1 Tĩm tt đặc tính 8259A

• Tương thích 8086, 8088 (adsbygoogle = window.adsbygoogle || []).push({});

• Tương thích MCS-80, MCS-85

• Thiết lập được 8 mức ưu tiên

• Xác lập chế độ bằng phần mềm.

• Cho phép từng ngắt riêng biệt

3.2 Sơđồ khi 4.6 Sơđồ khối 8259A 4.6 Sơđồ khối 8259A CHỨC NĂNG CÁC CHÂN Ký hiệu Chân Kiểu Chức năng VCC 28 I Nguồn nuơi +5 V GND 14 I GND

CS 1 I CHIP SET: Mức thấp cho phép trao đổi dử liệu giữa 8259 với CPU bởi tín hiệu RD và WR . Chức năng INTA độc lập với CS

WR 2 I WRITE: Mức thấp trong khi CS cung mức thấp, cho phép 8259 nhận lệnh từ CPU

RD 3 I READ: Mức thấp trong khi CS cũng mức thấp cho phép 8259 gởi trạng thái lên bus dử liệu cho CPU D7 – D0 4 – 11 I/O Bus dử liệu: Tín hiệu điều khiển, trạng thái, thơng

tin về vec tơ ngắt được truyền trên bus này

CAS0-CAS2 12, 13, 15 I/O CASCADE LINES: Ngỏ nối tầng, các đường này là ngỏ ra của 8259 chủ và là ngỏ vào của 8259 tớ EN

/

SP 16 I/O SLAVE PROGRAM / ENABLE BUFFER: Đây là

chân 2 chức năng. Ở chế độ buffer là ngỏ ra điều khiển thu/phát buffer, khi khơng ở chế độ buffer là ngỏ vào chọn master (SP-1) hoặc slave (SP-0) INT 17 O INTERRUPT: Chân này lên mức cao khi một ngắt

hợp lệ được xác nhận, tín hiệu này được nối đến ngỏ vào INTR của CPU

IR0-IR7 18-25 I INTERRUPT REQUESTS: Ngỏ vào khơng đồng bộ, một ngắt được thực hiện tại cạnh lên Ỉ, mức cao được duy trì cho đến khi nhận ra ngắt (tác động cạnh), hoặc điện áp IR đạt đến mức cao (tác động mức)

Hình 4.7 Phương pháp thăm dị

Hình 4.8 Phương pháp ngắt

INTA 26 I INTERRUPT ACKNOWLEDGE: Cho phép đưa dử

liệu của vec tơ ngắt 8259 lên bus dử liệu bởi một chuổi xung INTA tạo ra từ CPU

A0 27 I A0 ADRRES LINE: Kết hợp với CS , WR và RD , 8259 dùng tín hiệu này để giãi mả lệnh và trạng thái CPU, thường tín hiệu này được nối đến địa chỉ A0 của CPU ( A1 đối với 8086 và 8088)

3.3 Mơ t chc năng

8259A tiếp nhận yêu cầu ngắt từ các thiết bị ngoại vi và xác định yêu cầu nào quan trong nhất (ưu tiên), biết chắc cĩ yêu cầu ngắt vào nào cĩ mức ưu tiên cao hơn yêu cầu ngắt đang được phục vụ hay khơng và gởi ngắt đến CPU dựa trên các xác định này.

Mỗi thiết bị ngoại vi cĩ một chương trình phục vụ kết hợp với nĩ, chương trình này được gọi là chương trình phục vụ ngắt. 8259 sau khi phát tín hiệu ngắt đến CPU nĩ cịn phải đưa đến CPU một thơng tin cĩ thể chỉ cho PC xác định được vị trí của chương trình phục vụ ngắt tương ứng với thiết bị ngoại vi, thơng tin này là địa chỉ trong bảng vec tơ ngắt và được gọi là địa chỉ vec tơ ngắt.

8259A là một linh kiện được thiết kế đặc biệt để làm việc theo thời gian thực trong hệ máy tính điều khiển bằng ngắt, cho phép lập trình bằng phần mềm hệ thống như một thiết bị ngoại vi. Chế độ chọn mức ưu tiên cho phép người lập trình cĩ thể cài đặt một ngắt sao cho cách xử lý ngắt đĩ phù hợp với hệ thống của anh ta.

Chế độ ưu tiên cĩ thể được thay đổi hoặc cấu hình lại một cách tự động tại một thời điễm bất kỳ trong suốt thời gian thực hiện chương trình chính.

Điều này cĩ nghĩa là tồn bộ cấu trúc ngắt cĩ thể được định nghĩa khi cần thiết. dựa trên mơi trường hệ thống.

Thanh ghi yêu cầu ngắt (Interrupt Request

Register – IRR) và thanh ghi phục vụ ngắt (In-

Service Register – ISR)

Các ngắt tại các ngỏ vào IR được quản lý bởi hai thanh ghi nối tầng nhau, thanh ghi IRR và ISR, thanh ghi IRR lưu trử tất cả các ngắt đang cần được phục vụ và ISR lưu trử tất cả các ngắt đang được phục vụ. (adsbygoogle = window.adsbygoogle || []).push({});

Giải quyết ưu tiên

Khối logic này sẻ xác định các mức ưu tiên của các bít đặt trong IRR. Mức ưu tiên cao nhất được chọn và được đưa vào bít tương ứng của ISR trong khoảng thời gian xung INTA

IMR lưu trử các bít dùng để che các ngắt. IMR hoạt động dựa trên IRR. Viêch che một ngắt cĩ mức độ ưu tiên cao hơn sẻ khơng ảnh hưởng đến các ngắt cĩ ưu tiên thấp hơn.

INT (Interrupt)

Ngỏ ra này được nối trực tiếp đến ngỏ vào ngắt của CPU, mức VOH của ngỏ này được thiết kế tương thích hồn tồn với mức điện áp vào của các vi xử lý 8080A, 8085A và 8086.

INTA (Interrupt Acknowledge)

Tín hiệu này gởi địa chỉ vec tơ ngắt lên bus dử liệu với dạng thức phụ thuộc vào chế độ hệ thống (μPM) của 8259A.

Đệm bus dử liệu

Là loại đệm 8 bít hai chiêu 3 trạng thái cĩ nhiệm vụ giao tiếp giữa 8259A với bus dử liệu hệ thống. Từ điều khiển và thơng tin trạng thái được chuyển ngang qua bộ đện này.

Khối logic điều khiển Read/Write

Chức năng của khối dùng để nhận các lệnh xuất ra từ CPU bao gồm từ khởi tạo (Initialization Command Word – ICW) các thanh ghi và từ thực thi (operation Command Word – OCW) các thanh ghi. Chúng lưu trử các định dạng điều khiển khác nhau cho hoạt động của thiết bị, khối này cũng cho phép chuyển trạng thái của 8259A lên bus dử liệu.

CS (Chip Select)

8259A được chọn khi chân này ở mức thấp, ngược lại quá trình đọc/ghi vào chip sẻ khơng thực hiện được.

WR (Write)

Chân này mức thấp cho phép CPU ghi các từ điều khiển (ICW và OCW) vào 8259A.

RD (READ)

Chân này ở mức thấp cho phép gởi trạng thái của thanh ghi yêu cầu ngắt (Interupt Request Register – IRR), thanh ghi phục vụ ngắt (Interupt Service Register – ISR), thanh ghi mặt nạ ngắt (Interrupt Mask Register – IMS) hoặc mức ngắt lên bus dử liệu.

A0

Đây là tín hiệu vào được dùng kết hợp với hai tín hiệu WR và RD để ghi lệnh vào các thanh ghi lệnh khác nhau cũng như đọc các thanh ghi trạng thái trên chip, tín hiêu này cĩ thể được nối trực tiếp với một trong các đường địa chỉ.

Khối kết nối so sánh/đệm

Chức năng của khối là lưu trử và so sánh các thơng tin của tất cả các 8259A cĩ trong hệ thống. Ba chân kết nối I/O (CAS0 – 2) là các ngỏ ra khi 8259A ở chế độ master và là các ngỏ vào khi 8259A ở chế độ slave. Khi là master 8259A sẻ gởi các thơng số nhận dạng của vi mạch ngắt slave qua các đường CAS0 – 2, nhờ đĩ vi mạch slave được chọn và nĩ sẻ gởi địa chỉ chương trình phục vụ ngắt lên bus dử liệu trong suốt khoảng thời gian của một hoặc hai xung INTA kế tiếp.

Chu trình ngắt

Tính năng rất mạnh của 8259A trong hệ thống vi xử lý là khả năng lập trình và địa chỉ hĩa các chương trình phục vụ ngắt. Đặc tính sau cho phép trực tiếp hoặc gián tiếp nhảy đến chương trình phục vụ xác định được yêu cầu mà khơng cần thăm dị một thiết bị nào. Một chuổi thơng thường các sự kiện trong khoảng thời gian một ngắt phụ thuộc vào chủng loại CPU được xử dụng.

Các sự kiện xảy ra trong hệ thống MCS-80/85 được trình bày như sau:

1. Một hoặc nhiều ngỏ vào ngắt (IR7 – 0) tăng lên mức cao sẻ đặt 1 các IRR bít tương ứng

2. 8259A đánh giá các yêu cầu và gởi một INT đến CPU nếu thích hợp. 3. CPU nhận biết INT và trả lời bằng một xung INTA

4. Trong khi đang nhận INTA từ CPU, bít ISR cĩ mức ưu tiên cao nhất được đặt 1 và bít IRR tương ứng bị xĩa. 8259A phát ra lệnh CALL cĩ mã 11001101 vào bus dử liệu 8 bít qua các chân D7 – D0.

5. Lệnh CALL sẻ bắt đầu sau hai xung INTA được gởi từ CPU

6. Hai xung INTA này cho phép 8259A phát địa chỉ chương trình phục vụ ngắt lên bus diử liệu. Byte thấp địa chỉ tại xung thứ nhất và byte cao địa chi vào lúc xung

INTA thứ hai (adsbygoogle = window.adsbygoogle || []).push({});

7. Quá trình này hồn tất việc gởi đi lệnh CALL 3 byte bởi 8259A. Trong chế độ AEOI bít ISR bị xĩa khi kết thúc xung INTA thứ ba. Nếu khơng bít này vẩn cịn ở mức 1 cho đến khi một lệnh EOI được tạo ra tại cuối chu trình ngắt.

Hình 4.9a Sơđồ khối 8259A

Các sự kiện xảy ra trong hệ vi xử lý 8086 chỉ khác như đã trình bày kể từ bước 4. 4. Trong lúc nhận xung INTA từ CPU, bít ISR cĩ mức ưu tiên cao nhất được đặt 1

và bít IRR tương ứng bị xĩa, 8259A khơng điều khiển bus dử liệu trong khoảng thởi gian này.

5. CPU bắt đầu tại xung INTA thứ hai, lúc này 8259A gởi một con trỏ 8 bít vào bus dử liệu để CPU đọc.

6. Đến đây là hồn tất chu trình ngắt. Trong chế độ AEOI bít ISR bị xĩa khi kết thúc xung INTA thứ hai. Nếu khơng bít này chỉ bị xĩa bởi lệnh EOI khi chương trình phục vụ ngắt chám dứt.

Nếu khơng cĩ yêu cầu ngắt xảy ra tại bước 4 ở một trong hai chu trình (cĩ nghĩa là thời gian tồn tại của ngắt quá ngắn). 8259 sẻ gởi một ngắt mức 7. cả hai buyte địa chỉ ngắt và các đường CAS sẻ giống như một ngắt mức 7 được yêu cầu.

Khi 8259A nhận một ngắt, INT trở nên tích cực và chu kỳ nhận biết ngắt bắt đầu. Nếu một ngắt cĩ mức ưu tiên cao hơn xảy ra giữa hai xung INTA thì INT tức thời trở về trạng thái khơng tích cực sau xung INTA thứ hai. Sau một khoảng thời gian khơng xác định, ngỏ INT được tích cực trở lại để báo cho biết ngắt cĩ mức ưu tiên cao hơn đang chờ được phục vụ. Thời gian khơng tích cực là khơng xác định và cĩ thể thay đổi. Người

Một phần của tài liệu giáo trình nghề sửa chữa điện tử công nghiệp (Trang 84)