Tải bản đầy đủ (.docx) (54 trang)

Lập trình vi điều kiển 8051 sử dụng ngôn ngữ lập trình C giao tiếp ngắt và truyền thông

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.82 MB, 54 trang )

Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
Danh sách thành viên tham gia viết báo cáo
STT

Nội dung

Người thực hiện

1
2
3

Nhận xét của giáo viên
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
Tp. Hồ Chí Minh, tháng 6 năm 2022.

GVHD: TS. Phạm Văn Khoa

1


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
Mục lục
A. MỞ ĐẦU.................................................................................................................3
B. NỘI DUNG...............................................................................................................5


Chương 1: Tổng quan...............................................................................................5
1.1. Đối tượng nghiên cứu.....................................................................................5
1.2. Công cụ hỗ trợ.................................................................................................6
1.3. Khái quát về vi điều khiển.............................................................................6
1.4. Họ vi điều khiển 8051.....................................................................................7
Chương 2: Tìm hiểu về vi điều khiển 8051.............................................................9
2.1. Sơ đồ khối, sơ đồ chân của vi điều khiển 8051.............................................9
2.2. Tổ chức bộ nhớ bên trong 8051...................................................................13
2.3. Kiến trúc vi điều khiển 8051........................................................................17
Chương 3: Truyền thông nối tiếp UART..............................................................21
3.1. Các cơ sở của truyền thông nối tiếp............................................................21
3.2. Truyền thông nối tiếp trong 8051................................................................24
Chương 4. Ngắt trong 8051....................................................................................29
4.1 Sơ lược về ngắt...............................................................................................29
4.2 Các ngắt trong vi điều khiển 8051................................................................30
4.3. Quy trình thực hiện một ngắt......................................................................32
4.4. Các bước cho phép cấm ngắt.......................................................................32
4.5. Lập trình các ngắt bộ định thời...................................................................33
4.6. Lập trình các ngắt phần cứng bên ngồi....................................................33
4.7. Các thanh ghi điều khiển ngắt.....................................................................35
4.8. Ưu tiên ngắt...................................................................................................35
4.9. Lập trình ngắt và truyền thơng nối tiếp.....................................................35

GVHD: TS. Phạm Văn Khoa

2


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
C.


Kết Quả Và Mơ Phỏng.....................................................................................37

CHƯƠNG 1: LẬP TRÌNH VÀ MƠ PHỎNG.......................................................37
1.1. Lập trình cho 8501........................................................................................37
1.2. Mơ phỏng và kết quả....................................................................................40
D.

HƯỚNG PHÁT TRIỂN ĐỀ TÀI....................................................................50

Tài liệu tham khảo......................................................................................................51

GVHD: TS. Phạm Văn Khoa

3


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng

A. MỞ ĐẦU
Ngày nay, trong thời đại thế giới bước vào thời kỳ kỷ nguyên số thì việc ứng dụng
những thành tựu khoa học công nghệ vào cuộc sống là điều thật sự cần thiết. Với sự
phát triển vượt bậc của các ngành kỹ thuật điện tử đã cho ra đời hàng loạt các thành
tựu là các sản phẩm, thiết bị có sự chính xác cao cùng với tốc độ vượt bậc trong khi
kích cỡ nhỏ gọn, vừa phải đã đáp ứng được những yêu cầu phức tạp, bức thiết của con
người, làm chất lượng cuộc sống xã hội ngày càng trở nên thuận tiện, hiện đại, phong
phú hơn. Và trong số các thành tựu đó, khơng thể khơng nhắc đến đó là các bộ vi điều
khiển - những phát minh tuyệt diệu và cũng là những thiết bị không thể thiếu trong
thời kỳ kỷ nguyên số hiện nay.
Vi điều khiển là những thiết bị không thể thiếu cấu thành nên những thiết bị, máy

