Tải bản đầy đủ (.doc) (80 trang)

Đồ Án Tốt Ngiệp Thiết kế bộ KIT thực hành vi điều khiển 8051

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 (1.05 MB, 80 trang )

KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
MỤC LỤC
4
Phần I: CƠ SỞ LÍ THUYẾT VI ĐIỀU KHIỂN 8051 4
1. GIỚI THIỆU CHUNG VỀ HỌ 8051 4
3.1 Các thanh ghi đặc biệt 14
3.2 Thanh ghi chính 15
3.3 Thanh ghi phụ 15
3.4 Thanh ghi trạng thái chương trình (PSW) 16
3.5 Thanh ghi ngăn xếp (Stack Pointer) 17
3.6 Con trỏ dữ liệu DPTR 18
3.7 Thanh ghi các cổng P0-P3 18
3.8 Thanh ghi bộ đệm truyền thông nối tiếp (Serial Data Buffer) 18
3.9 Thanh ghi của bộ định thời/bộ đếm 18
3.10 Các thanh ghi điều khiển 19
4. Truy xuất địa chỉ 19
PHẦN II:THIẾT KẾ KẾ MODUL 35
Chương I: GIỚI THIỆU CHUNG 35
2.1 Cổng nối tiếp (COM) 36
2.2. IC MAX232 37
4.2 LED MATRIX 8X8 42
Chương 2: Nội dung thiết kế 62
Phần 1. THIẾT KẾ MÔ HÌNH BỘ KIT THỰC HÀNH VĐK 62
1. YÊU CẦU: 62
- Mạch điện tử được thiết kế trên máy tính bằng phần mềm chuyên dụng 62
- Mạch có thể kiểm tra khai thác được các tài nguyên của VĐK AT89S52 62
2. SƠ ĐỒ NGUYÊN LÝ 62
Phần 2: CÁC VÍ DỤ MINH HỌA CHO CÁC MODUL 63
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
1
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4


LỜI NÓI ĐẦU
Ngày nay kĩ thuật điều khiển tự động đã và đang là một phần không
thể thiếu trong kĩ thuật cũng như dân dụng. Một trong những kĩ thuật điều
khiển tự động đó là sử dụng chip nhớ vi điều khiển.
Vi điều khiển quản lí và điều khiển hệ thống thông qua phần mềm, vì
vậy mà ta có thể mở rộng và thay đổi hoạt động một cách dễ dàng thông qua
thay đổi các thông số của chương trình. Vi điều khiển hoạt động theo chương
trình đã đặt sẵn, đọc các tín hiêu từ bên ngoài đưa vào sau đó lưu trữ và xử lí
trên cơ sở đó đưa ra các tín hiệu điều khiển các thiết bị bên ngoài hoạt động
theo đúng thông số và yêu cầu của hệ thống.
Người lập trình có thể sử dụng nhiều ngôn ngữ để lập trình cho vi
điều khiển; Nhưng thường sử dụng hai ngôn ngữ chính để lập trình đó là :
Ngôn ngữ lập trình C và ngôn ngữ lập trình Assembly (lập trình trên phần
cứng của máy tính).
Sau khi lập trình xong phần trình dịch được nạp vào IC và dùng IC
này để điều khiển các hệ thống theo yêu cầu đề ra.
Với mong muốn tìm hiểu kĩ và nghiên cứu sâu hơn về vi điều khiển, em
đã thực hiện đề tài “ Thiết kế bộ KIT thực hành vi điều khiển 8051”. Đề tài
này giúp chúng ta có thể hiểu được cơ bản những ứng dụng của vi điều khiển
trong thực tế đời sống hiện tại. Có thể trong quá trình thiết kế và ứng dụng có
nhiều vấn đề có thể chưa được như mong muốn, em mong được sự nhận xét
chỉ bảo của các thầy cô.
Đề tài của em gồm 2 phần :
• Phần I: Cơ sở lí thuyết vi điều khiển 8051
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
2
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
• Phần II: Thiết kế MODUL
Em xin chân thành cảm ơn các thầy cô trong khoa Điện Tử đã giúp đỡ
em trong quá trình làm đồ án và cô Dương Thị Hằng đã trực tiếp giảng dạy và

hướng dẫn em là đồ án.
Em xin chân thành cảm ơn!!!
Sinh viên: Nguyễn Việt Linh
Lớp: LT CĐ – ĐH Điện tử 1 – K4
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
3
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4

