Download as pdf or txt
Download as pdf or txt
You are on page 1of 40

Machine Translated by Google

Phần IV
Hệ thống vi xử lý
Machine Translated by Google

Trang này cố ý để trống


Machine Translated by Google

Chương 10 Bộ vi xử lý và vi điều
khiển

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ể: •Mô tả cấu trúc cơ bản của
hệ thống vi xử lý. •Mô tả kiến trúc của các bộ vi xử lý thông thường
và cách chúng có thể được kết hợp trong đó
các hệ thống vi xử lý.
•Mô tả cấu trúc cơ bản của bộ vi điều khiển và cách các thanh ghi của chúng có thể được thiết lập để thực hiện
nhiệm vụ.

•Giải thích cách chương trình có thể được phát triển bằng cách sử dụng lưu đồ và mã giả.

10.1 Điều khiển


Nếu chúng ta lấy một bài toán điều khiển đơn giản, ví dụ như trình tự đèn
đỏ, hổ phách, xanh lục tại một ngã tư giao thông, thì có thể giải quyết bằng
hệ thống điều khiển điện tử bao gồm các mạch tích hợp logic tổ hợp và tuần tự.
Tuy nhiên, với tình huống phức tạp hơn, có thể có nhiều biến số hơn cần
kiểm soát theo trình tự điều khiển phức tạp hơn. Giải pháp đơn giản
nhất hiện nay không phải là xây dựng một hệ thống dựa trên các kết nối
có dây cứng của các mạch tích hợp logic tổ hợp và tuần tự mà là sử dụng
bộ vi xử lý và sử dụng phần mềm để tạo ra 'các kết nối'.
Các hệ thống vi xử lý mà chúng ta quan tâm trong cuốn sách này được
sử dụng làm hệ thống điều khiển và được gọi là các bộ vi xử lý nhúng.
Điều này là do bộ vi xử lý như vậy được dành riêng để điều khiển một
chức năng cụ thể và tự khởi động, không cần sự can thiệp của con người
và hoàn toàn khép kín với chương trình vận hành riêng. Đối với con
người, không rõ hệ thống này là một bộ vi xử lý. Vì vậy, một máy giặt
hiện đại có chứa bộ vi xử lý nhưng tất cả những gì người vận hành phải
làm để vận hành nó là chọn kiểu giặt cần thiết bằng cách nhấn nút thích
hợp hoặc xoay công tắc rồi nhấn nút để khởi động.
Chương này là tổng quan về cấu trúc của bộ vi xử lý và vi điều khiển
với hai chương tiếp theo thảo luận về lập trình và giao tiếp trong
Chương 13.

10.2 Hệ thống vi xử
Các hệ thống sử dụng bộ vi xử lý về cơ bản có ba phần: bộ xử lý trung

tâm (CPU) để nhận biết và thực hiện các hướng dẫn chương trình (đây là
phần sử dụng bộ vi xử lý), giao diện đầu vào và đầu ra để xử lý giao tiếp
giữa bộ vi xử lý và thế giới bên ngoài (thuật ngữ cổng được sử dụng cho
giao diện) và bộ nhớ để
Machine Translated by Google

242 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

Mỗi bit của một từ

được gửi riêng cùng Xe buýt không sử dụng truyền nối tiếp
dây dẫn riêng của nó với tất cả các bit của một từ được gửi đi

dọc theo một dây dẫn duy nhất


Xe buýt sử dụng đường truyền song song

Xe buýt địa chỉ

Ký ức Ký ức Đầu vào/

Địa chỉ đầu ra


đầu ra
bộ giải mã
Hải cảng

Pha lê vi- Xem phần rom ĐẬP

bộ xử lý 5.3.4

Chip Xem phần Xem phần Xem phần


Xem phần
Cái đồng hồ
cho phép 10.2.3 10.2.3 10.2.4
10.2.2

Đầu vào

Hải cảng

Bus dữ liệu

Xe buýt điều khiển

Hình 10.1 Hình dạng chung của hệ thống vi xử lý và các bus của nó. Tất cả các thành phần chia sẻ cùng
một bus dữ liệu và bus địa chỉ. Sự sắp xếp này được gọi là kiến trúc von Neumann.

giữ các hướng dẫn chương trình và dữ liệu. Hình 10.1 minh họa cách bố trí chung của
một hệ thống vi xử lý.
Bộ vi xử lý có bộ nhớ và các cách sắp xếp đầu vào/đầu ra khác nhau trên cùng một
chip được gọi là bộ vi điều khiển.

10.2.1Xe buýt

Tín hiệu số di chuyển từ phần này sang phần khác dọc theo đường dẫn gọi là bus.
Bus, theo nghĩa vật lý, chỉ là một số dây dẫn song song dọc theo đó các tín hiệu điện
có thể được truyền đi và là các đường dẫn có thể được chia sẻ bởi tất cả các chip
trong hệ thống. Điều này là do nếu sử dụng các kết nối riêng biệt giữa các chip thì
sẽ có rất nhiều dây dẫn kết nối. Sử dụng bus kết nối dùng chung có nghĩa là khi một
chip đưa dữ liệu lên bus, các chip khác phải đợi đến lượt cho đến khi quá trình
truyền dữ liệu hoàn tất trước khi một trong số chúng có thể đưa dữ liệu của nó lên
bus.
Thông thường, một bus có 16 hoặc 32 kết nối song song để mỗi kết nối có thể mang đồng
thời 1 bit của từ dữ liệu. Điều này cho phép truyền tải nhanh hơn so với kết nối nối
tiếp trong đó toàn bộ một từ được gửi theo một chuỗi bit dọc theo một dây dẫn.

Có ba dạng bus trong hệ thống vi xử lý.

1 bus dữ liệu

Dữ liệu liên quan đến chức năng xử lý của CPU được truyền bởi bus dữ liệu. Vì
vậy, nó được sử dụng để vận chuyển một từ đến hoặc đi từ CPU và bộ nhớ hoặc các
giao diện đầu vào/đầu ra. Mỗi dây trong bus mang tín hiệu nhị phân, tức là 0 hoặc
1. Do đó, với bus bốn dây, chúng ta có thể có
Machine Translated by Google

10.2 Hệ thống vi xử lý 243

Từ 1010 được mang, mỗi bit được mang bởi một dây riêng biệt trong bus, như:

Từ Dây xe buýt

0 (bit ít quan trọng nhất) Dây bus dữ liệu đầu tiên

1 Dây bus dữ liệu thứ hai

0 Dây bus dữ liệu thứ ba

1 (bit quan trọng nhất) Dây bus dữ liệu thứ tư

Bus dữ liệu càng có nhiều dây thì độ dài từ có thể được sử dụng càng dài.
Phạm vi giá trị mà một mục dữ liệu có thể có bị giới hạn ở phạm vi giá trị
có thể được biểu thị bằng độ dài từ. Do đó, với một từ có độ dài 4 bit thì
số giá trị là 24 5 16. Do đó, nếu dữ liệu được gửi đi, chẳng hạn như nhiệt
độ, thì phạm vi nhiệt độ có thể có phải được chia thành 16 đoạn nếu chúng
ta muốn biểu diễn điều đó phạm vi bằng một từ 4 bit.
Bộ vi xử lý sớm nhất là thiết bị 4 bit (độ dài từ) và bộ vi xử lý 4 bit như
vậy vẫn được sử dụng rộng rãi trong các thiết bị như đồ chơi, máy giặt và
bộ điều khiển hệ thống sưởi trung tâm trong gia đình. Tiếp theo là các bộ
vi xử lý 8 bit, ví dụ như Motorola 6800, Intel 8085A và Zilog Z80. Hiện nay
đã có sẵn bộ vi xử lý 16 bit, 32 bit và 64 bit; tuy nhiên, bộ vi xử lý 8 bit
vẫn được sử dụng rộng rãi cho bộ điều khiển.

2 Xe buýt địa chỉ

Bus địa chỉ mang các tín hiệu cho biết nơi tìm thấy dữ liệu và do đó lựa
chọn các vị trí bộ nhớ hoặc cổng đầu vào hoặc đầu ra nhất định. Mỗi vị trí
lưu trữ trong thiết bị bộ nhớ có một mã nhận dạng duy nhất, được gọi là địa
chỉ của nó, để hệ thống có thể chọn một lệnh hoặc mục dữ liệu cụ thể trong
bộ nhớ. Mỗi giao diện đầu vào/đầu ra cũng có một địa chỉ. Khi một địa chỉ cụ
thể được chọn theo địa chỉ của nó được đặt trên bus địa chỉ, chỉ vị trí đó
mới được mở cho các liên lạc từ CPU. Do đó, CPU chỉ có thể giao tiếp với một
vị trí tại một thời điểm. Một máy tính có bus dữ liệu 8 bit thường có bus
địa chỉ rộng 16 bit, tức là 16 dây. Kích thước bus địa chỉ này cho phép đánh
địa chỉ 216 vị trí; 216 là 65536 vị trí và thường được viết là 64K, trong
đó K bằng 1024. Bộ nhớ có thể được xử lý càng nhiều thì khối lượng dữ liệu
có thể được lưu trữ càng lớn và các chương trình có thể được sử dụng càng
lớn và phức tạp hơn.

3 Xe buýt điều khiển

Các tín hiệu liên quan đến hoạt động điều khiển được truyền bởi bus điều
khiển. Ví dụ, bộ vi xử lý cần thông báo cho các thiết bị bộ nhớ xem chúng sẽ
đọc dữ liệu từ thiết bị đầu vào hay ghi dữ liệu vào thiết bị đầu ra. Thuật
ngữ READ được sử dụng để nhận tín hiệu và VIẾT để gửi tín hiệu. Bus điều
khiển cũng được sử dụng để mang tín hiệu đồng hồ hệ thống; chúng nhằm đồng
bộ hóa tất cả các hoạt động của hệ thống vi xử lý. Đồng hồ là một bộ dao động
được điều khiển bằng tinh thể và tạo ra các xung đều đặn.

10.2.2Bộ vi xử lý

Bộ vi xử lý thường được gọi là bộ xử lý trung tâm (CPU). Đó là một phần của hệ


thống xử lý xử lý dữ liệu,
Machine Translated by Google

244 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

Xe buýt địa chỉ Bus dữ liệu

Xe buýt địa chỉ

Bus dữ liệu

Chỉ dẫn
Lá cờ Cây rơm Tổng quan Chương trình
Tích lũy
bộ giải mã
quầy tính tiền
sổ đăng ký con trỏ sổ đăng ký
và đăng ký

ALU Điều khiển

đơn vị

Xe buýt điều khiển

Tín hiệu điều khiển bên ngoài

Hình 10.2 Kiến trúc bên trong chung của bộ vi xử lý.

tìm nạp các lệnh từ bộ nhớ, giải mã và thực thi chúng.


Cấu trúc bên trong – thuật ngữ kiến trúc được sử dụng – phụ thuộc vào bộ
vi xử lý liên quan. Hình 10.2 biểu thị một cách đơn giản kiến trúc chung
của bộ vi xử lý.

Sau đây là chức năng của các bộ phận cấu thành của bộ vi xử lý.

1 Đơn vị số học và logic (ALU)


Đơn vị số học và logic chịu trách nhiệm thực hiện thao tác dữ liệu.

2 thanh ghi
Dữ liệu bên trong mà CPU hiện đang sử dụng được giữ tạm thời trong một
nhóm thanh ghi trong khi các lệnh đang được thực thi. Đây là các vị trí
bộ nhớ trong bộ vi xử lý và được sử dụng để lưu trữ thông tin liên
quan đến việc thực hiện chương trình. Một bộ vi xử lý sẽ chứa một nhóm
các thanh ghi, mỗi loại thanh ghi có một chức năng khác nhau.

3 Bộ điều khiển

Bộ điều khiển xác định thời gian và trình tự hoạt động.


Nó tạo ra các tín hiệu định thời được sử dụng để lấy lệnh chương trình
từ bộ nhớ và thực hiện nó. Motorola 6800 sử dụng đồng hồ có tần số tối
đa là 1 MHz, tức là chu kỳ xung nhịp là 1 μs và các lệnh yêu cầu từ hai
đến mười hai chu kỳ xung nhịp. Các hoạt động liên quan đến bộ vi xử lý
được tính theo số chu kỳ mà chúng thực hiện.

Có một số loại thanh ghi, số lượng, kích thước và loại thanh ghi khác nhau
tùy theo bộ vi xử lý. Sau đây là các loại sổ đăng ký phổ biến.

1 thanh ghi tích lũy


Thanh ghi tích lũy (A) là nơi lưu trữ tạm thời dữ liệu đầu vào của đơn
vị số học và logic. Để CPU có thể truy cập, tức là đọc, các lệnh hoặc
dữ liệu trong bộ nhớ, nó phải cung cấp
Machine Translated by Google

10.2 Hệ thống vi xử lý 245

địa chỉ của từ bộ nhớ cần thiết bằng cách sử dụng bus địa chỉ. Khi điều này được
thực hiện, các lệnh hoặc dữ liệu được yêu cầu có thể được đọc vào CPU bằng bus dữ
liệu. Vì chỉ có thể đánh địa chỉ một vị trí bộ nhớ cùng một lúc nên bộ nhớ tạm thời
phải được sử dụng khi các số được kết hợp chẳng hạn. Ví dụ, ngoài việc cộng hai số,
một trong các số đó được lấy từ một địa chỉ và được đặt vào thanh ghi tích lũy trong
khi CPU lấy số còn lại từ địa chỉ bộ nhớ kia. Sau đó, hai số có thể được xử lý bởi
phần số học và logic của CPU. Kết quả sau đó được chuyển trở lại thanh ghi tích lũy.

Do đó, thanh ghi tích lũy là một thanh ghi lưu giữ tạm thời để dữ liệu được xử lý
bởi đơn vị số học và logic, đồng thời, sau khi thực hiện thao tác, là thanh ghi để
lưu giữ kết quả. Do đó, nó tham gia vào tất cả các hoạt động truyền dữ liệu liên
quan đến việc thực hiện các phép toán số học và logic.

2 Thanh ghi trạng thái, hoặc thanh ghi cờ thanh ghi mã điều kiện
Nó chứa thông tin liên quan đến kết quả của quá trình mới nhất được thực hiện trong
đơn vị số học và logic. Nó chứa các bit riêng lẻ với mỗi bit có ý nghĩa đặc biệt.
Các bit được gọi là cờ. Trạng thái của hoạt động mới nhất được biểu thị bằng mỗi cờ
với mỗi cờ được đặt hoặc đặt lại để biểu thị một trạng thái cụ thể. Ví dụ: chúng có
thể được sử dụng để cho biết liệu thao tác cuối cùng có dẫn đến kết quả âm tính, kết
quả bằng 0, xuất hiện đầu ra mang hay không (ví dụ: tổng của hai số nhị phân như
1010 và 1100 là (1)0110 có thể lớn hơn kích thước từ của bộ vi xử lý và do đó có số
1), xảy ra tràn hoặc chương trình được phép dừng để cho phép xảy ra sự kiện bên
ngoài. Sau đây là những lá cờ phổ biến:

Lá cờ Đặt, tức là 1 Đặt lại, tức là 0

Z Kết quả bằng không Kết quả không bằng 0

N Kết quả là âm tính Kết quả không âm tính

C Mang theo được tạo ra Mang theo không được tạo ra

V. Tràn xảy ra Tràn không xảy ra

TÔI
Ngắt bị bỏ qua Ngắt được xử lý bình thường

Để minh họa, hãy xem xét trạng thái của các cờ Z, N, C và V cho thao tác cộng
các số hex 02 và 06. Kết quả là 08. Vì nó khác 0 nên Z là 0. Kết quả là dương, nên
N là 0. Không có nhớ nên C là 0. Kết quả không dấu nằm trong phạm vi từ 2128 đến 1127
và do đó không có tràn và V là 0. Bây giờ hãy xem xét các cờ khi số hex được thêm
vào là F9 và 08. Kết quả là (1)01. Kết quả không bằng 0 nên Z bằng 0.

Vì nó là dương nên N là 0. Kết quả không dấu có giá trị mang và do đó C là 1. Kết
quả không dấu nằm trong phạm vi từ 2128 đến 1127 và do đó V là 0.

3 Thanh ghi bộ đếm chương trình (PC) hoặc con trỏ lệnh (IP)
Đây là thanh ghi được sử dụng để cho phép CPU theo dõi vị trí của nó trong một
chương trình. Thanh ghi này chứa địa chỉ của vị trí bộ nhớ chứa lệnh chương trình
tiếp theo. Khi mỗi lệnh được thực thi, thanh ghi bộ đếm chương trình được cập nhật
để chứa địa chỉ của vị trí bộ nhớ nơi lưu trữ lệnh thực thi tiếp theo. Bộ đếm
chương trình được tăng lên mỗi lần để CPU thực hiện các lệnh một cách tuần tự trừ
khi một lệnh, chẳng hạn như JUMP hoặc BRANCH, thay đổi bộ đếm chương trình ra khỏi
chuỗi đó.
Machine Translated by Google

246 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

4 Thanh ghi địa chỉ bộ nhớ (MAR)


Điều này chứa địa chỉ của dữ liệu. Vì vậy, ví dụ, khi tính tổng hai số, thanh ghi
địa chỉ bộ nhớ được nạp địa chỉ của số đầu tiên. Dữ liệu tại địa chỉ sau đó được
chuyển đến bộ tích lũy. Địa chỉ bộ nhớ của số thứ hai sau đó được tải vào thanh

ghi địa chỉ bộ nhớ. Dữ liệu tại địa chỉ này sau đó được thêm vào dữ liệu trong
bộ tích lũy. Kết quả sau đó được lưu trữ ở một vị trí bộ nhớ được đánh địa chỉ
bởi thanh ghi địa chỉ bộ nhớ.

5 Thanh ghi lệnh (IR)


Điều này lưu trữ một hướng dẫn. Sau khi lấy lệnh từ bộ nhớ qua bus dữ liệu, CPU
sẽ lưu lệnh đó vào thanh ghi lệnh. Sau mỗi lần tìm nạp như vậy, bộ vi xử lý sẽ
tăng bộ đếm chương trình lên một đơn vị với kết quả là bộ đếm chương trình
trỏ đến lệnh tiếp theo đang chờ được tìm nạp. Lệnh sau đó có thể được giải mã
và sử dụng để thực hiện một thao tác. Trình tự này được gọi là chu trình tìm nạp-
thực thi.

6 thanh ghi đa năng


Chúng có thể dùng làm nơi lưu trữ tạm thời cho dữ liệu hoặc địa chỉ và được sử dụng

trong các hoạt động liên quan đến việc chuyển giữa các thanh ghi khác.

7 Thanh ghi con trỏ ngăn xếp (SP)


Nội dung của thanh ghi này tạo thành một địa chỉ xác định đỉnh ngăn xếp trong
RAM. Ngăn xếp là một vùng đặc biệt của bộ nhớ trong đó các giá trị của bộ đếm
chương trình có thể được lưu trữ khi một phần chương trình con của chương
trình đang được sử dụng.

Số lượng và hình thức của các thanh ghi phụ thuộc vào bộ vi xử lý có liên quan. Ví
dụ, bộ vi xử lý Motorola 6800 (Hình 10.3) có hai thanh ghi tích lũy, một thanh ghi
trạng thái, một thanh ghi chỉ mục, một thanh ghi con trỏ ngăn xếp và một thanh ghi
bộ đếm chương trình. Thanh ghi trạng thái có các bit cờ để hiển thị âm, 0, mang,
tràn, nửa mang và ngắt. Motorola 6802 cũng tương tự nhưng có một lượng RAM nhỏ và
bộ tạo xung nhịp tích hợp.
Bộ vi xử lý Intel 8085A là sự phát triển của bộ xử lý 8080 trước đó; 8080 yêu
cầu một bộ tạo xung nhịp bên ngoài, trong khi 8085A có bộ tạo xung nhịp tích hợp.
Các chương trình viết cho 8080 có thể chạy trên 8085A. 8085A có sáu thanh ghi đa
năng B, C, D, E, H và L, một con trỏ ngăn xếp, một bộ đếm chương trình, một thanh
ghi cờ và hai thanh ghi tạm thời. Các thanh ghi đa năng có thể được sử dụng làm sáu
thanh ghi 8 bit hoặc theo cặp BC, DE và HL làm ba thanh ghi 16 bit. Hình 10.4 thể
hiện sơ đồ khối của kiến trúc.

Như sẽ thấy rõ trong Hình 10.3 và Hình 10.4, bộ vi xử lý có một loạt các đầu vào
và đầu ra điều khiển và định thời. Chúng cung cấp đầu ra khi bộ vi xử lý thực hiện
một số hoạt động và đầu vào nhất định để tác động đến các hoạt động điều khiển. Ngoài
ra còn có các đầu vào liên quan đến điều khiển ngắt. Chúng được thiết kế để cho phép
hoạt động của chương trình bị gián đoạn do một số sự kiện bên ngoài.

10.2.3Bộ nhớ

Bộ nhớ trong hệ thống vi xử lý lưu trữ dữ liệu nhị phân và có dạng một hoặc nhiều
mạch tích hợp. Dữ liệu có thể là mã lệnh chương trình hoặc số đang được vận hành.
Machine Translated by Google

10.2 Hệ thống vi xử lý 247

Xe buýt địa chỉ

Bộ đệm để tạo ra đủ A15 ĐẾN A8 A7 ĐẾN A0


dòng điện cho
25 24 23 22 20 19 18 17 Ghim số 16 15 14 13 12 11 10 9
thiết bị bên ngoài và

ngăn chặn các


tương tác không mong
Bộ đệm đầu ra Bộ đệm đầu ra
muốn giữa các thiết bị đó và

bộ vi xử lý

Đồng hồ f1 3 Chương trình Chương trình

quầy tính tiền quầy tính tiền


Đồng hồ f2 37

CÀI LẠI 40
Con Con
NMI ngắt không thể che dấu
Chỉ dẫn
TẠM DỪNG LẠI 6 2 trỏ ngăn xếp trỏ ngăn xếp
giải mã
Yêu cầu ngắt IRQ và
TSC điều khiển ba trạng thái 4 39 thanh thanh
kiểm soát
Bus dữ liệu kích hoạt DBE 36 ghi chỉ mục ghi chỉ mục

Có xe buýt BA

7 5 Tích lũy
Địa chỉ bộ nhớ hợp lệ VMA
MỘT
Đọc/ghi R/W 34

Khi đầu vào HALT xảy ra, mọi hoạt


Đăng ký chỉ Tích lũy
động sẽ dừng lại.
dẫn B
Đầu vào TSC làm cho các đường
địa chỉ và các đường ĐỌC/ghi chuyển sang

trạng thái trở kháng cao. Tình trạng

VMA đưa ra đầu ra rằng có một địa đăng ký mã


chỉ hợp lệ trên bus địa chỉ.

Chân 4 và 6 được sử dụng để yêu


Bộ đệm dữ liệu ALU
cầu gián đoạn chương trình.
RESET được sử dụng để thiết lập

bộ đếm chương trình về 0.


DBE được sử dụng để cho phép các
26 27 28 29 30 31 32 33
thiết bị khác kiểm soát bus dữ liệu.
D7 D6 D5 D4 D3 D2 D1 D0 Bus dữ liệu

Yêu cầu cung cấp điện áp


BA chỉ ra rằng bus địa chỉ có sẵn
VCC = +5 V (chân 8)
VSS = GND (chân 1, 21)

Hình 10.3 Kiến trúc Motorola 6800.

Kích thước của bộ nhớ được xác định bởi số lượng dây trong bus địa chỉ. Các phần tử
bộ nhớ trong một đơn vị về cơ bản bao gồm một số lượng lớn các ô lưu trữ với mỗi ô có
khả năng lưu trữ bit 0 hoặc 1. Các ô lưu trữ được nhóm lại thành các vị trí, mỗi vị
trí có khả năng lưu trữ một từ. Để truy cập từ được lưu trữ, mỗi vị trí được xác định
bằng một địa chỉ duy nhất.
Do đó, với bus địa chỉ 4 bit, chúng ta có thể có 16 địa chỉ khác nhau, mỗi địa chỉ có
thể lưu trữ 1 byte, tức là một nhóm 8 bit (Hình 10.5).
Kích thước của đơn vị bộ nhớ được chỉ định theo số lượng vị trí lưu trữ có sẵn;
1K có 210 5 1024 vị trí và do đó bộ nhớ 4K có
4096 địa điểm.

Có một số dạng đơn vị bộ nhớ.

1 ROM Đối

với dữ liệu được lưu trữ vĩnh viễn, một thiết bị bộ nhớ gọi là bộ nhớ chỉ đọc (ROM)
được sử dụng. ROM được lập trình với các nội dung cần thiết trong quá trình sản xuất
mạch tích hợp. Sau đó, không có dữ liệu nào có thể được ghi vào bộ nhớ này khi chip
bộ nhớ vẫn còn trong máy tính. Dữ liệu chỉ có thể được đọc và sử dụng cho các chương
trình cố định như hệ điều hành máy tính và các chương trình dành cho ứng dụng bộ vi
xử lý chuyên dụng. Họ không bị mất trí nhớ khi mất điện
Machine Translated by Google

248 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

Ghim 10 11 9 8 7 6 RST INTA 5 4


5,5
Có năm dạng đầu vào 6,5 7,5 SID CỎ NHÂN TẠO Chúng được sử dụng
INTR CẠM BẪY
ngắt khác nhau để để nhập và xuất dữ
liệu ở dạng nối tiếp
yêu cầu ngắt
Kiểm soát ngắt Điều khiển I/O nối tiếp
trong chương
trình

Bus dữ liệu

Đăng ký tạm Đăng ký chỉ


Tích lũy
thời dẫn
Lá cờ Đăng ký

Đăng ký B Đăng ký C

Chỉ dẫn Đăng ký D Đăng ký E

+5V bộ giải mã
Đăng ký H Đăng ký L
40 và mã
APU
hóa Con trỏ ngăn xếp
20
GND chu trình máy Bộ đếm chương trình

Tăng/giảm
Đầu vào từ

tinh
thể 1
Thời gian và kiểm soát
2 DMA Bộ đệm địa chỉ Bộ đệm dữ liệu/địa chỉ
Điều khiển Trạng thái Cài lại

Hết giờ THIẾT LẬP LẠI

SẴN SÀNG RD WR ALE S0 IO/M HLDA ĐẶT LẠI VÀO


S1 GIỮ 37
Ghim 35 32 31 30 29 33 34 39 38 36 3
A15 đến A8 AD7 đến AD0
Nếu READY ở mức cao, READ RD ở mức HOLD chỉ ra rằng RESET IN thiết 28 đến 21 19 đến 12

thiết bị đã sẵn thấp trong một thiết lập chương trình


Đối với bus địa chỉ 16 bit, A8–A15
sàng nhận quá trình đọc. bị chủ khác đang yêu đếm đến

hoặc gửi dữ liệu WRITE WR ở mức cầu sử dụng bus số không.


được sử dụng cho các bit quan trọng nhất.

địa chỉ và dữ liệu. RESET OUT cho AD0–AD7 truyền các bit có ý nghĩa nhỏ
thấp trong quá
nhất của địa chỉ khi ALE ở mức
trình hoạt động HLDA được sử dụng biết nó đang
cao và dữ liệu ở mức thấp
ghi IO/M, S0 và S1 là các tín để hiển thị tín hiệu được thiết lập lại

hiệu được xuất ra trong quá trình HOLD đã được nhận

hoạt động bên trong 8085 để chỉ ra các

hoạt động đang được thực hiện

Hình 10.4 Kiến trúc Intel 8085A.

Địa chỉ Nội dung dữ liệu


bị xóa. Hình 10.6(a) cho thấy các kết nối chân của một chip ROM điển
0000 hình có khả năng lưu trữ 1K 3 8 bit.
0001 2 PROM
0010 Thuật ngữ ROM lập trình được (PROM) được sử dụng cho các chip ROM mà
0011 người dùng có thể lập trình được. Ban đầu, mỗi ô nhớ đều có một liên
0100 kết dễ nóng chảy giúp giữ bộ nhớ của nó ở mức 0. Số 0 được thay đổi
vĩnh viễn thành 1 bằng cách gửi một dòng điện qua cầu chì để mở nó vĩnh
vân vân.

viễn. Khi liên kết nóng chảy đã được mở, dữ liệu sẽ được lưu trữ vĩnh
1111
viễn trong bộ nhớ và không thể thay đổi thêm.
Hình 10.5 Kích thước bus địa chỉ.
3 EPROM
Thuật ngữ ROM có thể xóa và lập trình được (EPROM) được sử dụng cho
các ROM có thể được lập trình và nội dung của chúng bị thay đổi. Một
chip EPROM điển hình chứa một loạt các mạch điện tử nhỏ, các tế bào,
có thể lưu trữ điện tích. Chương trình được lưu trữ bằng cách cấp
điện áp vào các chân kết nối mạch tích hợp và tạo ra mô hình điện tích
Machine Translated by Google

10.2 Hệ thống vi xử lý 249

Hình 10.6 (a) Chip ROM, chọn chip chọn chip

(b) chip RAM.

òl
D
d

òl
D
d
ni

ni

gệ

gệ
u

u
òcD
đ

òc
D
đ
nhị

nh

gỉ
a

gỉ
a
Đọc

Đọc, điều khiển tín hiệu


Viết

(Một) (b)

và các tế bào không tích điện. Họa tiết này vẫn tồn tại vĩnh viễn trong
chip cho đến khi bị xóa đi bằng cách chiếu tia cực tím qua cửa sổ thạch
anh trên đỉnh thiết bị. Điều này làm cho tất cả các tế bào bị thải ra. Con
chip sau đó có thể được lập trình lại. Intel 2716 EPROM có 11 chân địa
chỉ và một chân kích hoạt chip duy nhất hoạt động khi ở mức thấp.

4 EEPROM