móc quen thuộc xung quanh chúng ta. Hằng ngày, ta tiếp xúc với những thiết bị gia
dụng như các loại máy lạnh, máy ảnh, lị vi sóng,…hay đến cả những thiết bị thu phát,
liên lạc như tivi thông minh, điện thoại di động, máy tính xách tay, laptop… hay cả
những thiết bị văn phòng như máy fax, máy in, ta cịn có các hệ thống tưới tiêu tự
động trong nông nghiệp hay các cánh tay robot tự động trong các nhà máy… hoặc
thậm chí là những thiết bị vệ tinh ngoài vũ trụ… Tất cả đều được gắn vào những con
vi điều khiển nhỏ bé phục vụ cuộc sống con người. Vi điều khiển ứng dụng nhiều vô
cùng trong cuộc sống và được các nhà sản xuất ưa chuộng vì khá dễ sử dụng, bảo trì
đơn giản và quan trọng nhất là có thể thực hiện được rất nhiều cơng việc nhiệm vụ mà
người lập trình định hướng.
Chính vì vi điều khiển có nhiều ứng dụng tiện ích như vậy nên việc ứng dụng các
con vi điều khiển vào máy tính cũng được phát triển và nâng cao theo. Vi điều khiển
dung trong máy tính thơng dụng nhất là vi điều khiển 8051 dùng để giao tiếp các thiết
bị ngoại vi, ngắt và truyền thông. Tuy nhiên, các bộ vi điều khiển tuy đơn giản nhưng
để vận hành được lại rất phức tạp vì bản chất của vi điều khiển là một chiếc máy tính
đa năng có thể thực hiện được các nhiệm vụ khác nhau. Chính vì vậy mà nhóm em đã
lựa chọn đề tài: “Lập trình vi điều khiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp
ngắt và truyền thông” làm đề tài tiểu luận cuối kỳ. Mặc dù đã cố gắng tìm hiểu và
hồn thành bài báo cáo đúng hạn nhưng vẫn cịn hạn chế và thiếu sót nên chúng em
GVHD: TS. Phạm Văn Khoa

4


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
mong thầy tận tình góp ý, chỉ bảo để chúng em có thêm nhiều kiến thức cũng như
khắc phục được những lỗi sai để việc học tập được tốt hơn. Chúng em xin chân thành
cảm ơn thầy
Nội dung của bài báo cáo bao gồm các chương sau:
Chương 1: Tổng quan

Chương 2: Vi điều khiển 8051
Chương 3: Truyền thông nối tiếp UART
Chương 4: Ngắt trong 8051
Chương 5 : Kết quả và mô phỏng

GVHD: TS. Phạm Văn Khoa

5


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng

B. NỘI DUNG
Chương 1: Tổng quan
1.1. Đối tượng nghiên cứu
1.1.1. Vi điều khiển 8051
Vi điều khiển 8051 được Intel thiết kế vào năm 1981. Đây là bộ vi điều khiển 8
bit, được xây dựng với 40 chân DIP (gói nội tuyến kép), 4kb bộ nhớ ROM và 128
byte bộ nhớ RAM, 2 bộ định thời 16 bit. Nó bao gồm bốn cổng 8 bit song song, có thể
lập trình cũng như định địa chỉ theo yêu cầu. Một bộ dao động tinh thể trên chip được
tích hợp trong bộ vi điều khiển có tần số tinh thể là 12 MHz.
1.1.2. Ngơn ngữ lập trình C
Khi sử dụng ngơn ngữ C người lập trình khơng cần hiểu sâu sắc về cấu trúc của
bộ vi điều khiển. Một người chưa quen với một vi điểu khiển cho trước sẽ xây dựng
được chương trình một cách nhanh chóng hơn, do khơng phải mất thời gian tìm hiểu
kiến trúc của vi điều khiển đó. Và việc sử dụng lại các chương trình đã xây dựng trước
đó cũng dễ dàng hơn, có thể sử dụng tồn bộ hoặc sửa chữa một phần. Chương trình
viết bằng ngơn ngữ bậc cao cũng sẽ được một phần mềm trên máy tính gọi là trình
biên dịch (Compiler) chuyển sang dạng hợp ngữ trước khi chuyển sang mã máy.
1.1.3. Hoạt động ngắt

