Tải bản đầy đủ (.pdf) (145 trang)

Giáo trình Kỹ thuật vi điều khiển (Nghề Điện tử dân dụng): Phần 1 - CĐ nghề Vĩnh Long

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.95 MB, 145 trang )

ỦY BAN NHÂN DÂN TỈNH VĨNH LONG
TRƯỜNG CAO ĐẲNG NGHỀ VĨNH LONG

GIÁO TRÌNH
MƠ ĐUN: KỸ THUẬT VI ĐIỀU KHIỂN
NGHỀ: ĐIỆN TỬ DÂN DỤNG
TRÌNH ĐỘ: TRUNG CẤP
(Ban hành theo Quyết định số 171 /QĐ – CĐNVL ngày 14 tháng 8 năm 2017
của Hiệu trưởng trường Cao đẳng nghề Vĩnh Long)

(Lưu hành nội bộ)
NĂM 2017


ỦY BAN NHÂN DÂN TỈNH VĨNH LONG
TRƯỜNG CAO ĐẲNG NGHỀ VĨNH LONG

Tác giả biên soạn: ThS. Trương Nguyễn Thịnh Cương

GIÁO TRÌNH
MƠ ĐUN: KỸ THUẬT VI ĐIỀU KHIỂN
NGHỀ: ĐIỆN TỬ DÂN DỤNG
TRÌNH ĐỘ: TRUNG CẤP

NĂM 2017


LỜI MỞ ĐẦU

Quyển sách đề cập đến các vấn đề căn bản liên quan đến chip họ 8051, như cấu trúc
phần cứng, nhiệm vụ của các chân trong chip họ 8051, sơ đồ mạch điện, tập lệnh, cùng


các hoạt động đặc trưng của các chip vi điều khiển: hoạt động định thời, hoạt động
port nối tiếp và hoạt động ngắt.
Các vấn đề về lập trình hợp ngữ và cấu trúc chương trình, giúp cho người đọc dể dàng
tiếp cận. Các thí dụ trong các chương trình minh họa một cách rõ ràng, đồng thời cũng
giúp người đọc dể dàng tiếp cận và lập trình theo ý riêng của mình.
Quyển sách này là tài liệu tổng hợp từ nhiều nguồn sách khác nhau, nên khơng thể
khơng thiếu sót về nội dung lẫn chính tả mong các học sinh đóng góp để quyển sách
được hoàn thiện hơn.


MỤC LỤC

BÀI 1: SƠ LƯỢC VỀ LỊCH SỬ VÀ HƯỚNG PHÁT TRIỂN CỦA VI ĐIỀU KHIỂN1
1. Lịch sử phát triển .....................................................................................................1
2. Vi điều khiển ............................................................................................................1
2.1.Nguyên lý cấu tạo ...............................................................................................1
2.2. Các kiểu cấu trúc bộ nhớ ...................................................................................2
2.3. Tổ chức bộ nhớ ngoài ........................................................................................3
3. Lĩnh vực và ứng dụng ..............................................................................................3
4. Hướng phát triển ......................................................................................................4
Câu hỏi ôn tập ..................................................................................................................4
BÀI 2: CẤU TRÚC HỌ VI ĐIỀU KHIỂN 8051 ............................................................5
1. Tổng quan.................................................................................................................5
2. Sơ đồ chân ................................................................................................................6
3. Cấu trúc Port I/O ......................................................................................................7
4. Tổ chức bộ nhớ ......................................................................................................10
4.1.Vùng RAM đa năng ..........................................................................................12
4.2.Vùng RAM địa chỉ bit ......................................................................................13
4.3. Các dãy thanh ghi ............................................................................................13
5. Các thanh ghi chức năng đặc biệt ..........................................................................14

5.1.Từ trạng thái chương trình PSW .......................................................................15
5.2.Thanh ghi B ......................................................................................................16
5.3.Con trỏ Stack ....................................................................................................16
5.4.Con trỏ dữ liệu DPTR .......................................................................................16
5.5. Các thanh ghi Port ...........................................................................................16
5.6.Các thanh ghi định thời .....................................................................................17
5.7.Các thanh ghi của Port nối tiếp .........................................................................17
5.8.Các thanh ghi ngắt ............................................................................................17
5.9.Thanh ghi điều khiển nguồn .............................................................................17
6. Bộ nhớ ngoài ..........................................................................................................17
6.1.Truy xuất bộ nhớ chương trình ngồi ...............................................................17
6.2.Truy xuất bộ nhớ dữ liệu ngoài ........................................................................18
6.3. Giải mã địa chỉ .................................................................................................18
7. Các cải tiến của 8032/8052 ....................................................................................19
8. Hoạt động Reset .....................................................................................................20
9. Thực hành ứng dụng ..............................................................................................21
Câu hỏi ôn tập ................................................................................................................21


BÀI 3: TẬP LỆNH 8051 ...............................................................................................22
1. Mở đầu ...................................................................................................................22
2. Các cách định địa chỉ .............................................................................................22
3. Các nhóm lệnh........................................................................................................24
3.1. Nhóm lệnh số học ............................................................................................24
3.2. Nhóm lệnh logic ..............................................................................................36
3.3. Nhóm lệnh truyền dữ liệu ................................................................................47
3.5.Nhóm lệnh rẽ nhánh chương trình ....................................................................71
4. Bài tập ....................................................................................................................86
Câu hỏi ôn tập ................................................................................................................99
BÀI 4: BỘ ĐỊNH THỜI ..............................................................................................100

1. Mở đầu .................................................................................................................100
2. Thanh ghi SFR của timer .....................................................................................102
2.1.Thanh ghi chế độ TMOD ................................................................................102
2.2. Thanh ghi điều khiển TCON .........................................................................105
3. Các chế độ làm việc .............................................................................................106
3.1.Chế độ Timer 13 bit ........................................................................................106
3.2.Chế độ Timer 16 bit ........................................................................................107
3.4.Chế độ tách biệt Timer ...................................................................................108
4. Nguồn cung cấp xung cho Timer .........................................................................110
4.1.Chức năng định thời........................................................................................110
4.2.Chức năng đếm sự kiện ..................................................................................111
5. Khởi động, dừng, điều khiển Timer .....................................................................112
6. Khởi tạo và truy xuất thanh ghi Timer ................................................................113
7. Timer 2 của 8052 .................................................................................................114
Câu hỏi ôn tập ..............................................................................................................139
BÀI 5: CỔNG NỐI TIẾP ............................................................................................140
1. Mở đầu .................................................................................................................140
2.Thanh ghi điều khiển .............................................................................................141
3. Chế độ làm việc ....................................................................................................141
3.1.Thanh ghi dịch 8 bit ........................................................................................144
3.2. Chế độ UART 8 bit có tốc độ baud thay đổi .................................................146
3.3.UART 9 bit với tốc độ baud cố định ..............................................................148
3.4.Chế độ UART với tốc độ baud cố định ..........................................................149
4. Khởi tạo và truy suất thanh ghi PORT nối tiếp...................................................149
5. Truyền thông đa xử lý ..........................................................................................152
6. Tốc độ BAUD ......................................................................................................153


7. Bài tập ..................................................................................................................153
Câu hỏi ôn tập ..............................................................................................................186

BÀI 6: NGẮT ..............................................................................................................188
1. Mở đầu .................................................................................................................188
2. Tổ chức ngắt của 8051 .........................................................................................190
3. Xử lý ngắt .............................................................................................................190
4. Thiết kế chương trình dùng ngắt ..........................................................................193
5. Ngắt cổng nối tiếp ................................................................................................196
6. Các cổng ngắt ngoài .............................................................................................201
7. Đồ thị thời gian của ngắt ......................................................................................207
8. Bài tập ..................................................................................................................207
Câu hỏi ôn tập ..............................................................................................................216
BÀI 7: PHẦN MỀM HỢP NGỮ .................................................................................224
1. Mở đầu .................................................................................................................224
2. Hoạt động của ASSEMBLER ..............................................................................225
3. Cấu trúc chương trình dữ liệu ..............................................................................227
4. Tính biểu thức trong khi hợp dịch........................................................................229
5. Các điều khiển của ASSEMBLER.......................................................................233
6. Hoạt động liên kết ................................................................................................234
7. MACRO ...............................................................................................................237
8. Bài tập ..................................................................................................................242
Câu hỏi ôn tập ..............................................................................................................243
TÀI LIỆU THAM KHẢO ...........................................................................................244


BÀI 1: SƠ LƯỢC VỀ LỊCH SỬ VÀ HƯỚNG PHÁT TRIỂN
CỦA VI ĐIỀU KHIỂN
Mục tiêu
- Trình bày được cấu trúc chung của vi điều khiển
- Phát biểu được các ứng dụng của vi điều khiển và hướng phát triển của vi
điều khiển
Nội dung

1. Lịch sử phát triển
- 1971 tập đoàn Intel giới thiệu 8080, bộ vi xử lý(micro processor) thành cơng
đầu tiên Sau đó motorola, RCA, kế đến là MOS Technology và Zilog đã giới thiệu bộ
vi xử lý tương tự: 6800, 1801, 6502 và Z80
- 1976 Intel giới thiệu bộ vi điều khiển (microcontroller)
8748. 8748 chứa trên 17,000 transistor bao gồm một CPU, 1 Kbyte EPROM, 64
byte Ram, 27 chân xuất nhập và một bộ định thời 8 bit 1
- 1980 Intel công bố chip 8051, bộ vi điều khiển đầu tiên của họ vi điều khiển
MCS-51. 8051 chứa trên 60,000 transistor bao gồm 4Kbyte ROM, 128 byte Ram, 32
đường xuất nhập, 1 port nối tiếp và 2 bộ địn thời 16 bit
2. Vi điều khiển
2.1.Nguyên lý cấu tạo

Hình 1-2. Sơ đồ khối một máy tính cổ điển

1


Hình 1-3. Sơ đồ khối hệ vi xử lý
2.2. Các kiểu cấu trúc bộ nhớ
Bộ nhớ trong của MCS-51 gồm ROM và RAM. RAM bao gồm nhiều vùng có
mục đích khác nhau: vùng RAM đa dụng (địa chỉ byte từ 30h – 7Fh và có thêm vùng
80h – 0FFh ứng với 8052), vùng có thể địa chỉ hóa từng bit (địa chỉ byte từ 20h –
2Fh, gồm 128 bit được định địa chỉ bit từ 00h – 7Fh), các bank thanh ghi (từ 00h –
1Fh) và các thanh ghi chức năng đặc biệt (từ 80h – 0FFh). Các thanh ghi chức năng
đặc biệt (SFR – Special Function Registers):

Bảng 3-2. Các thanh ghi chức năng đặc biệt

2



Các thanh ghi có thể định địa chỉ bit sẽ có địa chỉ bit bắt đầu và địa chỉ byte
trùng nhau. Ví dụ như: thanh ghi P0 có địa chỉ byte là 80h và có địa chỉ bit bắt đầu từ
80h (ứng với P0.0) đến 87h (ứng với P0.7). Chức năng các thanh ghi này sẽ mô tả
trong phần sau.
a. RAM nội:
Chia thành các vùng phân biệt: vùng RAM đa dụng (30h – 7Fh), vùng RAM có
thể định địa chỉ bit (20h – 2Fh) và các bank thanh ghi (00h – 1Fh). Bảng 3-3. Địa chỉ
RAM nội 8051
b. RAM đa dụng:
RAM đa dụng có 80 byte từ địa chỉ 30h – 7Fh có thể truy xuất mỗi lần 8 bit
bằng cách dùng chế độ địa chỉ trực tiếp hay gián tiếp. Các vùng địa chỉ thấp từ 00h – 2Fh
cũng có thể sử dụng cho mục đich như trên ngồi các chức năng đề cập như phần sau.
c. RAM có thể định địa chỉ bit:
Vùng địa chỉ từ 20h – 2Fh gồm 16 byte (= 128 bit) có thể thực hiện giống như
vùng RAM đa dụng (mỗi lần 8 bit) hay thực hiện truy xuất mỗi lần 1 bit bằng các lệnh
xử lý bit. Vùng RAM này có các địa chỉ bit bắt đầu tại giá trị 00h và kết thúc tại 7Fh.
Như vậy, địa chỉ bắt đầu 20h (gồm 8 bit) có địa chỉ bit từ 00h – 07h; địa chỉ kết
thúc 2Fh có địa chỉ bit từ 78h – Fh.
d. Các bank thanh ghi:
Vùng địa chỉ từ 00h – 1Fh được chia thành 4 bank thanh ghi: bank 0 từ 00h07h, bank 1 từ 08h – 0Fh, bank 2 từ 10h – 17h và bank 3 từ 18h – 1Fh. Các bank
thanh ghi này được đại diện bằng các thanh ghi từ R0 đến R7. Sau khi khởi động hệ
thống thì bank thanh ghi được sử dụng là bank 0.
Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghi được
truy xuất bởi các thanh ghi R0 đến R7. Việc thay đổi bank thanh ghi có thể thực hiện
thơng qua thanh ghi từ trạng thái chương trình (PSW). Các bank thanh ghi này cũng
có thể truy xuất bình thường như vùng RAM đa dụng đã nói ở trên.
2.3. Tổ chức bộ nhớ ngồi
- Bộ nhớ chương trình ngồi

- Bộ nhớ dữ liệu ngồi
- Bộ nhớ chương trình và dữ liệu dùng chung
- Giải mã địa chỉ
3. Lĩnh vực và ứng dụng
Trong các sản phẩm dân dụng:
+ Nhà thông minh: Cửa tự động Khóa số
+Tự động điều tiết ánh sáng thơng minh (bật/tắt đèn theo thời gian, theo
cường độ ánh sáng,...)
Trong quảng cáo: Các loại biển quảng cáo nháy chữ Quảng cáo ma trận LED
Trong các sản phẩm công nghiệp:

3


+ Điều khiển động cơ
+ Điều khiển số (PID, mờ,...)
4. Hướng phát triển
- Trong các sản phẩm dân dụng: Nhà thơng minh: Cửa tự động Khóa số Tự động
điều tiết ánh sáng thông minh (bật/tắt đèn theo thời gian, theo cường độ ánh sáng,...)
Điều khiển các thiết bị từ xa (qua điều khiển, qua tiếng vỗ tay,...) Điều tiết hơi ẩm,
điều tiết nhiệt độ, điều tiết khơng khí, gió Hệ thống vệ sinh thông minh,...
- Trong quảng cáo: Các loại biển quảng cáo nháy chữ Quảng cáo ma trận LED
(một màu, 3 màu, đa màu) Điều khiển máy cuốn bạt quảng cáo,...
- Các máy móc dân dụng Máy điều tiết độ ẩm cho vườn cây Buồng ấp trứng
gà/vịt Đồng hồ số, đồng hồ số có điều khiển theo thời gian
- Các sản phẩm giải trí Máy nghe nhạc Máy chơi game Đầu thu kỹ thuật số, đầu
thu set-top-box,...
- Trong các thiết bị y tế: Máy móc thiết bị hỗ trợ: máy đo nhịp tim, máy đo
đường huyết, máy đo huyết áp, điện tim đồ, điện não đồ,… Máy cắt/mài kính Máy
chụp chiếu (city, X-quang,...)


Câu hỏi ơn tập
1. Trình bày ngun lý của vi điều khiển?
2. Trình bày các kiểu cấu trúc bộ nhớ

4


BÀI 2: CẤU TRÚC HỌ VI ĐIỀU KHIỂN 8051
Mục tiêu
- Mô tả được cấu trúc họ vi điều khiển chuẩn công nghiệp
- Thực hiện truy xuất bộ nhớ dữ liệu, bộ nhớ chương trình đúng qui trình
kỹ thuật
- Thực hiện đúng kỹ thuật phương pháp mở rộng bộ nhớ ngoài.
- Trình bày được nguyên lý hoạt động của mạch reset
Nội dung
1. Tổng quan
Vi xử lý có rất nhiều loại bắt đầu từ 4 bit cho đến 32 bit, vi xử lý 4 bit hiện nay
khơng cịn như vi xử lý 8 vit vẫn cịn mặc dù đã có vi xử lý 32 bit.
Lý do sự tồn tại của vi xử lý 8 bit là phù hợp với 1 số yêu cầu điều khiển của các
thiết bị điều khiển trong công nghiệp. Các vi xử lý 32 bit thường sử dụng cho các máy
tính vì khối lượng dữ liệu của máy tính rất lớn nên cần các vi xử lý càng mạnh càng
tốt.
Các hệ thống điều khiển trong công nghiệp sử dụng các vi xử lý 8 bit để điều
khiển như hệ thống điện của xe hơi, hệ thống điều hòa, hệ thống điều khiển các dây
chuyền sản xuất,…
Khi sử dụng vi xử lý cần phải thiết kế một hệ thống gồm có:
✓ Vi xử lý.
✓ Có bộ nhớ.
✓ Các IC ngoại vi.

Bộ nhớ dùng để chứa chương trình cho vi xử lý thực hiện và chứa dữ liệu xử lý,
các IC ngoại vi dùng để xuất nhập dữ liệu từ bên ngoài vào xử lý và điều khiển trở lại.
Các khối này liên kết với nhau tạo thành một hệ thống vi xử lý.
Yêu cầu điều khiển càng cao thì hệ thống càng phức tạp và nếu yêu cầu điều
khiển có đơn giản ví dụ chỉ cần đóng mở 1 đèn led theo một thời gian u cầu nào đó
thì hệ thống vi xử lý cũng phải có đầy đủ các khối trên.
Để kết nối các khối trên tạo thành một hệ thống vi xử lý đòi hỏi người thiết kế
phải rất hiểu biết về tất cả các thành phần vi xử lý, bộ nhớ, các thiết bị ngoại vi. Hệ
thống tạo ra khá phức tạp , chiếm nhiều không gian, mạch in, và vấn đề chính là địi
hỏi người thiết kế, người sử dụng hiểu thật rõ về hệ thống. Một lý do chính nữa là vi
xử lý thừơng xử lý dữ liệu theo byte hoặc word trong khi đó các đối tượng điều khiển
trong cơng nghiệp thường điều khiển theo bit.

5


Chính vì sự phức tạp nên các nhà chế tạo đã tích hợp một ít bộ nhớ và một số
các thiết bị ngoại vi cùng với vi xử lý tạo thành một IC gọi là vi điều khiển –
Microcontroller.
Khi vi điều khiển ra đời đã mang lại sự tiện lợi là dễ dàng sử dụng trong điều
khiển công nghiệp, việc sử dụng vi điều khiển khơng địi hỏi người sử dụng phải hiểu
biết một lượng kiến thức quá nhiều như người sử dụng vi xử lý – dĩ nhiên người sử
dụng hiểu biết càng nhiều thì càng tốt nhưng đối với người bắt đầu thì việc sử dụng vi
xử lý là điều rất phức tạp trong khi đó mong muốn là sử dụng được ngay.
Các phần tiếp theo chúng ta sẽ khảo sát vi điều khiển để thấy rõ sự tiện lợi trong
vấn đề điều khiển trong cơng nghiệp.
Có rất nhiều hãng chế tạo được vi điều khiển, hãng sản xuất nổi tiếng là ATMEL.
Hãng Intel là nhà thiết kế. Có thể truy xuất để lấy tài liệu của hãng bằng địa chỉ
” />Có nhiều họ vi điều khiển mang các mã số khác nhau, một trong họ nổi tiếng là
họ MCS-51.

Trong họ MCS-51 thì vi điều khiển đầu tiên là 80C31 khơng có bộ nhớ bên
trong là do khơng tích hợp được.
Vi điều khiển 80C51 tích hợp được 4 kbyte bộ nhớ Prom. Chỉ lập trìnnh 1 lần
khơng thể xóa để lập trình lại được.
Vi điều khiển 87C51 tích hợp được 4 kbyte bộ nhớ eprom. Cho phép lập trình
nhiều lần và xóa bằng tia cực tím.
Vi điều khiển 89C51 tích hợp được 4 kbyte bộ nhớ flash rom nạp và xóa bằng
điện một cách tiện lợi và nhanh chóng. Có thể cho phép nạp xóa hàng ngàn lần.
Song song với họ MCS-51 là họ MCS-52 có 3 timer nhiều hơn họ MCS-51 một
timer và dung lượng bộ nhớ nội lớn gấp đơi tức là 8kbyte.
Hiện nay có rất nhiều vi điều khiển thế hệ sau có nhiều đặc tính hay hơn, nhiều
thanh ghi hơn, dung lượng bộ nhớ lớn hơn.
Ứng dụng của vi điều khiển rất nhiều trong các hệ thống điều khiển công nghiệp,
các dây chuyền sản xuất, các bộ điều khiển lập trình, máy giặt, máy điều hịa nhiệt độ,
máy bơm xăng tự động… có thể nói vi xử lý và vi điều khiển được ứng dụng trong hầu
hết mọi lĩnh vực.
2. Sơ đồ chân
Sơ đồ chân của vi điều khiển 89C51 được trình bày ở hình 3-2.
Vi điều khiển 89C51 có tất cả 40 chân. Trong đó có 24 chân có tác dụng kép (có
nghĩa là 1 chân có 2 chức năng), mỗi đường có thể hoạt động như đường xuất nhập
điều khiển IO [input output] hoặc là thành phần của các bus dữ liệu và bus địa chỉ để
tải địa chỉ và dữ liệu khi giao tiếp với bộ nhớ ngoài.

6


3. Cấu trúc Port I/O
➢ Port 0:
Port 0 là port có 2 chức năng với số thứ tự chân 32 – 39.
Trong các hệ thống điều khiển đơn giản sử dụng bộ nhớ bên trong không dùng bộ

nhớ mở rộng bên ngồi thì port 0 được dùng làm các đường điều khiển IO (InputOutput).
Trong các hệ thống điều khiển lớn sử dụng bộ nhớ mở rộng bên ngồi thì port 0
có chức năng là bus địa chỉ và bus dữ liệu AD7 - AD0. (Address: địa chỉ, data: dữ liệu)
➢ Port 1:
Port 1 với số thứ tự chân 1- 8. Port1 chỉ có 1 chức năng dùng làm các đường điều
khiển xuất nhập IO, port 1 khơng có chức năng khác.
➢ Port 2:
Port 2 là port có 2 chức năng với số thứ tự chân 21 – 28.
Trong các hệ thống điều khiển đơn giản sử dụng bộ nhớ bên trong khơng dùng bộ
nhớ mở rộng bên ngồi thì port 2 được dùng làm các đường điều khiển IO (InputOutput).

7


Trong các hệ thống điều khiển lớn sử dụng bộ nhớ mở rộng bên ngồi thì port 2
có chức năng là bus địa chỉ cao A8 - A15.
➢ Port 3:
Port 3 là port có 2 chức năng với số thứ tự chân 10 -17. Các chân của port này có
nhiều chức năng, các cơng dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của
89C51 như ở bảng sau:

- Các ngõ tín hiệu điều khiển:
➢ Ngõ tín hiệu PSEN (Program store enable):
PSEN là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chương trình
mở rộng thường nối đến chân OE ( output enable hoặc RD) của Eprom cho phép đọc
các byte mã lệnh.
Khi có giao tiếp với bộ nhớ chương trình bên ngồi thì mới dùng đến PSEN,
nếu khơng có giao tiếp thì chân PSEN bỏ trống. PSEN
( PSEN ở mức thấp trong thời gian vi điều khiển 89C51 lấy lệnh. Các mã lệnh
của chương trình đọc từ Eprom qua bus dữ liệu và được chốt vào thanh ghi lệnh bên

trong 89C51 để giải mã lệnh. Khi 89C51 thi hành chương trình trong EPROM nội thì
PSEN ở mức logic 1).
➢ Ngõ tín hiệu điều khiển ALE (Address Latch Enable ) :
Khi vi điều khiển 89C51 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus tải
địa chỉ và bus dữ liệu [AD7 – AD0] do đó phải tách các đường dữ liệu và địa chỉ. Tín
hiệu ra ALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa
chỉ và dữ liệu khi kết nối chúng với IC chốt. Xem hình 3-3.

8


Hình 3-3. Kết nối vi điều khiển với IC chốt, bộ nhớ EPROM ngoại, mạch reset, tụ
thạch anh.
Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trị là
địa chỉ thấp nên việc chốt địa chỉ được thực hiện 1 cách hoàn toàn tự động.
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động của tụ thạch anh
gắn vào vi điều khiển và có thể dùng tín hiệu xung ngõ ra ALE làm xung clock cung
cấp cho các phần khác của hệ thống.
Trong chế độ lập trình cho bộ nhớ nội của vi điều khiển thì chân ALE được dùng
làm ngõ vào nhận xung lập trình từ bên ngồi để lập trình cho bộ nhớ flash rom trong
89C51.
Ở hình 3-3 chỉ là minh hoạ kết nối vi điều khiển (89C52) với bộ nhớ EPROM
ngoại để thấy vai trò của tín hiệu ALE, các đường cịn lại của vi điều khiển có thể
dùng để kết nối điều khiển các đối tượng khác.
➢ Ngõ tín hiệu EA (External Access):
Tín hiệu vào EA ở chân 31 thường nối lên mức 1 hoặc mức 0.
Nếu nối EA lên mức logic 1 (+5v) thì vi điều khiển sẽ thi hành chương trình từ
bộ nhớ nội.
Nếu nối EA với mức logic 0 (0V) thì vi điều khiển sẽ thi hành chương trình từ
bộ nhớ ngoại.

➢ Ngõ tín hiệu RST (Reset):
Ngõ vào RST ở chân 9 là ngõ vào Reset của 89C51. Sơ đồ kết nối mạch reset
như hình vẽ 3-3. Khi cấp điện cho hệ thống hoặc khi nhấn nút reset thì mạch sẽ reset vi

9


điều khiển. Khi reset thì tín hiệu reset phải ở mức cao ít nhất là 2 chu kỳ máy, khi đó
các thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệ thống.
Trạng thái của tất cả các thanh ghi trong 89C51 sau khi reset hệ thống được tóm
tắt như sau:

Thanh ghi quan trọng nhất là thanh ghi bộ đếm chương trình PC = 0000H. Sau
khi reset vi điều khiển luôn bắt đầu thực hiện chương trình tại địa chỉ 0000H của bộ
nhớ chương trình nên các chương trình viết cho vi điều khiển ln bắt đầu viết tại địa
chỉ 0000H.
Nội dung của RAM trên chip không bị thay đổi bởi tác động của ngõ vào reset
[có nghĩa là vi điều khiển đang sử dụng các thanh ghi để lưu trữ dữ liệu nhưng nếu vi
điều khiển bị reset thì dữ liệu trong các thanh ghi vẫn không đổi].
Các ngõ vào bộ dao động Xtal1, Xtal2:
Bộ dao động được được tích hợp bên trong 89C51, khi sử dụng 89C51 người
thiết kế chỉ cần kết nối thêm tụ thạch anh và các tụ như hình vẽ trong sơ đồ hình 3-3.
Tần số tụ thạch anh thường sử dụng cho 89C51 là 12Mhz ÷ 24Mhz.
4. Tổ chức bộ nhớ
Vi điều khiển 89C51 có bộ nhớ nội bên trong và có thêm khả năng giao tiếp với
bộ nhớ bên ngồi nếu bộ nhớ bên trong khơng đủ khả năng lưu trữ chương trình.
Bộ nhớ nội bên trong gồm có 2 loại bộ nhớ: bộ nhớ dữ liệu và bộ chương trình.
Bộ nhớ dữ liệu có 256 byte, bộ nhớ chương trình có dung lượng 4kbyte. [89C52 có 8
kbyte, 89W55 có 16kbyte].


10


Bộ nhớ mở rộng bên ngoài cũng được chia ra làm 2 loại bộ nhớ: bộ nhớ dữ liệu
và bộ nhớ chương trình. Khả năng giao tiếp là 64kbyte cho mỗi loại. Hình 3-8 minh
họa khả năng giao tiếp bộ nhớ của vi điều khiển 89C51.
Bộ nhớ mở rộng bên ngồi và bộ nhớ chương trình bên trong khơng có gì đặc biệt
– chỉ có chức năng lưu trữ dữ liệu và mã chương trình nên khơng cần phải khảo sát.
Bộ nhớ chương trình bên trong của vi điều khiển thuộc loại bộ nhớ Flash rom
cho phép xóa bằng xung điện và lập trình lại.
Bộ nhớ ram nội bên trong là một bộ nhớ đặc biệt người sử dụng vi điều khiển cần
phải nắm rõ các tổ chức và các chức năng đặc biệt của bộ nhớ này.

RAM bên trong 89C51 được phân chia như sau:
➢ Các bank thanh ghi có địa chỉ từ 00H đến 1FH.
➢ RAM địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH.
➢ RAM đa dụng từ 30H đến 7FH.
➢ Các thanh ghi chức năng đặc biệt từ 80H đến FFH.

11


4.1.Vùng RAM đa năng
Vùng nhớ ram đa dụng gồm có 80 byte có địa chỉ từ 30H đến 7FH – vùng nhớ
này khơng có gì đặc biệt so với 2 vùng nhớ trên. Vùng nhớ bank thanh ghi 32 byte từ
00H đến 1FH cũng có thể dùng làm vùng nhớ ram đa dụng mặc dù các các ô nhớ này
đã có chức năng như đã trình bày.

12



Mọi địa chỉ trong vùng RAM đa dụng đều có thể truy xuất tự do dùng kiểu địa
chỉ trực tiếp hoặc gián tiếp.
Bộ nhớ ngăn xếp của vi điều khiển dùng bộ nhớ Ram nội nên dung lượng của bộ
nhớ ngăn xếp nhỏ trong khi đó các bộ vi xử lý dùng bộ nhớ bên ngoài làm bộ nhớ
ngăn xếp nên dung lượng tùy ý mở rộng.
4.2.Vùng RAM địa chỉ bit
Vi điều khiển 89C51 có 210 ơ nhớ bit có thể truy xuất từng bit, trong đó có 128
bit nằm ở các các ơ nhớ byte có địa chỉ từ 20H đến 2FH và các bit cịn lại chứa trong
nhóm thanh ghi có chức năng đặc biệt.
Các ơ nhớ cho phép truy xuất từng bit và các lệnh xử lý bit là một thế mạnh của
vi điều khiển. Các bit có thể được đặt, xóa, AND, OR bằng 1 lệnh duy nhất trong khi
đó để xử lý các bit thì vi xử lý vẫn có thể xử lý được nhưng phải sử dụng rất nhiều
lệnh để đạt được cùng một kết quả vì vi xử lý thừơng xử lý byte.
Các port cũng có thể truy xuất được từng bit.
128 ơ nhớ bit cho phép truy xuất từng bit và cũng có thể truy xuất byte phụ thuộc
vào lệnh được dùng là lệnh xử bit hay lệnh xử lý byte. Chú ý địa chỉ của ô nhớ byte và
bit trùng nhau.
Người lập trình dùng vùng nhớ này để lưu trữ dữ liệu phục vụ cho việc xử lý dữ
liệu byte hoặc bit. Các dữ liệu xử lý bit nên lưu vào vùng nhớ này.
Chú ý: các ô nhớ nào mà chia ra làm 8 và có các con số bên trong là các ô nhớ vừa
cho truy xuất byte và cả truy xuất bit. Những ơ nhớ cịn lại thì khơng thể truy xuất bit.
4.3. Các dãy thanh ghi
32 byte thấp của bộ nhớ nội được dành cho 4 bank thanh ghi.
Bộ lệnh 89C51 hổ trợ thêm 8 thanh ghi có tên là R0 đến R7 và theo mặc định sau
khi reset hệ thống thì các thanh ghi R0 đến R7 được gán cho 8 ơ nhớ có địa chỉ từ 00H
đến 07H được minh họa bởi hình 3-10, khi đó bank 0 có 2 cách truy xuất bằng địa chỉ
trực tiếp và bằng thanh ghi R.
Các lệnh dùng các thanh ghi R0 đến R7 sẽ có số lượng byte mã lệnh ít hơn và
thời gian thực hiện lệnh nhanh hơn so với các lệnh có chức năng tương ứng nếu dùng

kiểu địa chỉ trực tiếp.
Các dữ liệu được dùng thường xuyên nên lưu trữ ở một trong các thanh ghi này.
Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghi được
truy xuất bởi các thanh ghi R0 đến R7, để chuyển đổi việc truy xuất các bank thanh ghi
ta phải thay đổi các bit chọn bank trong thanh ghi trạng thái.

