Professional Documents
Culture Documents
Chương 13
Chương 13
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
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ộ.
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.
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
LDAA $1003
STA $1004
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.
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
đượ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à:
Đố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ó:
Đố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ớ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
đượ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
TÌNH TRẠNG,RP0 ra; sử dụng thanh ghi trạng thái để chọn ngân hàng 0
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.
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ị.
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ý.
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.
không thay đổi logic, được kích hoạt bởi 0, Cho phép Cho phép
(Một) (b)
Cho phép Đầu vào đầu ra Cho phép Đầu vào đầu ra
(c) (d)
Machine Translated by Google
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.
Dữ liệu
8 bit
xe buýt
vi mô
bộ xử lý
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
STR 0 0 0 0 0 PIOC
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)
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
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).
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ụ
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.
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.
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
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
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
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
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
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
IRQA CA1
Kiểm soát trạng
thái ngắt
Đến MPU IRQ CA2
Đường điều khiển
dữ liệu A
dữ liệu bộ đệm
xe buýt DBB
Đăng ký đầu
vào xe buýt
BIR
CS0
CS1
CS2
ýP
tU
a
ỉ eM
u
ị
h X
b
đ
c
CB1
Đến MPU IRQ Kiểm soát trạng
thái ngắt B
IRQB CB2
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.
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
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
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ử
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
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
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ỉ
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:
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.
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:
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
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
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
LDAA #$05 ; Tải định dạng thanh ghi điều khiển cần thiết
LDAA #$34 ; Tải định dạng thanh ghi điều khiển cần thiết
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.
+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
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
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
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
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
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
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 trong
SPI KHOA HỌC Phần cuối
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
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
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
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.
Trưng bày 6 2 1 7 13 12 11 10 9 15 14
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
Trưng bày
để trống
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
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.
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 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:
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
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
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.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.