Ngắt (Interrupt), là một số sự kiện khẩn cấp bên trong hoặc bên ngoài bộ vi điều
khiển xảy ra, buộc vi điều khiển tạm dừng thực hiện chương trình hiện tại, phục vụ
ngay lập tức nhiệm vụ mà ngắt yêu cầu - nhiệm vụ này gọi là trình phục vụ ngắt (ISR:
Interrupt Service Routine).
1.1.4. Truyền thông
Trong truyền thông nối tiếp dữ liệu được gửi đi từng bit một, so với truyền song
song thì là một hoặc nhiều byte được truyền đi cùng một lúc.
Truyền thông dữ liệu nối tiếp sử dụng hai phương pháp là đồng bộ và không đồng
bộ.

GVHD: TS. Phạm Văn Khoa

6


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
1.1.5. Cách kết nối 8051 với RS232
Để kết nối một chuẩn RS232 bất kỳ đến một hệ vi điều khiển 8051 thì ta phải sử
dụng các bộ biến đổi điện áp (như MAX232) để chuyển đổi các mức điện áp RS232
về các mức điện áp TTL sẽ được chấp nhận bởi các chân TxD và RxD của 8051 và
ngược lại.
1.2. Công cụ hỗ trợ
1.2.1. KeilC µvision4
Là một trình biên dịch C, mơi trường phát triển tích hợp và bộ tạo chương trình
tự động được thiết kế cho họ các vi điều khiển ARM, 8051, STM của Atmel.
1.2.2. Proteus
- Phần mềm cho phép thiết kế, kiểm tra và bố trí các bảng mạch in chuyên nghiệp
một cách nhanh chóng.
1.2.3. Virtual Serial Driver
- Phần mềm để tạo ra các cổng nối tiếp ảo và kết nối chúng theo cặp thông qua

dây cáp null-modem ảo.
1.2.4. Hercules SETUP
- Mô phỏng thiết bị đầu cuối cổng nối tiếp (thiết bị đầu cuối RS-485 hoặc RS232), thiết bị đầu cuối UDP / IP và thiết bị đầu cuối máy chủ máy khách TCP / IP.
1.3. Khái quát về vi điều khiển
Vi điều khiển (MCU – viết tắt cho cụm từ: Micro Control Unit) là một máy tính
trên chip điều khiển các đối tượng, quy trình hoặc sự kiện. Bất cứ điều gì lưu trữ, kiểm
sốt, tính tốn hoặc hiển thị thơng tin có thể có một vi điều khiển trong đó. Khơng
giống như bộ vi xử lý, địi hỏi các thành phần khác, như bộ nhớ, để hoạt động, vi điều
khiển tự nó là một máy tính và được sử dụng trong các hệ thống nhỏ hơn.
Một số thiết bị có vi điều khiển đó là: các điều khiển từ xa của TV, điện thoại di
động, máy tính và các thành phần máy tính như bàn phím, chuột, modem và máy in,…

GVHD: TS. Phạm Văn Khoa

7


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
1.3.1 Kiến trúc vi điều khiển
Thực ra với điều khiển cũng là một cấu trúc nhỏ gồm các linh kiện điện tử ở kích
thước micro hoặc nano, các tình trạng này được kết hợp với nhau và được nối với các
thiết bị bên ngoài qua các chân vi điều khiển.
Kiến trúc máy tính hay kiến trúc vi điều khiển cũng tương tự nhau. Do đó các bạn
có thể tìm hiểu về kiến trúc máy tính để hiểu rõ về kiến trúc của vi điều khiển. Hai
kiến trúc này rất phổ biến hiện nay đó là kiến trúc Von Neumann và kiến trúc Harvar.
Sự khác biệt chủ yếu giữa hai kiến trúc này chính là việc tổ chức bộ nhớ dữ liệu vào
bộ nhớ chương trình kiến trúc Von Neumann tổ chức bộ nhớ dữ liệu và bộ nhớ
chương trình chung với nhau, chính vì vậy đường truyền (bus) của kiến trúc Von
Neumann là đường truyền chung, trong đó kiến trúc Harvard tách rời bộ nhớ dữ liệu
vào bộ nhớ chương trình.

