Giáo trình Vi Xử Lý.. BKHN

190 249 0
Giáo trình Vi Xử Lý.. BKHN

Đ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

giáo trình vi xử lý×giáo trình vi xử lý 8086×giáo trình vi xử lý 8051×giáo trình vi xử lý 89c51×giáo trình vi xử lý 8088×giáo trình vi xử lý picgiáo trình vi xử lý×giáo trình vi xử lý 8086×giáo trình vi xử lý 8051×giáo trình vi xử lý 89c51×giáo trình vi xử lý 8088×giáo trình vi xử lý picgiáo trình vi xử lý×giáo trình vi xử lý 8086×giáo trình vi xử lý 8051×giáo trình vi xử lý 89c51×giáo trình vi xử lý 8088×giáo trình vi xử lý pic

CHƯƠNG CÁC HỆ ĐẾM VÀ VIỆC MÃ HOÁ THÔNG TIN TRONG MÁY TÍNH Các hệ đếm dùng máy tính 1.1 Hệ mười hệ hai Trong sống hàng ngày dùng hệ số mười nói gọn hệ mười (decimal number system, viết tắt hệ D) để biểu diễn giá trị số Điều tự nhiên từ xa xưa người bình thường biết dùng 10 ngón tay (và tất nhiên lúc bí dùng thêm ngón chân!) "công cụ tính toán" sơ đẳng Trong hệ thống dùng tổ hợp chữ số để biểu diễn giá trị số, kèm theo tập hợp dùng thêm chữ D cuối để số hệ mười (ta bỏ chữ D mà ngầm hiểu số hệ mười) Trong giới máy tính khác, để biểu diễn giá trị số dùng hệ số hai nói gọn hệ hai (Binary number system, viết tắt hệ B), tồn chữ số để biểu diễn giá trị số (ứng với trạng thái có điện điện mạch điện tử cấu tạo nên máy) giá trị có chữ số hệ hai (Binary digit, viết tắt bit) Hệ hai hệ đếm dùng máy tính Một số hệ hai gồm bit thường đánh dấu chữ B kèm cuối để phân biệt với hệ khác ta làm việc lúc với nhiều hệ đếm khác Một cụm bit tạo thành nibble, cụm bit tạo thành byte, cụm 16 bit thông thường tạo thành từ (word), cụm 32 bit tạo thành từ kép (double word) Chữ số bên trái dãy số hệ hai gọi bit có ý nghĩa lớn (Most significant bit, MSB), bit cuối bên phải dãy gọi bit có ý nghĩa bé (Least significant bit, LSB) Ứng với việc đếm thứ tự 1, 2, hệ mười hệ hai ta có 1, 10, 11 150 Nibble Byte 15 Word 31 Double Word Hình 1.1 Các đơn vị đo độ dài số hệ hai dẫn xuất từ bit Vì người quen tính toán với hệ mười, phận tính toán máy tính biết làm việc với hệ hai, nên để đảm bảo giao tiếp thuận tiện người máy (khi đưa số liệu vào lúc lấy kết tính toán) thường xuyên phải có việc chuyển đổi qua lại hai hệ đếm Chúng ta xem xét nhanh vấn đề thông qua ví dụ đơn giản Một số hệ mười viết sau: 12345,67 có giá trị số tổng tích hệ số 1, 2, 3, 4, 5, 6, với trọng số 10 i tương ứng sau: 12345,67=1.104+2.103+3.102+4.101+5.100+6.10-1+7.10-2 Tương tự vậy, số hệ hai viết sau: 10111,01 có giá trị số tổng tích hệ số 1, 0, 1, 1, 1,01, với trọng số i tương ứng sau: =1.24+0.23+1.22+1.21+1.20+0.2-1+1.2-2 Các thuật toán thường dùng để chuyển đổi hai hệ trên:  Đổi số hệ hai sang hệ mười Muốn đổi số từ hệ hai sang hệ mười cần tính các giá trị i tương ứng với chữ số khác không thứ i số hệ hai cộng lại nói trên: Ví dụ 151 10111,11 B = 24 + 22 + 21 + 20 + 2-1 + 2-2 = 25,75 Ngược lại muốn chuyển số từ hệ mười sang số hệ hai ta làm theo cách:  Cách để đổi số hệ mười sang hệ hai Quy tắc: Lấy số hệ mười cần đổi trừ x (x giá trị lớn số mũ chọn cho x nhỏ so với số hệ mười cần đổi), ghi lại giá trị cho chữ số hệ hai ứng với x Tiếp tục làm số dư phép trừ tạo số i bậc thấp đạt tới 20 ghi lại giá trị (0 1) cho chữ số hệ hai thứ i tuỳ theo quan hệ số dư luỹ thừa tương ứng: 1, số dư lớn 2i, 0, số dư nhỏ so với 2i (và phép trừ không thực hiện) Ví dụ: Đổi số 34 sang hệ hai Các giá trị 2i cần tính đến (25 = 32 giá trị 2x sát so với số 34) 25 24 23 22 21 20 0 Các chữ số hệ hai tính được: Như 34 =100010 B  Cách để đổi số hệ mười sang hệ hai Quy tắc: Lấy số cần đổi chia cho ghi nhớ phần dư, lấy thương phép chia trước chia cho ghi nhớ phần dư Làm thương Đảo ngược thứ tự dãy số dư chữ số số hệ hai cần tìm Ví dụ: Đổi số 34 sang hệ hai (hình 1.1.) Kết 100010B 34 17 2 2 Các số dư khung xếp theo chiều mũi tên 152 Hình 1.1 Một cách đổi số hệ mười sang hệ hai Trong trường hợp số hệ mười cần đổi có thêm phần lẻ sau dấu phảy ta phải đổi riêng rẽ phần sau cộng kết lại Đối với phần nguyên ta làm theo cách nói Riêng phần sau dấu phảy ta đổi theo quy tắc trình bày sau  Quy tắc đổi số thập phân hệ mười hệ hai Lấy số cần đổi nhân với 2, tích nhận gồm phần nguyên phần lẻ nhị phân, lấy phần lẻ nhị phân tích thu nhân tiếp với Làm tích chẵn Chọn riêng phần nguyên (phần trước dấu phảy) tích thu xếp lại chữ số sau dấu phảy số hệ hai cần tìm Ví dụ: Đổi 0,125 số hệ hai Ta thực phép nhân theo bước trên: 0,125 × = ,250 0,250 × = ,500 0,500 × = ,000 thu kết 0,125 = 0,001 B (phần đóng khung) Kết hợp ví dụ lại, phải đổi số 34,125 hệ hai ta thu kết cuối 34,125 =100010,001 B 1.2 Số BCD (số hệ mười mã hoá hệ hai) Giữa hệ mười hệ hai tồn hệ lai: hệ BCD cho số hệ mười mã hoá hệ hai (Binary Coded Decimal number), thích hợp cho thiết bị đo có thêm phần thị số đầu dùng loại đèn số khác Ở ta dùng số hệ hai để mã hoá số hệ mười có giá trị nằm khoảng Như ta không dùng hết tổ hợp có bit Vì tầm quan trọng số BCD nên vi xử lý thường có lệnh thao tác với chúng Ví dụ: Số 410 biểu diễn theo kiểu số BCD 0100 0001 0000 Kết gợi ý cho ta cách thức chuyển đổi loại số 153 1.3 Hệ mười sáu (Hexa-decimal, hex, H) Nếu ta dùng hệ hai để biểu diễn số có giá trị lớn ta gặp điều bất tiện số hệ hai thu dài Ví dụ để biểu diễn số 255 ta cần đến bit viết sau: 255 = 1111 1111 B Trong thực tế để viết kết biểu diễn số cho gọn lại người ta tìm cách nhóm số hệ hai (1 nibble) thành số hệ mười sáu Khác với hệ BCD vừa nói hệ 16 dùng hết tổ hợp bit để biểu diễn giá trị số Để làm điều người ta sử dụng chữ số sẵn có hệ mười để biểu diễn giá trị số ứng với dùng thêm chữ A F để biểu diễn giá trị lại ứng với 10 15 Để phân biệt số hệ mười sáu với số hệ khác ta kèm thêm chữ H cuối Ta dễ nhận thấy số mười phận hệ mười sáu Các phép toán số học số hệ hai 2.1 Phép cộng Phép cộng số hệ hai thực giống ta làm với số hệ mười Quy tắc phép cộng số hệ hai bảng 1.1 Bảng 1.1 Quy tắc phép cộng y=a+b Bảng 1.2 Quy tắc phép trừ y=a-b a b y C a b y B 0 0 0 0 1 0 1 1 1 1 1 1 0 C: nhớ (Carry) B: mượn (Borrow) Ví dụ Cộng hệ mười 11 Nhớ 099 Số hạng 095 Số hạng 194 Tổng Cộng hệ hai 1111 1110 0110 0011 0101 1111 1100 0010 154 Các cộng khối tính toán số học máy tính thực phép cộng theo cách nói 2.2 Phép trừ số bù hai a) Phép trừ Phép trừ số hệ hai thực giống ta làm với số hệ mười Quy tắc phép trừ số hệ hai bảng 1.2 Ví dụ Trừ hệ mười 109 49 060 Trừ hệ hai 110 0000 0110 1101 0011 0001 0011 1100 Mượn Số bị trừ Số trừ Hiệu b) Số bù hai Trong làm phép trừ ta nhận thấy thực phép trừ phép cộng: cộng số bị trừ với số đối số trừ Điều ứng dụng khối tính toán số học máy tính để tận dụng cộng có sẵn Vấn đề đặt số hệ hai ta phải có cách biểu diễn số âm cách thích hợp cho ta ứng dụng tính chất nói Có nhiều cách mã hoá số hệ hai để biểu diễn số âm thực tế hay dùng dùng cách mã hoá kiểu số bù hai Bảng 1.3 cách tạo số hệ hai có dấu số bù hai tương quan với số hệ hai Bảng 1.3 Biểu diễn số theo hệ hai, hệ hai có dấu mã bù hai Số bit hệ hai 0000 0000 0000 0111 0111 0111 1000 155 0000 0001 0010 1101 1110 1111 0000 Số hệ mười tương đương 125 126 127 128 Số hệ mười theo mã hệ hai có dấu + + + +125 +126 +127 - Số hệ mười tính theo mã bù hai + + + +125 +126 +127 -128 1000 1000 1111 1111 1111 0001 0010 1101 1110 1111 129 130 125 126 255 - - -125 -126 -127 -127 -126 - - - Quan sát kỹ bảng rút nhận xét sau: Nếu ta dùng bit để biểu diễn số ta thu 256 tổ hợp có giá trị từ đến 255 (tương ứng 00 FF H), tức biểu diễn số dương Với tổ hợp ta muốn biểu diễn số có dấu theo kiểu dấu độ lớn (sign and magnitude) ta phải bit để dành cho dấu bit lại để định giá trị Với cách làm ta có khả biểu diễn số âm số dương nằm khoảng -127 -0, +0 +127 (chú ý hai giá trị khác !) Số bù hai tạo theo cách gần giống kiểu dấu độ lớn dùng bit để biểu diễn giá trị số mã hoá Mã bù hai dài bit có khả biểu diễn số âm dương khoảng -128 +127 Một số dương có mã bù hai giống mã hệ hai thông thường Một số biểu diễn theo hệ hai có giá trị khác hiểu mã để biểu diễn số theo kiểu hệ hai có dấu kiểu số bù hai Nói khác đi, cụm số cảm nhận khác biểu diễn giá trị số theo mã khác Cho dù có biểu diễn số hệ hai có dấu hay số bù hai số âm có bit b7=1, số dương có bit b7=0 Bây ta nói cụ thể cách tính số bù hai số Về mặt toán học số bù hai số số đối Như số dương có số bù hai số âm giá trị tuyệt đối ngược lại Quy tắc: Muốn tìm số bù hai (còn gọi bù số học) số A ta làm theo bước sau: + biểu diễn số A theo mã bù hai + tìm số bù (bù logic) số (bằng cách đảo bit) + cộng vào số bù để nhận số bù hai số A Ghi chú: Khi có số âm biểu diễn theo mã bù hai muốn tính giá trị tuyệt đối ta áp dụng quy tắc (áp dụng bước 2,3) Ví dụ: Tìm số bù hai 13 156 13 = số bù 13: cộng thêm 1: số bù hai 13: 0000 1101 B (mã bù hai 13) 1111 0010 B (đảo bit số trên) 1111 0011 B (tức -13) Có thể lấy ví dụ khác để chứng tỏ kết qua thấy ứng dụng số bù hai làm phép trừ Ví dụ: 15 - 13 = ? Ta viết lại phép trừ thành phép cộng 15+(-13) sử dụng kết vừa tính cho số (-13): 15 (-13) tổng 0000 1111 1111 0011 0000 0010 (nhớ 1) Nếu không để ý đến nhớ ta có kết Ví dụ: 12 - 13 = ? 12 0000 1100 (-13) 1111 0011 tổng 1111 1111 (tức -1) Đây số âm (bit b7=1) với giá trị tuyệt đối (tra theo bảng 1.3) Mặt khác ta tìm giá trị tuyệt đối kết cách tìm số bù hai nó: mã bù hai kết số bù kết cộng để tìm giá trị tuyệt đối 2.3 1111 1111 0000 0000 0000 0001 Phép nhân Phép nhân số hệ hai thực giống ta làm với số hệ mười Quy tắc phép nhân số hệ hai bảng 1.4 Bảng 1.4 Quy tắc phép nhân y=a.b 157 a b y 0 0 1 0 1 Trên sở quy tắc vừa nêu đơn giản ta thực ví dụ phép nhân số hệ hai với độ dài bit để làm sáng tỏ thuật toán nhân 1001 0110 0000 1001 1001 0000 0110110 Số bị mhân (9) Số nhân (6) Thành phần tổng Thành phần tổng Thành phần tổng Thành phần tổng Tổng tích luỹ (54) tích tích tích tích luỹ luỹ luỹ luỹ Độ dài cực đại kết trường hợp bit Nếu ta có toán hạng (hoặc 16) bit độ dài cực đại kết 16 (hoặc 32) bit Mỗi lần nhân bit khác số nhân với số bị nhân ta thu số bị nhân Nếu dịch trái số lần tương ứng với vị trí bit khác số nhân, ta tạo thành phần tổng tích luỹ Tổng thành phần kết phép nhân Phân tích kỹ trình ta thấy phép nhân thực theo thuật toán cộng dịch (trên sở cộng dịch) sau: Thành phần tổng tích luỹ thu tích số LSB số nhân với số bị nhân Nếu LSB = thành phần 0, LSB = thành phần số bị nhân Mỗi thành phần thứ i tổng tích luỹ tính cách tương tự, phải dịch trái i bit (có thể bỏ qua thành phần 0) Tổng tổng thành phần tích cần tìm Để minh hoạ cho thuật toán trên, ta dùng để rút gọn ví dụ làm trước sau: 1001 0110 1001 1001 0110110 2.4 Số bị mhân (9) Số nhân (6) Số bị nhân dịch trái lần Số bị nhân dịch trái lần Tổng tích luỹ (54) Phép chia Phép chia phép tính ngược phép nhân Từ suy phép chia thực phép trừ phép dịch liên tiếp trừ (do không để trừ số bị trừ nhỏ số chia) Sau thuật toán phép chia thông qua ví dụ cụ thể 158 Ví dụ: 35/5 = Ta quan sát kỹ bước phải làm chia tay: 100011 000 1000 101 111 101 101 101 101 0111 Trong bước tính liên tục cần phải có dự đoán kiểm tra để tìm kết Công việc khó khăn mạch điện tử khối tính toán số học (vốn phần tử để thực phép cộng dịch máy tính) Sau thuật toán khắc phục vấn đề nêu trên: Đổi số chia số bù hai (để bước sau làm tính trừ tính cộng) Lấy số bị chia trừ số chia Nếu kết có bit dấu (có nghĩa phần số bị chia chia cho số chia) bit tương ứng thương Nếu kết có bit dấu (có nghĩa phần số bị chia không chia cho số chia) bit tương ứng thương ta buộc phải khôi phục lại giá trị ban đầu số bị chia cách cộng kết với số chia mã hệ hai Dịch trái kết thu làm lại bước nhận kết cuối (chia hết) nhỏ số chia (chia dư) Ví dụ: 36/5 = 7, dư Thực phép chia hệ hai Đầu tiên ta có = 0101 B số bù hai 1011 B Các bước tính toán tiếp phép chia theo thuật toán nêu liệt kê nhu sau: Toán hạng 100100 011000 111100 159 Thương Tên toán hạng, thao tác Số bị chia Số chia mã bù hai để cộng Tổng, kết (kq1) Phối ghép 8088 với thiết bị ngoại vi 3.1 Các kiểu phối ghép vào/ra MB Đối với 8088 (hay họ 80x86 nói chung) có cách phối ghép CPU với thiết bị ngoại vi (các cổng vào/ra, I/O): a) thiết bị ngoại vi có không gian địa tách biệt với64KB nhớ b) 64KB thiết bị ngoại có không gian địa chung với nhớ  Thiết bị vào/ra có không gian địa tách biệt Trong cách phối ghép này, nhớ độc quyền dùng không gian 1MB mà CPU dành cho Các thiết bị ngoại vi (các cổng) dành riêng không gian 64 KB cho loại cổng vào Tất nhiên ta phải dùng tín hiệu IO/M, lệnh trao đổi liệu cách thích hợp cho không gian (xem hình 5.28.a) 00000H VÀO/RA 0000H FFFFFH FFFFH BỘ NHỚ 0000H FFFFH THIẾT BỊ VÀO Lệnh kiểu: MOV Tín hiệu điều khiển: IO/M=0 IN IO/M=1 THIẾT BỊ RA OUT IO/M=1 a) Không gian riêng biệt cho nhớ thiết bị vào/ra 00000H BỘ NHỚ Kiểu lệnh tín hiệu điều khiển chung cho hai: MOV IO/M=0 FFFFFH b) Không gian chung cho nhớ thiết bị vào/ra Hình 5.28 Phân vùng địa cho nhớ thiết bị ngoại vi 28  Thiết bị vào/ra nhớ có chung không gian địa Trong cách phối ghép này, nhớ thiết bị ngoại vi chia không gian địa 1MB mà CPU 8088 có khả địa hoá Các thiết bị ngoại vi chiếm vùng không gian MB, phần lại nhớ Tất nhiên trường hợp ta dùng chung tín hiệu IO/M = lệnh trao đổi liệu kiểu lệnh MOV cho nhớ thiết bị ngoại vi (xem hình 5.28.b) 3.2 Giải mã địa cho thiết bị vào/ra Việc giải mã địa cho thiết bị vào/ra gần giống giải mã địa cho mạch nhớ Ta nhấn mạnh việc giải mã địa cho cổng Thông thường cổng có địa bit A0-A7, số hệ vi xử lý khác (như máy IBM PC) cổng có địa 16 bit A0A15 Tuỳ theo độ dài toán hạng lệnh hay 16 bit ta có cổng bit hay cổng bit có địa liền để tạo nên từ với độ dài tương ứng Trong thực tế có hệ sử dụng hết 256 cổng vào/ra khác nên ta xét giải mã địa bit A0-A7 mạch giải mã thông dụng có sẵn (như 74LS138 chẳng hạn) để tạo xung chọn thiết bị Các mạch giải mã đơn giản tạo từ mạch NAND hình 5.29 Địa cổng I Địa cổng O IO/M RD IO/M ISP WR (Xung chọn cổng vào) OSP (Xung chọn cổng ra) A y0 HìnhA5.29 y0 Mạch giải mã địa đơn giản cho thiếtBbị ngoại y1 vi B C y1 C y2 y2 y3 y3 y4 y4 Trong trường hợp cần nhiều xung chọn đầu cho cổng vào/ra có địa liên tiếp, G2B y5 G2B y5 ta dùng mạch giải y6 trình bày mạch y6 mã có sẵn kiểu 74LS138 Thí dụ hình 5.30 G2Ara Trên y7 sở mạch y7để giải mã địa cho cổng vào cổng tương tự dùng G2A 74LS138 G1 G1 ta phối hợp với hai tín hiệu đọc ghi để tạo tín hiệu chọn cho việc đọc/ghi cổng vào/ra cụ thể Bộ giải mã minh hoạ hình 5.31 A0 ISP0 A0 OSP0 29 A1 A2 A1 A2 A3-A7 A y0 B WR y1 IO/M C y2 A3-A7 RD IO/M ISP7 a) OSP7 b) y3 Hình 5.30 Các giải mã với địa 00-07 cho a) cổng vào; b) cổng A0 A1 RD IO/M A2-A6 A7 y4 G2A y5 y6 G1 y7 G2B ISP7C ISP7F OSP7C OSP7F WR Hình 5.31 Một giải mã cho cổng vào cổng với địa 7C H-7F H 3.3 Các mạch cổng đơn giản Trong thực tế có nhiều vi mạch tổ hợp cỡ vừa dùng làm cổng phối ghép với vi xử lý để vào/ra liệu Các mạch thường cấu tạo nên từ mạch chốt bit có D Q đầu trạng thái (74LS373: kích theo mức, 74LS374: kích theo sườn), mạch khuếch đại đệm ° G bit chiều đầu trạng thái (74LS240, 74LS244 đầu đảo không đảo) mạch khuếch đại đệm chiều bit đầu trạng thái (74LS245) Chúng dùng phối ghép đơn giản để làm cho CPU thiết bị ngoại vi hoạt động tương thích với nhau, ví dụ để đệm : bus mạch cổng để tạo tín hiệu móc nối '373 Trên hình 5.32 ví dụ mạch phối ghép đơn giản dùng mạch 74LS373 để đưa tín hiệu điều khiển đèn LED lệnh OUT 7CH,AL 30 D0 Bus D Q0 : : D7 OS P 7C Điều khiển LED Q7 G OC Hình 5.32 Một mạch phối ghép đơn giản dùng 74LS373 Trên hình 5.33 ví dụ mạch phối ghép đơn giản dùng mạch 74LS244 để đọc tín hiệu từ thiết bị ngoại vi vào CPU lệnh IN AL,7CH Từ thiết bị vào D0 : D7 Q0 ° : : Tới bus D CPU Q7 '244 ° IS P 7C OC1 OC2 Hình 5.33 Một mạch phối ghép đơn giản dùng 74LS244 Ngoài mạch phối ghép đơn giản trên, thực tế có mạch phối ghép lập trình dùng cho công việc tổ chức vào/ra liệu phức tạp 3.4 Mạch phối ghép vào/ra song song lập trình 8255A Mạch 8255A thường gọi mạch phối ghép vào/ra lập trình (programmable peripheral interface, PPI) Do khả mềm dẻo ứng dụng thực tế mạch phối ghép dùng phổ biến cho hệ vi xử lý 8-16 bit Sơ đồ khối mô tả chức bên 8255A thể hình 5.34 31 Các chân tín hiệu 8255A có ý nghĩa rõ ràng Chân Reset phải nối với tín hiệu reset chung toàn hệ (khi reset cổng định nghĩa cổng vào để không gây cố cho mạch điều khiển) CS nối với mạch tạo xung chọn Nhóm thiết bị để đặt mạch 8255A vào địa sở Các tín hiệu địa A0, A1 chọn A ghi bên 8255A: ghi để ghi từ điều khiển cho hoạt động 8255A (viết tắt CWR, control word register) Cổng Điều ghi khác ứng với cổng (port) PA, PB, PC để ghi/đọc A liệu (xem bảng 5.7) khiển Nhóm Theo bảng ta nhận thấy địa cho PA địa sở 8255A nhóm A Có loại từĐệm điều khiển cho 8255A: D0-D7 A Cổng bus +D Từ điều khiển định nghĩa cấu hình cho cổng PA, CPB, PC + Từ điều khiển lập/xoá bit đầu PC ( cao) Nhóm B Điều Cổng Bus nội khiển C Lô nhóm gic B Nhóm (thấp) điều B khiển Cổng B ghi/đọ c PA0-PA7 PC4-PC7 PC0-PC3 RD WR A0 A1 PB0-PB7 Reset CS Hình 5.34 Sơ đồ khối cấu trúc bên 8255A Bảng 5.7 Chọn ghi 8255A 32 CS A1 A0 Chọn x x không chọn 0 PA  0 PB PC 1 CWR Từ điều khiển định nghĩa cấu hình Dạng thức từ điều khiển để định cấu hình thể hình 5.35 Cấu hình MA1 MA0 A CA MB B CB NHÓM A Chọn chế độ: 00 : Mode 01 : Mode 1x : Mode PA: 1:I 0:O PCH (cao): 1:I 0:O NHÓM B PCL (thấp): 1:I 0:O PB: 1:I 0:O Chọn chế độ: : Mode : Mode Hình 5.35 Từ điều khiển cấu hình 8255A  Từ điều khiển lập/xoá bit PCi Dạng thức từ điều khiển để lập/xoá PCi thể hình 5.36 Lập/xoá 0 0 S/R Mã hoá PCi 000 : PC0 111 : PC7 1: lập PCi 0: xoá PCi Hình 5.36 Từ điều khiển để lập/xoá PCi 8255A 33 Như ta thấy trên, chế độ (mode) làm việc mạch cổng 8255A định nghĩa từ điều khiển CWR Cụ thể 8255A có chế độ làm việc: +Chế độ 0: " Vào/ra sở" (còn gọi "vào đơn giản") Trong chế độ cổng PA, PB, PCH PCL định nghĩa cổng vào +Chế độ 1: "Vào/ra có xung cho phép" Trong chế độ cổng PA, PB định nghĩa thành cổng vào cổng với tín hiệu móc nối (handshaking) bit tương ứng cổng PC nhóm đảm nhiệm +Chế độ 2: "Vào chiều" Trong chế độ riêng cổng PA định nghĩa thành cổng vào/ra chiều với tín hiệu móc nối bit cổng PC đảm nhiệm Cổng PB làm việc chế độ +Lập/xoá bit PCi: chế độ thấy rõ hình 5.36 Sau ta giới thiệu cụ thể chế độ làm việc 0, 8255A Chế độ 0: "Vào/ra sở" PA0PA0TrongPA chế bốn cổng PA, PB, PC H, PCL có PA thể7 định nghĩa cổng vào độ này, PC4 PC7 INTEA INTEA cổng Như vậy, với tổ hợp tất khả vào/ra cho cổng ta có 16 cấu hình PC6 khác PC5 PC3 có xung cho phép" Chế độ 1: "Vào/ra WR PC3 RD INTEB PC1 PC2 PC0 INTEB OBFA ACKA PC2 PC1 PC0 INTRA PB0-PB7 PC4,5 34 STBA IBFA INTRA PB0-PB7 OBFB PC6,7 STBB ACKB IBFB INTRB INTRB I/O I/O a)Ra D7 b)Vào D6 D5 D4 D3 D2 D1 D0 OBF INTEA I/O I/O INTRA INTEB OBFB INTRB D7 D6 D5 D4 D3 D2 D1 D0 I/O I/O IBFA INTEAINTRA INTEB IBFB INTRB A c)Tín hiệu trạng thái d)Tín hiệu trạng thái vào Hình 5.37 Mạch 8255A chế độ tín hiệu trạng thái Để đơn giản ta coi PA PB định nghĩa cổng cổng vào Ra liệu chế độ (hình 5.37 a) Ở PA PB định nghĩa cổng có tín hiệu móc nối tương đương cho việc trao đổi liệu Ta cần giới thiệu tín hiệu cho PA, tín hiệu cho PB tương tự: + OBFA (Đệm PA đầy) Tín hiệu báo cho thiết bị ngoại vi biết CPU ghi liệu vào cổng để chuẩn bị đưa Tín hiệu thường nối với STB thiết bị nhận + ACKA (Trả lời nhận liệu) Đây tín hiệu thiết bị ngoại vi cho biết nhận liệu từ PA 8255A + INTRA (Yêu cầu ngắt từ PA) Đây kết thu từ quan hệ tín hiệu khác 8255A trình đối thoại với thiết bị ngoại vi, dùng để phản ảnh yêu cầu ngắt PA tới CPU (xem biểu đồ quan hệ tín hiệu hình 5.38) + INTEA tín hiệu mạch lật bên 8255A phép/cấm yêu cầu ngắt INTRA PA INTEA lập/xoá thông qua bit PC6 PC Các tín hiệu đối thoại-trạng thái kể lấy trực tiếp từ chân tương ứng vi mạch đọc vào CPU thông qua việc đọc cổng PC (xem hình 5.37c để thấy bit trạng thái đọc 8255A định nghĩa chế độ 1) WR OBF INTR ACK 35 Dữ liệu Hình 5.38 Biểu đồ thời gian tín hiệu 8255A chế độ 1-ra Vào liệu chế độ (hình 5.37 b) Ở PA PB định nghĩa cổng vào có tín hiệu móc nối tương đương cho việc trao đổi liệu Ta cần giới thiệu tín hiệu cho PA, tín hiệu cho PB tương tự: + STB (Cho phép chốt liệu): Khi liệu sẵn sàng để đọc vào PA, thiết bị ngoại vi phải dùng STB để báo cho 8255A biết mà chốt liệu + IBF (Đệm vào đầy): Sau 8255A chốt liệu thiết bị ngoại vi đưa đến đưa tín hiệu IBF để báo cho thiết bị ngoại vi biết chốt xong + INTRA (Yêu cầu ngắt từ cổng PA): Tín hiệu để báo cho CPU biết có liệu sẵn sàng để đọc từ PA Đây kết thu từ quan hệ tín hiệu khác 8255A trình đối thoại với thiết bị ngoại vi (xem biểu đồ quan hệ tín hiệu hình 5.39) + INTEA tín hiệu mạch lật bên 8255A phép/cấm yêu cầu ngắt INTRA PA INTEA lập/xoá thông qua bit PC4 PC Một số tín hiệu đối thoại-trạng thái kể lấy trực tiếp từ chân tương ứng vi mạch đọc vào CPU thông qua việc đọc PC (xem hình 5.37d) Các tín hiệu đối thoại-trạng thái sử dụng làm tín hiệu móc nối cho kiểu vào/ra liệu cách ngắt CPU hay cách thăm dò trạng thái sẵn sàng thiết bị ngoại vi (sẽ trình bày phần sau) Dữ liệu từ thiết bị ngoại vi STBA IBFA INTRA 36 RD Hình 5.39 Biểu đồ thời gian tín hiệu 8255A chế độ 1-vào Chế độ 2: "Bus chiều" (hình 5.40) Trong chế độ riêng cổng PA định nghĩa để làm việc cổng chiều có tín hiệu móc nối số bit PC đảm nhiệm, PB làm việc chế độ tuỳ theo bit điều khiển CWR Các chân tín hiệu lại PC định nghĩa để làm việc chân vào ra, phục vụ cho cổng PB PA0PA7 PC3 PC7 PC6 INT E1 PC5 PC4 INT E2 WR RD PA0PA7 INTRA INTRA PC3 PC7 OBFA ACKA OBFA ACKA PC6 INT E1 IBFA STBA INTE IBFA PC5 PC4 STBA OBFB ACKB INTRB PC1 PB0-PB PB0-PB7 WR RD I/O PC2 PC0 PC0-PC2 a) PA: chế độ PB: chế độ 0, vào PC0-PC2:I/O tuỳ theo từ điều khiển b) PA: chế độ PB: chế độ 1, Tín hiệu trạng thái D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 37 OBF INTE1 IBFA INTE2 INTRA I/O I/O I/O OBFA INTE1 IBFA STBA INTE2 INTEB IBFB INTRB A Hình 5.40 8255A chế độ "Bus hai chiều" Một số tín hiệu móc nối đặc biệt cần giới thiệu PA gồm: + INTRA: Yêu cầu ngắt cho liệu theo hai chiều vào + INTE1 INTE2 tín hiệu mạch lật bên 8255A phép/cấm yêu cầu ngắt của cổng PA Các bit lập/xoá bit PC6 PC4 cổng PC Biểu đồ thời gian tín hiệu móc nối 8255A biểu hình 5.41 WR OBFA INTRA ACKA STBA IBFA Bus D I/O data:IO 8255 IO 8255 RD Hình 5.41 Biểu đồ thời gian tín hiệu 8255A chế độ Một số tín hiệu đối thoại-trạng thái kể lấy trực tiếp từ chân tương ứng vi mạch đọc vào CPU từ cổng PC cho phép điều khiển việc trao đổi liệu cách thăm dò tín hiệu 38 Khi dùng 8255A chế độ bus chiều để trao đổi liệu theo cách thăm dò ta phải kiểm tra xem bit OBFA có (đệm rỗng) hay không trước dùng lệnh OUT để đưa liệu cổng PA, kiểm tra xem bit IBFA có (đệm vào rỗng) hay không trước dùng lệnh IN để đọc liệu vào từ cổng PA Sau vài ví dụ cách lập trình cho 8255A M Ví dụ 1: Giả thiết mạch 8255A có địa sau: Địa 7Ch 7Dh 7Eh 7Fh Thanh ghi (cổng) PA PB PC CWR Lập trình để định nghĩa chế độ cho 8255A với cấu hình cổng sau: : PA: Ra PB: Vào PCH: Ra PCL: Vào Sau đọc giá trị liệu có PB đưa PA PCL đưa PCH Giải: Có thể định nghĩa cho cổng, ghi từ điều khiển cho từ điều khiển nhờ lệnh giả EQU: PA PB PC CWR CW EQU EQU EQU EQU EQU 7CH 7DH 7EH 7FH 83H ; từ điều khiển cho yêu ; cầu 83H=10000011 sau dùng vào việc định nghĩa cấu hình cho 8255A: MOV AL,CW OUT CWR,AL IN AL,PB OUT PA,AL IN AL,PC ; ; ; ; ; từ điều khiển AL đưa CW vào CWR đọc cổng PB đưa liệu đọc cổng PA đọc cổng PCL 39 MOV CL,4 ROL AL,CL OUT PC,AL ; số lần quay AL ; chuyển bit thấp thành bit cao ; đưa liệu đọc cổng PCH M Ví dụ 2: Lập trình để bit PC4 8255A ví dụ tạo 256 xung với T=50 ms, độ rỗng 50% Giả thiết có sẵn chương trình trễ 25ms TRE25MS Giải: Sử dụng ký hiệu ví dụ định nghĩa PC4ON EQU 09H PC4OFF EQU 08H ; từ điều khiển để PC4=1 (On): 00001001B ; từ điều khiển để PC4=0 (Off): 00001000B ta có mẩu chương trình sau: MOV CX,100H CLI ; ; ; ; ; ; ; ; ; ; ; Lap: MOV AL,PC4ON OUT PC,AL CALL TRE25MS MOV AL,PC4OFF OUT PC,AL CALL TRE25MS LOOP Lap STI số xung phải tạo cấm ngắt để yên tâm mà tạo xung từ điều khiển cho PC4=1 PC4=1 kéo dài 25ms từ điều khiển cho PC4=0 PC4=0 kéo dài 25ms Lặp cho đủ số xung cho phép ngắt trở lại Trong ví dụ ta ý lệnh CLI (để cấm ngắt) lệnh STI (để cho phép ngắt) đầu cuối đoạn chương trình tính thời gian tạo dãy xung Điều cần thiết ta dùng chương trình để tạo khoảng thời gian ta muốn yêu cầu ngắt (nếu có) không ảnh hưởng tới việc tạo khoảng thời gian 8255A Bộ so sánh số U1 U2 + - CPU PB7 LED +5V PC4 40 PA1 K +5V Hình 5.42 Mạch 8255A thiết bị ngoại vi đơn giản M Ví dụ 3: Có mạch 8255A với địa sở 30H nối với phần tử ngoại vi đơn giản (hình 5.42) Lập trình để có U 1>U2 đọc trạng thái công tắc K, K đóng cho đèn LED tắt, K mở cho đèn LED sáng Giải: Ta phải định nghĩa từ điều khiển để định nghĩa cấu hình: PA vào, PB vào PCH Khi U1>U2 ta đọc PB7=1 (còn U1 ≤U2 PB7=0), lúc ta phải đọc trạng thái công tắc K để điều khiển đèn LED, K đóng ta đọc PB7=0 ta phải đưa PC4=0 để tắt đèn Định nghĩa PA PB PC CWR CW EQU EQU EQU EQU EQU 30H 31H 32H 33H 92H ; từ điều khiển cho yêu ; cầu 92H=10010010 đoạn chương trình lại là: MOV AL,CW OUT CWR,AL DocPB: IN AL,PB AND AL,80H JZ DocPB IN AL,PA AND AL,01H JZ Tat MOV CL,4 ROL AL,CL OUT PC,AL Tat: OUT PC,AL Ra: ; ; ; ; ; ; ; ; từ điều khiển AL đưa CW vào CWR đọc cổng PB PB7=1? đọc lại đọc cổng PA khoá K đóng (PA1=0)? đúng,tắt đèn ; đổi bit0 lên bit4 ; đưa tín hiệu thắp đèn ; đưa tín hiệu tắt đèn 41 42

Ngày đăng: 23/09/2016, 08:08

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan