You are on page 1of 23

Machine Translated by Google

Chương mười ba hệ thống đầu vào/đầu ra

mục tiêu

Mục tiêu của chương này là, sau khi nghiên cứu nó, người đọc có thể: • Xác định các yêu cầu giao diện và cách

thực hiện chúng: bộ đệm, bắt tay, bỏ phiếu và nối tiếp

giao tiếp. •

Giải thích cách sử dụng ngắt trong bộ vi điều khiển. • Giải thích chức năng

của bộ điều hợp giao diện ngoại vi và có thể lập trình chúng cho mục đích cụ thể
tình huống.

• Giải thích chức năng của bộ điều hợp giao diện truyền thông không đồng bộ.

13.1 Giao diện


Khi bộ vi xử lý được sử dụng để điều khiển một số hệ thống, nó phải chấp nhận
thông tin đầu vào, phản hồi thông tin đó và tạo ra tín hiệu đầu ra để thực
hiện hành động điều khiển cần thiết. Do đó, có thể có đầu vào từ cảm biến để
cung cấp dữ liệu vào và đầu ra cho các thiết bị bên ngoài như rơle và động
cơ. Thuật ngữ thiết bị ngoại vi được sử dụng cho một thiết bị, chẳng hạn như
cảm biến, bàn phím, bộ truyền động, v.v., được kết nối với bộ vi xử lý. Tuy
nhiên, thông thường không thể kết nối trực tiếp các thiết bị ngoại vi như vậy
với hệ thống bus bộ vi xử lý do thiếu khả năng tương thích về dạng và mức tín
hiệu. Do tính không tương thích như vậy nên một mạch được gọi là giao diện
được sử dụng giữa các thiết bị ngoại vi và bộ vi xử lý. Hình 13.1 minh họa sự
sắp xếp. Giao diện là nơi giải quyết sự không tương thích này.

Hình 13.1 Các giao diện.


Ngoại vi Giao diện Bộ vi xử lý Giao diện Ngoại vi

Chương này thảo luận về các yêu cầu của các giao diện như vậy và Bộ
điều hợp giao diện ngoại vi Motorola MC6820 và Bộ điều hợp giao diện
truyền thông không đồng bộ Motorola MC6850 được sử dụng rất phổ biến.

13.2 Địa chỉ đầu


Có hai cách mà bộ vi xử lý có thể chọn thiết bị đầu vào/đầu ra.
vào/đầu ra
Một số bộ vi xử lý, ví dụ như Zilog Z80, có đầu vào/đầu ra riêng biệt,
và các lệnh đầu vào đặc biệt như IN được sử dụng để đọc từ đầu vào
Machine Translated by Google

13.2 Địa chỉ đầu vào/đầu ra 327

thiết bị và các lệnh đầu ra đặc biệt như OUT được sử dụng để xuất ra thiết bị đầu ra.
Ví dụ: với Z80, chúng ta có thể có:

Ở A,(B2)

để đọc thiết bị đầu vào B2 và đưa dữ liệu vào bộ tích lũy A. Lệnh đầu ra có thể là:

NGOÀI (C), A

để ghi dữ liệu trong thanh ghi A vào cổng C.


Thông thường hơn, bộ vi xử lý không có hướng dẫn riêng cho đầu vào và đầu ra nhưng
sử dụng cùng một hướng dẫn như chúng sử dụng để đọc hoặc ghi vào bộ nhớ. Điều này
được gọi là đầu vào/đầu ra được ánh xạ bộ nhớ. Với phương pháp này, mỗi thiết bị đầu
vào/đầu ra có một địa chỉ, giống như một vị trí bộ nhớ. Bộ vi điều khiển Motorola
68HC11, Intel 8051 và PIC (bộ điều khiển giao diện ngoại vi) không có hướng dẫn đầu
vào/đầu ra riêng biệt và sử dụng ánh xạ bộ nhớ. Vì vậy, với ánh xạ bộ nhớ, chúng ta
có thể sử dụng:

LDAA $1003

để đọc dữ liệu đầu vào tại địa chỉ $1003 và:

STA $1004

để ghi dữ liệu vào đầu ra tại địa chỉ $1004.


Bộ vi xử lý sử dụng các cổng song song để nhập hoặc xuất byte dữ liệu. Nhiều thiết
bị ngoại vi thường yêu cầu nhiều cổng đầu vào/đầu ra. Điều này có thể là do từ dữ
liệu của thiết bị ngoại vi dài hơn từ dữ liệu của CPU. CPU sau đó phải chuyển dữ liệu
theo từng phân đoạn. Ví dụ: nếu chúng tôi yêu cầu đầu ra 16 bit với CPU 8 bit thì quy
trình là:

1 CPU chuẩn bị tám bit quan trọng nhất của dữ liệu;


2 CPU gửi tám bit dữ liệu quan trọng nhất đến cổng đầu tiên;
3 CPU chuẩn bị tám bit dữ liệu ít quan trọng nhất;
4 CPU gửi tám bit dữ liệu ít quan trọng nhất tới thiết bị thứ hai
Hải cảng;

5 do đó, sau một thời gian trễ, tất cả 16 bit đều có sẵn cho thiết bị ngoại vi.

13.2.1 Thanh ghi đầu vào/đầu ra

Bộ vi điều khiển Motorola 68HC11 có năm cổng A, B, C, D và E (xem Phần 10.3.1). Cổng
A, C và D là cổng hai chiều và có thể được sử dụng làm đầu vào hoặc đầu ra. Cổng B
chỉ là đầu ra và cổng E chỉ là đầu vào.
Việc sử dụng cổng hai chiều cho đầu vào hay đầu ra phụ thuộc vào việc cài đặt một bit
trong thanh ghi điều khiển của nó. Ví dụ: cổng A tại địa chỉ $1000 được điều khiển
bởi thanh ghi điều khiển tích lũy xung PACTL tại địa chỉ $1026. Để đặt cổng A cho đầu
vào cần có bit 7 bằng 0; đầu ra yêu cầu bit 7 là 1 (xem Hình 10.12). Cổng C là hai
chiều và 8 bit trong thanh ghi của nó tại địa chỉ $1003 được điều khiển bởi các bit
tương ứng trong thanh ghi hướng dữ liệu cổng của nó tại địa chỉ $1007. Khi bit hướng
dữ liệu tương ứng được đặt thành 0 thì nó là đầu vào, khi được đặt thành 1 thì nó là
đầu ra. Cổng D là hai chiều và chỉ chứa sáu dòng đầu vào/đầu ra tại địa chỉ $1008. Nó
Machine Translated by Google

328 Chương 13 Hệ thống đầu vào/đầu ra

được điều khiển bởi thanh ghi hướng cổng tại địa chỉ $1009. Hướng của mỗi dòng được
điều khiển bởi bit tương ứng trong thanh ghi điều khiển; nó được đặt thành 0 cho đầu
vào và 1 cho đầu ra. Một số cổng cũng có thể được thiết lập để thực hiện các chức năng
khác bằng cách đặt các bit khác trong thanh ghi điều khiển của chúng.
Đối với cổng có hướng cố định, ví dụ: cổng B trong Motorola 68HC11 chỉ là đầu ra,
các lệnh cần thiết để xuất ra một số giá trị, ví dụ $FF, chỉ đơn giản là những lệnh cần
thiết để tải dữ liệu đến địa chỉ đó. Các hướng dẫn có thể là:

THIẾT BỊ REGBAS $1000 ; địa chỉ cơ sở của thanh ghi I/


PORTB THIẾT BỊ $04 O; bù đắp PORTB từ REGBAS
LDX #REGBAS ; thanh ghi chỉ số tải X
LDAA #$FF ; nạp $FF vào bộ tích lũy
STAA CỔNG,X ; lưu trữ giá trị tại địa chỉ PORTB

Đối với cổng E hướng cố định, chỉ là đầu vào, lệnh đọc
một byte từ nó có thể là:

THIẾT BỊ REGBAS 1000 USD; địa chỉ cơ sở của thanh ghi I/O
CẢNG THIẾT BỊ $0A ; phần bù của PORTE từ REGBAS
LDAA CỔNG,X ; giá trị tải tại PORTE vào

; ắc quy

Đối với cổng hai chiều như C, trước khi có thể sử dụng nó làm đầu vào, chúng ta phải
định cấu hình cổng để nó hoạt động như một đầu vào. Điều này có nghĩa là đặt tất cả các
bit thành 0. Do đó chúng ta có thể có:

THIẾT BỊ REGBAS $1000 ; địa chỉ cơ sở của thanh ghi I/


PORTC THIẾT BỊ $03 O; phần bù của PORTC từ REGBAS
DDRC THIẾT BỊ $07 ; offset của thanh ghi hướng dữ liệu từ
; REGBAS
CLR DDRC,X ; đặt DDRS thành tất cả 0

Đối với bộ vi điều khiển Intel 8051 (xem Phần 10.3.2) có bốn cổng đầu vào/đầu ra hai
chiều song song. Khi một bit cổng được sử dụng làm đầu ra, dữ liệu chỉ được đưa vào bit
thanh ghi chức năng đặc biệt tương ứng; khi nó được sử dụng làm đầu vào thì số 1 phải
được ghi vào từng bit liên quan, do đó FFH có thể được ghi cho toàn bộ cổng được ghi
vào. Hãy xem xét một ví dụ về hướng dẫn Intel 8051 để bật đèn LED khi nhấn nút ấn. Nút
ấn cung cấp đầu vào cho P3.1 và đầu ra cho P3.0; nút ấn kéo đầu vào xuống thấp khi nhấn:

SETB P3.1 ; biến bit P3.1 thành 1 và do đó trở thành đầu vào

VÒNG MOV C,P3.1 ; đọc trạng thái của nút ấn


; và lưu trữ nó trong cờ mang theo
CPL ; bổ sung cho cờ mang theo
MOV C P3.0, C ; sao chép trạng thái cờ mang vào đầu ra
SJMP VÒNG ; tiếp tục lặp lại trình tự

Với bộ vi điều khiển PIC, hướng của tín hiệu tại các cổng hai chiều của nó được
thiết lập bởi các thanh ghi hướng TRIS (xem Phần 10.3.3). TRIS được đặt là 1 để đọc và
0 để ghi. Các thanh ghi cho PIC16C73/74 được sắp xếp thành hai dãy và trước khi có thể
chọn một thanh ghi cụ thể, dãy đó phải
Machine Translated by Google

13.3 Yêu cầu về giao diện 329

được chọn bằng cách đặt bit 5 trong thanh ghi STATUS. Sổ đăng ký này có ở cả hai
ngân hàng và vì vậy chúng ta không phải chọn ngân hàng để sử dụng sổ đăng ký này.
Các thanh ghi TRIS nằm trong ngân hàng 1 và các thanh ghi PORT trong ngân hàng 0. Do
đó, để đặt cổng B làm đầu ra, trước tiên chúng ta phải chọn ngân hàng 1 và sau đó đặt
TRISB thành 0. Sau đó, chúng ta có thể chọn ngân hàng 0 và ghi đầu ra vào PORTB. Ngân
hàng được chọn bằng cách thiết lập một bit trong thanh ghi TÌNH TRẠNG. Do đó, hướng
dẫn chọn cổng B làm đầu ra như sau:

đầu ra clrf PORTB bsf ; xóa tất cả các bit trong cổng B

TÌNH TRẠNG,RP0 ; sử dụng thanh ghi trạng thái để chọn ngân hàng

1 theo ; đặt RP0


clrf TRISB bcf thành 1; xóa bit để đầu

TÌNH TRẠNG,RP0 ra; sử dụng thanh ghi trạng thái để chọn ngân hàng 0

; cổng B hiện là đầu ra được đặt thành 0

13.3 Yêu cầu


Sau đây là một số hành động thường được yêu cầu đối với mạch giao diện.
về giao diện

1 Đệm/cách ly điện
Điều này là cần thiết khi thiết bị ngoại vi hoạt động ở điện áp hoặc dòng điện khác với

điện áp hoặc dòng điện trên hệ thống bus bộ vi xử lý hoặc có các tham chiếu nối đất khác nhau.

Thuật ngữ bộ đệm được sử dụng cho một thiết bị cung cấp khả năng cách ly và
khuếch đại dòng điện hoặc điện áp. Ví dụ: nếu đầu ra của bộ vi xử lý được kết
nối với đế của bóng bán dẫn, dòng điện cơ bản cần thiết để chuyển đổi bóng
bán dẫn sẽ lớn hơn dòng điện do bộ vi xử lý cung cấp và do đó bộ đệm được sử
dụng để tăng cường dòng điện. Cũng thường phải có sự cách ly giữa bộ vi xử lý
và hệ thống công suất cao hơn.

2 Kiểm soát thời gian

Kiểm soát thời gian là cần thiết khi tốc độ truyền dữ liệu của thiết bị ngoại
vi và bộ vi xử lý khác nhau, ví dụ như khi kết nối bộ vi xử lý với thiết bị
ngoại vi chậm hơn. Điều này có thể đạt được bằng cách sử dụng các đường truyền
đặc biệt giữa bộ vi xử lý và thiết bị ngoại vi để kiểm soát thời gian truyền
dữ liệu. Những đường như vậy được gọi là đường bắt tay và quá trình này được
gọi là bắt tay.

3 Chuyển đổi mã

Điều này là cần thiết khi mã được sử dụng bởi các thiết bị ngoại vi khác với
mã được sử dụng bởi bộ vi xử lý. Ví dụ: màn hình LED có thể yêu cầu bộ giải
mã để chuyển đổi đầu ra BCD từ bộ vi xử lý thành mã cần thiết để vận hành bảy
thành phần hiển thị.

4 Thay đổi số dòng


Bộ vi xử lý hoạt động trên độ dài từ cố định 4 bit, 8 bit hoặc 16 bit.
Điều này xác định số lượng dòng trong bus dữ liệu của bộ vi xử lý.
Thiết bị ngoại vi có thể có số dòng khác nhau, có thể yêu cầu từ dài hơn từ
của bộ vi xử lý.

5 Truyền dữ liệu nối tiếp song song và ngược lại


Trong bộ vi xử lý 8 bit, dữ liệu thường được xử lý 8 bit cùng một lúc. Để
truyền 8 bit đồng thời tới một thiết bị ngoại vi cần có 8 đường dẫn dữ liệu.
Hình thức truyền như vậy được gọi là truyền dữ liệu song song. Tuy nhiên,
không phải lúc nào cũng có thể truyền dữ liệu theo cách này. Ví dụ,
Machine Translated by Google

330 Chương 13 Hệ thống đầu vào/đầu ra

truyền dữ liệu qua hệ thống điện thoại công cộng chỉ có thể liên quan đến
một đường dẫn dữ liệu. Do đó, dữ liệu phải được truyền tuần tự từng bit một.
Hình thức truyền như vậy được gọi là truyền dữ liệu nối tiếp. Truyền dữ liệu

nối tiếp là phương pháp truyền dữ liệu chậm hơn so với truyền dữ liệu song
song. Do đó, nếu sử dụng truyền dữ liệu nối tiếp thì sẽ cần phải chuyển đổi
dữ liệu nối tiếp đến thành dữ liệu song song cho bộ vi xử lý và ngược lại
cho đầu ra từ bộ vi xử lý.

6 Chuyển đổi từ analog sang digital và ngược lại


Đầu ra từ các cảm biến nói chung là tương tự và điều này đòi hỏi phải chuyển
đổi sang tín hiệu số cho bộ vi xử lý. Đầu ra từ bộ vi xử lý là kỹ thuật số
và điều này có thể yêu cầu chuyển đổi sang tín hiệu tương tự để vận hành một
số bộ truyền động. Nhiều bộ vi điều khiển có bộ chuyển đổi tương tự sang số
tích hợp, ví dụ PIC 16C74/74A (xem Hình 10.30) và Motorola M68HC11 (xem Hình
10.10), do đó có thể xử lý các đầu vào tương tự. Tuy nhiên, khi cần cung cấp
đầu ra tương tự, đầu ra của bộ vi điều khiển thường phải đi qua bộ chuyển
đổi kỹ thuật số sang tương tự bên ngoài (xem Phần 13.6.2 để biết ví dụ).

13.3.1 Bộ đệm

Bộ đệm là một thiết bị được kết nối giữa hai phần của hệ thống để ngăn chặn sự
can thiệp không mong muốn giữa hai phần. Một công dụng quan trọng của bộ đệm là
ở cổng đầu vào của bộ vi xử lý để cách ly dữ liệu đầu vào khỏi bus dữ liệu của
bộ vi xử lý cho đến khi bộ vi xử lý yêu cầu. Bộ đệm thường được sử dụng là bộ
đệm ba trạng thái. Bộ đệm ba trạng thái được kích hoạt bằng tín hiệu điều khiển
để cung cấp đầu ra logic 0 hoặc 1, khi không được kích hoạt, nó có trở kháng
cao và do đó ngắt kết nối các mạch một cách hiệu quả. Hình 13.2 hiển thị các ký
hiệu cho bộ đệm tristate và các điều kiện để mỗi bộ đệm được kích hoạt.
Hình 13.2(a) và (b) hiển thị ký hiệu cho các bộ đệm không làm thay đổi logic
của đầu vào và Hình 13.2(c) và (d) cho các bộ đệm làm như vậy.

Hình 13.2 Bộ đệm: (a) không thay đổi

logic, được kích hoạt bởi 1, (b)

không thay đổi logic, được kích hoạt bởi 0, Cho phép Cho phép

(c) thay đổi logic, được kích hoạt bởi


Cho phép Đầu vào đầu ra Cho phép Đầu vào đầu ra
1, (d) thay đổi logic, được kích hoạt bởi 0.
0 0 Trở kháng cao 0 0 0

0 1 Trở kháng cao 0 1 1

1 0 0 1 0 Trở kháng cao


1 1 1 1 1 Trở kháng cao

(Một) (b)

Cho phép Cho phép

Cho phép Đầu vào đầu ra Cho phép Đầu vào đầu ra

0 0 Trở kháng cao 0 0 1

0 1 Trở kháng cao 0 1 0

1 0 1 1 0 Trở kháng cao


1 1 0 1 1 Trở kháng cao

(c) (d)
Machine Translated by Google

13.3 Yêu cầu về giao diện 331

Với bộ vi điều khiển PIC (xem Phần 10.3.3), bit TRIS được kết nối với đầu
vào cho phép của bộ đệm ba trạng thái. Nếu bit bằng 0, bộ đệm ba trạng thái
được kích hoạt và chỉ chuyển giá trị đầu vào của nó tới đầu ra của nó, nếu nó
là 1 thì bộ đệm ba trạng thái bị vô hiệu hóa và đầu ra trở nên trở kháng cao
(như trong Hình 13.2(b)).
Bộ đệm ba trạng thái như vậy được sử dụng khi một số thiết bị ngoại vi phải
chia sẻ cùng một đường dữ liệu từ bộ vi xử lý, tức là chúng được kết nối với
bus dữ liệu và do đó bộ vi xử lý cần có khả năng kích hoạt chỉ một trong các
thiết bị. tại một thời điểm với những người khác bị vô hiệu hóa. Hình 13.3 cho
thấy cách sử dụng các bộ đệm như vậy. Những bộ đệm như vậy có sẵn dưới dạng
mạch tích hợp, ví dụ như 74125 với bốn bộ đệm không đảo, hoạt động ở mức thấp
và 74126 với bốn bộ đệm không đảo, hoạt động ở mức cao.

Hình 13.3 Bộ đệm ba trạng thái.

Dữ liệu
8 bit
xe buýt
vi mô
bộ xử lý

Ba trạng thái Ba trạng thái Ba trạng thái

CHO PHÉP đệm E đệm E đệm

Ngoại vi Ngoại vi Ngoại vi


thiết bị thiết bị thiết bị

13.3.2 Bắt tay