Phần I: CƠ SỞ LÍ THUYẾT VI ĐIỀU KHIỂN
8051
1. GIỚI THIỆU CHUNG VỀ HỌ 8051.
Năm 1981 hãng Atmel giới thiệu bộ vi điều khiển 8051. Bộ vi điều
khiển (VĐK) này có 128 byte RAM, 4 byte ROM, hai bộ định thời, một cổng
nối tiếp và bốn cổng vào/ra song song ( độ rộng 8 bit ) tất cả đều được đặt trên
1 chip. 8051 là bộ xử lý 8 bit ( có nghĩa là CPU chỉ có thể làm việc với 8 bit
dữ liệu tại một thời điểm). Dữ liệu lớn hơn 8 bit sẽ được chia ra thành các dữ
liệu 8 bit để xử lý.
8051 đã trở nên phổ biến khi Intel cho phép các nhà sản xuất khác sản
xuất và bán các dạng biến thể của 8051. Điều này dẫn đến sự ra đời nhiều
phiên bản của 8051 với tốc độ và dung lượng ROM trên chip khá nhau, nhưng
tất cả các lệnh đều phải tương thích với 8051 ban đầu. Như vậy nếu ta viết
chương trình cho một phiên bản của 8051 thì cũng chạy được với mọi phiên
bản khác không phụ thuộc vào hãng sản xuất.
Bốn bit thấp của TCON(TCON.0-TCON.3) không dùng để điều khiển
các bộ định thời, chúng được dùng để phát hiện và khởi động các ngắt ngoài.
- Các thanh ghi chứa giá trị của các bộ định thời.
Các Timer0 và Timer1 đều là các Timer 16bit, mỗi Timer có thanh ghi
8bit dùng để chứa giá trị khởi tạo hoặc giá trị hiện thời của các Timer.
1.1. Sơ lược về bộ vi điều khiển 8051(89S52):
* IC vi điều khiển thuộc họ MCS51 có các đặc điểm sau:

• 4 kbyte ROM
• 128 byte RAM
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
4
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
• 4 port I/O 8 bit
• 2 bộ định thời
• 1 cổng nối tiếp
• 6 nguồn ngắt
Nhưng thực tế hiện nay ta hay sử dụng 8052 (89S52) cũng là một
thành viên họ 8051 . 8052 có tất cả các đặc tính của 8051 ngoài ra còn có
thêm 4 kbyte ROM, 128 byte RAM và một bộ định thời nữa.
Hình 1:Vi điều khiển 8051
* Bộ vi điều khiển AT89S52 gồm các khối chức năng sau đây:
+ CPU( Central Processing unit ) bao gồm:
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
5
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
- Thanh ghi tích lũy A.
- Thanh ghi tích lũy phụ B, dùng cho phép nhân và phép chia.
- Đơn vị logic học ALU( Arithmetic Logical Unit).
- Thanh ghi từ trạng thái chương trình ( PSW: Program Sttatus Worl).
- Bốn băng thanh ghi.
- Con trỏ ngăn xếp.
+ Bộ nhớ chương trình( bộ nhớ ROM) gồm 8 Kb Flash.
+ Bộ nhớ dữ liệu ( Bộ nhớ RAM ) gồm 256 Bytes.
Bộ UART ( Universal Ansynchrous Receiver and Transmitter) có chức
năng truyền nhận nối tiếp, AT89S52 có thể giao tiếp với cổng nối tiếp của
máy tính thông qua bộ UART.
+ Ba bộ timer/count 16 bit: thực hiện các chức năng định thời và đếm

sự kiện.
+ WDM ( Watch Dog Timer ) : được dùng để phục hồi lại hoạt động của
CPU khi nó bị treo bởi một nguyên nhân nào đó.
+ Khối diều khiển ngắt : với 2 nguồn ngắt ngoài và 4 nguồn ngắt trong.
+ Bộ lập trình ( ghi chương trình lên flash ROM ): cho phép người sử
dụng có thể nạp chương trình cho chip mà không cần bộ nạp chuyên dụng.
+ Bộ chia tần: với hệ số chia là 12.
+ Bốn cổng xuất nhập: với 32 chân.
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
6
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
1.2. Cấu trúc bên trong IC8051:
Phần chính của vi điều khiển 8051 là bộ vi xử lý trung tâm ( CPU:
central processing unit).
Đơn vị xử lý trung tâm nhận trực tiếp xung từ bộ dao động, ngoài ra còn
có khả năng đưa một tín hiệu giữ nhịp từ bên ngoài.
Chương trình đang chạy có thể dừng lại nhờ một khối điều khiển ngắt ở
bên trong. Các nguồn ngắt có thể là : Các biến cố ở bên ngoài, sự tràn của bộ
đếm định thời hoặc cũng có thể là giao diện nối tiếp. Ba bộ định thời 16bit
hoạt động như một bộ đếm.
Các cổng Port0, Port1, Port2, Port3. Sử dụng vào mục đích điều
khiển và xuất nhập tín hiệu. Ở cổng Port3 có thêm các đường dẫn điều khiển
dùng để trao đổi với bộ nhớ bên ngoài, hoặc để đầu nối giao diện nối tiếp,
cũng như các đường ngắt dẫn ở bên ngoài.
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
7
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
Hình2 : Sơ đồ khối 89S52.
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
8

KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng
bộ, làm việc độc lập với nhau. Tốc độ truyền qua cổng nối tiếp có thể đặt
trong dải rộng và được ấn định bằng một bộ định thời.
Trong vi điều khiển 8051 có hai thành phần quan trọng khác đó là bộ
nhớ và các thanh ghi:
Bộ nhớ gồm có bộ nhớ RAM và bộ nhớ ROM dùng để lưư trữ dữ
liệu và mã lệnh.
Các thanh ghi sử dụng để lưư trữ thông tin trong quá trình xử lý. Khi
CPU làm việc nó thay đổi nội dung các thanh ghi.
2. Tổ chức bộ nhớ 8051
Các vi điều khiển thuộc họ 8051 đều tổ chức thành 2 không gian chương
trình và dữ liệu, hình 1.1.1 và hình 1.1.2 sẽ mô tả điều này. Kiến trúc vi xử lý
8 bit của 8051 này cho phép truy nhập và tính toán nhanh hơn đối với không
gian dữ liệu nhờ việc phân chia 2 không gian bộ nhớ chương trình và dữ liệu
như trên. Tuy nhiên bộ nhớ ngoài được truy nhập bởi hệ thống 16 bit địa chỉ
vẫn có thể thực hiện nhờ thanh ghi con trỏ.
Bộ nhớ chương trình (ROM, EPROM) là bộ nhớ chỉ đọc, có thể mở
rộng tối đa 64Kbyte. Vói họ vi điều khiển 89xx, bộ nhớ chương trình được
tích hợp sẵn trong chip có kích thước nhỏ nhất là 4kByte. Với các vi điều
khiển không tích hợp sẵn bộ nhớ chương trình trên chip, buộc phải thiết kế bộ
nhớ chương trình bên ngoài. Ví dụ sử dụng EPROM: 2764 (64Kbyte), khi đó
chân PSEN phải ở mức tích cực (5V).
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
9
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
Họ vi điều khiển 8051 có bộ nhớ dữ liệu tích hợp trên chip nhỏ nhất là
128byte và có thể mở rộng với bộ nhớ dữ liệu ngoài lên tới 64kByte. Với
những vi điều khiển không tích hợp ROM trên chip thì vẫn có RAM trên chip
là 128byte. Khi sử dụng RAM ngoài, CPU đọc và ghi dữ liệu nhờ tín hiệu

trên các chân RD và WR. Khi sử dụng cả bộ nhớ chương trình và bộ nhớ dữ
liệu bên ngoài thì buộc phải kết hợp chân RD và PSEN bởi cổng logic AND
để phân biệt tín hiệu truy xuất dữ liệu trên ROM hay RAM ngoài.
2.1 Bộ nhớ chương trình
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
10
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
Hình 3:Cấu trúc bộ nhớ chương trình
Hình 4: Địa chỉ các ngắt trên bộ nhớ chương trình
Hình 4 trên mô tả cấu trúc bộ nhớ chương trình. Sau khi khởi động,
CPU bắt đầu thực hiện chương trình ở vị trí 0000H. Hình 1.1.3 mô tả địa chỉ
ngắt mặc định trên bộ nhớ chương trình. Mối khi xảy ra ngắt, con trỏ của
CPU sẽ nhảy đến đúng địa chỉ ngắt tương ứng và thực thi chương trình tại đó.
Ví dụ ngắt ngoài 0 sẽ có địa chỉ là 0003H, khi xảy ra ngắt ngoài 0 thì con trỏ
chương trình sẽ nhảy đến đúng địa chỉ 0003H để thực thi chương trình tại đó.
Nếu trong chương trình ứng dụng không xử dụng đến ngắt ngoài 0 thì địa chỉ
0003H vẫn có thể dùng cho mục đích khác (sử dụng cho bộ nhớ chương
trình). Bởi vậy khi lập trình bằng ngôn ngữ Assembly, phần đầu chương trình
bao giờ cũng phải cho chương trình nhảy đến địa chỉ cao hơn địa chỉ chứa các
ngắt và mã lệnh viết cho các ngắt thì phải viết đúng địa chỉ của các ngắt tương
ứng.
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
11
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
2.2 Bộ nhớ dữ liệu
Hình 5 :Cấu trúc bộ nhớ dữ liệu
Hình 5 mô tả cấu trúc bộ nhớ dữ liệu trong và bộ nhớ dữ liệu ngoài
của họ vi điều khiển 8051. CPU sẽ dùng đến các chân RD và WR khi truy cập
đến bộ nhớ dữ liệu ngoài.
Hình 6 mô tả cấu trúc bộ nhớ dữ liệu trong chip, được chia thành 3

khối là 128 byte thấp, 128 byte cao và 128 byte đặc biệt.
Hình 6 : Cấu trúc bộ nhớ trong

Hình 7 mô tả cấu trúc 128 byte thấp của bộ nhớ dữ liệu của họ vi điều
khiển 8051. 32 byte đầu tiên (00H-1FH) được sử dụng cho 4 bộ 8 thanh ghi
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
12
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
R0-R7. Hai bit của thanh ghi đặc biệt PSW sẽ lựa chọn 1 trong 4 bộ thanh ghi
mà vi điều khiển sẽ dùng trong khi thực thi chương trình.
Hình 7 : Cấu trúc 128 byte thấp của bộ nhớ dữ liệu trong
8051 chứa 210 vị trí bit được định địa chỉ trong đó 128 bit chứa trong
các byte ở địa chỉ từ 20H đến 2FH (16 byte x 8 bit = 128 bit) và phần còn lại
chứa trong các thanh ghi đặc biệt. Ngoài ra 8051 còn có các port xuất/nhập có
thể định địa chỉ từng bit, điều này làm đơn giản việc giao tiếp bằng phần mềm
với các thiết bị xuất/nhập đơn bit.
Vùng RAM đa mục đích có 80 byte đặt ở địa chỉ từ 30H đến 7FH, bên
dưới vùng này từ địa chỉ 00H đến 2FH là vùng nhớ có thể được sử dụng
tương tự. Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được
truy xuất tự do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián
tiếp.
Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được
truy xuất tự do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián
tiếp.
Cũng như các thanh ghi từ R0 đến R7, ta có 21 thanh ghi chức năng
đặc biệt SFR chiếm phần trên của Ram nội từ địa chỉ 80H đến FFH. Cần lưu ý
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
13
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
là không phải tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa mà chỉ

có 21 địa chỉ được định nghĩa.
Hình 8. 128 byte cao của bộ nhớ dữ liệu.
3. Các thanh ghi trong VĐK
3.1 Các thanh ghi đặc biệt
8051 có 21 thanh ghi chức năng đặc biệt SFR chiếm phần trên của
Ram nội từ địa chỉ 80H đến FFH. Cần lưu ý là không phải tất cả 128 địa chỉ
từ 80H đến FFH đều được định nghĩa mà chỉ có 21 địa chỉ được định nghĩa.
Hình 1.2.1 mô tả các thanh ghi đặc biệt trong vùng nhớ dữ liệu 80H đến FFH.
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
14
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
Hình 9 : Các thanh ghi đặc biệt
3.2 Thanh ghi chính
Thanh ghi tính toán chính của vi điều khiển 8051 ACC
(Accumulator). Là thanh ghi đặc biệt của 8051 dùng để thực hiện các phép
toán của CPU, thường kí hiệu là A.
3.3 Thanh ghi phụ
Thanh ghi tính toán phụ của vi điều khiển 8051 là B. Thanh ghi B ở
địa chỉ F0H được dùng chung với thanh chứa A trong các phép toán nhân,
chia. Lệnh MUL AB nhân 2 số 8 bit không dấu chứa trong A và B và chứa
kết quả 16 bit vào cặp thanh ghi B, A (thanh chứa A cất byte thấp và thanh
ghi B cất byte cao).
Lệnh chia DIV AB chia A bởi B, thương số cất trong thanh chứa A
và dư số cất trong thanh ghi B. Thanh ghi B còn được xử lý như một thanh
ghi nháp. Các bit được định địa chỉ của thanh ghi B có địa chỉ từ F0H đến
F7H.
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
15
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
3.4 Thanh ghi trạng thái chương trình (PSW)