13


Người lập trình dùng vùng nhớ 4 bank thanh ghi để lưu trữ dữ liệu phục vụ cho
việc xử lý dữ liệu khi viết chương trình.
Chức năng chính của 4 bank thanh ghi này là nếu trong hệ thống có sử dụng
nhiều chương trình thì chương trình thứ nhất bạn có thể sử dụng hết các thanh ghi R0
đến R7 của bank0, khi bạn chuyển sang chương trình thứ 2 để xử lý một cơng việc gì
đó và vẫn sử dụng các thanh ghi R0 đến R7 để lưu trữ cho việc sử lý dữ liệu mà không
làm ảnh hưởng đến các dữ liệu R0 đến R7 trước đây và khơng cần phải thực hiện cơng
việc cất dữ liệu thì cách nhanh nhất là bạn gán nhóm thanh ghi R0 đến R7 cho bank1
là xong. Tương tự bạn có thể mở thêm hai chương trình nữa và gán cho các bank 3 và
4. Nếu bạn chưa hiểu thì cứ tiếp tục sau này sẽ hiểu.
5. Các thanh ghi chức năng đặc biệt
Các thanh ghi nội của 89C51 được truy xuất ngầm định bởi bộ lệnh.
Các thanh ghi trong 89C51 được định dạng như một phần của RAM trên chip vì
vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi bộ đếm chương trình và thanh
ghi lưu trữ mã lệnh vì các thanh ghi này đã có chức năng cố định). Cũng như các thanh
ghi R0 đến R7, vi điều khiển 89C51 có 21 thanh ghi có chức năng đặc biệt nằm ở
vùng trên của RAM nội có địa chỉ từ 80H đến FFH.
Chú ý: 128 ô nhớ có địa chỉ từ 80H đến FFH thì chỉ có 21 thanh ghi có chức năng
đặc biệt được xác định các địa chỉ – cịn các ơ nhớ cịn lại thì chưa thiết lập và trong

14



tương lai sẽ được các nhà thiết kế vi điều khiển thiết lập thêm khi đó sẽ có các vi điều
khiển thế hệ mới hơn.
5.1.Từ trạng thái chương trình PSW
Bit

Kí hiệu

Địa chỉ

Mô tả bit

PSW.7

CY

D7H

Cờ nhớ

PSW.6

AC

D6H

Cờ nhớ phụ

PSW.5


F0

D5H

Cờ 0

PSW.4

RS1

D4H

Chọn dãy thanh ghi (bit 1)

PSW.3

RS0

D3H

Chọn dãy thanh ghi (bit 0)
00 = bank 0 (00H -07H)
01 = bank 1 (08H – 0FH)
10 = bank 2 (10H – 17H)
11 = bank 3 (18H – 1FH)

PSW.2

OV


PSW.1

PSW.0

P

D2H

Cờ tràn

D1H

Dự trữ

D0H

Cờ kiểm tra chẵn lẻ

+ Cờ nhớ
- Cờ nhớ CY (carry flag) có hai cơng dụng
+ Cơng dụng truyền thống trong các phép toán số học được set bằng 1
Ví dụ: Nếu thanh A có chứa nội dung FFH, sau khi thực hiện lên sau cờ nhớ
được set bằng 1
ADD A, # 1
Lúc đó A có nội dung là 00H, cờ CY được set bằng 1

15



+ Cờ nhớ CY còn là thanh chứa logic được dùng như một thanh ghi 1 bit đối với
các lệnh logic thao tác trên các bit
Ví dụ: AND bit 25H với cờ nhớ CY
ANL C, 25H ; AND bit ở địa chỉ 25h với cờ nhớ
5.2.Thanh ghi B
Thanh ghi B ở địa chỉ F0H được dùng chung với thanh chứa A, trong các phép
tốn nhân tốn chia
Ví dụ: MUL A,B
DIV A, B
5.3.Con trỏ Stack
Con trỏ stack sp (stack pointer) là 1 thanh ghi 8 bit ở địa chỉ 81H.
Các lệnh liên quan đến stack bao gồm lệnh cất vào stack và lệnh lấy ra khỏi stack
Cất vào stack làm tăng SP, Lấy dữ liệu ra khỏi stack làm giảm SP
Vùng Stack của 8051 được lưu giữ trong RAM nội
Nếu ta không khởi động SP, nội dung mặc định của thanh ghi này là 07H
5.4.Con trỏ dữ liệu DPTR
Con trỏ dữ liệu DPTR(data pointer) dùng để truy xuất bộ nhớ ngoài chương trình
hoặc bộ nhớ ngồi.
DPTR là thanh ghi 16 bit có địa chỉ 82H(DPL, byte thấp), 83H(DPH, byte cao)
Ví dụ: Ba lệnh sau ghi 55h vào RAM ngoài ở địa chỉ 1000H
MOV A, #55H
MOV DPTR, #1000H
MOV @DPTR, A
5.5. Các thanh ghi Port
Các Port xuất nhập của 8051, bao gồm
Port 0 tại địa chỉ 80H
Port 1 tại địa chỉ 90H
Port 2 tại địa chỉ A0H
Port 3 tại địa chỉ B0H
Các port 0, 2, 3 không được dùng để xuất nhập nếu sử dụng bộ nhớ ngồi.

P1.2 đến P1.7 ln ln là các đường xuất nhập
Tất cả các port được định địa chỉ từng bit, do đó có thể thực hiện lệnh setb hoặc clr
Ví dụ
SETB P1.7
CLR P1.7

16


5.6.Các thanh ghi định thời
8051 có hai bộ đếm/định thời(timer/counter) 16 bit để định khoảng thời gian
hoặc để đếm sự kiện
Bộ định thời 0 có địa chỉ 8AH(TL0, byte thấp) và 8CH(TH0, byte cao)
Bộ định thời 1 có địa chỉ 8BH(TL1, byte thấp) và 8DH(TH1, byte cao)
Hoạt động của bộ định thời được thiết lập bởi thanh ghi chế độ định thời TMOM
ở địa chỉ 89H và thanh ghi điều khiển TCON ở địa chỉ 88H
5.7.Các thanh ghi của Port nối tiếp
Bên trong 8051 có một port nối tiếp để truyền thông với các thiết bị nối tiếp, như
thiết bị đầu cuối hoặc modem hoặc để giao tiếp các IC khác có mạch giao tiếp nối tiếp.
Một thanh ghi được gọi là bộ đệm dữ liệu nối tiếp SBUF ở địa chỉ 99H lưu trữ
truyền dữ liệu đi và nhận về
Các chế độ hoạt động khác được lập trình thơng qua thanh ghi điều khiển port
nối tiếp SCON ở địa chỉ 98H. Hoạt động port nối tiếp sẽ mô tả sau
5.8.Các thanh ghi ngắt
8051 có một cấu trúc ngắt với hai mức ưu tiên và 5 nguyên nhân ngắt. Các ngắt
bị vơ hiệu hóa sau khi reset hệ thống và sau đó được cho phép bằng cách ghi vào thanh
ghi cho phép IE ở địa chỉ A8H
Mức ưu tiên ngắt được thiết lập qua thanh ghi ưu tiên ngắt IP ở địa chỉ B8H.
Các ngắt sẽ đề cập chi tiết sau
5.9.Thanh ghi điều khiển nguồn

Thanh ghi PCON (Power Control: Điều khiển nguồn) khơng có bit định vị. Nó ở
địa chỉ 87H chứa nhiều bit điều khiển. Thanh ghi PCON được tóm tắt như sau:
Bit 7 (SMOD) cho phép tăng gấp đôi tốc độ truyền dữ liệu nối tiếp (tốc độ baud)
khi SMOD = 1.
Bit 6, 5, 4 khơng có địa chỉ.
Bit 3, 2 (GF1, GF0) cho phép người lập trình dùng với mục đích riêng.
Bit 1 (PD) dùng để quy định chế độ nguồn giảm.
Bit 0 (IDL) dùng để quy định chế độ nghỉ.
6. Bộ nhớ ngoài
6.1.Truy xuất bộ nhớ chương trình ngồi

17


Hình 3.9 Thực thi bộ nhớ chương trình ngồi
Q trình thực thi lệnh khi dùng bộ nhớ chương trình ngồi có thể mơ tả như
“Hình 3-9. Thực thi bộ nhớ chương trình ngồi”. Trong q trình này, Port 0 và Port 2
khơng cịn là các Port xuất nhập mà chứa địa chỉ và dữ liệu. Sơ đồ kết nối với bộ nhớ
chương trình ngồi mơ tả như “Hình 3-8. Các vùng nhớ trong AT89C51”.
Trong một chu kỳ máy, tín hiệu ALE tích cực 2 lần. Lần thứ nhất cho phép
74HC573 mở cổng chốt địa chỉ byte thấp, khi /ALE xuống 0 thì byte thấp và byte cao
của bộ đếm chương trình đều có nhưng ROM chưa xuất vì PSEN chưa tích cực, khi tín
hiệu ALE lên 1 trở lại thì Port 0 đã có dữ liệu là mã lệnh. ALE tích cực lần thứ hai
được giải thích tương tự và byte 2 được đọc từ bộ nhớ chương trình. Nếu lệnh đang
thực thi là lệnh 1 byte thì CPU chỉ đọc Opcode, còn byte thứ hai bỏ qua.
6.2.Truy xuất bộ nhớ dữ liệu ngoài
Bộ nhớ dữ liệu ngoài được truy xuất bằng lệnh MOVX thông qua các thanh ghi
xác định địa chỉ DPTR (16 bit) hay R0, R1 (8 bit).
Quá trình thực hiện đọc hay ghi dữ liệu được cho phép bằng tín hiệu RD hay
WR (chân P3.7 và P3.6)

6.3. Giải mã địa chỉ

18


Trong các ứng dụng dựa trên AT89C51, ngoài giao tiếp bộ nhớ dỡ liệu, vi điều
khiển còng thực hiện giao tiếp với các thiết bị khác như bàn phím, led, động cơ, …
Các thiết bị này có thể giao tiếp trực tiếp thông qua các Port. Tuy nhiên, khi số lượng
các thiết bị lớn, các Port sẽ không đủ để thực hiện điều khiển. Giải pháp đưa ra là xem
các thiết bị này giống như bộ nhớ dữ liệu. Khi đó, cần phải thực hiện q trình giải mã
địa chỉ để phân biệt các thiết bị ngoại vi khác nhau. Q trình giải mã địa chỉ thường
được thực hiện thơng qua các IC giải mã như 74139 (2 -> 4), 74138 ( 3 -> 8), 74154 (4
->16). Ngõ ra của các IC giải mã sẽ được đưa tới chân chọn chip của RAM hay bộ
đệm khi điều khiển ngoại vi.
7. Các cải tiến của 8032/8052

19


×