Trừ khi hai thiết bị có thể gửi và nhận dữ liệu với tốc độ giống nhau, việc bắt
tay là cần thiết để trao đổi dữ liệu. Với việc bắt tay, thiết bị chậm hơn sẽ
kiểm soát tốc độ truyền dữ liệu. Để truyền dữ liệu song song , nhấp nháy và
xác nhận là hình thức bắt tay thường được sử dụng. Thiết bị ngoại vi gửi tín
hiệu SẴN SÀNG DỮ LIỆU đến phần đầu vào/đầu ra. Sau đó CPU xác định rằng tín
hiệu DATA READY đang hoạt động. Sau đó, CPU đọc dữ liệu từ phần đầu vào/đầu ra
và gửi tín hiệu INPUT ACKNOWLEDGED đến thiết bị ngoại vi. Tín hiệu này cho biết
quá trình truyền đã hoàn tất và do đó thiết bị ngoại vi có thể gửi nhiều dữ
liệu hơn. Đối với đầu ra, thiết bị ngoại vi sẽ gửi tín hiệu OUTPUT REQUEST hoặc
PERIPHERAL READY đến phần đầu vào/đầu ra. CPU xác định rằng tín hiệu PERIPHERAL
READY đang hoạt động và gửi dữ liệu đến thiết bị ngoại vi.

Tín hiệu PERIPHERAL READY tiếp theo có thể được sử dụng để thông báo cho CPU
rằng quá trình truyền đã hoàn tất.
Với bộ vi điều khiển MC68HC11, đầu vào/đầu ra nhấp nháy cơ bản hoạt động như
sau. Các tín hiệu điều khiển bắt tay sử dụng các chân STRA và STRB (Hình
13.4(a), xem thêm Hình 10.10 đối với mô hình khối đầy đủ), cổng C được sử dụng
cho đầu vào nhấp nháy và cổng B cho đầu ra nhấp nháy. Khi dữ liệu đã sẵn sàng
được gửi bởi bộ vi điều khiển, một xung sẽ được tạo ra tại STRA và gửi đến
thiết bị ngoại vi. Khi bộ vi điều khiển nhận được cạnh tăng hoặc giảm của tín
hiệu trên STRB, thì cổng đầu ra liên quan của bộ vi điều khiển sẽ gửi dữ liệu
đến thiết bị ngoại vi. Khi dữ liệu đã sẵn sàng để
Machine Translated by Google

332 Chương 13 Hệ thống đầu vào/đầu ra

vi điều khiển Ngoại vi NHÂN VIÊN STAI HNDS làm ơn INVBEGA

STR 0 0 0 0 0 PIOC

STRB 0 cho STRB hoạt động ở mức thấp,

1 cho hoạt động cao


Chút bắt tay,
Cảng C
0 cho I/O đơn giản 0 cho cạnh xuống STRA,
1 cho I/O bắt tay đầy đủ 1 cho cạnh tăng
Dữ liệu
Chọn chế độ xung cho STRB
Để kích hoạt ngắt
đầu ra, 0 cho mức STRB hoạt động,
1 cho xung STRB

Cờ trạng thái, đặt 1 khi phát hiện thấy cạnh STRA đã chọn

(Một)
(b) Sổ đăng ký PIOC

Hình 13.4 Điều khiển bắt tay: nhấp nháy và xác nhận.

được truyền đến vi điều khiển, thiết bị ngoại vi sẽ gửi tín hiệu đến STRA rằng nó
đã sẵn sàng và sau đó cạnh tăng hoặc giảm đối với tín hiệu trên STRB được sử dụng
để biểu thị mức độ sẵn sàng nhận. Trước khi bắt tay có thể xảy ra, thanh ghi đầu
vào/đầu ra song song PIOC tại địa chỉ $1002 phải được cấu hình trước tiên.
Hình 13.4(b) hiển thị trạng thái yêu cầu của các bit liên quan trong thanh ghi đó.
Đầu vào/đầu ra bắt tay đầy đủ bao gồm hai tín hiệu được gửi dọc theo STRB, tín
hiệu đầu tiên cho biết đã sẵn sàng nhận dữ liệu và tín hiệu tiếp theo cho biết dữ
liệu đã được đọc. Chế độ hoạt động này yêu cầu trong PIOC, bit HNDS được đặt thành
1 và nếu PLS được đặt thành 0 thì quá trình bắt tay đầy đủ được cho là có xung và

nếu là 1 thì nó được khóa liên động. Với hoạt động xung, một xung được gửi dưới
dạng xác nhận; với STRB lồng vào nhau thì có sự thiết lập lại (Hình 13.5).

vi-
Hình 13.5 Bắt tay đầy đủ: (a) Đang hoạt động vi- Đang hoạt động
bộ xử lý bờ rìa
xung, (b) khóa liên động. bộ xử lý bờ rìa

STR STR

STRB STRB

Ngoại vi Ngoại vi

Xung sau
Sẵn sàng Bận
đọc tín hiệu

(Một) (b)

13.3.3 Thăm dò và ngắt

Hãy xem xét tình huống trong đó tất cả việc truyền dữ liệu đầu vào/đầu ra đều được
chương trình kiểm soát. Khi các thiết bị ngoại vi cần được chú ý, chúng sẽ báo
hiệu cho bộ vi xử lý bằng cách thay đổi mức điện áp của đường dây đầu vào. Sau đó,
bộ vi xử lý có thể phản hồi bằng cách chuyển sang quy trình dịch vụ chương trình
cho thiết bị. Khi hoàn thành quy trình, việc quay lại chương trình chính sẽ diễn
ra. Do đó, việc điều khiển chương trình đầu vào/đầu ra là một vòng lặp để đọc đầu
vào và cập nhật đầu ra liên tục, với các bước chuyển sang quy trình dịch vụ theo yêu cầu.
Quá trình kiểm tra liên tục từng thiết bị ngoại vi để xem liệu nó đã sẵn sàng gửi
hoặc chấp nhận một byte dữ liệu mới hay chưa được gọi là thăm dò.
Machine Translated by Google

13.3 Yêu cầu về giao diện 333

Một giải pháp thay thế cho điều khiển chương trình là điều khiển ngắt. Một
ngắt liên quan đến một thiết bị ngoại vi kích hoạt một dòng yêu cầu ngắt riêng
biệt. Việc nhận một ngắt dẫn đến việc bộ vi xử lý tạm dừng việc thực thi chương
trình chính của nó và chuyển sang quy trình phục vụ cho thiết bị ngoại vi.
Việc ngắt không được dẫn đến mất dữ liệu và quy trình xử lý ngắt phải được tích
hợp trong phần mềm để trạng thái của các thanh ghi bộ xử lý và địa chỉ cuối
cùng được truy cập trong chương trình chính được lưu trữ ở các vị trí chuyên
dụng trong bộ nhớ. Sau quy trình phục vụ ngắt, nội dung của bộ nhớ được khôi
phục và bộ vi xử lý có thể tiếp tục thực thi chương trình chính từ nơi nó bị
gián đoạn (Hình 13.6).

Hình 13.6 Điều khiển ngắt. Chủ yếu

chương trình

Bộ vi xử lý
Bộ vi xử lý Ngoại vi nhận được ngắt

Hoàn thành
chỉ dẫn

Ngắt
thói quen dịch vụ

Tín hiệu ngắt

Tiếp tục với

chương trình chính

Vì vậy, điều sau đây xảy ra khi xảy ra gián đoạn.

1 CPU đợi cho đến khi kết thúc lệnh mà nó hiện đang thực thi trước khi xử lý
ngắt.
2 Tất cả các thanh ghi CPU được đẩy vào ngăn xếp và được thiết lập một bit để
dừng các ngắt tiếp theo xảy ra trong quá trình gián đoạn này. Ngăn xếp là
một vùng bộ nhớ đặc biệt trong đó các giá trị của bộ đếm chương trình có
thể được lưu trữ khi một chương trình con được thực thi. Bộ đếm chương trình
cung cấp địa chỉ của lệnh chương trình tiếp theo trong chương trình và do
đó việc lưu trữ giá trị này cho phép chương trình được tiếp tục lại tại nơi
nó bị ngắt để thực hiện ngắt.
3 CPU sau đó xác định địa chỉ của chương trình dịch vụ ngắt sẽ được thực thi.
Một số bộ vi xử lý có các chân ngắt chuyên dụng và chân được chọn sẽ xác
định địa chỉ nào sẽ được sử dụng. Các bộ vi xử lý khác chỉ có một chân ngắt
và sau đó thiết bị ngắt phải cung cấp dữ liệu cho bộ vi xử lý biết nơi đặt
quy trình dịch vụ ngắt. Một số bộ vi xử lý có cả hai loại đầu vào ngắt. Địa
chỉ bắt đầu của chương trình phục vụ ngắt được gọi là vectơ ngắt. Khối bộ
nhớ được gán để lưu trữ các vectơ được gọi là bảng vectơ. Địa chỉ vectơ
được nhà sản xuất chip cố định.

4 CPU phân nhánh tới chương trình phục vụ ngắt.


5 Sau khi hoàn thành quy trình này, các thanh ghi CPU được trả về từ ngăn xếp
và chương trình chính tiếp tục từ điểm nó dừng lại.
Machine Translated by Google

334 Chương 13 Hệ thống đầu vào/đầu ra

Không giống như lời gọi chương trình con, được đặt tại một điểm cụ thể trong chương
trình, một ngắt có thể được gọi từ bất kỳ điểm nào trong chương trình. Lưu ý rằng
chương trình không kiểm soát thời điểm xảy ra ngắt; sự kiểm soát nằm ở sự kiện
gián đoạn.

Các hoạt động vào/ra thường xuyên sử dụng các ngắt vì phần cứng thường không
thể chờ được. Ví dụ: bàn phím có thể tạo ra tín hiệu đầu vào ngắt khi nhấn phím.
Sau đó, bộ vi xử lý sẽ tạm dừng chương trình chính để xử lý dữ liệu đầu vào từ bàn
phím; nó xử lý thông tin và sau đó quay lại chương trình chính để tiếp tục từ nơi
nó đã dừng lại. Khả năng mã hóa một tác vụ như một quy trình dịch vụ ngắt và gắn
nó với tín hiệu bên ngoài giúp đơn giản hóa nhiều tác vụ điều khiển, cho phép chúng
được xử lý không chậm trễ. Đối với một số ngắt, có thể lập trình cho bộ vi xử lý
bỏ qua tín hiệu yêu cầu ngắt trừ khi bit kích hoạt được đặt. Những ngắt như vậy
được gọi là có thể che được.

Motorola 68HC1 có hai đầu vào yêu cầu ngắt bên ngoài. XIRQ là một ngắt không
thể che dấu và sẽ luôn được thực thi khi hoàn thành lệnh hiện đang được thực thi.
Khi ngắt XIRQ xảy ra, CPU sẽ chuyển sang chương trình phục vụ ngắt có vectơ ngắt
được giữ ở địa chỉ $FFF4/5 (byte thấp và byte cao của địa chỉ). IRQ là một ngắt có
thể che được. Khi bộ vi điều khiển nhận được tín hiệu ở chân yêu cầu ngắt IRQ ở
mức thấp, bộ vi điều khiển sẽ chuyển sang quy trình dịch vụ ngắt được chỉ định bởi
các vectơ ngắt $FFF2/3. IRQ có thể bị che bởi mặt nạ ngắt tập lệnh SEI và bị che
bởi mặt nạ ngắt rõ ràng lệnh CLI. Khi kết thúc quy trình dịch vụ ngắt, lệnh RTI
được sử dụng để quay lại chương trình chính.

Với Intel 8051, các nguồn ngắt được kích hoạt hoặc vô hiệu hóa riêng lẻ thông
qua thanh ghi có địa chỉ bit IE (kích hoạt ngắt) tại địa chỉ 0A8H (xem Hình 10.26),
số 0 vô hiệu hóa ngắt và số 1 cho phép ngắt. Ngoài ra, có một bit kích hoạt/vô
hiệu hóa toàn cục trong thanh ghi IE được thiết lập để cho phép tất cả các ngắt
bên ngoài hoặc bị xóa để vô hiệu hóa tất cả các ngắt bên ngoài. Thanh ghi TCON
(Hình 10.25) được sử dụng để xác định loại tín hiệu đầu vào ngắt sẽ bắt đầu ngắt.

Hình 13.7 INTCON. 7 6 5 4 3 2 1 0

GIE PEIE T0IE INTE RBIE T0IF INTF RBIF

Cho phép ngắt toàn cầu Cờ ngắt bên ngoài


1 = cho phép tất cả được vạch mặt Bit cho phép ngắt
1 = đã xảy ra ngắt
1 = cho phép ngắt INTF
ngắt quãng 0 = ngắt không xảy ra
0 = vô hiệu hóa ngắt INTF
0 = vô hiệu hóa tất cả các ngắt

Với bộ vi điều khiển PIC, các ngắt được điều khiển bởi thanh ghi INTCON (Hình
13.7). Để sử dụng bit 0 của cổng B làm ngắt, nó phải được đặt làm đầu vào và thanh
ghi INTCON phải được khởi tạo bằng 1 trong INTE và 1 trong GIE. Nếu ngắt xảy ra ở
8051
cạnh lên thì INTEDG (bit 6) trong thanh ghi OPTION (xem Hình 10.32) phải được đặt
INT0
thành 1; nếu ở cạnh xuống thì nó phải được đặt thành 0. Khi xảy ra ngắt, INTF được
P3.2
đầu ra
đặt. Nó có thể được xóa bằng lệnh bcf INTCON,INTF.
lò nung
Nhiệt độ
P1.7
cảm biến
Để minh họa một chương trình liên quan đến các ngắt bên ngoài, hãy xem xét một
P3.3
chương trình điều khiển bật/tắt đơn giản cho hệ thống sưởi trung tâm có bộ vi điều
INT1
khiển Intel 8051 (Hình 13.8). Lò sưởi trung tâm được điều khiển bởi đầu ra từ P1.7

Hình 13.8 Hệ thống sưởi trung tâm và hai cảm biến nhiệt độ được sử dụng, một để xác định khi nào nhiệt độ giảm xuống

hệ thống. dưới 20,5°C và cái còn lại khi


Machine Translated by Google

13.3 Yêu cầu về giao diện 335

nó tăng lên trên 21,0°C. Cảm biến nhiệt độ 21,0°C được kết nối với ngắt INT0, cổng
3.2 và cảm biến nhiệt độ 20,5°C được kết nối với ngắt INT1, cổng 3.3. Bằng cách
chọn bit IT1 là 1 trong thanh ghi TCON, các ngắt ngoài được kích hoạt cạnh, tức là
được kích hoạt khi có sự thay đổi từ 1 đến 0. Khi nhiệt độ tăng lên 21,0°C, ngắt
ngoài INT0 có đầu vào thay đổi từ 1 đến 0 và ngắt được kích hoạt để đưa ra lệnh
CLR P1.7 cho đầu ra 0 để tắt lò. Khi nhiệt độ giảm xuống 20,5°C, ngắt ngoài INT1
có đầu vào thay đổi từ 0 thành 1 và ngắt được kích hoạt để đưa ra lệnh SETB P1.7
cho đầu ra 1 để bật lò. Chương trình MAIN chỉ là một bộ hướng dẫn để cấu hình và
kích hoạt các ngắt, thiết lập điều kiện ban đầu của lò để bật nếu nhiệt độ nhỏ hơn
21,0° hoặc tắt nếu nhiệt độ cao hơn, sau đó không làm gì cho đến khi xảy ra ngắt.
Với chương trình, một tệp tiêu đề đã được giả định:

ORG 0
LJMP CHÍNH

ORG 0003H ISR0 ; cung cấp địa chỉ đầu vào cho ISR0
CLR P1.7 ; làm gián đoạn dịch vụ thường xuyên để biến

; tắt lò ;
RETI trở về từ gián đoạn

ORG 0013H ISR1 ; cung cấp địa chỉ đầu vào cho ISR1
SETB P1.7 ; gián đoạn dịch vụ thường lệ để tắt lò; trở về
RETI từ gián đoạn

ORG 30H
BỘ CHÍNH EX0; để kích hoạt ngắt ngoài 0 SETB EX1; để kích hoạt ngắt
ngoài 1 SETB IT0; thiết lập để kích hoạt khi thay đổi từ 1
đến 0 SETB IT1; thiết lập để kích hoạt khi thay đổi từ 0 SETB P1.7 ;
bật lò P3.2, TẠI ĐÂY ; nếu nhiệt độ lớn hơn 21,0°C nhảy tới

JB

; TẠI ĐÂY và để lò bật


CLR P1.7 TẠI ; tắt lò đi
ĐÂY SJMP TẠI ĐÂY ; chỉ không làm gì cho đến khi xảy ra gián đoạn
KẾT THÚC

Bộ vi điều khiển, ngoài yêu cầu ngắt, còn có ngắt đặt lại và ngắt không thể che
được. Ngắt đặt lại là một loại ngắt đặc biệt và khi điều này xảy ra, hệ thống sẽ
đặt lại; do đó khi tính năng này được kích hoạt, tất cả hoạt động trong hệ thống
sẽ dừng lại, địa chỉ bắt đầu của chương trình chính được tải và quy trình khởi
động được thực thi. Bộ vi điều khiển M68HC11 có bộ đếm thời gian theo dõi hoạt
động bình thường của máy tính (COP).
Điều này nhằm phát hiện lỗi xử lý phần mềm khi CPU không thực thi một số phần mã
nhất định trong thời gian quy định. Khi điều này xảy ra, bộ hẹn giờ COP sẽ hết
thời gian chờ và quá trình thiết lập lại hệ thống sẽ được bắt đầu.
Ngắt không thể che dấu không thể bị che giấu và do đó không có phương pháp nào
ngăn chặn quy trình dịch vụ ngắt được thực thi khi nó được kết nối với đường này.
Ngắt loại này thường được dành riêng cho các hoạt động khẩn cấp chẳng hạn như những
hoạt động cần thiết khi mất điện, ví dụ như chuyển sang nguồn điện dự phòng.
Machine Translated by Google

336 Chương 13 Hệ thống đầu vào/đầu ra

13.3.4 Giao diện nối tiếp

Với việc truyền dữ liệu song song, một đường được sử dụng cho mỗi bit; tuy nhiên,
các hệ thống nối tiếp sử dụng một đường truyền duy nhất để truyền dữ liệu theo các
bit tuần tự. Có hai loại truyền dữ liệu nối tiếp cơ bản: không đồng bộ và đồng bộ.
Với truyền không đồng bộ, mỗi máy thu và máy phát sử dụng tín hiệu đồng hồ riêng
nên máy thu không thể biết khi nào một từ bắt đầu hay dừng. Do đó, mỗi từ dữ liệu
được truyền cần mang các bit bắt đầu và dừng riêng để người nhận có thể biết nơi
một từ dừng và từ khác bắt đầu (Hình 13.9). Với phương thức truyền như vậy, máy
phát và máy thu thường ở xa nhau (xem Chương 15 để biết chi tiết về các giao diện
tiêu chuẩn). Với truyền đồng bộ, máy phát và máy thu có tín hiệu đồng hồ chung và
do đó việc truyền và nhận có thể được đồng bộ hóa.

Khung dữ liệu

Nhàn rỗi Bắt đầu Bắt đầu Nhàn rỗi


Dừng lại Nhàn rỗi Dừng lại

chút chút chút chút


Bit dữ liệu Bit dữ liệu

Hình 13.9 Truyền không đồng bộ.

Bộ vi điều khiển MC68HC11 (xem Hình 10.10) có giao diện truyền thông nối tiếp
(SCI) có thể được sử dụng để truyền không đồng bộ và do đó có thể được sử dụng để
giao tiếp với các thiết bị ngoại vi từ xa. SCI sử dụng chân PD1 của cổng D làm
đường truyền và cổng PD0 làm đường nhận. Những dòng này có thể được kích hoạt hoặc
vô hiệu hóa bởi thanh ghi điều khiển SCI. Bộ vi điều khiển cũng có giao diện ngoại
vi nối tiếp (SPI) để truyền đồng bộ. Điều này có thể được sử dụng cho giao tiếp nối
tiếp cục bộ, nghĩa là cục bộ về cơ bản bên trong máy chứa chip.

13,4 Bộ điều
hợp giao Các giao diện có thể được thiết kế riêng cho các đầu vào/đầu ra cụ thể; tuy nhiên,
hiện có sẵn các thiết bị giao diện đầu vào/đầu ra có thể lập trình cho phép lựa
diện ngoại vi
chọn nhiều tùy chọn đầu vào và đầu ra khác nhau bằng phần mềm. Các thiết bị như vậy
được gọi là bộ điều hợp giao diện ngoại vi (PIA).
Giao diện song song PIA thường được sử dụng là Motorola MC 6821. Nó là một phần
của dòng MC6800 và do đó có thể được gắn trực tiếp vào các bus Motorola MC6800 và
MC68HC11. Về cơ bản, thiết bị có thể được coi là hai cổng đầu vào/đầu ra song song,

với logic điều khiển của chúng, để liên kết với bộ vi xử lý chủ. Hình 13.10 cho
thấy cấu trúc cơ bản của MC6821 PIA và các kết nối chân cắm.

PIA chứa hai cổng dữ liệu song song 8 bit, được gọi là A và B. Mỗi cổng có các
cổng sau.

1 Một thanh ghi giao diện ngoại vi. Cổng đầu ra phải hoạt động theo cách khác với
cổng đầu vào vì dữ liệu phải được giữ cho thiết bị ngoại vi.
Vì vậy, đối với đầu ra, một thanh ghi được sử dụng để lưu trữ dữ liệu tạm thời. Thanh ghi

được cho là được chốt, tức là được kết nối, khi một cổng được sử dụng cho đầu ra và không

được chốt khi được sử dụng cho đầu vào.

2 Thanh ghi hướng dữ liệu xác định xem các đường vào/ra là đầu vào hay đầu ra.
Machine Translated by Google

13.4 Bộ điều hợp giao diện ngoại vi 337

IRQA CA1
Kiểm soát trạng
thái ngắt
Đến MPU IRQ CA2
Đường điều khiển

Thanh ghi điều khiển A


CRA Thanh ghi hướng

dữ liệu A

MPU Bus dữ liệu


DDRA

dữ liệu bộ đệm
xe buýt DBB

Thanh ghi đầu ra A


Vào/ra
ORA Giao diện
cổng
ngoại vi A
dữ liệu A

Đăng ký đầu

vào xe buýt

BIR

Thanh ghi đầu ra B


QUỶ
CS0, CS1, CS2 được chọn chip Cổng
Giao diện
RS0, RS1 đang chọn thanh ghi dữ
ngoại vi B
liệu I/O B

CS0

CS1

CS2
ýP
tU
a
ỉ eM
u

h X
b
đ
c

RS0 Điều khiển


lựa chọn
RS1
và đọc/ghi chip Hướng dữ liệu
R/W
đăng ký B
CHO PHÉP Thanh ghi điều khiển B DDRB
CRB
CÀI LẠI

Đường điều khiển

CB1
Đến MPU IRQ Kiểm soát trạng
thái ngắt B
IRQB CB2

Hình 13.10 MC6821 PIA.

3 Thanh ghi điều khiển xác định các kết nối logic hoạt động trong thiết bị ngoại vi.
4 Hai đường điều khiển, CA1 và CA2 hoặc CB1 và CB2.

Hai đường địa chỉ của bộ vi xử lý kết nối trực tiếp PIA thông qua hai đường chọn
thanh ghi RS0 và RS1. Điều này cung cấp cho PIA bốn địa chỉ cho sáu thanh ghi. Khi
RS1 ở mức thấp, bên A được đánh địa chỉ và khi nó ở mức cao, bên B. Địa chỉ RS0
được ghi ở một bên cụ thể, tức là A hoặc B. Khi RS0 ở mức cao, thanh ghi điều khiển
được đánh địa chỉ, khi ở mức thấp thì thanh ghi dữ liệu hoặc dữ liệu thanh ghi
hướng. Đối với một phía cụ thể, thanh ghi dữ liệu và thanh ghi hướng dữ liệu có
cùng địa chỉ. Địa chỉ nào trong số chúng được xác định bởi bit 2 của thanh ghi điều
khiển (xem bên dưới).
Mỗi bit trong thanh ghi điều khiển A và B liên quan đến một số tính năng hoạt
động của các cổng. Vì vậy, đối với thanh ghi điều khiển A, chúng ta có các bit được
hiển thị trong Hình 13.11. Một mẫu tương tự được sử dụng cho thanh ghi điều khiển B.

Hình 13.11 Thanh ghi điều khiển. B7 B6 B5 B4 B3 B2 B1 B0

IRQA1 IRQA2 CA2 điều khiển DDRA Kiểm soát CA1


truy cập
Machine Translated by Google

338 Chương 13 Hệ thống đầu vào/đầu ra

Bit 0 và 1

Hai bit đầu tiên kiểm soát cách hoạt động của các dòng điều khiển đầu vào CA1 hoặc CB1.

Bit 0 xác định xem đầu ra ngắt có được bật hay không. B0 5 0 vô hiệu hóa ngắt bộ vi xử

lý IRQA(B), B0 5 1 cho phép ngắt. CA1 và CB1 không được đặt theo mức tĩnh của đầu vào

mà được kích hoạt cạnh, tức là được đặt bằng tín hiệu thay đổi. Bit 1 xác định xem bit

7 được thiết lập theo chuyển đổi từ cao xuống thấp (cạnh cuối) hay chuyển tiếp từ thấp

đến cao (cạnh đầu).

B1 5 0 đặt chuyển tiếp từ cao xuống thấp, B1 5 1 đặt chuyển tiếp từ thấp lên cao.

Bit 2

Bit 2 xác định xem các thanh ghi hướng dữ liệu hoặc các thanh ghi dữ liệu ngoại vi có

được đánh địa chỉ hay không. Với B2 được đặt thành 0, các thanh ghi hướng dữ liệu được

định địa chỉ, với B2 được đặt thành 1, các thanh ghi dữ liệu ngoại vi được chọn.

Bit 3, 4 và 5

Các bit này cho phép PIA thực hiện nhiều chức năng khác nhau. Bit 5 xác định xem dòng

điều khiển 2 là đầu vào hay đầu ra. Nếu bit 5 được đặt thành 0 thì dòng điều khiển 2 là

đầu vào, nếu được đặt thành 1 thì nó là đầu ra. Ở chế độ đầu vào, cả CA2 và CB2 đều

hoạt động theo cùng một cách. Bit 3 và 4 xác định xem đầu ra ngắt có hoạt động hay

không và chuyển tiếp nào được đặt bit 6.

Với B5 5 0, tức là CA2(CB2) được đặt làm đầu vào: B3 5 0 vô hiệu hóa ngắt bộ vi xử

lý IRQA(B) bởi CA2(CB2); B3 5 1 cho phép ngắt bộ vi xử lý IRQA(B) bằng CA2(CB2); B4 5

0 xác định rằng cờ ngắt IRQA(B), bit B6, được thiết lập bởi sự chuyển đổi từ cao xuống

thấp trên CA2(CB2); B4 5 1 xác định rằng nó được thiết lập bởi sự chuyển đổi từ thấp

lên cao.

B5 5 1 đặt CA2(CB2) làm đầu ra. Ở chế độ đầu ra CA2 và CB2 hoạt động khác nhau. Đối

với CA2: với B4 5 0 và B3 5 0, CA2 ở mức thấp trong quá trình chuyển đổi ENABLE (E) từ

cao xuống thấp đầu tiên sau khi bộ vi xử lý đọc thanh ghi dữ liệu ngoại vi A và được

chuyển đổi CA1 tiếp theo trở về mức cao; với B4 5 0 và B3 5 1, CA2 xuống mức thấp trong

quá trình chuyển đổi ENABLE từ cao xuống thấp đầu tiên sau khi bộ vi xử lý đọc thanh

ghi dữ liệu ngoại vi A và được đưa về mức cao bởi quá trình chuyển đổi ENABLE từ cao

xuống thấp tiếp theo. Đối với CB2: với B4 5 0 và B3 5 0, CB2 ở mức thấp trong quá trình

chuyển đổi ENABLE từ thấp đến cao đầu tiên sau khi bộ vi xử lý ghi vào thanh ghi dữ

liệu ngoại vi B và được đưa về mức cao trong quá trình chuyển đổi CB1 tiếp theo; với B4

5 0 và B3 5 1, CB2 xuống mức thấp trong quá trình chuyển đổi ENABLE từ thấp lên cao đầu

tiên sau khi bộ vi xử lý ghi vào thanh ghi dữ liệu ngoại vi B và được trả về mức cao

bởi quá trình chuyển đổi ENABLE từ thấp đến cao tiếp theo. Với B4 5 1 và B3 5 0,

CA2(CB2) xuống mức thấp khi bộ vi xử lý ghi B3 5 0 vào thanh ghi điều khiển. Với B4 5

0 và B3 5 1, CA2(CB2) lên cao khi bộ vi xử lý ghi B3 5 1 vào thanh ghi điều khiển.

Bit 6

Đây là cờ ngắt CA2(CB2), được thiết lập bởi các chuyển tiếp trên CA2(CB2).

Với CA2(CB2) là đầu vào 1B5 5 02, nó sẽ bị xóa bằng bộ vi xử lý đọc của thanh ghi dữ

liệu A(B). Với CA2(CB2) là đầu ra 1B5 5 12, cờ bằng 0 và không bị ảnh hưởng bởi các

chuyển đổi CA2(CB2).

Bit 7

Đây là cờ ngắt CA1(CB1), được xóa bằng bộ vi xử lý đọc thanh ghi dữ liệu A(B).

Quá trình lựa chọn các tùy chọn sẽ được sử dụng được gọi là cấu hình hoặc khởi tạo PIA.

Kết nối RESET được sử dụng để xóa tất cả các thanh ghi của PIA. PIA sau đó phải được khởi

tạo.
Machine Translated by Google

13.4 Bộ điều hợp giao diện ngoại vi 339

13.4.1 Khởi tạo PIA

Trước khi có thể sử dụng PIA, một chương trình phải được viết và sử dụng sao cho
các điều kiện được đặt cho luồng dữ liệu ngoại vi mong muốn. Chương trình PIA được
đặt ở đầu chương trình chính để sau đó bộ vi xử lý có thể đọc dữ liệu ngoại vi. Do
đó, chương trình khởi tạo chỉ được chạy một lần.