Thanh ghi trạng thái chương trình PSW là thanh ghi mô tả toàn bộ trạng
thái chương trình đang hoạt động của hệ thống. Hình 10 và 11 sẽ mô tả thanh
ghi này.
Hình 10: Thanh ghi trạng thái chương trình PSW
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
16
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
Hình 11: Chi tiết các bit trong thanh ghi PSW
3.5 Thanh ghi ngăn xếp (Stack Pointer)
Con trỏ stack SP (stack pointer) là 1 thanh ghi 8 bit ở địa chỉ 81H. SP
chứa địa chỉ của dữ liệu hiện đang ở đỉnh của stack. Các lệnh liên quan đến
satck bao gồm lệnh cất dữ liệu vào stack và lệnh lấy dữ liệu ra khỏi stack.
Việc cất vào stack làm tăng SP trước khi ghi dữ liệu và việc lấy dữ liệu ra
khỏi stack sẽ giảm SP. Vùng stack của 8051 được giữ trong RAM nội và
được giới hạn đến các địa chỉ truy xuất được bởi kiểu định địa chỉ gián tiếp.
Các lệnh PUSH và POP sẽ cất dữ liệu vào stack và lấy dữ liệu từ stack, các
lệnh gọi chương trình con (ACALL, LCALL) và lệnh trở về (RET, RETI)
cũng cất và phục hồi nội dung của bộ đếm chương trình PC (Program
counter)
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
17
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
3.6 Con trỏ dữ liệu DPTR
Con trỏ dữ liệu DPTR (data pointer) được dùng để truy xuất bộ nhớ
chương trình ngoài hoặc bộ nhớ dữ liệu ngoài. DPTR là một thanh ghi 16 bit
có địa chỉ là 82H (DPL, byte thấp) và 83H (DPH, byte cao).
3.7 Thanh ghi các cổng P0-P3
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 và Port 3 tại địa chỉ B0H. Tất cả các
port đều được định địa chỉ từng bit nhằm cung cấp các khả năng giao tiếp

mạnh.
3.8 Thanh ghi bộ đệm truyền thông nối tiếp (Serial Data
Buffer)
Bộ đệm truyền thông được chia thành hai bộ đệm, bộ đệm truyền dữ
liệu và bộ đệm nhận dữ liệu. Khi dữ liệu được chuyển vào thanh ghi SBUF,
dữ liệu sẽ được chuyển vào bộ đệm truyền dữ liệu và sẽ được lưu giữ ở đó
cho đến khi quá trình truyền dữ liệu qua truyền thông nối tiếp kết thúc. Khi
thực hiện việc chuyển dữ liệu từ SBUF ra ngoài, dữ liệu sẽ được lấy từ bộ
đệm nhận dữ liệu của truyền thông nối tiếp.
3.9 Thanh ghi của bộ định thời/bộ đếm
8051 có 2 bộ đếm/định thời (counter/timer) 16 bit để định các khoảng
thời gian hoặc để đếm các sự kiện. Các cặp thanh ghi (TH0, TL0) và (TH1,
TL1) là các thanh ghi của bộ đếm thời gian. 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 TMOD (Timer Mode Register) ở địa chỉ 88H. Chỉ có TCON được định
địa chỉ từng bit.
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
18
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
3.10 Các thanh ghi điều khiển
Các thanh ghi điều khiển đặc biệt như IP, IE, TMOD, TCON, SCON
và PCON là các thanh ghi điều khiển và ghi nhận trạng thái của hệ thống
ngắt, bộ đếm/định thời, truyền thông nối tiếp.
4. Truy xuất địa chỉ
8051 có các kiểu truy xuất địa chỉ khác nhau:
• Thanh ghi (Register)
•Trực tiếp (Direct)
•Gián tiếp (Indirect)

•Tức thời (Immediate)
•Tương đối (Relative)
•Tuyệt đối (Absolute)
•Dài (Long)
•Chỉ số (Indexed)
4.1 Truy xuất địa chỉ thanh ghi
8051 cho phép truy xuất 8 thanh ghi “làm việc”, được đánh số từ R0 →
R7. Các lệnh sử dụng kiểu định địa chỉ thanh ghi được mã hóa bằng các dùng
3 bit thấp nhất của opcode( của lệnh) để chỉ ra 1 thanh ghi bên trong không
gian địa chỉ logic này. Vậy : 1 mã chức năng + địa chỉ toán hạng → 1 lệnh
ngắn 1 byte.
4.2 Truy xuất địa chỉ kiểu trực tiếp
Kiểu định địa chỉ trực tiếp được sử dụng để truy xuất các biến nhớ
hoặc các thanh ghi trên chip. Một byte thêm vào tiếp theo opcode dùng để xác
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
19
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
định địa chỉ. Trong 8051 có 128 byte bộ nhớ RAM. Bộ nhớ RAM được gán
địa chỉ từ 00H đến FFH và được phân chia như sau:
•Các ngăn nhớ từ 00H đến 1FH được gán cho các băng thanh ghi và
ngăn xếp
•Các ngăn nhớ từ 20H đến 2FH được dành cho không gian định địa chỉ
bít để lưu dữ liệu theo từng bit
•Các ngăn nhớ từ 30H đến 7FH là không gian để lưu dữ liệu có kích
thước 1 byte
Chế độ định địa chỉ trực tiếp có thể truy cập toàn bộ không gian của
bộ nhớ RAM. Tuy nhiên, chế độ này thường được dùng để truy cập các ngăn
nhớ RAM từ 30H đến 7FH, vì thực tế đối với không gian nhớ danh cho băng
thanh ghi thì đã được truy cập bằng tên thanh ghi như R0- R7. ở chế độ định
địa chỉ trực tiếp , địa chỉ ngăn nhớ RAM chứa dữ liệu là toán hạng của lệnh.

Ví dụ:
MOV R0, 40 ; sao nội dung ngăn nhớ 40H của RAM vào R0
MOV R4, 7FH ; chuyển nội dung ngăn nhớ 7FH vào R4.
Một ứng dụng quan trọng của chế độ định địa chỉ trực tiếp là ngăn
xếp. Trong họ 8051, chỉ có chế độ định địa chỉ trực tiếp là được phép cất và
lấy dữ liệu từ ngăn xếp
4.3 Truy xuất địa chỉ kiểu gián tiếp
Ở chế độ này, thanh ghi được dùng để trỏ đến dữ liệu có trong bộ nhớ.
Nếu dữ liệu có trên chip CPU thì chỉ các thanh ghi R0 và R1 mới
được sử dụng, và như vậy cũng có nghĩa là không thể dùng các thanh ghi R2-
R7 để trỏ đến địa chỉ của toán hạng ở chế độ định địa chỉ này. Nếu R0 và R1
được dùng làm con trỏ, nghĩa là chúng lưu địa chỉ của ngăn nhớ RAM thì
trước các thanh ghi cần đặt dấu " @" như các ví dụ sau:
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
20
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
MOV A, @R0 ; chuyển ngăn nhớ RAM có địa chỉ ở R0
vào A
MOV @R1, B ; chuyển B vào ngăn nhớ RAM có địa chỉ ở R1
Chú ý: ở đây R0 cũng như R1 đều có dấu "@" đứng trước. Nếu
không có dấu "@" đứng trước thì đó là lệnh chuyển nội dung thanh ghi R0 và
R1 chứ không phải dữ liệu ngăn nhớ có địa chỉ trong R0 và R1. Một trong
những ưu diểm của chế độ định địa chỉ gián tiếp là cho phép truy cập dữ liệu
linh hoạt hơn so với chế độ định địa chỉ trực tiếp. Tuy nhiên R0 và R1 là các
thanh ghi 8 bit, nên chúng chỉ được phép truy cập đến các ngăn nhớ RAM
trong, từ địa chỉ 30H đến 7FH và các thanh ghi SFR. Trong thực tế, có nhiều
trường hợp cần truy cập dữ liệu được cất ở RAM ngoài hoặc không gian
ROM trên chip. Trong những trường hợp đó chúng ta cần sử dụng thanh ghi
16 bit DPTR.
4.4 Truy xuất địa chỉ kiểu tức thời

Khi toán hạng là một hằng số thay vì là một biến, hằng số này có thể
đưa vào lệnh và đây là byte dữ liệu tức thời.
Trong hợp ngữ, các toàn hạng tức thời được nhận biết nhờ vào ký tự
‘# ‘ đặt trước chúng. Toán hạng này có thể là một hằng số học, một biến hoặc
một biểu thức số học sử dụng các hằng số, các ký hiệu và các toán tử. Trình
dịch hợp ngữ tính giá trị và thay thế dữ liệu tức thời vào trong lệnh.
Ví dụ lệnh : MOV A, #12 ;Nạp giá trị 12(OCH) vào thanh chứa A
Tất cả các lệnh sử dụng kiểu định địa chỉ tức thời đều sử dụng hằng
dữ liệu 8 bit làm dữ liệu tức thời. Có một ngoại lệ khi ta khởi động con trỏ dữ
liệu 16-bit DPTR, hằng địa chỉ 16 bit được cần đến.
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
21
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
4.5 Truy xuất địa chỉ kiểu tương đối
Kiểu định địa chỉ tương đối chỉ được sử dụng cho các lệnh nhảy. Một
địa chỉ tương đối là một giá trị 8 bit có dấu. Giá trị này được cộng với một
bộ đếm chương trình để tạo ra địa chỉ của lệnh tiếp theo cần thực thi. Định địa
chỉ tương đối có điểm lợi là cung cấp cho ta mã không phụ thuộc vào vị trí,
nhưng lại có điểm bất lợi là các đích nhảy bị giới hạn trong tầm.
4.6 Truy xuất địa chỉ kiểu tuyệt đối
Kiểu định địa chỉ này được sử dụng với các lệnh ACAll và AJMP.
Đây là các lệnh 2 byte cho phép rẽ nhánh chương trình trong trang 2k hiện
hành của bộ nhớ chương trình bằng cách cung cấp 11 bit thấp của địa chỉ
đích. Trong đó có 3 bit cao (A8-A10) và 8 bit thấp (A0-A7) thành lập byte
thứ 2 của lệnh
4.7 Truy xuất địa chỉ kiểu dài
Kiểu định địa chỉ dài chỉ được dùng cho các lệnh LCALL và LJMP.
Các lệnh 3 byte này chứa địa chỉ đích 16 bit. Lợi ích của kiểu định địa chỉ này
là sử dụng hết toàn bộ không gian nhớ chương trình 64K, nhưng lại có điểm
bất lợi là lệnh dài đến 3-byte và phụ thuộc vào vị trí.

4.8 Truy xuất địa chỉ kiểu chỉ số
Chế độ định địa chỉ chỉ số được sử dụng rộng rãi khi truy cập các
phần tử dữ liệu của bảng trong không gian ROM chương trình của 8051. Lệnh
được dùng cho mục đích này là "MOVC A, @A+DPTR". Thanh ghi 16 bit
DPTR và thanh ghi A được dùng để tạo ra địa chỉ của phần tử dữ liệu được
lưu trong
ROM trên chip. ở lệnh này, nội dung của A được cộng với nội dung
thanh ghi 16- bit DPTR để tạo ra địa chỉ 16 bit.
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
22
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
5. Các Port của vi điều khiển
5.1 Port0 (P0.0-P0.7):
Port 0 gồm 8 chân, ngoài chức năng xuất nhập, Port 0 còn là bus đa
hợp dữ liệu và địa chỉ (AD0-AD7), chức năng này sẽ được sử dụng khi 8051
giao tiếp với thíêt bị ngoài có các kiến trúc bus như mạch nhớ, mạch PIO…
Hình 12: Cấu trúc của các chân trên Port 0.
5.2 Port1 (P1.0-P1.7)
Đối với 8051, chức năng duy nhất của Port 1 là chức năng xuất nhập,
cũng như các Port khác Port 1 có thể xuất nhập theo bit hoặc theo byte.
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
23
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
24
KHOA ĐIỆN TỬ LT CĐ – ĐH Điện tử 1 – K4
Hình 13: Cấu trúc của các chân trên Port 1 và Port3.
5.3 Port2 (P2.0-P2.7)
Port 2 là một Port công dụng kép trên các chân 21-28 được dùng như
các đường xuất nhập hoặc là byte cao cua Bus địa chỉ với các thiết kế dùng bộ

nhớ mở rộng.
Hình 14: Cấu trúc các chân trên Port 2
GVHD: Ths. Dương Thị Hằng SVTH: Nguyễn Việt Linh
25

×