PROM xóa được bằng điện (EEPROM) tương tự như EPROM. Xóa bằng cách sử
dụng điện áp tương đối cao thay vì sử dụng tia cực tím.

5 RAM

Dữ liệu tạm thời, tức là dữ liệu hiện đang được vận hành, được lưu trữ ở dạng đọc/
bộ nhớ ghi được gọi là bộ nhớ truy cập ngẫu nhiên (RAM). Bộ nhớ như vậy
có thể được đọc hoặc ghi vào. Hình 10.6(b) hiển thị các kết nối chân điển
hình cho chip RAM 1K 3 8 bit. Chip RAM Motorola 6810 có bảy chân địa chỉ
và sáu chân chọn chip, trong đó bốn chân hoạt động khi ở mức thấp và hai
chân hoạt động khi ở mức cao và tất cả phải được kích hoạt đồng thời để
kích hoạt RAM.

Khi ROM được sử dụng để lưu trữ chương trình thì chương trình đó sẽ sẵn
sàng và sẵn sàng để sử dụng khi hệ thống được bật. Các chương trình được
lưu trữ trong ROM được gọi là phần sụn. Một số phần sụn phải luôn có sẵn.
Khi RAM được sử dụng để lưu trữ chương trình thì các chương trình đó được
gọi là phần mềm. Khi hệ thống được bật, phần mềm có thể được tải vào RAM từ
một số thiết bị ngoại vi khác như bàn phím hoặc đĩa cứng, đĩa mềm hoặc CD.

10.2.4Đầu vào/đầu ra

Hoạt động đầu vào/đầu ra được định nghĩa là việc truyền dữ liệu giữa bộ vi
xử lý và thế giới bên ngoài. Thuật ngữ thiết bị ngoại vi
được sử dụng cho các thiết bị trao đổi dữ liệu với hệ thống vi xử lý. Vì tốc
độ và đặc tính của các thiết bị ngoại vi có thể khác biệt đáng kể so với tốc
độ của bộ vi xử lý nên chúng được kết nối thông qua các chip giao diện. Do
đó, chức năng chính của chip giao diện là đồng bộ hóa việc truyền dữ liệu
giữa bộ vi xử lý và thiết bị ngoại vi. Trong đầu vào
Machine Translated by Google

250 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

hoạt động thiết bị đầu vào đặt dữ liệu vào thanh ghi dữ liệu của chip giao diện; cái
này giữ dữ liệu cho đến khi nó được bộ vi xử lý đọc. Trong các hoạt động đầu ra, bộ
vi xử lý sẽ đặt dữ liệu vào thanh ghi cho đến khi thiết bị ngoại vi đọc được.

Để bộ vi xử lý nhập dữ liệu hợp lệ từ thiết bị đầu vào, nó cần chắc chắn rằng
chip giao diện đã chốt dữ liệu đầu vào một cách chính xác. Nó có thể làm điều này
bằng cách bỏ phiếu hoặc gián đoạn. Với việc bỏ phiếu, chip giao diện sử dụng bit
trạng thái được đặt thành 1 để cho biết khi nào nó có dữ liệu hợp lệ. Bộ vi xử lý
tiếp tục kiểm tra chip giao diện cho đến khi phát hiện bit trạng thái là 1. Vấn đề
với phương pháp này là bộ vi xử lý phải đợi bit trạng thái này hiển thị. Với phương
pháp ngắt, chip giao diện sẽ gửi tín hiệu ngắt đến bộ vi xử lý khi có dữ liệu hợp
lệ; sau đó bộ vi xử lý sẽ tạm dừng việc thực thi chương trình chính của nó và thực
hiện quy trình liên quan đến ngắt để đọc dữ liệu.

10.2.5Ví dụ về hệ thống

Hình 10.7 cho thấy một ví dụ về hệ thống vi xử lý sử dụng bộ vi xử lý Intel 8085A.


Nó có chốt địa chỉ 74LS373, bộ giải mã địa chỉ 3 dòng đến 8 dòng 74LS138, hai chip
RAM 1K 3 4 2114, chip EPROM 2K 3 8 2716 và chip giao diện đầu vào và đầu ra 74LS244
và 74LS374.

1 chốt địa chỉ

Đầu ra ALE (cho phép chốt địa chỉ) cung cấp đầu ra cho phần cứng bên ngoài để cho
biết khi nào các dòng AD0–AD7 chứa địa chỉ và khi chúng chứa dữ liệu. Khi ALE

được đặt ở mức cao, nó sẽ kích hoạt chốt và các dòng A0–A7 chuyển phần dưới của
địa chỉ tới nơi nó được chốt. Do đó, khi ALE thay đổi và trở về mức thấp, để dữ
liệu có thể được xuất ra từ bộ vi xử lý, phần địa chỉ này vẫn được chốt trong
74LS373. Phần cao hơn của địa chỉ được gửi qua A8–A15 và luôn hợp lệ, còn phần
địa chỉ đầy đủ được cung cấp bởi phần dưới từ chốt và phần trên từ bus địa chỉ
của bộ vi xử lý.

2 Bộ giải mã địa chỉ

74LS138 là bộ giải mã 3 dòng đến 8 dòng và cung cấp mức hoạt động ở mức thấp
ở một trong tám đầu ra của nó; đầu ra được chọn phụ thuộc vào tín hiệu trên
ba đường đầu vào A, B và C. Trước khi có thể thực hiện lựa chọn như vậy, nó
phải được bật bằng cách bật 1 và bật 2 ở mức thấp và bật 3 ở mức cao.

3 EPROM

Các bit địa chỉ A11, A12, A13 và A14 được sử dụng để chọn thiết bị nào sẽ được
đánh địa chỉ. Điều này để lại các bit địa chỉ trên A0–A10 cho địa chỉ.
Do đó EPROM có thể có 211 5 2048 địa chỉ. Đây là kích thước của Intel 2716 EPROM.
EPROM được chọn bất cứ khi nào bộ vi xử lý đọc địa chỉ từ 0000 đến 07FF và xuất

nội dung 8 bit của nó tới bus dữ liệu thông qua O0–O7. Đường kích hoạt đầu ra OE
được kết nối với đầu ra đọc của bộ vi xử lý để đảm bảo rằng EPROM chỉ được ghi
vào.

4 RAM

Hai chip RAM được hiển thị là đang được sử dụng, mỗi chip có kích thước 1K 3
4. Chúng cùng nhau cung cấp bộ nhớ cho tín hiệu rộng 8 bit. Cả hai chip đều sử dụng
Machine Translated by Google

10.2 Hệ thống vi xử lý 251

Hình 10.7 Hệ thống Intel 8085A. A8


A15
vi-
bộ D0 O0
OI/M xử lý AD0
AD7 D7 O7
RD 8085A ALE VN Chốt địa
W/R Xe buýt
OE chỉ
địa chỉ
cổng NAND RD

là ký hiệu dùng để
7 E3
6 E2 IO/M WR
biểu thị sự đảo ngược, do đó
5 E1 A14
được sử dụng để chỉ ra
Địa chỉ 4
rằng cần có tín bộ giải mã 3 A15
cổng HOẶC
hiệu thấp A A11
2
để kích hoạt phản hồi
1 B A12
C A13
Ký hiệu này
Địa chỉ 0000–07FF
được sử dụng để biểu

thị đầu vào được


Bus A0 A0
CN
kích hoạt cạnh
dữ liệu A10 A10
EPROM
O0 RD
OE
O7
Địa chỉ 2000–23FF

CS A0 A0
A9 A9
ĐẬP

Vào/ra WR
D0–D3 CHÚNG TÔI

I/O4
Địa chỉ 2000–23FF

CS A0 A0
A9 A9
ĐẬP

Vào/ra WR
D4–D7 CHÚNG TÔI

I/O4

Địa chỉ 2800


OE1 Bộ đệm đầu vào
OE2
O0 I0
Đầu vào như công tắc
O7 I7

Địa chỉ 3800


O0 Bộ đệm đầu ra
D0 O7 Đầu ra như
D7 OE màn hình LED

cùng các bit địa chỉ A0–A9 để lựa chọn bộ nhớ với một chip cung cấp dữ liệu
D0–D3 và chip còn lại D4–D7. Với 10 bit địa chỉ chúng ta có

210 5 1024 địa chỉ khác nhau 2000 đến 23FF. Đầu vào WE cho phép ghi được RAM
sử dụng để xác định xem RAM đang được ghi vào hay đọc. Nếu nó ở mức thấp thì
địa chỉ RAM đã chọn sẽ được ghi vào và nếu ở mức cao thì nó đang được đọc.

5 Bộ đệm đầu
vào Bộ đệm đầu vào 74LS244 được thiết lập để truyền giá trị nhị phân của đầu
vào qua bus dữ liệu bất cứ khi nào OE1 và OE2 ở mức thấp. Nó được truy cập
tại bất kỳ địa chỉ nào từ 2800 đến 2FFF, do đó chúng ta có thể sử dụng địa
chỉ 2800. Bộ đệm dùng để đảm bảo rằng các đầu vào áp đặt rất ít tải lên bộ vi xử lý.
Machine Translated by Google

252 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

6 Chốt đầu ra
74LS374 là chốt đầu ra. Nó chốt đầu ra của bộ vi xử lý để các thiết bị đầu
ra có thời gian đọc nó trong khi bộ vi xử lý có thể tiếp tục thực hiện các
lệnh khác trong chương trình của nó. Chốt đầu ra được cung cấp một dải
địa chỉ từ 3800 đến 3FFF và do đó có thể được xử lý bằng cách sử dụng 3800.

Hình 10.8 cho thấy một ví dụ về hệ thống dựa trên việc sử dụng bộ vi xử lý
Motorola 6800 và chỉ có một chip RAM, một chip ROM và đầu vào/đầu ra có thể
lập trình. Không cần giải mã địa chỉ với hệ thống này vì số lượng thiết bị
liên quan ít. Đối với đầu vào/đầu ra song song, bộ điều hợp giao diện ngoại
vi (PIA) (xem Phần 13.4) được sử dụng và đối với đầu vào/đầu ra nối tiếp, bộ
điều hợp giao diện không đồng bộ được sử dụng

Hình 10.8 Hệ thống M6800. IRQ


CÀI LẠI DB0
DBE DB7
Đồng hồ 2

Cái đồng hồ Đồng hồ 1


vi-

Đồng hồ VMA 2 TSC bộ xử lý

+5V TẠM DỪNG LẠI

NMI R/W
A0 VMA
A15

A0–A9 A0

liệu
A9

rom Đồng hồ VMA2


A15

Bus
E E
A14

dữ
E E

A0–A6 A0
A6
A15
E
Đồng hồ 2
A14
E ĐẬP E

E E
R/W
E R/W

A0
RS0 DB0
A1 DB7
RS1
A2 Đồng hồ 2
ýh
tỉ
a ec
u
ị X
b
đ

CS0 E
A14 PIA RES CÀI LẠI
CS1
R/W R/W
A15
CS2
IRQA Ngắt
IRQB
PACA1, 2 PB CB1, 2

Dữ liệu I/O song song và điều khiển

Rs DB0
DB7
CS0 Đồng hồ 2
E
CS1
R/W
CS2
IRQ
TX RX CTS RTSDCD

Dữ liệu I/O nối tiếp và điều khiển


Machine Translated by Google

10.3 Xe đẩy siêu nhỏ 253

(ACIA) (xem Phần 13.5) được sử dụng. Chúng có thể được lập trình để xử lý
cả đầu vào và đầu ra và cung cấp bộ đệm cần thiết.

1 RAM

Các dòng địa chỉ A14 và A15 được kết nối với đầu vào kích hoạt của chip
RAM. Khi cả hai dòng này đều ở mức thấp thì chip RAM sẽ giao tiếp với bộ
vi xử lý.

2 ROM
Các dòng địa chỉ A14 và A15 được kết nối với các đầu vào cho phép của
chip ROM và khi tín hiệu trên cả hai dòng này ở mức cao thì chip ROM được
định địa chỉ.

3 Đầu vào/đầu ra
Các dòng địa chỉ A14 và A15 được kết nối với đầu vào kích hoạt của PIA
và ACIA. Khi tín hiệu trên đường 15 ở mức thấp và tín hiệu trên A14 ở
mức cao thì giao diện đầu vào/đầu ra sẽ được xử lý. Để cho biết thiết bị
nào đang được bật, dòng địa chỉ A2 được lấy ở mức cao đối với PIA và
dòng địa chỉ A3 được lấy ở mức cao đối với ACIA.

10.3 Bộ vi điều khiển


Để bộ vi xử lý cung cấp một hệ thống có thể được sử dụng để điều khiển, cần
có các chip bổ sung, ví dụ: các thiết bị bộ nhớ để lưu trữ chương trình và
dữ liệu cũng như các cổng đầu vào/đầu ra để cho phép nó giao tiếp với thế
giới bên ngoài và nhận tín hiệu từ thế giới bên ngoài. Bộ vi điều khiển là
sự tích hợp của bộ vi xử lý với bộ nhớ, giao diện đầu vào/đầu ra và các thiết
bị ngoại vi khác như bộ hẹn giờ, trên một chip đơn. Hình 10.9 thể hiện sơ
đồ khối chung của một bộ vi điều khiển.
Bộ vi điều khiển nói chung có các chân cho các kết nối bên ngoài của đầu
vào và đầu ra, nguồn, đồng hồ và tín hiệu điều khiển. Các chân cho đầu vào và

Hình 10.9 Sơ đồ khối của một VDD


bộ vi điều khiển.

Ký ức
Cái đồng hồ

rom

CPU ĐẬP
Điều khiển

dòng EPROM/
EEPROM
ul
si
uệữ B
d

Kiểm soát đầu vào/đầu ra và


thanh ghi trạng thái

Đầu ra đầu vào


thanh ghi dữ liệu
gu
/ na
o ổr
à
ầC
v
đ
Machine Translated by Google

254 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

đầu ra được nhóm thành các đơn vị gọi là cổng đầu vào/đầu ra. Thông
thường các cổng như vậy có tám dòng để có thể truyền một từ dữ liệu 8 bit.
Hai cổng có thể được sử dụng cho một từ 16 bit, một cổng để truyền 8 bit thấp
hơn và cổng còn lại truyền 8 bit trên. Các cổng chỉ có thể là đầu vào, chỉ đầu
ra hoặc có thể lập trình thành đầu vào hoặc đầu ra.
Motorola 68HC11, Intel 8051 và PIC16C6x/7x là những ví dụ về bộ vi
điều khiển 8 bit trong đó đường dẫn dữ liệu rộng 8 bit. Motorola 68HC16
là một ví dụ về bộ vi điều khiển 16 bit và Motorola 68300 là bộ vi điều
khiển 32 bit. Bộ vi điều khiển có số lượng ROM và RAM hạn chế và được
sử dụng rộng rãi cho các hệ thống điều khiển nhúng. Hệ thống vi xử lý có
bộ nhớ và chip đầu vào/đầu ra riêng biệt phù hợp hơn với việc xử lý
thông tin trong hệ thống máy tính.

10.3.1Motorola Freescale M68HC11

Motorola cung cấp hai họ vi điều khiển 8 bit cơ bản, 68HC05 là lõi rẻ
tiền và 68HC11 là lõi hiệu suất cao hơn.
Dòng Motorola M68HC11 (Hình 10.10), dựa trên bộ vi xử lý Motorola 6800,
được sử dụng rất rộng rãi cho các hệ thống điều khiển.
Lưu ý rằng bộ vi điều khiển này được Motorola giới thiệu và hiện được
sản xuất bởi Freescale Semiconductor.
Có một số phiên bản của họ này, sự khác biệt là do sự khác biệt về
RAM, ROM, EPROM, EEPROM và các tính năng đăng ký cấu hình. Ví dụ: một
phiên bản (68HC11A8) có ROM 8K,

MODA MODB XTAL EXTAL E IRQ XIRQ CÀI LẠI

Bộ dao động
Kiểm soát chế độ Logic ngắt
Logic đồng hồ EPROM
POC

EEPROM
CPU

ĐẬP
tn
h gk
ắỳ
ị N
đ

hẹn giờ

hệ thống nối tiếp


Địa chỉ/dữ liệu
nối tiếp giao tiếp VDD
giao diện
ngoại vi VSS
un
n
g ều
ế ộx
i B
đ
b

giao diện

VRH
Nhấp nháy và bắt tay I/O song song
V. RL
ADC

Hướng dữ liệu Hướng dữ liệu

Cảng A Cổng B Cảng C Cổng D Cổng E

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 5 4 3 2 1 0 7 6 5 4 3 2 1 0
BRTS

RTS

PA PB máy tính PD Thể dục

Hình 10.10 Sơ đồ khối của M68HC11.


Machine Translated by Google

10.3 Xe đẩy siêu nhỏ 255

EEPROM 512 byte, RAM 256 byte, hệ thống hẹn giờ 16 bit, giao diện ngoại vi nối tiếp đồng bộ,

giao diện truyền thông nối tiếp không trở về 0 không đồng bộ, 8 kênh, 8 bit tương tự sang