Chương trình khởi tạo để thiết lập cổng nào sẽ là đầu vào và cổng nào sẽ là đầu
ra có thể có các bước sau.

1 Xóa bit 2 của mỗi thanh ghi điều khiển bằng cách đặt lại để các thanh ghi hướng
dữ liệu được định địa chỉ. Thanh ghi hướng dữ liệu A có địa chỉ là XXX0 và
thanh ghi hướng dữ liệu B có địa chỉ là XXX2.
2 Để A là cổng đầu vào, tải tất cả các số 0 vào thanh ghi hướng A.
3 Để B là cổng đầu ra, hãy tải tất cả các cổng vào thanh ghi hướng B.
4 Tải 1 vào bit 2 của cả hai thanh ghi điều khiển. Thanh ghi dữ liệu A bây giờ được đánh địa chỉ

là XXX0 và thanh ghi dữ liệu B là XXX2.

Do đó, một chương trình khởi tạo bằng hợp ngữ để biến bên A thành đầu vào và bên B
thành đầu ra, sau khi thiết lập lại:

BAN ĐẦU LDAA #$00 ; Tải số không


STAA $2000 ; Làm cổng đầu vào bên A
LDAA #$FF ; Tải những cái
STAA $2000 ; Làm cổng đầu ra bên B
LDAA #$04 ; Tải 1 vào bit 2, tất cả các bit khác 0
STAA $2000 ; Chọn cổng A thanh ghi dữ liệu
STAA $2002 ; Chọn thanh ghi dữ liệu cổng B

Giờ đây, dữ liệu ngoại vi có thể được đọc từ cổng đầu vào A bằng lệnh LDAA 2000 và
bộ vi xử lý có thể ghi dữ liệu ngoại vi vào cổng đầu ra B bằng lệnh STAA 2002.

13.4.2 Kết nối tín hiệu ngắt qua PIA

Motorola MC6821 PIA (Hình 13.12) có hai kết nối IRQA và IRQB, qua đó các tín hiệu
ngắt có thể được gửi đến bộ vi xử lý để yêu cầu ngắt từ CA1, CA2 hoặc CB1, CB2 có
thể điều khiển chân IRQ của bộ vi xử lý đến trạng thái hoạt động. -trạng thái thấp.
Khi chương trình khởi tạo cho PIA được xem xét ở phần trước, chỉ bit 2 của thanh
ghi điều khiển được đặt là 1, các bit khác là 0. Các số 0 này vô hiệu hóa đầu vào
ngắt. Để sử dụng các ngắt, bước khởi tạo lưu $04 vào thanh ghi điều khiển phải được
sửa đổi. Hình thức sửa đổi sẽ phụ thuộc vào loại thay đổi ở đầu vào cần thiết để
bắt đầu ngắt.

Ví dụ: giả sử chúng ta muốn CA1 kích hoạt ngắt khi có quá trình chuyển đổi từ
cao xuống thấp, với CA2 và CB1 không được sử dụng và CB2 được bật và sử dụng cho
đầu ra thiết lập/đặt lại. Định dạng thanh ghi điều khiển để đáp ứng thông số kỹ
thuật này dành cho CA:

B0 là 1 để cho phép ngắt trên CA1.


B1 bằng 0 để cờ ngắt IRQA1 được thiết lập bằng cách chuyển đổi từ cao xuống thấp
trên CA1.
Machine Translated by Google

340 Chương 13 Hệ thống đầu vào/đầu ra

Hình 13.12 Giao diện với +5V +5V


PIA.
IRQA
IRQB Không có kết nối

RS0 A0

RS1 A1
Cảng A CS1 A14

CS2 A15

CS0 VMA

E E

R/W R/W
CA1
CÀI LẠI CÀI LẠI
CA2 PIA MPU
Không có kết nối CB1 6821 6802
D0 D0
CB2
D1 D1
D2 D2

D3 D3
D4 D4
Cổng B D5 D5
D6 D6
D7 D7

B2 là 1 để cấp quyền truy cập vào thanh ghi dữ liệu.

B3, B4, B5 bằng 0 vì CA2 bị vô hiệu hóa.

B6, B7 là các cờ chỉ đọc và do đó có thể sử dụng 0 hoặc 1.

Do đó, định dạng cho CA1 có thể là 00000101, tức là 05 theo ký hiệu thập lục phân. Định dạng

thanh ghi điều khiển cho CB2 là:

B0 là 0 để vô hiệu hóa CB1.

B1 có thể là 0 hoặc 1 vì CB1 bị vô hiệu hóa.

B2 là 1 để cấp quyền truy cập vào thanh ghi dữ liệu.

B3 là 0, B4 là 1 và B5 là 1, để chọn cài đặt/đặt lại.

B6, B7 là các cờ chỉ đọc và do đó có thể sử dụng 0 hoặc 1.

Do đó, định dạng cho CA1 có thể là 00110100, tức là 34 theo ký hiệu thập lục phân. Chương trình

khởi tạo sau đó có thể đọc:

BAN ĐẦU LDAA #$00 ; Tải số không

STAA $2000 ; Làm cổng đầu vào bên A


LDAA #$FF ; Tải những cái

STAA $2000 ; Làm cổng đầu ra bên B

LDAA #$05 ; Tải định dạng thanh ghi điều khiển cần thiết

STAA $2000 ; Chọn cổng A thanh ghi dữ liệu

LDAA #$34 ; Tải định dạng thanh ghi điều khiển cần thiết

STAA $2002 ; Chọn thanh ghi dữ liệu cổng B


Machine Translated by Google

13.5 Giao diện truyền thông nối tiếp 341

13.4.3 Một ví dụ về giao tiếp với PIA

Ví dụ về giao tiếp với PIA, Hình 13.13 cho thấy một mạch có thể được sử
dụng với động cơ bước đơn cực (xem Phần 9.7.2). Các cuộn dây cảm ứng có
thể tạo ra lực điện trở ngược lớn khi chuyển mạch, do đó cần có một số
cách cách ly cuộn dây khỏi PIA. Có thể sử dụng máy quang điện, điốt hoặc
điện trở. Điốt cho giao diện rẻ và đơn giản, điện trở không cách ly hoàn
toàn PIA.

Hình 13.13 Giao tiếp với


stepper.
Bước

+V

Cô lập
điốt
PB0
PB1
PB2
PB3

PIA

13,5 Giao
diện truyền thông Bộ thu/phát không đồng bộ đa năng (UART) là thành phần thiết yếu của hệ
nối tiếp thống truyền thông nối tiếp, chức năng là thay đổi dữ liệu nối tiếp thành
song song cho đầu vào và dữ liệu song song thành nối tiếp cho đầu ra. Một
dạng lập trình phổ biến của UART là bộ điều hợp giao diện truyền thông
không đồng bộ (ACIA) của Motorola MC6850; Hình 13.14 thể hiện sơ đồ khối
của các phần tử cấu thành.
Luồng dữ liệu giữa bộ vi xử lý và ACIA thông qua tám đường hai chiều
từ D0 đến D7. Hướng của luồng dữ liệu được điều khiển bởi bộ vi xử lý
thông qua đầu vào đọc/ghi tới ACIA. Ba dòng chọn chip được sử dụng để
đánh địa chỉ một ACIA cụ thể. Dòng chọn thanh ghi được sử dụng để chọn
các thanh ghi cụ thể trong ACIA; nếu đường chọn thanh ghi ở mức cao thì
các thanh ghi truyền và nhận dữ liệu được chọn, nếu ở mức thấp thì các
thanh ghi điều khiển và trạng thái được chọn. Thanh ghi trạng thái chứa
thông tin về trạng thái truyền dữ liệu nối tiếp khi chúng xảy ra và được
sử dụng để đọc các dòng phát hiện sóng mang dữ liệu và xóa để gửi.
Thanh ghi điều khiển ban đầu được sử dụng để thiết lập lại ACIA và sau đó để xác
định tốc độ truyền dữ liệu nối tiếp và định dạng dữ liệu.
Machine Translated by Google

342 Chương 13 Hệ thống đầu vào/đầu ra

Máy Trình
Đồng hồ truyền
phát điện đồng hồ tạo chẵn lẻ
Cho phép

Đọc viết
Truyền Truyền thanh ghi
Điều khiển
Chip chọn 0
lựa đăng ký dữ liệu dịch chuyển Chuyển dữ liệu
Chip chọn 1
chọn và đọc/
Chip chọn 2 ghi chip
Chuyển giao
Đăng ký chọn
điều khiển
Xóa để gửi

D0 Đăng kí

trạng thái
D1

D2 Kiểm soát Yêu cầu ngắt

ngắt
D3
Bus dữ liệu

D4 bộ đệm
Phát hiện sóng mang dữ liệu

D5
Yêu cầu để gửi
Thanh ghi Nhận quyền Kiểm tra
D6
điều khiển kiểm soát chẵn lẻ

D7

Nhận thanh Nhận đăng ký

ghi dữ liệu ca Nhận dữ liệu

Máy Đồng bộ.


Nhận đồng hồ
phát điện đồng hồ Hợp lý

Hình 13.14 MC6850 ACIA.

Phía ngoại vi của ACIA bao gồm hai đường dữ liệu nối tiếp và ba đường điều
khiển. Dữ liệu được gửi bởi đường dữ liệu truyền và được nhận bởi đường dữ liệu
nhận. Tín hiệu điều khiển được cung cấp bằng cách xóa để gửi, phát hiện sóng
mang dữ liệu và yêu cầu gửi. Hình 13.15 cho thấy các định dạng bit của điều
khiển và Hình 13.16 của các thanh ghi trạng thái.
Truyền dữ liệu nối tiếp không đồng bộ thường được sử dụng để liên lạc giữa
hai máy tính, có hoặc không có modem, hoặc máy tính và máy in (xem Chương 15 để
thảo luận thêm).

b7 b6 b5 B 4 b3 b2 b1 b0

Xác định liệu

Chế độ ngắt ACIA tới Xác định liệu Để đặt lại và chọn tỷ lệ chia
Xác định dữ liệu nối tiếp
MPU được bật khi đầu giữa bên ngoài nhận và
Ngắt ACIA được kích định
vào dữ liệu hoạt cho dữ liệu đồng hồ truyền và tốc độ truyền và
dạng b2: 0 chẵn, 1 chẵn
0 bị tắt, được bật 1 nhận dữ liệu 0 0 :
đầu ra và cung cấp lẻ lẻ b3: 0 hai, 1 bit
quyền kiểm soát 1, 0 1: 16, 1 0: 64 1 1:
dừng b4: 0 bảy, 1
thiết lập lại tổng thể
đầu ra yêu cầu tám bit dữ liệu trong word
gửi 0
0 : ngắt cho phép đầu ra dữ liệu 0
1 : cho phép ngắt cho đầu ra dữ liệu
1 0 : Đường RTS lên cao

Hình 13.15 Thanh ghi điều khiển.


Machine Translated by Google

13.5 Giao diện truyền thông nối tiếp 343

Hình 13.16 Thanh ghi trạng thái.


b7 b6 b5 B 4 b3 b2 b1 b0

Bit yêu cầu ngắt Nhận thanh ghi dữ liệu


Bản sao của IRQ cờ đầy đủ 0 để đăng ký
xuất ra MPU trống, 1 cho đầy

Cho biết nếu có Truyền cờ đăng ký dữ liệu đầy đủ


lỗi chẵn lẻ 0 cho đăng ký trống, 1 cho đầy đủ

Cho biết lỗi tràn bộ thu


Cờ phát hiện sóng mang dữ liệu 0 cho sóng mang

hiện tại, 1 do mất người chuyên chở

Cho biết liệu có lỗi đóng khung hay không Sử dụng khi truyền dữ liệu xuống
đường dây điện thoại sử dụng modem
Xóa bit để gửi

Cung cấp đầu vào bắt tay cho modem

13.5.1 Giao diện nối tiếp của vi điều khiển

Nhiều bộ vi điều khiển có giao diện nối tiếp, tức là UART tích hợp. Ví dụ:
Motorola M68HC11 có giao diện ngoại vi nối tiếp (SPI), giao diện đồng bộ và
giao diện truyền thông nối tiếp (SCI), giao diện không đồng bộ (xem Hình
10.10). SPI yêu cầu bộ vi điều khiển và các thiết bị được kết nối bên ngoài
sử dụng cùng một tín hiệu đồng hồ (Hình 13.17(a)). SPI cho phép một số bộ vi
điều khiển, với cơ sở này, được kết nối với nhau. SCI là một giao diện không
đồng bộ và do đó cho phép hệ thống SCI và thiết bị được kết nối bên ngoài sử
dụng các tín hiệu đồng hồ khác nhau (Hình 13.17(b)). Các bộ vi xử lý đa năng
không có SCI nên UART, ví dụ Motorola MC6850, sau đó phải được sử dụng để cho
phép thực hiện giao tiếp nối tiếp. Trong một số trường hợp cần có nhiều SCI
và do đó bộ vi điều khiển M68HC11 yêu cầu bổ sung UART.

Hình 13.17 (a) SPI, (b) SCI. Bậc thầy nối tiếp

dữ liệu ra Dữ liệu nối tiếp

Dữ liệu trong
SPI KHOA HỌC Phần cuối

Đồng hồ nối tiếp


nối tiếp

nô lệ ngoại
Bậc thầy
vi

M68HC11 M68HC11

(Một) (b)

SPI được khởi tạo bằng các bit trong thanh ghi điều khiển SPI (SPCR) và
thanh ghi điều khiển hướng dữ liệu cổng D (DDRD). Thanh ghi trạng thái SPI
chứa các bit trạng thái và lỗi. SCI được khởi tạo bằng cách sử dụng thanh ghi
điều khiển SCI 1, thanh ghi điều khiển SCI 2 và thanh ghi điều khiển tốc độ baud.
Cờ trạng thái nằm trong thanh ghi trạng thái SCI.
Intel 8051 có giao diện nối tiếp tích hợp với bốn chế độ hoạt động, chúng

được chọn bằng cách ghi số 1 hoặc số 0 vào các bit SMO và SM1 trong thanh
ghi SCON (điều khiển cổng nối tiếp) tại địa chỉ 98H (Hình 13.18)
(Bảng 13.1).
Ở chế độ 0, dữ liệu nối tiếp vào và ra bởi RXD. Chân TXD xuất ra đồng hồ
dịch chuyển và sau đó được sử dụng để đồng bộ hóa việc truyền dữ liệu và
Machine Translated by Google

344 Chương 13 Hệ thống đầu vào/đầu ra

SM0 TB SM1 SM2 REN RB8 T1 R1


Nhận ngắt
Ở chế độ 2 và 3, nếu 1 thì
cờ, được đặt bằng phần cứng
R1 không được kích hoạt nếu nhận được
và xóa bằng phần mềm
Bit RB8 là 0, ở chế độ 1 nếu
SM2 là 1 R1 sẽ không được Truyền ngắt
Cài đặt bằng phần mềm
được kích hoạt nếu bit dừng hợp lệ cờ, được đặt bằng phần cứng
cho phép tiếp nhận nối tiếp,
không nhận được, ở chế độ 0 Ở chế độ 2 và xóa bằng phần mềm
xóa bằng phần mềm
nên được đặt thành 0 Ở chế độ 2 và 3, thứ chín
để vô hiệu hóa việc tiếp nhận
và 3, thứ chín bit đã nhận được, ở chế độ
bit được truyền đi 1 nếu SM2 bằng 0 thì đó là

bit dừng ở chế độ 0


không được sử dụng

Hình 13.18 Thanh ghi SCON.

Bảng 13.1 Các chế độ cổng nối


SMO SM1 Cách thức Sự miêu tả Tốc độ truyền
tiếp Intel 8051.

0 0 0 Thanh ghi dịch Osc. tần số/12


0 1 1 chuyển UART 8 bit Biến đổi
1 0 2 UART 9 bit Osc. tần số/12 hoặc 64
1 1 3 UART 9 bit Biến đổi

thu nhận. Việc tiếp nhận được bắt đầu khi REN bằng 1 và R1 bằng 0. Quá trình
truyền được bắt đầu khi bất kỳ dữ liệu nào được ghi vào SBUF, đây là bộ đệm
cổng nối tiếp tại địa chỉ 99H. Ở chế độ 1, 10 bit được truyền trên TXD hoặc
nhận trên RXD; đây là bit bắt đầu bằng 0, tám bit dữ liệu và bit dừng bằng 1.
Quá trình truyền được bắt đầu bằng cách ghi vào SBUF và quá trình nhận được bắt đầu
bằng quá trình chuyển đổi từ 1 sang 0 trên RXD. Ở chế độ 2 và 3, 11 bit được truyền
trên TXD hoặc nhận trên RXD.

Bộ vi điều khiển PIC có SPI (xem Hình 10.30) có thể được sử dụng cho
truyền thông nối tiếp đồng bộ. Khi dữ liệu được ghi vào thanh ghi SSBUF, nó
sẽ được dịch chuyển ra khỏi chân SDO đồng bộ với tín hiệu đồng hồ trên SCK
và xuất ra qua chân RC5 dưới dạng tín hiệu nối tiếp với bit quan trọng nhất
xuất hiện đầu tiên và tín hiệu đồng hồ qua RC3. Đầu vào vào thanh ghi SSBUF
thông qua RC4. Nhiều bộ vi điều khiển PIC cũng có UART để tạo giao diện nối
tiếp để sử dụng với dữ liệu nối tiếp được truyền không đồng bộ. Khi truyền,
mỗi byte 8 bit được đóng khung bởi bit START và bit STOP. Khi bit START được
truyền đi, đường RX giảm xuống mức thấp và bộ thu sau đó có thể đồng bộ hóa
quá trình chuyển đổi từ cao xuống thấp này. Sau đó, người nhận sẽ đọc 8 bit
dữ liệu nối tiếp.

13.6 Ví dụ về
Sau đây là những ví dụ về giao tiếp.
giao diện

13.6.1 Kết nối màn hình bảy đoạn với bộ giải mã

Hãy xem xét nơi đầu ra từ bộ vi điều khiển được sử dụng để điều khiển bộ
hiển thị LED bảy đoạn (xem Phần 6.5). Một đèn LED đơn là đèn báo bật/tắt và
do đó số hiển thị được chỉ định sẽ phụ thuộc vào đèn LED nào đang bật. Hình
13.19 cho thấy cách chúng ta có thể sử dụng bộ vi điều khiển để điều khiển một
Machine Translated by Google

13.6 Ví dụ về giao diện 345

Hình 13.19 Điều khiển màn hình. +5V +5V

16/3 14/3
7
PB0 MỘT 13 Một

1
PB1 B 12 b
Một

2
PB2 C 11 c f b
6 g
PB3 D 10 d
5
PB4 RBI 9 e

Bộ giải mã 15 f e c
vi điều khiển 7447 d
18 g

4
RBO số 8 9 h

màn hình cực dương chung sử dụng trình điều khiển bộ giải mã, điều này có thể
nhận đầu vào BCD và chuyển đổi nó thành mã thích hợp cho màn hình.
Đối với bộ giải mã 7447, các chân 7, 1, 2 và 6 là các chân đầu vào của bộ
giải mã cho đầu vào BCD với các chân 13, 12, 11, 10, 9, 15 và 14 là đầu ra
cho các phân đoạn của màn hình. Chân 9 của màn hình là dấu thập phân.
Bảng 13.2 thể hiện tín hiệu đầu vào và đầu ra của bộ giải mã.

Bảng 13.2 Bộ giải mã 7447 BCD cho màn hình bảy đoạn.

Chân đầu vào Chân đầu ra

Trưng bày 6 2 1 7 13 12 11 10 9 15 14

0 LLLL BẬT BẬT BẬT BẬT BẬT TẮT

1 LLLH TẮT BẬT TẮT TẮT TẮT TẮT

2 LLHL BẬT BẬT TẮT BẬT BẬT TẮT BẬT

3 LLHH BẬT BẬT BẬT TẮT TẮT BẬT

4 LHLL TẮT BẬT TẮT TẮT BẬT

5 LHHL BẬT TẮT BẬT BẬT TẮT BẬT BẬT

6 LHHL TẮT TẮT BẬT BẬT BẬT BẬT

7 LHHH BẬT BẬT TẮT TẮT TẮT TẮT

số 8 HLHH BẬT BẬT TẮT TẮT TẮT TẮT

9 HLHL BẬT BẬT TẮT TẮT TẮT TẮT

Xóa trống là khi không có phân đoạn nào được thắp sáng. Điều này được sử
dụng để ngăn chặn số 0 đứng đầu xảy ra khi chúng ta có ba đơn vị hiển thị và
chỉ muốn hiển thị 10 thay vì 010, do đó, hãy xóa số 0 đứng đầu và ngăn không
cho nó được chiếu sáng. Điều này đạt được nhờ đầu vào xóa gợn sóng (RBI) được
đặt ở mức thấp. Khi RBI ở mức thấp và các đầu vào BCD A, B, C và D ở mức thấp
thì đầu ra sẽ bị trống. Nếu đầu vào khác 0 thì đầu ra xóa gợn sóng (RBO) ở
mức cao bất kể trạng thái RBI. RBO của chữ số đầu tiên trong màn hình có thể
được kết nối với RBI của chữ số thứ hai và RBO của chữ số thứ hai được kết
nối với RBI của chữ số thứ ba, do đó chỉ cho phép số 0 cuối cùng được để
trống (Hình 13.20).
Machine Translated by Google

346 Chương 13 Hệ thống đầu vào/đầu ra

Hình 13.20 Xóa gợn sóng.

Trưng bày
để trống

Một bc de fg Một bc de fg Một bc de fg


0 1 1
RBI RBO RBI RBO RBI RBO

D C B MỘT D C B MỘT D C B MỘT

0 1 0 0 0 0 1 0 0 0 0 0

Với màn hình có nhiều thành phần hiển thị, thay vì sử dụng bộ giải mã
cho từng thành phần, ghép kênh được sử dụng với một bộ giải mã duy nhất.
Hình 13.21 cho thấy mạch ghép kênh của loại màn hình cực âm chung bốn
phần tử. Dữ liệu BCD được xuất ra từ cổng A và bộ giải mã sẽ hiển thị đầu
ra của bộ giải mã tới tất cả các màn hình. Mỗi màn hình có cực âm chung
được nối đất thông qua một bóng bán dẫn. Màn hình không thể sáng trừ khi
bóng bán dẫn được bật bằng đầu ra từ cổng B. Do đó, bằng cách chuyển đổi
giữa PB0, PB1, PB2 và PB3, đầu ra từ cổng A có thể được chuyển sang màn
hình thích hợp. Để duy trì màn hình hiển thị liên tục, màn hình được bật
liên tục đủ thường xuyên để màn hình hiển thị không bị nhấp nháy.

PA0
PA1
PA2
PA3
PA4 Bộ giải mã
PA5

+5V

PB0
PB1
PB2
PB3

Hình 13.21 Ghép bốn màn hình.


Machine Translated by Google

bản tóm tắt 347

Ghép kênh phân chia thời gian có thể được sử dụng để cho phép hiển thị nhiều
chữ số cùng một lúc.

13.6.2 Giao tiếp tương tự

Cần phải chuyển đổi kỹ thuật số sang tương tự khi cần có đầu ra từ bộ vi xử lý
hoặc vi điều khiển để cung cấp đầu ra tín hiệu tương tự. Ví dụ: Thiết bị tương
tự DAC AD557 có thể được sử dụng cho mục đích này. Nó tạo ra điện áp đầu ra tỷ
lệ thuận với đầu vào kỹ thuật số và các chốt đầu vào có sẵn để giao tiếp với
bộ vi xử lý. Nếu không cần chốt thì chân 9 và 10 được nối đất. Dữ liệu được
chốt khi có cạnh dương, tức là thay đổi từ thấp lên cao, trên đầu vào sang chân
9 hoặc chân 10. Dữ liệu sau đó được giữ cho đến khi cả hai chân này trở về mức
thấp. Khi điều này xảy ra, dữ liệu sẽ được truyền từ chốt sang DAC để chuyển
đổi sang điện áp analog.

Hình 13.22 Tạo PB7 1 16 đầu ra

dạng sóng. PB6 2 15 Chân 16 là VOUT


PB5 3 14 Chân 15 là VOUT SENSE A
PB4 4 13 Chân 14 là VOUT SENSE B
PB3 5 12 Chân 13 và 12 là GND

PB2 6 11 Chân 11 là +VCC


0,1 F
PB1 7 10 Chân 10 là chip chọn CS
PB0 số 8 9 Chân 9 là chip kích hoạt CE

M68HC11 Chân 8 là LSB AD557


Chân 1 là MSB

Hình 13.22 cho thấy AD557 có chốt không được sử dụng và được kết nối với
Motorola M68HC11 để khi chạy chương trình sau, nó sẽ tạo ra đầu ra điện áp răng
cưa. Các dạng sóng điện áp khác có thể dễ dàng được tạo ra bằng cách thay đổi
chương trình:

CĂN CỨ THIẾT BỊ $1000 ; Địa chỉ cơ sở của thanh ghi I/O


THIẾT BỊ PORTB $04 ; Bù đắp PORTB từ BASE

ORG $C000
LDX #CƠ SỞ ; Điểm X để đăng ký cơ sở
CLR PORTB,X ; Gửi 0 tới DAC
LẠI INC PORTB,X ; Tăng thêm 1
ÁO NGỰC LẠI ; Lặp lại
KẾT THÚC

Bản tóm tắt

Yêu cầu về giao diện thường có nghĩa là đệm/cách ly điện, điều khiển thời gian,
chuyển đổi mã, thay đổi số dòng, nối tiếp sang song song và ngược lại, chuyển
đổi từ tương tự sang kỹ thuật số và ngược lại. Trừ khi hai thiết bị có thể gửi
và nhận dữ liệu với tốc độ giống nhau, việc bắt tay là
cần thiết.
Kiểm soát vòng là chương trình điều khiển đầu vào/đầu ra trong đó một vòng lặp được sử

dụng liên tục để đọc đầu vào và cập nhật đầu ra, với các bước nhảy tới các quy trình dịch vụ
Machine Translated by Google

348 Chương 13 Hệ thống đầu vào/đầu ra

theo yêu cầu, tức là một quá trình kiểm tra liên tục từng thiết bị ngoại vi để xem
liệu nó đã sẵn sàng gửi hoặc chấp nhận một byte dữ liệu mới hay chưa. Một giải
pháp thay thế cho điều khiển chương trình là điều khiển ngắt. Một ngắt liên quan
đến một thiết bị ngoại vi kích hoạt một dòng yêu cầu ngắt riêng biệt. Việc nhận
một ngắt dẫn đến việc bộ vi xử lý tạm dừng việc thực thi chương trình chính của nó
và chuyển sang quy trình phục vụ cho thiết bị ngoại vi. Sau quy trình phục vụ
ngắt, nội dung của bộ nhớ được khôi phục và bộ vi xử lý có thể tiếp tục thực thi
chương trình chính từ nơi nó bị gián đoạn.
Có hai loại truyền dữ liệu nối tiếp cơ bản: không đồng bộ và đồng bộ. Với
truyền không đồng bộ, mỗi máy thu và máy phát sử dụng tín hiệu đồng hồ riêng nên
máy thu không thể biết khi nào một từ bắt đầu hay dừng. Do đó, mỗi từ dữ liệu được
truyền cần mang các bit bắt đầu và dừng riêng để người nhận có thể biết nơi một từ
dừng và từ khác bắt đầu. Với truyền đồng bộ, máy phát và máy thu có tín hiệu đồng
hồ chung và do đó việc truyền và nhận có thể được đồng bộ hóa.

Bộ điều hợp giao diện ngoại vi (PIA) là thiết bị giao diện đầu vào/đầu ra có
thể lập trình cho phép lựa chọn nhiều tùy chọn đầu vào và đầu ra khác nhau bằng
phần mềm.
Bộ thu/phát không đồng bộ đa năng (UART) là thành phần thiết yếu của hệ thống
truyền thông nối tiếp, chức năng là thay đổi dữ liệu nối tiếp thành song song cho
đầu vào và dữ liệu song song thành nối tiếp cho đầu ra. Một dạng lập trình phổ
biến của UART là bộ điều hợp giao diện truyền thông không đồng bộ (ACIA).

Các vấn đề

13.1 Mô tả các chức năng có thể được yêu cầu của một giao diện.

13.2 Giải thích sự khác biệt giữa giao diện song song và giao diện nối tiếp.

13.3 Giải thích ý nghĩa của hệ thống ánh xạ bộ nhớ cho đầu vào/đầu ra.

13.4 Chức năng của bộ điều hợp giao diện ngoại vi là gì?

13.5 Mô tả cấu trúc của Motorola MC6821 PIA.

13.6 Giải thích chức năng của chương trình khởi tạo cho PIA.

13.7 Ưu điểm của việc sử dụng các ngắt bên ngoài thay vì thăm dò phần mềm làm phương tiện
giao tiếp với thiết bị ngoại vi là gì?

13.8 Đối với Motorola MC6821 PIA, giá trị nào sẽ được lưu trong thanh ghi điều khiển nếu
CA1 bị vô hiệu hóa, CB1 là đầu vào ngắt được kích hoạt và được thiết lập bởi quá
trình chuyển đổi từ thấp đến cao, CA2 sẽ được kích hoạt và sử dụng như một bộ/
đặt lại đầu ra và CB2 sẽ được bật và ở mức thấp trong lần chuyển đổi E từ thấp lên
cao đầu tiên sau khi bộ vi xử lý ghi vào thanh ghi dữ liệu ngoại vi B và trở về
mức cao trong lần chuyển đổi E từ thấp lên cao tiếp theo?

13.9 Viết bằng hợp ngữ một chương trình khởi tạo Motorola MC6821 PIA để đạt được thông số
kỹ thuật nêu trong bài toán 13.8.

13.10 Viết chương trình khởi tạo Motorola MC6821 bằng hợp ngữ
PIA để đọc 8 bit dữ liệu từ cổng A.

You might also like