1. Khái niệm ngắt
•
Ngắt là khả năng dừng chương trình chính đang chạy
để thực hiện một chương trình khác gọi là chương trình
con xử lý ngắt.
•
Khi CPU đang thực hiện chương trình chính đến dòng
lệnh thứ n ngẫu nhiên ngoại vi thứ i xin phục vụ bằng cách
phát ra tín hiệu IRQ(i) (Interrupt Request) đến CPU.
I. Phương pháp vào/ra dữ liệu bằng ngắt
1.Khái niệm ngắt
Nói chung, CPU khi nhận được yêu cầu xin phục vụ
của các ngoại vi nó sẽ thực hiện:
•
Ngừng xử lý chương trình chính.
•
Cất ngữ cảnh của chương trình hiện tại vào Stack
mem.
•
Tìm địa chỉ của chương trình con phục vụ ngắt tương
ứng (Interrupt Service Routine- ISR) để thực hiện.
•
Khôi phục ngữ cảnh của chương trình đã xuất hiện
yêu cầu phục vụ (nhờ lệnh IRET ở cuối chương trình phục
vụ ngắt)
•
Tiếp tục thực hiện chương trình
I. Phương pháp vào/ra dữ liệu bằng ngắt
Main Prog
n: IRQ
-
Chỉ số ưu tiên do nhà sản xuất qui định cho các ngoại vi
cố định, mức 0 là cao nhất.
-
Theo hình trên: Level (j) > Level (i), i>j
-
Ưu tiên phân định do các tín hiệu ngắt trong CPU (Intel
8085: INTR, 5.5, 6.5, 7.5 và TRAP)
-
Z80 CPU & others: Ưu tiên theo kiểu Daisy Chain
2. Ưu tiên Interrupt
3. Ngắt trong hệ vi xử lý 8086
3.1. Phân loại ngắt
Trong hệ vi xử lý 8086 có thể xếp các nguyên nhân gây ra ngắt CPU
vào 3 nhóm như sau:
-
Nhóm các ngắt cứng: Đó là các yêu cầu ngắt CPU do các tín
hiệu đến từ các chân INTR và NMI.
Ngắt cứng INTR là các yêu cầu ngắt che được. Các lệnh CLI và STI
có ảnh hưởng trực tiếp đến trạng thái của cờ IF trong BVXL, tức ảnh
hưởng tới việc CPU có nhận biết yêu cầu ngắt tại chân này hay không.
Nó có thể có kiểu ngắt N nằm trong khoảng từ 00h đến FFh. Kiểu ngắt
này phải được đưa vào Bus dữ liệu để CPU có thể đọc được khi có
xung INTA trong chu kỳ trả lời chấp nhận ngắt.
3. Ngắt trong hệ vi xử lý 8086
-
Nhóm các ngắt mềm: Khi CPU thực hiện các lệnh ngắt
dạng INT N, trong đó N là số hiệu (kiểu) ngắt nằm trong
khoảng 00h đến FFh.
-
Over Flow
0000C
Break Point
00008
NMI
00004
Single Step
00000
Divide by zero
4 byte Vector Element
3. Ngắt trong hệ vi xử lý 8086
Bảng vectơ ngắt của 8088 tại 1
st
KB RAM
3. Ngắt trong hệ vi xử lý 8086
03FEh-03FFh CS của CTPVN FFh
03FCh-03FDh IP của CTPVN FFh
0082h-0083h CS của CTPVN 20h
0080h-0081h IP của CTPVN 20h
000Ah-000Bh CS của CTPVN 2h
0008h-0009h IP của CTPVN 2h
0006h-0007h CS của CTPVN 1h
0004h-0005h IP của CTPVN 1h
0002h-0003h CS của CTPVN 0h
0000h-0001h IP của CTPVN 0h
3. Ngắt trong hệ vi xử lý 8086
Các yêu cầu ngắt sẽ được CPU kiểm tra thường xuyên tại
chu kỳ đồng hồ cuối cùng của mỗi lệnh.
Để đưa số hiệu ngắt N vào Bus dữ liệu trong khi cũng tạo ra
yêu cầu ngắt đưa vào chân INTR tương ứng của 8086. Giả thiết
N
1 1 1 1 1 1 1 0 FEh (254)
1 1 1 1 1 1 0 1 FDh (253)
1 1 1 1 1 0 1 1 FBh (251)
1 1 1 1 0 1 1 1 F7h (247)
1 1 1 0 1 1 1 1 EFh (239)
1 1 0 1 1 1 1 1 DFh (223)
1 0 1 1 1 1 1 1 BFh (191)
3.3. Đáp ứng của CPU khi có yêu cầu ngắt
Khi có yêu cầu ngắt kiểu N đến chân CPU và nếu yêu
cầu đó được phép (Nếu ngắt có số hiệu N kích hoạt
và có hiệu lực), CPU thực hiện các công việc sau:
Bước 1: CPU kết thúc lệnh đang thực hiện
Bước 2:
1. (SP) (SP) – 2 chỉ ra đỉnh mới của ngăn xếp
{SP} FR Cất giá trị thanh ghi cờ vào đỉnh NX
3. Ngắt trong hệ vi xử lý 8086
2. IF 0, TF 0 Cấm các ngắt khác tác động vào
CPU, cho CPU chạy ở chế độ bình thường)
3. (SP) (SP) – 2 chỉ ra đỉnh mới của ngăn xếp
{SP} (CS) Cất giá trị Segment vào đỉnh NX
4. (SP) (SP) – 2 chỉ ra đỉnh mới của ngăn xếp
{SP} (IP) Cất giá trị Offset vào đỉnh NX
Bước 3: Cất giữ nội dung các TG đa năng khác (nếu
cần) vào NX
3. Ngắt trong hệ vi xử lý 8086
Bước 4: {N*4} IP, {N*4+2} CS
Bước 5: Thực hiện chương trình con
Bước 6: Khôi phục trạng thái cũ của các TG đa năng
Bước 7: Tại cuối chương trình phục vụ ngắt khi gặp lệnh
2
: Các đường nối tầng giữa các PIC. 1 PIC
chủ có thể chọn 1 trong 8 PIC tớ qua 3 đường này.
Do đó có thể coi đây là Bus địa chỉ cụ bộ của PIC.
- GND: Tín hiệu nối đất
Chức năng các chân
-
SP/EN: Trong chế độ đệm, EN điều khiển bộ đệm ngoài.
Trong chế độ không đệm, nếu SP=1 thì 8259 là chủ, SP=0
thì 8259 là tớ.
-
INT: Nối trực tiếp với đầu vào INTR của CPU.
-
IR
0
-IR
7
: Nối với các đầu ra tín hiệu ngắt của các TBNV.
-
INTA: Tín hiệu chấp nhận ngắt từ CPU.
-
A
0
: Cùng với các tín hiệu CS, WR và RD phân biệt các lệnh
khác nhau từ CPU và cung cấp các thông tin trạng thái.
-
VCC: Nguồn nuôi.
Chức năng các chân
2. Sơ đồ khối PIC 8259A
Chip điều khiển ngắt PIC 8259A
-
Một trong các đường yêu cầu ngắt IR
0
-IR
7
được nâng lên mức cao,
bit tương ứng trong IRR được đặt.
-
8259 gửi tín hiệu INT tới CPU.
-
CPU nhận tín hiệu INT và ra xung INTA thứ nhất nếu cờ IF được
đặt.
-
Bit ưu tiên cao nhất trong IRR được xóa, bit tương ứng được đặt
trong ISR.
-
CPU ra xung INTA thứ 2, 8259 đưa con trỏ 8 bit chỉ số ngắt lên Bus
số liệu CPU đọc và gọi ngắt.
-
Trong chế độ tự động, bit trong ISR tự động RESET, nếu không
CPU phải ra lệnh EOI tới 8259 khi chạy chương trình ngắt để xóa
bit ISR.
5. Các hoạt động khi có yêu cầu ngắt từ ngoại vi
Các PIC 8259 có thể được ghép nối tầng với nhau.
Chúng được phân thành hai mức: 1 PIC chủ (Master) và từ
1 đến 8 PIC tớ (Slave). Khi đó, hệ có thể quản lý yêu cầu
ngắt của hơn 8 TBNV. Lúc đó lối ra INT của PIC tớ được nối
với lối vào IR của PIC chủ vào các tín hiệu từ CAS
0
-CAS