kỹ thuật số ( Bộ chuyển đổi A/D (ADC) cho đầu vào tương tự và năm cổng A, B, C, D và E.

1 cổng A

Cổng A chỉ có ba đường vào, chỉ có bốn đường ra và một đường có thể đóng vai trò là đầu

vào hoặc đầu ra. Thanh ghi dữ liệu cổng A có địa chỉ $1000 (Hình 10.11) với thanh ghi

điều khiển tích lũy xung (Hình 10.12) tại địa chỉ $1026 được sử dụng để điều khiển chức

năng của từng bit trong cổng A. Cổng này cũng cung cấp quyền truy cập vào bộ định thời bên

trong của cổng A. vi điều khiển, các bit PAMOD, PEDGE, RTR1 và RTRO điều khiển bộ tích

lũy xung và đồng hồ.

Hình 10.11 Thanh ghi cổng A. Thanh ghi dữ liệu cổng A $1000

Bit 7 6 5 4 3 2 1 0

Hình 10.12 Thanh ghi Bit 7 6 5 4 3 2 1 0

điều khiển bộ tích lũy xung.

DDRA7 Đặt là 0 cho đầu vào và 1 cho đầu ra PAMOD RTR100 RTRO

PAEN6 Đặt là 0 để tắt bộ tích lũy xung PEDGE

và cho phép cổng A được sử dụng cho I/O, 1 để kích hoạt


xung tích lũy

2 cổng B

Cổng B chỉ là đầu ra và có tám đường đầu ra (Hình 10.13). Dữ liệu đầu vào không thể được

đặt trên các chân của cổng B. Thanh ghi dữ liệu của nó có địa chỉ $1004 và để xuất dữ

liệu, nó phải được ghi vào vị trí bộ nhớ này.

Hình 10.13 Thanh ghi cổng B. Thanh ghi dữ liệu cổng B $1004

Bit 7 6 5 4 3 2 1 0

3 cổng C

Cổng C có thể là đầu vào hoặc đầu ra, dữ liệu được ghi hoặc đọc từ thanh ghi dữ liệu của

nó tại địa chỉ $1003 (Hình 10.14). Hướng của nó được điều khiển bởi thanh ghi hướng dữ

liệu cổng tại địa chỉ $1007. 8 bit trong thanh ghi này tương ứng với các bit riêng lẻ

trong cổng C và xác định xem các đường này là đầu vào hay đầu ra; khi bit thanh ghi

hướng dữ liệu được đặt thành 0 thì nó là đầu vào và khi được đặt thành 1 thì nó là đầu

ra. Các đường STRA và STRB (khi hoạt động ở chế độ chip đơn) được liên kết với các cổng

B và C và được sử dụng để tạo tín hiệu bắt tay với các cổng đó. Những dòng điều khiển

như vậy

Hình 10.14 Các thanh ghi cổng C. Thanh ghi dữ liệu cổng C $1003 Thanh ghi hướng dữ liệu cổng C $1007

Bit 7 6 5 4 3 2 1 0 Bit 7 6 5 4 3 2 1 0

Khi một bit được đặt thành 0 thì tương ứng

bit trong cổng là đầu vào, khi được đặt thành 1

một đầu ra
Machine Translated by Google

256 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

thời gian truyền dữ liệu. Thanh ghi điều khiển đầu vào/đầu ra song song PIOC tại địa chỉ

$1002 chứa các bit để điều khiển chế độ bắt tay cũng như các cạnh phân cực và hoạt động

của tín hiệu bắt tay.

4 cổng D

Cổng D chỉ chứa sáu dòng; chúng có thể là đầu vào hoặc đầu ra và có thanh ghi dữ liệu tại

địa chỉ $1008 (Hình 10.15); các hướng được điều khiển bởi thanh ghi hướng dữ liệu cổng

tại địa chỉ $1009 với bit tương ứng được đặt thành 0 cho đầu vào và 1 cho đầu ra.

Cổng D cũng đóng vai trò kết nối với hai hệ thống con nối tiếp của bộ vi điều khiển. Giao

diện truyền thông nối tiếp là một hệ thống không đồng bộ cung cấp giao tiếp nối tiếp

tương thích với modem và thiết bị đầu cuối. Giao diện ngoại vi nối tiếp là một hệ thống

đồng bộ tốc độ cao được thiết kế để giao tiếp giữa bộ vi điều khiển và các thành phần

ngoại vi có thể truy cập ở tốc độ như vậy.

Hình 10.15 Các thanh ghi cổng D. Thanh ghi dữ liệu cổng D $1008 Thanh ghi hướng dữ liệu cổng D $1009

Chút 5 4 3 2 1 0 Chút 5 4 3 2 1 0

Khi một bit được đặt thành 0 thì tương ứng

bit trong cổng là đầu vào, khi được đặt thành 1

một đầu ra

5 cổng E

Cổng E là cổng chỉ đầu vào 8 bit (Hình 10.16) có thể được sử dụng làm cổng đầu vào đa

năng hoặc cho đầu vào tương tự vào ADC bên trong.

Hai đầu vào VRH và VRL cung cấp điện áp tham chiếu cho ADC.

Thanh ghi dữ liệu cổng E có địa chỉ $1002.

Hình 10.16 Thanh ghi cổng E. Thanh ghi dữ liệu cổng E $100A

Bit 7 6 5 4 3 2 1 0

68HC11 có ADC bên trong; Các bit của cổng E 0, 1, 2, 3, 4, 5, 6 và 7 là các chân đầu

vào tương tự. Hai đường VRH và VLH cung cấp điện áp tham chiếu được sử dụng bởi ADC;

điện áp tham chiếu cao VRH không được thấp hơn VDD, tức là 5 V, và điện áp tham chiếu

thấp VLH không được thấp hơn VSS, tức là 0 V. ADC phải được bật trước khi có thể sử

dụng.

Điều này được thực hiện bằng cách thiết lập bit điều khiển bật nguồn A/D (ADPU) trong

thanh ghi OPTION (Hình 10.17), đây là bit 7. Bit 6 chọn nguồn xung nhịp cho ADC. Cần có

độ trễ ít nhất 100 μs sau khi bật nguồn để hệ thống ổn định.

Hình 10.17 Thanh ghi TÙY CHỌN đăng ký $1039


Bit 7 5 6 4 3 2 1 0
OPTION.

ADPU CSEL IRQE DLY CME CR1 CR2

Chọn đồng hồ

0 = chọn đồng hồ E, 1 = chọn bộ dao động RC trên chip

0 = A/D không được cấp nguồn, 1 = A/D được cấp nguồn


Machine Translated by Google

10.3 Xe đẩy siêu nhỏ 257

Đăng ký ADCTL $1030


Chút 7 6 5 4 3 2 1 0

CCF QUÉT NHIỀU CD CC CB CA


chuyển đổi

cờ hoàn chỉnh
1 = chưa hoàn thành

0 = hoàn thành Chuyển đổi kênh

chọn bit

Kiểm soát quét liên tục

Điều khiển đa kênh/đơn kênh 0 = thực


0 = một chu kỳ gồm bốn chuyển đổi mỗi chu kỳ
thời gian ADCTL được ghi vào hiện bốn chuyển đổi liên tiếp
1 = chuyển đổi liên tục trên một kênh duy nhất

1 = thực hiện bốn chuyển đổi trên bốn


kênh liên tiếp

NHIỀU = 0 NHIỀU = 1

đĩa CD CC CB CA Kênh Đăng ký kết quả A/D


chuyển đổi

CCCD CB CA ADR1 ADR2 ADR3 ADR4

00 0 0 PE0 00 PE0 PE1 PE2 PE3


00 0 1 PE1 10 PE4 PE5 PE6 PE7
00 1 0 PE2
00 1 1 PE3
10 0 0 PE4
10 0 1 PE5
10 1 0 PE6
10 1 1 PE7

Hình 10.18 Thanh ghi ADCTL.

Chuyển đổi A/D được bắt đầu bằng cách ghi vào thanh ghi trạng thái/điều khiển
A/D (ADCTL) sau khi bật nguồn và độ trễ ổn định (Hình 10.18). Điều này liên quan
đến việc lựa chọn các kênh và chế độ hoạt động. Việc chuyển đổi sau đó sẽ bắt đầu
một chu kỳ đồng hồ sau đó. Ví dụ: nếu chế độ kênh đơn được chọn bằng cách đặt
MULT 5 0 thì bốn chuyển đổi A/D liên tiếp sẽ xảy ra đối với kênh được chọn bởi
các bit CD–CA. Kết quả chuyển đổi được đặt trong thanh ghi kết quả A/D ADR1–ADR4.

6 chế độ

MODA và MODB là hai chân có thể được sử dụng để buộc bộ vi điều khiển vào một
trong bốn chế độ khi bật nguồn, các chế độ này là bootstrap đặc biệt, thử nghiệm
đặc biệt, chip đơn và mở rộng:

MODB MODA Cách thức

0
Khởi động đặc biệt
0
Bài kiểm tra đặc biệt

1
Chip đơn
1 1 1 0 1
Đã mở rộng
Machine Translated by Google

258 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

Ở chế độ đơn chip, bộ vi điều khiển hoàn toàn độc lập ngoại trừ nguồn
xung nhịp bên ngoài và mạch đặt lại.
Với chế độ như vậy, bộ vi điều khiển có thể không có đủ tài nguyên, ví dụ
như bộ nhớ, cho một số ứng dụng và do đó, chế độ mở rộng có thể được sử
dụng để có thể tăng số lượng địa chỉ. Cổng B và C sau đó cung cấp địa chỉ,

dữ liệu và bus điều khiển. Cổng B có chức năng như tám chân địa chỉ trên
và cổng C đóng vai trò là chân dữ liệu được ghép kênh và địa chỉ thấp. Chế
độ khởi động cho phép nhà sản xuất tải các chương trình đặc biệt vào một
ROM đặc biệt cho khách hàng M68HC11. Khi bộ vi điều khiển được đặt ở chế
độ này, chương trình đặc biệt sẽ được tải. Chế độ kiểm tra đặc biệt chủ
yếu được sử dụng trong quá trình thử nghiệm sản xuất nội bộ của Motorola.
Sau khi chế độ đã được chọn, chân MODA sẽ trở thành chân có thể được
sử dụng để xác định xem lệnh có bắt đầu thực thi hay không. Chân MODB còn
có chức năng khác là cung cấp phương tiện để cấp nguồn cho RAM bên trong
của chip khi nguồn điện thông thường bị ngắt.

7 chân dao động


Các chân hệ thống dao động XTAL và EXTAL là các kết nối để truy cập bộ dao
động bên trong. Hình 10.19 cho thấy một mạch ngoài có thể được sử dụng. E
là đồng hồ bus và chạy ở 1/4 tần số dao động và có thể được sử dụng để đồng
bộ hóa các sự kiện bên ngoài.

Hình 10.19 Đầu ra bộ dao động.


TUYỆT VỜI

10MΩ
XTAL

Tinh thể 8,0 MHz Pha lê

18 pF

18 pF

8 Bộ điều khiển ngắt


Bộ điều khiển ngắt dùng để cho phép bộ vi điều khiển ngắt một chương trình
(xem Phần 13.3.3). Ngắt là một sự kiện yêu cầu CPU dừng việc thực thi
chương trình thông thường và thực hiện một số dịch vụ liên quan đến sự
kiện đó. Hai đường IRQ và XIRQ dành cho đầu vào bên ngoài của tín hiệu
ngắt. ĐẶT LẠI là để đặt lại bộ vi điều khiển và cho phép khởi động hệ thống
có trật tự. Trạng thái của pin có thể được đặt bên trong hoặc bên ngoài.
Khi phát hiện tình trạng reset, tín hiệu chân được đặt ở mức thấp trong
bốn chu kỳ xung nhịp. Nếu sau hai chu kỳ nữa mà nó vẫn ở mức thấp thì thiết
lập lại bên ngoài được coi là đã xảy ra. Nếu phát hiện thấy chuyển đổi
dương trên đầu vào nguồn VDD thì quá trình thiết lập lại bật nguồn sẽ xảy
ra. Điều này cung cấp độ trễ thời gian chu kỳ 4064. Nếu chân đặt lại ở mức
thấp khi kết thúc thời gian trễ bật nguồn, bộ vi điều khiển vẫn ở trạng
thái nghỉ cho đến khi nó lên cao.

9 bộ đếm thời gian

M68HC11 có hệ thống hẹn giờ. Nó có bộ đếm chạy tự do, chức năng so sánh năm
đầu ra, khả năng ghi lại thời gian khi xảy ra sự kiện bên ngoài, ngắt định
kỳ theo thời gian thực và bộ đếm, được gọi là
Machine Translated by Google

10.3 Xe đẩy siêu nhỏ 259

bộ tích lũy xung, cho các sự kiện bên ngoài. Bộ đếm chạy tự do, được gọi là TCNT,
là bộ đếm 16 bit bắt đầu đếm từ 0000 khi CPU được đặt lại và tiếp tục chạy sau đó
liên tục và chương trình không thể đặt lại. Giá trị của nó có thể được đọc bất cứ
lúc nào. Nguồn cho bộ đếm là đồng hồ bus hệ thống và đầu ra của nó có thể được định
tỷ lệ trước bằng cách đặt các bit PR0 và PR1 là bit 0 và 1 trong thanh ghi TMSK2
tại địa chỉ $1024 (Hình 10.20).

Hình 10.20 Thanh ghi TMSK2. Thanh ghi ngắt hẹn giờ 2 tại địa chỉ $1024

Bit 7 6 5 4 3 2 1 0

PR1 PR0

Yếu tố đặt trước

Một lần đếm

Đặt trước Tần số xe buýt

PR1 PR0 nhân tố 2 MHz 1 MHz

0 0 1 0,5 mili giây 2 1 mili giây

0 1 4 mili giây 4 mili giây

1 0 số 8 4 mili giây 8 mili giây

1 1 16 8 mili giây 16 mili giây

Các chức năng so sánh đầu ra cho phép thời gian, tức là số lượng bộ đếm thời
gian, được chỉ định tại thời điểm đầu ra sẽ xuất hiện khi đạt đến số lượng đặt trước.
Hệ thống thu thập đầu vào sẽ ghi lại giá trị của bộ đếm khi đầu vào xảy ra và do đó
thời gian chính xác mà đầu vào xảy ra sẽ được ghi lại. Bộ tích lũy xung có thể
được cấu hình để hoạt động như một bộ đếm sự kiện và đếm các xung đồng hồ bên
ngoài hoặc như một bộ tích lũy thời gian có cổng và lưu trữ số lượng xung xảy ra
trong một khoảng thời gian cụ thể do bộ đếm được bật và sau đó, vào một thời điểm
sau đó. , tàn tật. Thanh ghi điều khiển tích lũy xung PACTL (xem Hình 10.12) tại
địa chỉ $1026 được sử dụng để chọn chế độ hoạt động. Bit PAEN được đặt thành 0 để
vô hiệu hóa bộ tích lũy xung và thành 1 để kích hoạt nó, bit PAMOD thành 0 cho chế
độ bộ đếm sự kiện và 1 cho chế độ thời gian kiểm soát và bit PEDGE thành 0 để bộ
tích lũy xung phản hồi. cạnh giảm khi ở chế độ bộ đếm sự kiện và 1 để phản hồi cạnh
tăng trong chế độ đó. Trong chế độ kiểm soát, bit PEDGE được đặt thành 0 khiến cho
việc đếm bị vô hiệu hóa khi cổng A, bit 7 là 0 và tích lũy khi 1, và khi bit PEDGE
được đặt thành 1 trong chế độ này, việc đếm bị vô hiệu hóa khi cổng A, bit 7 là 1
và được kích hoạt khi nó bằng 0.

10 COP

Một chức năng hẹn giờ khác là COP, máy tính hoạt động bình thường.
Đây là bộ hẹn giờ hết thời gian chờ và đặt lại hệ thống nếu một hoạt động không
được kết thúc trong khoảng thời gian được coi là hợp lý (xem Phần 16.2). Điều này
thường được gọi là bộ đếm thời gian theo dõi.

11 xung

Điều chế độ rộng xung (PWM) được sử dụng để điều khiển tốc độ của động cơ một chiều
(xem Phần 3.6 và 9.5.3) bằng cách sử dụng tín hiệu sóng vuông và bằng cách thay đổi
khoảng thời gian bật tín hiệu, thay đổi giá trị trung bình giá trị của tín hiệu.
Một sóng vuông có thể được tạo ra bởi một bộ vi điều khiển bằng cách bố trí một đầu
ra xuất hiện sau mỗi nửa chu kỳ.
Machine Translated by Google

260 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

Tuy nhiên, một số phiên bản của M68HC11 có mô-đunPWM và do đó, sau khi mô-
đunPWM được khởi tạo và kích hoạt, dạng sóngPWM có thể được tự động xuất ra.

Như đã trình bày ở trên, trước khi có thể sử dụng một bộ vi điều khiển, cần
phải khởi tạo nó, tức là đặt các bit trong các thanh ghi thích hợp để nó hoạt
động theo yêu cầu.

10.3.2Intel 8051

Một họ vi điều khiển phổ biến khác là Intel 8051, Hình 10.21 thể hiện các kết
nối chân và kiến trúc. 8051 có bốn cổng vào/ra song song, các cổng 0, 1, 2 và 3.
Các cổng 0, 2 và 3 cũng có các chức năng thay thế. Phiên bản 8051AH có byte ROM
4K, RAM 128 byte, hai bộ định thời và điều khiển ngắt cho năm nguồn ngắt.

INT0 INT1

Hẹn giờ 1
Đầu vào hẹn giờ
Hẹn giờ 0

CÀI LẠI EA Cổng nối tiếp


Hẹn giờ 1 T1
XTAL2 ALE
RAM rom
XTAL1 PSEN
128 byte 4K
Kiểm soát Sổ
P0.0 P2.0 Hẹn giờ 2 T2
P0.1 P2.1
ngắt đăng ký khác

P0.2 P2.2
P0.3 P2.3
P0.4 P2.4
P0.5 P2.5
P0.6 P2.6 CPU
P0.7 P2.7

P1.0 P3.0 RXD


P1.1 P3.1 TXD
P1.2 P3.2 INT0
P1.3 P3.3 INT1
P1.4 P3.4 T0 Bộ dao động Điều khiển xe buýt Cổng đầu vào/đầu ra Cổng nối tiếp

P1.5 P3.5 T1
P1.6 P3.6 WR
P1.7 P3.7 RD

XTL1 XTL2 RST ALE P0 P2 P1 P3 TXD RXD

Đối với kết EA PSEN Đầu vào và


nối tinh thể Địa chỉ/dữ liệu
đầu ra nối tiếp

Bốn cổng song song I/O

Hình 10.21 Intel 8051.

1 Cổng đầu vào/đầu ra


Cổng 0 có địa chỉ 80H, cổng 1 ở địa chỉ 90H, cổng 2 ở địa chỉ A0H và cổng 3
ở địa chỉ B0H (lưu ý sử dụng H hoặc h sau địa chỉ Intel để chỉ ra rằng nó
nằm trong thập lục phân). Khi một cổng được sử dụng làm cổng đầu ra, dữ liệu
sẽ được đưa vào thanh ghi chức năng đặc biệt tương ứng. Khi một cổng được
sử dụng làm cổng đầu vào, trước tiên giá trị FFH phải được ghi vào cổng đó.
Tất cả các cổng đều có thể định địa chỉ theo bit. Vì vậy, ví dụ, chúng ta có
thể chỉ sử dụng bit 6 trong cổng 0 để bật hoặc tắt động cơ và có lẽ bit 7 để
bật hoặc tắt máy bơm.
Machine Translated by Google

10.3 Xe đẩy siêu nhỏ 261

Cổng 0 có thể được sử dụng làm cổng đầu vào hoặc cổng đầu ra. Ngoài ra,
nó có thể được sử dụng như một bus địa chỉ và dữ liệu đa kênh để truy cập
bộ nhớ ngoài. Cổng 1 có thể được sử dụng làm cổng đầu vào hoặc cổng đầu
ra. Cổng 2 có thể được sử dụng làm cổng đầu vào hoặc cổng đầu ra. Ngoài
ra, nó có thể được sử dụng cho bus địa chỉ cao để truy cập bộ nhớ ngoài.
Cổng 3 có thể được sử dụng làm cổng đầu vào hoặc cổng đầu ra. Ngoài ra,
nó có thể được sử dụng làm cổng đầu vào/đầu ra cho mục đích đặc biệt. Các
chức năng thay thế của cổng 3 bao gồm đầu ra ngắt và bộ định thời, đầu vào
và đầu ra cổng nối tiếp và các tín hiệu điều khiển để giao tiếp với bộ nhớ
ngoài. RXD là cổng đầu vào nối tiếp, TXD là cổng đầu ra nối tiếp, INT0 là
ngắt ngoài 0, INT1 là ngắt ngoài 1, T0 là đầu vào bên ngoài bộ đếm thời
gian/bộ đếm 0, T1 là đầu vào bên ngoài bộ đếm thời gian/bộ đếm 1, WR là
nhấp nháy ghi vào bộ nhớ ngoài và RD là nhấp nháy đọc bộ nhớ ngoài. Thuật ngữ nhấp nháy
mô tả một kết nối được sử dụng để bật hoặc tắt một chức năng cụ thể. Cổng
0 có thể được sử dụng làm cổng đầu vào hoặc đầu ra. Ngoài ra, nó có thể
được sử dụng để truy cập bộ nhớ ngoài.

2 ALE
Chân ALE cung cấp xung đầu ra để chốt byte bậc thấp của địa chỉ trong
quá trình truy cập bộ nhớ ngoài. Điều này cho phép sử dụng địa chỉ 16
bit. Hình 10.22 minh họa điều này.

Hình 10.22 Sử dụng ALE. 8-bit trên

byte địa chỉ


16-bit
Cảng 2
Địa chỉ

ALE

Chốt cửa

thấp hơn 8 bit

Cổng 0 byte địa chỉ


và dữ liệu

Cảng 3 Thời gian và kiểm soát

3 PSEN
Chân cho phép lưu trữ chương trình (PSEN) là chân tín hiệu đọc cho bộ nhớ
chương trình bên ngoài và hoạt động khi ở mức thấp. Nó được kết nối với
chân cho phép đầu ra của ROM hoặc EPROM ngoài.

4 EA
Chân truy cập bên ngoài (EA) ở mức thấp để bộ vi xử lý chỉ truy cập
mã chương trình bên ngoài; khi cao nó tự động truy cập mã nội bộ hoặc
mã bên ngoài tùy theo địa chỉ. Do đó, khi 8051 được thiết lập lại lần
đầu, bộ đếm chương trình bắt đầu ở mức $0000 và trỏ đến lệnh chương
trình đầu tiên trong bộ nhớ mã bên trong trừ khi EA ở mức thấp. Sau
đó CPU sẽ đưa ra mức PSEN thấp để cho phép sử dụng bộ nhớ mã bên
ngoài. Chân này cũng được sử dụng trên bộ vi điều khiển có EPROM để
nhận điện áp nguồn lập trình để lập trình EPROM.
Machine Translated by Google

262 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

5 XTAL1, XTAL2
XTL1
30 pF Đây là các chân kết nối cho bộ dao động tinh thể hoặc bộ dao động bên ngoài.
Hình 10.23 minh họa cách chúng được sử dụng với tinh thể. Tần số tinh thể được sử
dụng phổ biến nhất là 12 MHz.

6 THIẾT LẬP LẠI

Tín hiệu cao trên chân này trong ít nhất hai chu kỳ máy sẽ đặt lại bộ vi điều
30 pF XTL2
khiển, tức là đặt ở trạng thái cho phép khởi động hệ thống có trật tự.
Tinh thể 12 MHz

Hình 10.23 Pha lê. 7 Đầu vào/đầu ra nối tiếp


Việc ghi vào bộ đệm dữ liệu nối tiếp SBUF tại địa chỉ 99H sẽ tải dữ liệu để truyền;
đọc SBUF truy cập dữ liệu đã nhận. Thanh ghi điều khiển cổng nối tiếp có thể định
địa chỉ bit SCON tại địa chỉ 98H được sử dụng để điều khiển các chế độ hoạt động
khác nhau.

8 Thời gian
Thanh ghi chế độ hẹn giờ TMOD tại địa chỉ 89H được sử dụng để thiết lập chế độ
hoạt động cho bộ định thời 0 và bộ định thời 1 (Hình 10.24). Nó được tải tại một
thực thể và không thể đánh địa chỉ từng bit riêng lẻ. Thanh ghi điều khiển bộ định
thời TCON (Hình 10.25) chứa các bit trạng thái và điều khiển cho bộ định thời 0 và
bộ định thời 1. 4 bit trên được sử dụng để bật và tắt bộ định thời hoặc để báo
hiệu tràn bộ định thời. 4 bit thấp hơn không liên quan gì đến bộ định thời nhưng
được sử dụng để phát hiện và khởi tạo các ngắt bên ngoài.

Hình 10.24 Thanh ghi TMOD. 7 6 5 4 3 2 1 0

89H CỔNG C/T M1 C/T CỔNG M0 M1 M0

Hẹn giờ 1 Hẹn giờ 0

Cổng: 0 = bộ đếm thời gian chạy bất cứ khi nào TR0/TR1 được đặt

1 = bộ đếm thời gian chỉ chạy khi INT0/INT1 ở mức cao cùng với TR0/TR1

C/T: chọn bộ đếm/hẹn giờ

0 = đầu vào từ đồng hồ hệ thống, 1 = đầu vào từ TX0/TX1

M0 và M1 đặt chế độ

Chế độ M1 M0

0 0 0 Bộ đếm 13 bit, thấp hơn 5 bit của TL0 và tất cả 8 bit của TH0

0 1 1 Bộ đếm 16 bit

1 0 2 Bộ định thời/bộ đếm tự động tải lại 8 bit

1 1 3 TL0 là bộ định thời/bộ đếm 8 bit được điều khiển bởi bộ định thời 0

các bit điều khiển. TH0 là bộ định thời 8 bit được điều khiển bởi bộ định thời 1

các bit điều khiển. Bộ hẹn giờ 1 đã tắt

Hình 10.25 Thanh ghi TCON. 7 6 5 4 3 2 1 0

88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

TF0, TF1 Cờ tràn bộ đếm thời gian; được thiết lập bởi phần cứng khi thời gian tràn

và bị xóa bằng phần cứng khi bộ xử lý gọi


thói quen gián đoạn

TR0, TR1 Các bit điều khiển chạy bộ định thời: 1 = bộ định thời bật, 0 = bộ định thời tắt

IE0, IE1 Cờ cạnh ngắt được thiết lập bởi phần cứng khi ngắt bên ngoài
cạnh hoặc mức thấp được phát hiện và xóa khi xử lý ngắt

IT0, IT1 Loại ngắt được thiết lập bằng phần mềm: 1 = kích hoạt cạnh xuống

ngắt, 0 = ngắt kích hoạt ở mức độ thấp


Machine Translated by Google

10.3 Xe đẩy siêu nhỏ


263

Nguồn của các bit được tính bởi mỗi bộ định thời được thiết lập bởi bit C/
T; nếu bit thấp, nguồn là đồng hồ hệ thống chia cho 12, nếu không, nếu cao, nó
được đặt để đếm đầu vào từ nguồn bên ngoài. Bộ định thời có thể được bắt đầu
bằng cách đặt TR0 hoặc TR1 thành 1 và dừng bằng cách đặt nó về 0. Một phương
pháp khác để điều khiển bộ định thời là đặt GATE thành 1 và do đó cho phép bộ
định thời được điều khiển bằng chân INT0 hoặc INT1 trên bộ vi điều khiển.
thành 1. Bằng cách này, một thiết bị bên ngoài được kết nối với một trong các
chân này có thể điều khiển bật/tắt bộ đếm.

9 ngắt
Các ngắt buộc chương trình gọi một chương trình con được đặt tại một địa
chỉ được chỉ định trong bộ nhớ; chúng được kích hoạt bằng cách ghi vào thanh
ghi cho phép ngắt IE tại địa chỉ A8H (Hình 10.26).

Hình 10.26 Chút ít 7 6 5 4 3 2 1 0

đăng ký IE.
IE tại địa chỉ A8H EA ES ET1 EX1 ET0 EX0

Bật/tắt toàn cầu Kích hoạt ngắt 0 bên ngoài

Cho phép ngắt cổng nối tiếp Cho phép ngắt bộ định thời 0

Cho phép ngắt bộ định thời 1 Kích hoạt ngắt 1 bên ngoài

8D TH1 F0 B Thuật ngữ thanh ghi chức năng đặc biệt được sử dụng cho các thanh ghi điều khiển
8C TH0 E0 ACC đầu vào/đầu ra (Hình 10.27), giống như IE ở trên, và chúng được đặt tại các địa
8B TL1 D0 PSW chỉ từ 80 đến FF. Bộ tích lũy A (ACC) là thanh ghi chính được sử dụng cho các
8A TL0 B8 IP hoạt động dữ liệu; thanh ghi B được sử dụng để nhân và chia. P0, P1, P2 và P3
89 TMOD B0 P3 là các thanh ghi chốt cho cổng 0, 1, 2 và 3.
88 TCON A8 I E

87 PCON A0 P2

83 DPH 99 SBU
10.3.3Bộ vi điều khiểnMicrochip™
82 DPL 98 SCON

81 SP 90 P1
Một dòng vi điều khiển 8 bit khác được sử dụng rộng rãi là dòng vi điều
80 P0
khiển do Microchip™ cung cấp. Thuật ngữ bộ điều khiển giao diện ngoại vi
Hình 10.27 Các thanh ghi. (PIC) được sử dụng cho các bộ vi điều khiển chip đơn của nó. Chúng sử
dụng một dạng kiến trúc được gọi là kiến trúc Harvard. Với kiến trúc này,
các lệnh được lấy từ bộ nhớ chương trình bằng cách sử dụng các bus khác
với các bus được sử dụng để truy cập các biến (Hình 10.28). Trong các bộ
vi điều khiển khác được thảo luận trong chương này, các bus riêng biệt
không được sử dụng và do đó việc tìm nạp dữ liệu chương trình phải chờ
các hoạt động đọc/ghi và đầu vào/đầu ra được hoàn thành trước khi có thể
nhận được lệnh tiếp theo từ bộ nhớ. Với kiến trúc Harvard, các hướng dẫn
có thể được tìm nạp trong mỗi chu kỳ mà không phải chờ đợi, mỗi lệnh sẽ
được thực thi trong chu trình sau quá trình tìm nạp của nó. Kiến trúc
Harvard cho phép đạt được tốc độ thực thi nhanh hơn ở tần số xung nhịp
nhất định. Hình 10.29 hiển thị các kết nối chân cho một phiên bản của
PIC16C74A và vi điều khiển 16F84, và Hình 10.30 là dạng cơ bản của kiến
trúc.
Machine Translated by Google

264 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

Hình 10.28 (a) Kiến Chỉ dẫn Đăng ký


Địa chỉ Địa chỉ
trúc Harvard, (b) kiến trúc
von Neumann, (c) thực thi mã.
Đăng ký
Chương trình vi- chẳng hạn như

ký ức bộ xử lý Vào/ra và
ĐẬP

Chỉ dẫn Dữ liệu

(Một)

Bus dữ liệu

vi- Dữ liệu Vào/ra


Chương trình

ký ức bộ xử lý ký ức sổ đăng ký

Xe buýt địa chỉ

(b)

Chỉ dẫn Hoạt động Chỉ dẫn Hoạt động


xe đạp xe đạp

1 Tìm về 1 Tìm về
hướng dẫn 1 hướng dẫn 1

2 Tìm về Hành hình 2 Hành hình

hướng dẫn 2 hướng dẫn 1 hướng dẫn 1

3 Tìm Thực hiện 3 Tìm


nạp lệnh 3 hướng dẫn 2 nạp lệnh 2

4 Tìm về Hành hình 4 Hành hình

hướng dẫn 4 hướng dẫn 3 hướng dẫn 2


kiến trúc Harvard Kiến trúc Von Neumann

(c)

Các tính năng cơ bản của bộ vi điều khiển 16C74, các bộ vi điều khiển PIC khác có chức
năng tương tự được trình bày dưới đây.

1 cổng đầu vào/đầu ra


Các chân 2, 3, 4, 5, 6 và 7 dành cho cổng đầu vào/đầu ra hai chiều A. Cũng như các
cổng hai chiều khác, tín hiệu được đọc và ghi thông qua các thanh ghi cổng. Hướng
của tín hiệu được điều khiển bởi các thanh ghi hướng TRIS; có một thanh ghi TRIS cho
mỗi cổng. TRIS được đặt là 1 để đọc và 0 để ghi (Hình 10.31).

Các chân 2, 3, 4 và 5 cũng có thể được sử dụng cho đầu vào tương tự, chân 6 cho
đầu vào đồng hồ cho bộ định thời 0; chân 7 cũng có thể là chân chọn phụ cho cổng nối
tiếp đồng bộ (xem phần sau trong phần này).
Các chân 33, 34, 35, 36, 37, 38, 39 và 40 dành cho đầu vào hai chiều/
cổng đầu ra B; hướng của tín hiệu được điều khiển bởi thanh ghi hướng TRIS tương
ứng. Chân 33 cũng có thể là chân ngắt ngoài.
Các chân 37, 38, 39 và 40 cũng có thể là chân ngắt khi thay đổi chân. Pin 39 có thể
Machine Translated by Google

10.3 Xe đẩy siêu nhỏ 265

MLCR/VPP 1 40 RB7 RA2 1 18 RA1


RA0/AN0 2 39 RB6 RA3 2 17 RA0
RA1/AN1 3 38 RB5 RA4/T0CK1 16 OSC1/CLKIN
RA2/AN2 4 37 RB4 MCLR 3 15 OSC2/CLKOUT
RA3/AN3/V 5 36 RB3 VSS 4 5 14 VDD
RA4/T0CKI 6 35 RB2 RB0/INT 6 13 RB7
RA5/SS/AN4 7 34 RB1 RB1 7 12 RB6
RE0/RD/AN5 8 33 RB0/INT RB2 8 11 RB5
RE1/WR/AN6 9 32 VDD RB3 9 10 RB4
RE2/CS/AN7 10 31 VSS PIC16F84A
VDD 11 30 RD7/PSP7
VSS 12 29 RD6/PSP6
OSC1/CLKIN 13 28 RD5/PSP5 MLCR/VPP 40 RB7

OSC2/CLKOUT 14 27 RD4/PSP4 RA0/AN0 1 2 39 RB6

RC0/T1OSO/T1CKI 15 26 RC7/RX/DT RA1/AN1 3 38 RB5

RC1/T1OSI/CCP2 16 25 RC6//TX/CK RA2/AN2 4 37 RB4

RC2/ĐCST1 17 24 RC5/SDO RA3/AN3/V 5 36 RB3/CCP2

RC3/SCK/SCL 18 23 RC4/SDI/SDA RA4/T0CKI 6 35 RB2/IN2

RD0/PSPO 19 22 RD3/PSP3 RA5/SS/AN4/LVDIN 7 34 RB1/INT1

RD1/PSP1 20 21 RD2/PSP2 RE0/RD/AN5 33 RB0/INT0


RE1/WR/AN6 8 32 VDD
PIC16C74A
RE2/CS/AN7 9 31 VSS
VDD 10 11 30 RD7/PSP7
VSS 12 29 RD6/PSP6
OSC1/CLKIN 13 28 RD5/PSP5
OSC2/CLKOUT/RA6 14 27 RD4/PSP4
RC0/T1OSO/T1CKI 15 26 RC7/RX/DT
RC1/T1OSI/CCP2 16 25 RC6//TX/CK
RC2/ĐCST1 17 24 RC5/SDO
RC3/SCK/SCL 18 23 RC4/SDI/SDA
RD0/PSPO 19 22 RD3/PSP3
RD1/PSP1 20 21 RD2/PSP2

PIC18F452

Hình 10.29 Sơ đồ chân PIC.

cũng là đồng hồ lập trình nối tiếp và chân 40 là dữ liệu lập trình nối tiếp.

Các chân 15, 16, 17, 18, 23, 24, 25 và 26 dành cho cổng đầu vào/đầu ra hai
chiều C; hướng của tín hiệu được điều khiển bởi thanh ghi hướng TRIS tương
ứng. Chân 15 cũng có thể là đầu ra của bộ định thời 1 hoặc đầu vào của đồng
hồ hẹn giờ 1. Chân 16 cũng có thể là đầu vào bộ dao động hẹn giờ 1 hoặc đầu
vào Capture 2/đầu ra So sánh 2/đầu raPWM2.
Các chân 19, 20, 21, 22, 27, 28, 29 và 30 dành cho cổng đầu vào/đầu ra hai
chiều D; hướng của tín hiệu được điều khiển bởi thanh ghi hướng TRIS tương
ứng.
Các chân 8, 9 và 10 dành cho cổng đầu vào/đầu ra hai chiều E; hướng của
tín hiệu được điều khiển bởi thanh ghi hướng TRIS tương ứng. Chân 8 cũng
có thể điều khiển đọc cho cổng phụ song song hoặc đầu vào tương tự 5. Cổng
phụ song song là một tính năng tạo điều kiện thuận lợi cho việc thiết kế mạch
giao diện máy tính cá nhân; khi sử dụng, các chân của cổng D và E được dành
riêng cho hoạt động này.

2 Đầu vào tương


tự Các chân 2, 3, 4, 5 và 7 của cổng A và các chân 8, 9 và 10 của cổng E cũng
có thể được sử dụng cho đầu vào tương tự, cấp nguồn thông qua ADC bên trong.
Các thanh ghi ADCON1 và TRISA cho cổng A (TRISE cho cổng E) phải được khởi tạo
Machine Translated by Google

266 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

Bộ định TIS0/TICK1 RC0


thời 1, bộ TIS1/CCP2 RC1
định thời CCP1 RC2
2 và chụp/so sánh/PWM

SCK RC3
Giao diện ngoại
Logic SDI
vi nối tiếp Cảng C RC4
ngắt SDO RC5
CPU

SCL
2
Giao diện C
TÔI

SDA

TX RC6
UART
RX RC7

RB0
INTF

Cổng B

ĐẬP

RBIF
RB7

EPROM

Mã chương Hẹn giờ 0 T0CKI


trình bảo vệ

Bộ đếm thời gian

giám sát AN0 RA0


AN1
AN2
Hẹn giờ Cảng A
VREF/AN3
bật nguồn
Bộ chuyển đổi
tương tự sang số AN4 RA5
Hẹn giờ

khởi động bộ dao động AN5 RE0


AN6 Cổng E RE1
AN7 RE2
mất điện

cài lại
RD
WR
Tùy chọn CS
dao động RD0

Bật nguồn Cổng nô lệ song song

cài lại
Cổng D

Bậc thầy
Bộ dao động Quyền lực
thông thoáng
RD7

CLKIN/ CLKOUT/ VDD VDD


OSC1
OSC2 MCLR VSS VSS

Hình 10.30 PIC 16C74/74A.

7 6 5 4 3 2 1 0
Hình 10.31 Hướng cổng.
Bit cổng

TRIS cho 5 đầu ra và 3 đầu vào 1 1 1 0 0 0 0 0


Machine Translated by Google

10.3 Xe đẩy siêu nhỏ 267

để chọn điện áp tham chiếu được sử dụng cho việc chuyển đổi và chọn các kênh làm đầu vào.

Sau đó, ADCON0 phải được khởi tạo bằng cách sử dụng các cài đặt được chỉ ra bên dưới:

Bit ADCON0

5 4 3 Để bật đầu vào analog

0 Cổng A, bit 0
0 0 0 0 1 Cổng A, bit 1
0 1 0 Cổng A, bit 2
0 1 1 Cổng A, bit 3
1 0 0 Cổng A, bit 5
1 0 1 Cổng E, bit 0
1 1 0 Cổng E, bit 1
1 1 1 Cổng E, bit 2

3 bộ hẹn giờ

Bộ vi điều khiển có ba bộ định thời: bộ định thời 0, bộ định thời 1 và bộ định thời 2. Bộ
định thời 0 là bộ đếm 8 bit có thể được ghi vào hoặc đọc từ đó và có thể được sử dụng để

đếm các chuyển đổi tín hiệu bên ngoài, tạo ra ngắt khi có đủ số lượng sự kiện cần thiết.

đã xảy ra. Nguồn đếm có thể là tín hiệu đồng hồ bus bên trong hoặc tín hiệu số bên ngoài.

Việc lựa chọn nguồn đếm được thực hiện bởi bit TOCS trong thanh ghi OPTION (Hình 10.32).

7 6 5 4 3 2 1 0

81H RPBU INTEDG T0CS T0SE PSA PS2 PS1 PS0

Bộ đếm trước

Bit gán bộ chia tỷ lệ trước


Cho phép kéo lên cổng B
1 = được gán cho WDT
1 = pull-up cổng B bị vô hiệu hóa ghi đè bất kỳ giá trị chốt cổng nào
0 = gán cho TMR0
0 = pull-up cổng B được kích hoạt bởi các giá trị chốt cổng riêng lẻ
Cạnh nguồn TMR0
Chọn cạnh ngắt 1 = tăng ở mức cao xuống thấp
1 = ngắt ở cạnh lên của chân RB0/INT 0 = tăng từ thấp đến cao
0 = ngắt ở cạnh xuống của chân RB0/INT chuyển đổi trên chân RA4/T0CKI

Đồng hồ nguồn TMR0

1 = chuyển tiếp trên chân RA4/T0CKI


0 = đồng hồ chu kỳ lệnh nội bộ

Hình 10.32 Thanh ghi OPTION.

Nếu bộ chia tỷ lệ trước không được chọn thì số đếm sẽ tăng lên sau mỗi hai chu kỳ của

nguồn đầu vào. Bộ đếm gộp trước có thể được sử dụng để tín hiệu chỉ được truyền đến bộ

đếm sau một số chu kỳ xung nhịp cố định khác.

Sau đây cho thấy tỷ lệ mở rộng có thể. WDT đưa ra các hệ số tỷ lệ được chọn khi bộ đếm

thời gian giám sát được bật. Nó được sử dụng để hết thời gian chờ và thiết lập lại hệ

thống nếu một hoạt động không được kết thúc trong một thời gian hợp lý; thời gian mặc định

trên danh nghĩa là 18 ms.


Machine Translated by Google

268 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

Giá trị bit vô hướng


TMR0 WDT

PS2 PS1 PS0 tỷ lệ tỷ lệ

0 0 0 1 : 1 : 1
0 0 2 1 : 1 : 2

0 1 4 1 : 1 : 4

0 8 1 : 1 : 8

1 0 16 1 : 1 : 16

1 32 1 : 1 : 32

1 64 1 : 1 : 64

1 1 1 1 0 0 1 1 0 1 0 1 128 1 : 256 1 : 128

Bộ định thời 1 là bộ định thời linh hoạt nhất và có thể được sử dụng để theo dõi

thời gian giữa các lần chuyển đổi tín hiệu trên chân đầu vào hoặc điều khiển thời gian
chuyển đổi chính xác trên chân đầu ra. Khi được sử dụng với chế độ chụp hoặc so sánh,
nó cho phép bộ vi điều khiển kiểm soát thời gian của đầu ra trên chân 17.

Bộ định thời 2 có thể được sử dụng để điều khiển chu kỳ đầu ra của một xung xung
điện. Đầu raPWM được cung cấp ở chân 16 và 17.

4 Đầu vào/đầu ra nối tiếp

Bộ vi điều khiển PIC bao gồm mô-đun cổng nối tiếp đồng bộ (SSP) và mô-đun giao diện

truyền thông nối tiếp (SCI). Chân 18 có các chức năng thay thế của đầu vào hoặc đầu

ra đồng hồ nối tiếp đồng bộ cho chế độ giao diện ngoại vi nối tiếp SPI và I
2 2
chế độ C. cái tôi xe buýt C

cung cấp giao diện hai chiều hai dây có thể được sử dụng với nhiều loại chip khác; nó

cũng có thể được sử dụng để kết nối bộ vi điều khiển chính với bộ vi điều khiển phụ.

UART, tức là bộ phát máy thu không đồng bộ phổ quát, có thể được sử dụng để tạo giao

diện nối tiếp với máy tính cá nhân.

5 Cổng phụ song song


Cổng phụ song song sử dụng cổng D và E và cho phép bộ vi điều khiển cung cấp giao diện
với PC.

6 Đầu vào tinh thể


Chân 13 dành cho đầu vào tinh thể dao động hoặc đầu vào nguồn đồng hồ bên ngoài; chân
14 dành cho đầu ra tinh thể dao động. Hình 10.33(a) cho thấy sự sắp xếp có thể được
sử dụng để điều khiển tần số chính xác,

+5V
Hình 10.33 Điều khiển tần số.

VDD

R
22 pF
OSC1
OSC1

Pha lê C

OSC2 VSS

22 pF

(Một) (b)
Machine Translated by Google

10.3 Xe đẩy siêu nhỏ 269

Hình 10.33 (b) cái có thể được sử dụng để điều khiển tần số chi phí thấp; đối
với tần số 4 MHz, chúng ta có thể có R 5 4,7 kÆ và C 5 33 pF. Tốc độ xung nhịp
bên trong là tần số dao động chia cho 4.

7 Xóa chính và đặt lại

Chân 1 là MCLR rõ ràng chính, tức là đặt lại đầu vào và được đưa xuống mức
thấp để đặt lại thiết bị theo yêu cầu và khởi động có trật tự. Khi phát hiện
thấy mức tăng VDD , xung cấp nguồn khi nghỉ (POR) được tạo ra để cung cấp độ
trễ hết thời gian chờ cố định và giữ cho bộ xử lý ở trạng thái đặt lại. Nếu
điện áp VDD xuống dưới mức điện áp quy định trong hơn một khoảng thời gian
nhất định, thiết lập lại mất điện sẽ được kích hoạt. Bộ đếm thời gian của cơ
quan giám sát là một cách khác để có thể thiết lập lại. Đây là bộ hẹn giờ hết
thời gian và cho bộ vi điều khiển nghỉ ngơi nếu một thao tác không được kết
thúc trong khoảng thời gian được coi là hợp lý.

Các thanh ghi có mục đích đặc biệt (Hình 10.34) được sử dụng cho đầu vào/
kiểm soát đầu ra, như được minh họa ở trên liên quan đến một vài thanh ghi này.

Hình 10.34 Các thanh ghi có mục Địa Ngân hàng 0 Ngân hàng 1 Tài liệu

chỉ tệp Địa chỉ


đích đặc biệt.
00h INDF INDF 80 giờ

01h TMR0 LỰA CHỌN 81 giờ

02h PCL PCL 82 giờ

03h TRẠNG THÁI TRẠNG THÁI 83 giờ

04h FSR FSR 84 giờ

05h PORTA TRISA 85 giờ

06h PORTB TRISB 86 giờ

07h PORTC TRISC 87 giờ

08h PORTD TRISD 88 giờ

09h CẢNG TRISE 89 giờ

0ah PCLATH PCLATH 8 giờ

0Bh INTCON INTCON 8Bh

0Ch PIR1 PIE1 8Ch

0Dh PIR2 PIE2 8Dh

0Ơ TMR1L PCON 8Ơ

0Fh TMR1H 8Fh

10h T1CON 90h

11h TMR2 91 giờ

12h T2CON PR2 92 giờ

13h SSPBUF SSPADD 93 giờ

14h SSPCON SSPSTAT 94 giờ

15h CCPR1L 95h

16h CCPR1H 96 giờ

17h CCP1CON 97h

18h RCSTA TXSTA 98 giờ

19h TXREG SPBRG 99 giờ

1A RCREG 9A

1Bh CCPR2L 9Bh

1Ch CCPR2H 9Ch

1Dh CCPR2CON 9Dh

1Ơ ĐỊA CHỈ 9Ơ

1Fh ADCON0 ADCON1 9Fh

20h Mục đích chung Mục đích chung A0h

7Fh sổ đăng ký sổ đăng ký FFh


Machine Translated by Google

270 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

Các thanh ghi cho PIC16C73/74 được sắp xếp thành hai dãy và trước khi một thanh ghi cụ
thể có thể được chọn, dãy phải được chọn bằng cách thiết lập một bit trong thanh ghi
trạng thái (Hình 10.35).

Hình 10.35 Thanh ghi 7 6 5 4 3 2 1 0


TÌNH TRẠNG.

RP0 Bit chọn ngân hàng đăng ký C Mang/mượn bit

NOT_TO Đặt lại bit trạng thái Bit mang/mượn kỹ thuật số DC

NOT_PD Đặt lại bit trạng thái Z Zero bit

10.3.4 Bộ vi điều khiển Atmel AVR và Arduino

Atmel AVR có nhiều bộ vi điều khiển 8 bit và sử dụng kiến trúc Harvard đã được sửa đổi
với chương trình và dữ liệu được lưu trữ ở các vị trí bộ nhớ riêng biệt. Arduino là
một bo mạch vi điều khiển nhỏ với các thành phần bổ sung được thiết kế để hỗ trợ việc sử
dụng vi điều khiển trong các dự án điều khiển. Bo mạch cơ bản, Arduino UNO Revision 3,
sử dụng bộ vi điều khiển Atmel 8 bit, Atmega328.

Bộ vi điều khiển này có hệ thống bộ nhớ, các cổng đầu vào/đầu ra, bộ hẹn giờ/
bộ đếm, điều chế độ rộng xung, ADC, hệ thống ngắt và truyền thông nối tiếp.

Bo mạch Arduino có thể được mua sẵn từ nhiều nhà bán lẻ. Bo mạch có một đầu cắm bus
nối tiếp đa năng (USB) để có thể kết nối trực tiếp với máy tính và một số ổ cắm kết nối
để có thể kết nối với các vật dụng bên ngoài như động cơ, rơle, v.v.

Bo mạch có thể được cấp nguồn bằng cách kết nối với nguồn điện bên ngoài, ví dụ như pin
9 V hoặc thông qua kết nối USB từ máy tính. Được lập trình sẵn trong chip vi điều khiển
trên bo mạch là bộ tải khởi động cho phép tải trực tiếp các chương trình vào bộ nhớ vi
điều khiển.
Các bo mạch cơ bản được bổ sung bởi các bo mạch phụ kiện, được gọi là bo mạch bảo vệ,
ví dụ như bo mạch hiển thị LCD (màn hình tinh thể lỏng), bo mạch động cơ và bo mạch
Ethernet, có thể được cắm lên trên bo mạch Arduino cơ bản và vào các đầu cắm của bo
mạch. Nhiều lá chắn có thể được xếp chồng lên nhau.
Hội đồng quản trị là nguồn mở. Điều này có nghĩa là bất kỳ ai cũng được phép tạo ra
các bo mạch tương thích với Arduino. Có sẵn bộ dụng cụ khởi động, thường bao gồm các
vật dụng như bo mạch Arduino, cáp USB để bo mạch có thể được lập trình từ máy tính, bảng
mạch bánh mì để sử dụng để lắp ráp mạch ngoài bằng dây dẫn và các bộ phận thường được
sử dụng như điện trở, điện trở quang chiết áp , tụ điện, nút bấm, cảm biến nhiệt độ, màn
hình chữ và số LCD, điốt phát sáng (LED), động cơ DC, trình điều khiển động cơ cầu H,
bộ ghép quang, bóng bán dẫn và điốt.

Hình 10.36 thể hiện các tính năng cơ bản của Arduino UNO Revision 3
Cái bảng. Những điều này được nêu dưới đây.

1 Chân reset ở phần đầu nối nguồn


Việc này sẽ đặt lại bộ vi điều khiển để nó bắt đầu chương trình lại từ đầu. Để thực
hiện đặt lại, chân này cần được đặt ở mức thấp trong giây lát, tức là được kết nối
với 0 V. Hành động này cũng có thể được bắt đầu bằng cách sử dụng công tắc đặt lại.
2 Các chân khác trong đầu nối nguồn
Chúng cung cấp các điện áp khác nhau, tức là 3,5 V, 5 V, GND và 9 V.
Machine Translated by Google

10.3 Xe đẩy siêu nhỏ 271

Hình 10.36 Các thành phần cơ bản I/O kỹ thuật số

của bo mạch Arduino UNO


Revision 3.
đèn LED
Cài lại
Đèn báo
USB nguồn LED công tắc
TX
kết nối
nối tiếp
RX
lập trình
kết nối

vi điều khiển

Nguồn cấp Đặt lại mã pin

kết nối

Thiết bị đầu cuối nguồn điện Đầu vào tương tự

3 đầu vào tương tự


Chúng được dán nhãn từ A0 đến A5 và có thể được sử dụng để phát hiện tín hiệu điện áp.

4 Kết nối kỹ thuật số


Được gắn nhãn Kỹ thuật số từ 0 đến 13, chúng có thể được sử dụng cho đầu vào hoặc đầu ra.
Hai kết nối đầu tiên trong số này cũng được gắn nhãn RX và TX để nhận và truyền trong

giao tiếp.

5 đầu nối USB

Điều này được sử dụng để kết nối bảng với máy tính.
6 Đầu nối lập trình nối tiếp
Điều này cung cấp một phương tiện lập trình Arduino mà không cần sử dụng cổng USB.
7 đèn LED

Bảng mạch được trang bị ba đèn LED, một để biểu thị đường truyền nối tiếp
(TX), một đèn tiếp nhận (RX) và một đèn LED bổ sung để sử dụng trong các dự án.
8 Đầu nối nguồn điện
Nguồn điện bên ngoài có thể được kết nối với bo mạch thông qua đầu nối ở góc
dưới bên trái của bo mạch. Tuy nhiên, bo mạch có thể được cấp nguồn từ cổng
USB trong khi kết nối với máy tính.
9 Vi điều khiển

Bộ vi điều khiển ATmega328 được cài sẵn bộ tải khởi động cho phép tải mã
chương trình mới lên nó mà không cần sử dụng bộ lập trình phần cứng bên ngoài.

Khi mua, bo mạch Arduino thường được cài đặt sẵn chương trình mẫu. Chương
trình này dùng để làm đèn LED trên bảng nhấp nháy. Để bắt đầu chương trình, tất
cả những gì bạn cần làm là cấp nguồn, việc này có thể được thực hiện bằng cách cắm
vào cổng USB của máy tính. Sau đó, đèn LED sẽ nhấp nháy để xác minh rằng bo mạch
đang hoạt động. Để cài đặt phần mềm mới, được gọi là bản phác thảo cho bo mạch
Arduino, bạn cần cài đặt phần mềm Arduino và tải trình điều khiển USB vào máy tính
của mình. Hướng dẫn thực hiện việc này và phần mềm có thể được tìm thấy trên
trang web Arduino (www.arduino.cc). Sau khi cài đặt xong, bạn có thể tải chương
trình lên bo mạch Arduino.

10.3.5Chọn vi điều khiển

Khi lựa chọn một bộ vi điều khiển, các yếu tố sau cần được xem xét.

1 Số chân đầu vào/đầu ra


Cần bao nhiêu chân đầu vào/đầu ra cho nhiệm vụ liên quan?
Machine Translated by Google

272 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

2 giao diện cần thiết


Những giao diện nào sẽ được yêu cầu? Ví dụ, có cần phải sử dụng xung điện không?
Nhiều bộ vi điều khiển có đầu raPWM, ví dụ PIC17C42 có hai đầu ra.

3 Yêu cầu về bộ nhớ


Kích thước bộ nhớ cần thiết cho tác vụ là bao nhiêu?

4 Số lần ngắt yêu cầu


Có bao nhiêu sự kiện sẽ cần ngắt?

5 Yêu cầu tốc độ xử lý


Bộ vi xử lý cần có thời gian để thực hiện các lệnh (xem Phần 11.2.2),
thời gian này được xác định bởi đồng hồ bộ xử lý.

Để minh họa cho sự đa dạng của các bộ vi điều khiển hiện có, Bảng 10.1 trình
bày chi tiết về các thành viên của họ Intel 8051, Bảng 10.2 họ PIC16Cxx và
Bảng 10.3 họ M68HC11.

Bảng 10.1 Các thành viên dòng Intel 8051.

rom EPROM ĐẬP Bộ hẹn giờ Cổng vào/ra Ngắt

8031AH 0 0 128 2 4 5
8051AH 4K 0 128 2 4 5
8052AH 8K 0 256 3 4 6
8751H 0 4K 128 2 4 5

Bảng 10.2 Các thành viên họ PIC16C.

Vào/ra EPROM Các kênh RAM ADC Mô-đun USART CCP

PIC16C62A 22 2K 128 0 0 1

PIC16C63 22 4K 192 0 1 2
PIC16C64A 33 2K 128 0 0 1

PIC16C65A 33 4K 192 0 1 2
PIC16C72 22 2K 128 5 0 1

PIC16C73A 22 4K 192 5 1 2
PIC16C74A 33 4K 192 số 8 1 3

10,4 Các ứng dụng


Sau đây là hai ví dụ về cách sử dụng bộ vi điều khiển; nhiều nghiên cứu điển hình
hơn được đưa ra trong Chương 24.

10.4.1Hệ thống đo nhiệt độ

Là một chỉ dẫn ngắn gọn về cách sử dụng bộ vi điều khiển, Hình 10.37 cho
thấy các bộ phận chính của hệ thống đo nhiệt độ sử dụng MC68HC11. Cảm biến
nhiệt độ cung cấp điện áp tỷ lệ thuận với
Machine Translated by Google

10.4 Ứng dụng 273

Bảng 10.3 Các thành viên họ M68HC11.

Đồng hồ điện tử

ROM EEPROM RAM ADC Bộ định thời I/O nối tiếp MHz

68HC11AO 0 0 256 8 kênh, 8 bit (1) 0 22 KHOA HỌC, SPI 2

68HC11A1 0 512 256 8 kênh, 8 bit (1) 0 22 KHOA HỌC, SPI 2

68HC11A7 8K 0 256 8 kênh, 8 bit (1) 0 38 KHOA HỌC, SPI 3

68HC11A8 8K 512 256 8 kênh, 8 bit (1) 38 KHOA HỌC, SPI

68HC11C0 0 512 256 4 kênh, 4 bit (2) 0 2 ch., 8- 36 KHOA HỌC, SPI 3 2

68HC11D0 0 0 192 Không có (2) bit 0 14 KHOA HỌC, SPI 2

Bộ định thời: (1) là chụp ba hoặc bốn đầu vào, so sánh năm đầu ra, ngắt thời gian thực, hẹn giờ theo dõi, tích lũy xung, (2) là chụp
ba hoặc bốn đầu vào, so sánh năm hoặc bốn đầu ra, thời gian thực ngắt, bộ đếm thời gian theo dõi, bộ tích lũy xung. Serial: SCI là giao
diện truyền thông nối tiếp không đồng bộ, SPI là giao diện ngoại vi nối tiếp đồng bộ.

dữ liệu BCD
Hình 10.37 Nhiệt độ
hệ thống đo lường.

đầu ra
bát phân
cổng B
D

dep Lê

68HC11 BCD
Hải cảng
dữ liệu Hiển thị hai chữ số

Đầu vào C
Thời gian
cổng E
Nhiệt độ 74HCT273
với nó xung từ
cảm biến vi điều khiển
ADC

nhiệt độ (ví dụ như một thermotransistor như LM35; xem Phần 2.9.4). Đầu
ra từ cảm biến nhiệt độ được kết nối với đường đầu vào ADC của vi điều
khiển. Bộ vi điều khiển được lập trình để chuyển đổi nhiệt độ thành đầu
ra thập phân được mã hóa nhị phân (BCD), có thể được sử dụng để bật các
phần tử của màn hình hai chữ số, bảy phần tử. Tuy nhiên, do nhiệt độ có
thể dao động nên cần phải sử dụng bộ ghi lưu trữ có thể lưu dữ liệu đủ
lâu để có thể đọc được trên màn hình. Thanh ghi lưu trữ, 74HCT273, là
một flip-flop loại D bát phân được đặt lại trên cạnh dương tiếp theo
của đầu vào đồng hồ từ vi điều khiển.

10.4.2Máy giặt gia dụng

Hình 10.38 cho thấy cách sử dụng một bộ vi điều khiển làm bộ điều khiển
cho máy giặt gia đình. Bộ vi điều khiển thường được sử dụng là Motorola
M68HC05B6; cái này đơn giản và rẻ hơn bộ vi điều khiển Motorola M68HC11
đã thảo luận trước đó trong chương này và được sử dụng rộng rãi cho
các ứng dụng chi phí thấp.
Đầu vào từ các cảm biến về nhiệt độ nước và tốc độ động cơ đều thông
qua cổng đầu vào A/D. Cổng A cung cấp đầu ra cho các bộ truyền động khác
nhau được sử dụng để điều khiển máy và cũng là đầu vào cho mực nước.
Machine Translated by Google

274 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

Hình 10.38 Máy giặt. vi điều khiển

Cảm biến nhiệt độ

ADC

Đầu vào cài đặt tốc độ


hẹn giờ Cổng B Trưng bày

Điều chế độ rộng xung


xung điện
tín hiệu điều khiển tốc độ động cơ

Công tắc cửa khi cửa mở Ngắt


CPU
chương trình bị gián đoạn

Công tắc mực nước

Van nước nóng rom

Van nước lạnh

Điều khiển máy bơm nước Cảng C


Cảng A
Khóa cửa

MORPEE
Còi
Bàn phím
Hướng động cơ

Điều khiển máy sưởi

công tắc. Cổng B cung cấp đầu ra cho màn hình. Cổng C cung cấp đầu ra cho
màn hình và cũng nhận đầu vào từ bàn phím được sử dụng để nhập vào máy các
lựa chọn chương trình khác nhau. PhầnPWM của bộ định thời cung cấp tín
hiệuPWM để điều khiển tốc độ động cơ. Toàn bộ chương trình của máy bị gián
đoạn và dừng lại nếu cửa máy giặt được mở.

10,5
Lập trình
Một phương pháp thường được sử dụng để phát triển chương trình tuân theo
các bước sau.

1 Xác định vấn đề, nêu rõ chức năng mà chương trình sẽ thực hiện, đầu vào
và đầu ra cần thiết, mọi ràng buộc về tốc độ hoạt động, độ chính xác,
kích thước bộ nhớ, v.v.
2 Xác định thuật toán được sử dụng. Thuật toán là trình tự các bước xác
định phương pháp giải quyết vấn đề.
3 Đối với các hệ thống có ít hơn hàng nghìn lệnh, một trợ giúp hữu ích là
biểu diễn thuật toán bằng biểu đồ luồng. Hình 10.39(a) hiển thị các ký
hiệu tiêu chuẩn được sử dụng trong việc chuẩn bị lưu đồ. Mỗi bước của
thuật toán được biểu thị bằng một hoặc nhiều ký hiệu này và được liên
kết với nhau bằng các dòng để thể hiện luồng chương trình. Hình 10.39(b)
hiển thị một phần của biểu đồ luồng, trong đó, sau khi bắt đầu chương
trình, có thao tác A, theo sau là một nhánh dẫn đến thao tác B hoặc thao
tác C tùy thuộc vào việc quyết định truy vấn là có hay không. Một công cụ
thiết kế hữu ích khác là mã giả. Mã giả là một cách mô tả các bước trong
thuật toán theo cách không chính thức mà sau này có thể được dịch thành
chương trình (xem Phần 10.5.1).
4 Chuyển biểu đồ/thuật toán thành các lệnh mà bộ vi xử lý có thể thực hiện.
Điều này có thể được thực hiện bằng cách viết hướng dẫn bằng một số ngôn
ngữ, ví dụ như hợp ngữ hoặc có thể là C, sau đó
Machine Translated by Google

10.5 Lập trình g 275

Hình 10.39 Lưu đồ: (a)


BẮT ĐẦU
ký hiệu, (b) ví dụ.

Hoạt động
MỘT


ĐÚNG
sản
Bắt đầu/kết thúc Quá trình chương trình con Đầu ra đầu vào
lượng cao?

KHÔNG Hoạt động


B

Hoạt động

hoặc
C

Hướng dòng Kết nối


Phán quyết chương trình

(Một) (b)

chuyển đổi chúng, bằng tay hoặc bằng chương trình máy tính lắp ráp,
thành mã được bộ vi xử lý chấp nhận, tức là mã máy.

5 Kiểm tra và gỡ lỗi chương trình. Lỗi trong chương trình được gọi là
lỗi và quá trình theo dõi chúng cũng như loại bỏ chúng khi gỡ lỗi.

10.5.1Mã giả

Mã giả khá giống việc vẽ một biểu đồ và liên quan đến việc viết chương
trình dưới dạng một chuỗi các hàm hoặc thao tác với phần tử quyết định IF–
THEN–ELSE và phần tử lặp lại WHILE–DO.
Một chuỗi (Hình 10.40(a)) sẽ được viết là:

BẮT ĐẦU A


KẾT THÚC MỘT


BẮT ĐẦU B


KẾT THÚC B

và một quyết định như:

NẾU X

SAU ĐÓ
BẮT ĐẦU A


KẾT THÚC MỘT

KHÁC
BẮT ĐẦU B


KẾT THÚC B

KẾT THÚC X
Machine Translated by Google

276 Chương 10 BỘ VI XỬ LÝ VÀ BỘ ĐIỀU KHIỂN

Hình 10.40 (a) Trình


tự, (b) IF–THÌ–
ELSE, (c) WHILE–DO.
KHÔNG ĐÚNG ĐÚNG
X X
MỘT

KHÔNG MỘT

B MỘT

(Một) (b) (c)

Hình 10.40(b) thể hiện quyết định như vậy trong biểu đồ tiến trình. Sự lặp lại được viết
BẰNG:

KHI X
LÀM
BẮT ĐẦU A

KẾT THÚC MỘT

BẮT ĐẦU B

KẾT THÚC B

KẾT THÚC TRONG KHI X

Hình 10.40(c) hiển thị WHILE–DO dưới dạng biểu đồ luồng. Một chương trình được viết theo cách

này có thể xuất hiện dưới dạng:

BẮT ĐẦU CHƯƠNG TRÌNH

BẮT ĐẦU A

NẾU X

BẮT ĐẦU B

KẾT THÚC B

KHÁC
BẮT ĐẦU C

KẾT THÚC C

KẾT THÚC X

KẾT THÚC MỘT

BẮT ĐẦU D

NẾU Z

BẮT ĐẦU E

KẾT THÚC E

KẾT THÚC Z

KẾT THÚC D

Chương 11 cho thấy chương trình có thể được viết bằng hợp ngữ như thế nào và Chương 12

bằng C.
Machine Translated by Google

Các vấn đề 277

Bản tóm tắt

Về cơ bản, các hệ thống liên quan đến bộ vi xử lý có ba phần: bộ xử lý trung tâm


(CPU), giao diện đầu vào và đầu ra và bộ nhớ. Trong bộ vi xử lý, tín hiệu số di
chuyển dọc theo các bus, đây là các đường song song để truyền dữ liệu song song
thay vì nối tiếp.
Bộ vi điều khiển là sự tích hợp trên một chip của bộ vi xử lý với bộ nhớ, giao
diện đầu vào/đầu ra và các thiết bị ngoại vi khác như bộ hẹn giờ.
Thuật toán là trình tự các bước xác định phương pháp giải quyết vấn đề. Lưu đồ
và mã giả là hai phương pháp mô tả các bước như vậy.

Các vấn đề

10.1 Giải thích, đối với bộ vi xử lý, vai trò của (a) bộ tích lũy, (b) trạng thái, (c) địa
chỉ bộ nhớ, (d) thanh ghi bộ đếm chương trình.

10.2 Bộ vi xử lý sử dụng tám dòng địa chỉ để truy cập bộ nhớ. cái gì là
số vị trí bộ nhớ tối đa có thể được xử lý?

10.3 Một chip nhớ có 8 dòng dữ liệu và 16 dòng địa chỉ. Kích thước của nó sẽ là bao nhiêu?

10.4 Bộ vi điều khiển khác với bộ vi xử lý như thế nào?

10.5 Vẽ sơ đồ khối của một bộ vi điều khiển cơ bản và giải thích chức năng của từng hệ thống
con.

10.6 Cổng M68HC11 nào được sử dụng cho (a) ADC, (b) cổng hai chiều, (c) đầu vào/đầu ra nối
tiếp, (d) chỉ là cổng chỉ đầu ra 8 bit?

10.7 M68HC11A7 có bao nhiêu byte bộ nhớ cho bộ nhớ dữ liệu?

10.8 Đối với Motorola M68HC11, cổng C là hai chiều. Nó được cấu hình như thế nào để trở
thành (a) đầu vào, (b) đầu ra?

10.9 Motorola M68HC11 có thể hoạt động ở chế độ chip đơn và chế độ mở rộng. Tại sao lại có
những chế độ này?

10.10 Mục đích của kết nối chân ALE với Intel 8051 là gì?

10.11 Cần có đầu vào nào để thiết lập lại bộ vi điều khiển Intel 8051?

10.12 Viết mã giả để biểu diễn các phần sau:

(a) nếu A có thì B, nếu không thì C;

(b) trong khi A đồng ý thì B.


Machine Translated by Google

Chương mười một ngôn ngữ hội

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 sẽ có thể sử dụng hợp ngữ để viết các
chương trình liên quan đến truyền dữ liệu, số học, logic, nhảy, rẽ nhánh, chương trình con, độ trễ và
bảng tra cứu.

11.1 Ngôn ngữ


Phần mềm là thuật ngữ được sử dụng cho các hướng dẫn cho bộ vi xử lý
hoặc vi điều khiển biết phải làm gì. Tập hợp các hướng dẫn mà bộ vi xử
lý sẽ nhận ra là tập lệnh của nó . Hình thức của tập lệnh phụ thuộc vào
bộ vi xử lý có liên quan. Chuỗi hướng dẫn cần thiết để thực hiện một
nhiệm vụ cụ thể được gọi là chương trình .
Bộ vi xử lý hoạt động theo mã nhị phân. Các hướng dẫn được viết bằng
mã nhị phân được gọi là mã máy . Viết một chương trình theo kiểu mã
như vậy là một quá trình đòi hỏi kỹ năng và rất tẻ nhạt. Nó dễ xảy ra
lỗi vì chương trình chỉ là một chuỗi các số 0 và số 1 và không dễ hiểu
được các hướng dẫn chỉ bằng cách nhìn vào mẫu. Một cách khác là sử dụng
một dạng mã tốc ký dễ hiểu cho các mẫu số 0 và số 1. Ví dụ: hoạt động
thêm dữ liệu vào bộ tích lũy có thể được biểu thị bằng ADDA. Mã tốc ký
như vậy được gọi là mã ghi nhớ , mã ghi nhớ là mã 'hỗ trợ trí nhớ'.
Thuật ngữ hợp ngữ được
, sử dụng cho một mã như vậy. Viết một chương
trình bằng cách sử dụng thuật ghi nhớ dễ dàng hơn vì chúng là phiên bản
rút gọn của thao tác được thực hiện bởi lệnh. Ngoài ra, vì các lệnh mô
tả các hoạt động của chương trình và có thể dễ dàng hiểu được nên chúng
ít có khả năng bị sử dụng sai sót hơn so với các mẫu nhị phân của lập
trình mã máy.
Tuy nhiên, chương trình biên dịch mã vẫn phải được chuyển đổi thành mã máy vì
đây là tất cả những gì bộ vi xử lý sẽ nhận ra. Việc chuyển đổi này có thể được
thực hiện thủ công bằng cách sử dụng bảng dữ liệu của nhà sản xuất liệt kê mã nhị
phân cho mỗi từ ghi nhớ. Tuy nhiên, các chương trình máy tính có sẵn để thực hiện
việc chuyển đổi, những chương trình như vậy được gọi là chương trình biên dịch mã .
Các ngôn ngữ cấp cao, ví dụ BASIC, C, FORTRAN và PASCAL, hiện có sẵn,
cung cấp một loại ngôn ngữ lập trình gần hơn với việc mô tả bằng ngôn
ngữ dễ hiểu các loại hoạt động cần thiết. Tuy nhiên, những ngôn ngữ như
vậy vẫn phải được chuyển đổi thành mã máy bằng một chương trình máy
tính để bộ vi xử lý có thể sử dụng. Chương này trình bày sơ lược về
cách viết chương trình bằng hợp ngữ, Chương 12 sử dụng C.

You might also like