Mỗi kiến trúc này có một đặc điểm riêng rẽ khác nhau kiến trúc Von Neumann
tận dụng được tài nguyên bộ nhớ trong khi đó kiến trúc Harvard sẽ đạt được tốc độ xử
lý cao hơn, mặt khác đường truyền dữ liệu và đường truyền lệnh điều khiển chương
trình có thể có dung lượng khác nhau.
1.4. Họ vi điều khiển 8051
1.4.1. Tóm tắt về lịch sử 8051
Vào năm 1981, hãng Intel giới thiệu một số bộ vi điều khiển được gọi là 8051. Bộ
vi điều khiển này có 128 byte RAM, 4K byte ROM trên chip, hai bộ định thời, một
cổng nối tiếp và 4 cổng (đều rộng 8 bit) vào ra tất cả được đặt trên một chip. Lúc ấy
nó được coi là một “hệ thống trên chip”. 8051 là một 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 được chia
ra thành các dữ liệu 8 bit để cho xử lý. 8051 có tất cả 4 cổng vào - ra I/O mỗi cổng
rộng 8 bit. Mặc dù 8051 có thể có một ROM trên chip cực đại là 64 K byte, nhưng các
nhà sản xuất lúc đó đã cho xuất xưởng chỉ với 4K byte ROM trên chip.
8051 đã trở nên phổ biến sau khi Intel cho phép các nhà sản xuất khác sản xuất và
bán bất kỳ dạng biến thế nào của 8051 mà họ thích với điều kiện họ phải để mã lại
tương thích với 8051. Điều này dẫn đến sự ra đời nhiều phiên bản của 8051 với các
tốc độ khác nhau và dung lượng ROM trên chip khác nhau được bán bởi hơn nửa các
nhà sản xuất. Điều này quan trọng là mặc dù có nhiều biến thể khác nhau của 8051 về
GVHD: TS. Phạm Văn Khoa

8


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
tốc độ và dung lương nhớ ROM trên chip, nhưng tất cả chúng đều tương thích với
8051 ban đầu về các lệnh. Điều này có nghĩa là nếu ta viết chương trình của mình cho
một phiên bản nào đó thì nó cũng sẽ chạy với mọi phiên bản bất kỳ khác mà khơng
phân biệt nó từ hãng sản xuất nào.
1.4.2. Thành viên họ 8051

Bộ vi điều khiển 8051 có rất nhiều họ khác nhau, các bộ điều khiển đó cịn được
gọi là các thành viên khác họ của 8051, ví dụ như 8052, 8031.
Bảng 1.1: giới thiệu sơ bộ về thành viên khác họ của 8051
Đặc tính

8051

8052

8031

ROM trên chip

4K byte

8K byte

OK

RAM

128 byte

256

128

Bộ định thời

2


3

2

Chân vào ra

32

32

32

Cổng nối tiếp

1

1

1

Nguồn ngắt

6

8

6

byte


byte

Các họ của 8051 đều có các đặc tính chuẩn của 8051 ngồi ra nó có thêm 128
byte RAM và một bộ định thời. Hay nói cách khác là 8052 có 256 byte RAM và 3 bộ
định thời. Nó cũng có 8K byte ROM. Trên chip thay vì 4K byte như 8051. Do vậy tất
cả mọi chương trình viết cho 8051 đều chạy trên 8052 nhưng điều ngược lại là không
đúng.
Một thành viên khác nữa của 8051 là chip 8031. Chip này thường được coi như là
8051 khơng có ROM trên chip vì nó có OK byte ROM trên chip. Để sử dụng chip này
ta phải bổ xung ROM ngồi cho nó. ROM ngồi phải chứa chương trình mà 8031 sẽ
nạp và thực hiện. So với 8051 mà chương trình được chứa trong ROM trên chip bị
giới hạn bởi 4K byte, cịn ROM ngồi chứa chương trinh được gắn vào 8031 thì có
thể lớn đến 64K byte. Khi bổ xung cổng, như vậy chỉ còn lại 2 cổng để thao tác. Để
giải quyết vấn đề này ta có thể bổ xung cổng vào - ra cho 8031. Phối ghép 8031 với bộ
nhớ và cổng vào - ra chẳng hạn với chip 8255. Ngoài ra cịn có các phiên bản khác
nhau về tốc độ của 8031 từ các hãng sản xuất khác nhau.

GVHD: TS. Phạm Văn Khoa

9


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
Chương 2: Tìm hiểu về vi điều khiển 8051
2.1. Sơ đồ khối, sơ đồ chân của vi điều khiển 8051
2.1.1. Giới thiệu sơ lược

Hình 2.1 Vi điều khiển 8051
8051 là một 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 được chia ra thành các dữ liệu 8 bit để cho xử lý.
8051 có tất cả 4 cổng vào - ra I/O mỗi cổng rộng 8 bit. Các nhà sản xuất đã cho xuất
xưởng chỉ với 4K byte ROM trên chip.
Bảng 2.1: Các đặc tính sơ lược của 8051
Đặc tính

Số lượng

ROM trên chip

4K byte

RAM

128 byte

Bộ định thời

2

Các chân vào – ra

32

Cổng nối tiếp

1

Nguồn ngắt


6

8051 - là vi điều khiển đơn tinh thể kiến trúc Harvard, lần đầu tiên được sản xuất
bởi Intel năm 1980, để dùng trong các hệ thống nhúng.
Trong những năm 1980 và đầu những năm 1990 đã rất nổi tiếng. Tuy nhiên hiện
tại đã cũ và được thay thế bằng các thiết bị hiện đại hơn, với các lõi phối hợp 8051,
được sản xuất bởi hơn 20 nhà sản xuất độc lập như Atmel, Maxim IC (công ty con của

GVHD: TS. Phạm Văn Khoa

10


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
Dallas Semiconductor), NXP Semiconductors (Philips Semiconductor trước đây),
Winbond, Silicon Laboratories, Texas Instruments và Cypress Semiconductor. Tên
gọi chính thức của họ vi điều khiển Intel 8051 - MCS 51.
Những vi điều khiển Intel 8051 được sản xuất với việc dùng công nghệ MOSFET,
những những bản sau, chứa kí hiệu “C” trong tên, như 80C51, dùng công nghệ CMOS
và yêu cầu công suất thấp, hơn những cái MOSFET trước (điều này cho phép trang bị
cho các thiết bị với nguồn là pin).
Các thông số kỹ thuật: 8 bit ALU, 8 bit thanh ghi. 8 bit dữ liệu bus 16 bit địa chỉ
bus vì vậy không gian bộ nhớ tối đa cho ROM và RAM lên tới 64 kb Bộ nhớ dữ liệu
SRAM 128 bytes Bộ nhớ chương trình ROM 4 kb. 32 chân vào/ra đa hướng. Giao tiếp
nối tiếp UART. Hai bộ timer/counter 16 bit. Hai ngắt ngồi.
Lập trình cho 8051: Các nhà sản xuất 8051 đều hỗ trợ ngơn ngữ lập trình
Assembler tuy nhiên ngơn ngữ này thường ít được dùng cho những ứng dụng lớn do
tính phù hợp của nó, vì vậy trong các ứng dụng thực tế hay sử dụng ngôn ngữ C.
Ngồi ra cịn một số ngơn ngữ khác được phát triển cho 8051 như Pascal, Basic,
Forth.

2.1.2. Cấu hình chân

Hình 2.2: Cấu hình chân vi điều khiển 8051

GVHD: TS. Phạm Văn Khoa

11


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
VCC: Điện áp cung cấp cho nguồn ni VĐK . Dịng  8051 sử dụng điện áp
5VDC. Chú ý điện áp 5V tại chân này phải được lọc kỹ trước khi cấp vào và nên đặt
một tụ gốm 10uF để chống nhiễu ngay tại chân Vcc của VĐK.
GND: Nối với mass nguồn.
RST : Ngõ vào RESET, chân RESET ở mức cao trong 2 chu kỳ máy khi bộ dao
động đang chạy sẽ RESET chip. Lắp mạch Reset như hình sau:

Hình 2.3: mạch sử dụng tụ C=10uF, R=10 Kohm.
PSEN (Program Store ENable): Được nối với chân OE của chip dữ liệu bên
ngoài.
ALE : (ALE : Adress Latch Enable) Là tín hiệu điều khiển xuất ra của 8051, nó
cho phép phân kênh giữa bus địa chỉ và bus dữ liệu trên PORT0.
EA : (External Access): Chọn bộ nhớ giao tiếp. EA=1: chọn bộ nhớ nội, EA=0:
chọn bộ nhớ ngoại. (Với các ứng dụng thông thường dùng bộ nhớ nội ta phải nối chân
EA với nguồn 5V.).
XTAL1, XTAL2: Chân cấp nguồn dao động.
AT 89S52 có một bộ chia tần bên trong chip, bộ này sẽ cấp xung clock cho các
khối trên chip từ nguồn dao động bên ngoài qua 2 chân XTAL1 và XTAL2. Bộ chia
tần hoạt động ở 2 chế độ:


GVHD: TS. Phạm Văn Khoa

12


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
Hình 2.4 Cách mắc thạch anh.
Chế độ 1(mặc định): Ở chế độ này tần số thạch anh được chia làm 12 lần, nghĩa là
nếu lệnh được thực hiện trong 1 chu kỳ máy và tần số thạch anh là 12Mhz thì thời
gian thực hiện lệnh đó là 1us.
Chế độ 2: Thạch anh được chia làm 6 lần, chế độ này được cài đặt bằng các thanh
ghi CLKCON0 và CLKCON1.
PORT 0: Port 0 là một cổng 8 bit I/O 2 chiều. Khi mức logic 1 được viết vào các
PIN của PORT 0, Pin đó có thể được sử dụng là cổng vào trở kháng cao. Port 0 cũng
có thể được cấu hình thành bus ghép kênh 8 bit địa chỉ/dữ liệu thấp trong quá trình
truy nhập bộ nhớ ngoài, ở chế độ này các PIN của PORT 0 sẽ được kéo lên bên
trong.Ngoài ra PORT 0 cũng được sử dụng để nạp dữ liệu cho chip.
PORT 1: Port 1 là cổng I/O 2 chiều có trở treo bên trong. Khi mức logic 1 được
viết vào PIN của PORT 1, PIN đó được kéo lên bởi 1 trở treo bên trong, và có thể
được sử dụng là cổng vào.
Ngồi ra các PIN P1.0 và P1.1 có thể được cấu hình là đầu vào của bộ Timer 2
(AT89S52, AT89C52). Các pin P1.5, P1.6, P1.7 (AT89S51, AT89S52) lần lượt là các
PIN MOSI, MISO, SCK khi sử dụng để nạp cho chip qua ISP (In- System
Programing).
PORT 2 : Port 2 là cổng I/O 2 chiều có trở treo bên trong. Khi mức logic 1 được
viết vào PIN của PORT 2, PIN đó được kéo lên bởi 1 trở treo bên trong, và có thể
được sử dụng là cổng vào. Port 2 cũng có thể được cấu hình thành bus ghép kênh 8 bit
địa chỉ cao trong quá trình truy nhập bộ nhớ ngoài với 16 bit địa chỉ.
PORT 3 : Port 3 là cổng I/O 2 chiều có trở treo bên trong. Khi mức logic 1 được
viết vào PIN của PORT 3, PIN đó được kéo lên bởi 1 trở treo bên trong, và có thể

được sử dụng là cổng vào.
Ngồi ra các Pin của PORT 3 cũng có thêm các chức năng đặc biệt khác:
Bảng 2.2: Chức năng các chân của Port 3
Bit

Tên chân

Địa chỉ bit

Chức năng

P3.0

RxD

B0H

Chân nhận dữ liệu của port nối tiếp

P3.1

TxD

B1H

Chân phát dữ liệu của port nối tiếp

GVHD: TS. Phạm Văn Khoa

13



Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
P3.2

INT0

B2H

Ngõ vào ngắt ngoài 0

P3.3

INT1

B3H

Ngõ vào ngắt ngoài 1

P3.4

T0

B4H

Ngõ vào bộ định thời hoặc bộ đếm 0

P3.5

T1


B5H

Ngõ vào bộ định thời hoặc bộ đếm 1

P3.6

WR

B6H

Điều khiển ghi bộ nhớ dữ liệu ngoài

P3.7

RD

B7H

Điều khiển đọc bộ nhớ dữ liệu ngồi

2.1.3. Sơ đồ khối

Hình 2.5 Sơ đồ khối vi điều khiển 8051
Chip 8051 có các đặc trưng như sau:
4KB ROM
128 byte RAM
4 port xuất nhập (I/O port) 8 bit
2 bộ định thời 16 bit
Mạch giao tiếp nối tiếp

Khơng gian nhớ chương trình ngồi 64K b
Khơng gian nhớ dữ liệu ngồi 64K b
Bộ xử lý bit

GVHD: TS. Phạm Văn Khoa

14


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
210 vị trí nhớ được định địa chỉ, mỗi vị trí 1 bit
Nhân/chia trong 4µs
2.2. Tổ chức bộ nhớ bên trong 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. Kiến trúc vi xử lý 8 bit của 8051 này cho phép truy nhập và tính tố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 ngồi. Ví dụ
sử dụng EPROM: 2764 (64Kbyte), khi đó chân PSEN phải ở mức tích cực (5V).

Hình 2.6 : Cấu trúc bộ nhớ chương trình
Bộ nhớ dữ liệu (RAM) tồn tại độc lập so với bộ nhớ chương trình. 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 ngồ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ớ

GVHD: TS. Phạm Văn Khoa

15


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
chương trình và bộ nhớ dữ liệu bên ngồ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 ngồi.
2.2.1. Bộ nhớ chương trình:

Hình 2.7: Cấu trúc bộ nhớ chương trình

Hình 2.8 : Các địa chỉ ngắt trong 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 ngồi 0 sẽ có địa chỉ là 0003H, khi xảy ra ngắt
ngồ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 ngồ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).

GVHD: TS. Phạm Văn Khoa

16


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
2.2.2. Bộ nhớ dữ liệu

Hình 2.9 Cấu trúc bộ nhớ dữ liệu
   Hình 2.9 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 ngồi.

Hình 2.10 :Cấu trúc bộ nhớ trong
Hình 2.10 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.

GVHD: TS. Phạm Văn Khoa

17


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
Hình 2.11 : Cấu trúc 128 byte thấp của bộ nhớ dữ liệu trong
 Hình 2.11 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 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. 
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. Ngồ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. 

Hình 2.12 . 128 byte cao của bộ nhớ dữ liệu.

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 ý 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.

GVHD: TS. Phạm Văn Khoa

18


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
2.3. Kiến trúc vi điều khiển 8051
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 mơ tả các thanh ghi đặc
biệt trong vùng nhớ dữ liệu 80H đến FFH.

Hình 2.13 Các thanh ghi đặc biệt
2.3.1. Thanh ghi chính
Thanh ghi tính tố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. 
2.3.2. Thanh ghi phụ
Thanh ghi tính tố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. 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ả tồn bộ trạng thái
chương trình đang hoạt động của hệ thống.
Bảng 2.3: Mơ tả thanh ghi từ trạng thái chương trình PSW
Bit


Ký hiệu

GVHD: TS. Phạm Văn Khoa

Địa chỉ

Mô tả bit
19


Lập trình vi điều kiển 8051 sử dụng ngơn ngữ lập trình C giao tiếp ngắt và truyền thơng
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)
Chọn dãy thanh ghi ( bit 0 )
00 = bank 0 địa chỉ từ 00H – 07H

PSW.3

RS0

D3H

01 = bank 1 địa chỉ từ 08H – 0FH
10 = bank 2 địa chỉ từ 10H – 17H
11 = bank 3 địa chỉ từ 18H – 1FH

PSW.2

OV

D2H


Cờ tràn

PSW.1

-

D1H

Dự trữ

PSW.0

P

D0H

Cờ kiểm tra chẵn lẻ

2.3.3. 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.
2.3.4. 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
ngồ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).

2.3.5. 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.
2.3.6. 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
GVHD: TS. Phạm Văn Khoa

20



×