- 81 -
Trong quá trình điều khiển việc lựa chọn bộ nhớ ROM nằm trong hay bên
ngoài hoặc sử dụng cả hai, được thực hiện bằng cách nối đến chân EA. Ở vi điều
khiển 8051 thì chân EA được nối tới dương nguồn V
cc
.
Trình tự thực hiện chương trình trong ROM.
Sau khi nạp chương trình vào ROM thông qua bộ đốt ROM hay cổng COM,
Chương trình sẽ có địa chỉ bắt đầu từ 0000h. Để xác định vị trí lệnh thực hiện bộ
vi điều khiển sử dụng thanh ghi chương trình(bộ đếm chương trình PC), thanh
ghi này có độ dài 16 bit. Khi 8051 được bật nguồn, bộ đếm chương trình PC có
nội dung 0000h. Lúc này chương trình sẽ nạp lệnh trong ROM có địa chỉ 0000h.
Sau đ
ó bộ đếm chương trình tăng lên trỏ đến lệnh tiếp theo được thiết lập trong
ROM.
+ Bộ nhớ dữ liệu RAM
Trong vi điều khiển 8051 bộ nhớ dữ liệu RAM có kích thước 128 byte được
định địa chỉ từ 00h ÷ 7Fh, nhưng ở một số như 8052 thì có 256 byte RAM.
128 byte RAM trong 8051 được chia thành từng nhóm như sau:
Hình 5.4. Tổ chức RAM của 8051
- 82 -
- Từ ngăn nhớ 00h đến 1Fh, tổng cộng 32 byte, được dành làm các băng
thanh ghi và ngăn xếp.
- Từ ngăn nhớ 20h đến 2Fh, tổng cộng có 16 byte, được làm bộ nhớ đọc/ghi
định địa chỉ được theo bit.
- Từ ngăn nhớ 30h đến 7Fh, tổng cộng 80 byte được dùng để lưu thông tin
khi đọc và khi ghi.
* Các thanh ghi chức năng đặc biệt
Là các thanh ghi đảm nhận các chức năng khác nhau trong bộ vi điều khiển,
chúng nằm bên trong vi xử lí chiếm vùng không gian nhớ là 128byte có địa chỉ
từ 80h ÷ FFh.
+ Thanh ghi tích luỹ(thanh ghi chứa ACC)
Trong lập trình nó được viết tắt là thanh ghi A, đây là thanh ghi quan trọng
nhất trong bộ vi điều khiển dùng để lưu trữ các toán hạng thực hiện các phép
toán, đồng thời nó còn lưu trữ kết quả phép toán. Thanh ghi này có địa chỉ 0E0h
và có kích thước 8bit.
+ Thanh ghi B
Thường được sử
dụng khi thực hiện các phép toán nhân, chia. Đối với các
lệnh khác có thể xem thanh ghi B là thanh ghi tạm thời có địa chỉ 0F0h.
+ Thanh ghi con trỏ ngăn xếp SP
Khi bắt đầu thực hiện lệnh con trỏ SP trỏ đến đỉnh Stack, giá trị của nó sẽ
thay đổi tự động khi thực hiện các lệnh PUSH và POP. Khác với bộ vi xử lí đa
năng, ở bộ vi điều khiển khi ta thực hiện lệnh PUSH dữ liệu vào ngă
n xếp thì giá
trị của con trỏ ngăn xếp tăng lên và ngược lại khi ta thực hiện lệnh POP giá trị
của con trỏ ngăn xếp sẽ giảm đi.
Ngăn xếp có thể đặt ở bất kỳ vị trí nào trong RAM, nhưng thông thường sau
khi ta khởi động lại hệ thống, con trỏ ngăn xếp sẽ mặc định trỏ đến địa chỉ khởi
- 83 -
đầu 07h, ngăn xếp bắt đầu từ địa chỉ 08h. Còn nếu trong quá trình lập trình ta
muốn thay đổi vị trí của Stack ta phải gán giá trị địa chỉ mới vào thanh ghi SP.
+ Thanh ghi DPTR
Là thanh ghi 16bit gồm hai thanh ghi có độ dài 8bit hợp thành đó là thanh
ghi byte cao DPH và thanh ghi byte thấp DPL. Con trỏ dữ liệu có thể sử dụng
như một thanh ghi 16bit hoặc hai thanh ghi 8bit độc lập:
- DPH có địa chỉ 82h
- DPL có địa chỉ 83h
+ Từ trạng thái chương trình(thanh ghi cờ PSW)
Là thanh ghi 8bit có địa chỉ 0D0h mỗi bit
đảm nhiệm một chức năng cụ thể.
Chức năng các bit thể hiện
Bit 7 6 5 4 3 2 1 0
Tên CY AC F0 RS1 RS0 OV - P
- Cờ nhớ CY: cờ này sẽ được thiết lập khi có nhớ từ bit D7 và là kết quả
của lệnh cộng hoặc trừ 8bit. Có thể thiết lập trực tiếp cờ CY lên 1 hoặc xoá về 0
bằng lệnh “SETB” và “CLR”.
- Cờ nhớ phụ AC: cờ này báo có nhớ từ bit D3 sang D4 ở phép cộ
ng ADD
hoặc trừ SUB.
- Cờ bậc P: cờ bậc(cờ chẵn lẻ) phản ánh số bit 1 trong thanh ghi A là chẵn
hay lẻ. Nếu thanh ghi A chứa một số chẵn các bit 1 thì P=0 còn chứa một số lẻ
bit 1 thì P=1.
- Cờ tràn OV: cờ được thiết lập mỗi khi kết quả của phép tính số có dấu
quá lớn làm cho bit cao bị tràn vào bit dấu.
- Cờ không F0: cờ này có thể cho người sử dụng tự định nghĩa một trạ
ng
thái nào đó trong lập trình điều khiển.
- RS1, RS2 là các cờ chỉ ra địa chỉ băng thanh ghi ta sử dụng. Trong bộ
nhớ dữ liệu của vi điều khiển 8051 có một vùng nhớ gọi là vùng nhớ băng thanh
- 84 -
ghi. Có 4 băng thanh ghi được đánh số từ 0→ 3 trong mỗi băng thanh ghi lại có
8 thanh ghi đều được gọi tên từ R0→ R7. Trong lập trình có thể sử dụng tên
R0→R7 để truy cập đến vùng nhớ đó.
+ Các thanh ghi Port: Các Port xuất nhập của 89C51 bao gồm Port 0 tại địa
chỉ 80H, Port 1, 2, 3 tương ứng tại các địa chỉ là 90H, A0H và B0H. Các Port 0,
2, 3 không được dùng để xuất nhập nếu ta sử dụng bộ nhớ ngoài hoặc có một số
đặc tính đặc biệt của 89C51 được sử dụng. Tất cả các Port đều định địa chỉ từng
bit nhằm cung cấp các khả năng giao tiếp mạnh.
+ Các thanh ghi định thời: AT89C51 có hai bộ đếm/định thời (timer/counter)
16bit để định các khoảng thời gian hoặc để đếm các sự kiện.
Bảng 5.2. Các thanh ghi chức năng đặc biệt của bộ định thời
SFR của bộ định
thời
Mục đích Địa chỉ
Định địa chỉ
bit
TCON Điều khiển 88H Có
TMOD Chọn chế độ 89H Không
TL0 Byte thấp của bộ định thời 0 8AH Không
TL1 Byte thấp của bộ định thời 1 8BH Không
TH0 Byte cao của bộ định thời 0 8CH Không
TH1 Byte cao của bộ định thời 1 8DH Không
Thanh ghi chế độ định thời TMOD (Timer Mode register): nằm tại địa chỉ
89H. TMOD chứa hai nhóm 4bit dùng để thiết lập chế độ hoạt động cho bộ định
thời 0 và bộ định thời 1. TMOD không được định địa chỉ từng bit. TMOD được
nạp một lần bởi phần mềm ở thời điểm bắt đầu của một chương trình để khởi
động chế độ hoạ
t động của bộ định thời.
- 85 -
Bảng 5.3. Chức năng của các bit trong thanh ghi TMOD
Bit Tên Timer Mô tả
7 GATE 1
Bit điều khiển cổng. Khi được set lên 1, bộ định thời
chỉ hoạt động trong khi INT1 ở mức cao
6 C/T 1
Bit chọn chức năng đếm hoặc định thời:
1 = đếm sự kiện.
0 = định thời trong một khoảng thời gian.
5 M1 1 Bit chọn chế độ thứ nhất
4 M0 1 Bit chọn chế độ thứ hai
3 GATE 0 Bit điều khiển cổng cho bộ định thời 0
2 C/T 0
Bit chọn chức năng đếm hoặc định thời
cho bộ định thời 0
1 M1 0 Bit chọn chế độ thứ nhất
0 M0 0 Bit chọn chế độ thứ hai
Thanh ghi điều khiển định thời TCON (Timer Control register): chứa các
bit điều khiển và trạng thái của bộ định thời 0 và 1 được thể hiện như sau:
- 86 -
Bảng 5.4. Chức năng các bit trong thanh ghi TCON
Bit
Ký
hiệu
Địa chỉ
bit
Mô tả
TCON.7 TF1 8FH
Cờ tràn của bộ định thời 1. Cờ này được set bởi
phần cứng khi có tràn, được xoá bởi phần mềm
hoặc bởi phần cứng khi bộ vi xử lý trỏ đến
trình phục vụ ngắt
TCON.6 TR1 8EH
Bit điều khiển của bộ định thời 1. Bit này được
set hoặc được xoá bởi phần mềm để điều khiển
bộ định thời hoạt động hay ngưng hoạt động
TCON.5 TF0 8DH Cờ tràn của bộ định thời 0
TCON.4 TR0 8CH Bit điều khiển hoạt động của bộ định thời 0
TCON.3 IE1 8BH
Cờ ngắt bên ngoài 1 (kích khởi cạnh). Cờ này
được set bởi phần cứng khi có cạnh âm (xuống)
xuất hiện trên chân INT1, được xoá bởi phần
mềm, hoặc phần cứng khi CPU trỏ đến trình
phục vụ ngắt
TCON.2 IT1 8AH
Cờ ngắt bên ngoài 1(kích khởi cạnh hoặc mức)
Cờ này được set hoặc xoá bởi phần mềm khi
xảy ra cạnh âm (xuống) hoặc mức thấp tại chân
ngắt ngoài
TCON.1 IE0 89H Cờ ngắt bên ngoài 0(kích khởi cạnh).
TCON.0 IT0 88H Cờ ngắt bên ngoài 0 (kích khởi cạnh hoặc mức)
+ Các thanh ghi của Port nối tiếp: Bên trong AT89C51 có một Port nối tiếp
để truyền thông với các thiết bị nối tiếp như các thiết bị đầu cuối hoặc modem,
hoặc để giao tiếp với 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 (Serial Data Buffer) ở địa chỉ 99H lưu trữ
- 87 -
dữ liệu truyền đi và nhận dữ liệu về. Việc ghi lên bộ đệm SBUF sẽ nạp dữ liệu
để truyền và việc đọc SBUF sẽ lấy dữ liệu đã nhận được.
Các chế độ hoạt động khác nhau của Port nối tiếp được lập trình thông qua
thanh ghi điều khiển Port nối tiếp SCON (Serial Port Control register) ở địa chỉ
98H, thanh ghi này được định địa chỉ từng bit và được tóm tắt như sau:
Bảng 5.5. Chức năng các bit trong thanh ghi SCON
Bit
Ký
hiệu
Địa
chỉ
Mô tả
SCON.7 SM0 9FH Bit 0 chọn chế độ của Port nối tiếp
SCON.6 SM1 9EH Bit 1 chọn chế độ của Port nối tiếp
SCON.5 SM2 9DH Bit 2 chọn chế độ của Port nối tiếp
Bit này cho phép truyền thông đa xử lý ở các chế
độ 2 và 3; bit RI sẽ không được tích cực nếu bit thứ
9 nhận được là 0
SCON.4 REN 9CH
Cho phép thu. Bit này phải được set để nhận được
ký tự
SCON.3 TB8 9BH
Bit phát 8. Bit thứ 9 được phát ở các chế độ 2 và 3;
được set và xoá bởi phần mềm
SCON.2 RB8 9AH Bit thứ 8. Bit thứ 9 nhận được
SCON.1 TI 99H
Cờ ngắt phát. Cờ này được set ngay khi kết thúc
việc phát một ký tự; được xoá bởi phần mềm
SCON.0 RI 98H
Cờ ngắt thu. Cờ này được set ngay khi kết thúc việc
thu một ký tự; được xoá bởi phần mềm
+ Các thanh ghi ngắt: Ngắt là sự xảy ra của một điều kiện – một sự kiện -
làm cho chương trình hiện hành bị tạm ngưng trong khi điều kiện được phục vụ
bởi một chương trình khác. Các ngắt đóng vai trò quan trọng trong việc thiết kế
- 88 -
và thực hiện các ứng dụng của bộ vi điều khiển. AT89C51 có một cấu trúc ngắt
với 2 mức ưu tiên và 5 nguyên nhân ngắt. Các ngắt bị vô hiệu hoá sau khi reset
hệ thống và sau đó được cho phép bằng cách ghi vào thanh ghi cho phép ngắt IE
(Interrupt Enable register) ở địa chỉ A8H. Mỗi bit của thanh ghi này cho phép
hoặc không cho phép từng nguyên nhân ngắt riêng rẽ, ngoài ra nó còn có một bit
toàn cục cho phép hoặc không cho phép tất cả các ngắt. Chi tiết thanh ghi này
được mô tả như sau:
Bảng 5.6. Chức năng các bit trong thanh ghi IE
Bit Ký hiệu Địa chỉ bit Mô tả (0: không cho phép; 1: cho phép)
IE.7 EA AFH Cho phép/ không cho phép toàn cục.
IE.6 - AEH Không sử dụng.
IE.5 ET2 ADH Cho phép ngắt do bộ định thời 2
IE.4 ES ACH Cho phép ngắt do Port nối tiếp.
IE.3 ET1 ABH Cho phép ngắt do bộ định thời 1
IE.2 EX1 AAH Cho phép ngắt từ bên ngoài (ngắt ngoài 1).
IE.1 ET0 A9H Cho phép ngắt do bộ định thời 0
IE.0 EX0 A8H Cho phép ngắt từ bên ngoài (ngắt ngoài 0).
Mỗi một nguyên nhân ngắt được lập trình riêng rẽ để có một trong hai mức
ưu tiên thông qua thanh ghi chức năng đặc biệt được định địa chỉ bit, thanh ghi
ưu tiên ngắt IP (Interrupt Priority). Thanh ghi này có địa chỉ là B8H. Thanh ghi
này có đặc điểm như sau:
- 89 -
Bảng 5.7. Chức năng các bit trong thanh ghi IP
Bit Ký hiệu Địa chỉ bit Mô tả (1: mức cao; 0: mức thấp)
IP.7 - - Không sử dụng.
IP.6 - - Không sử dụng.
IP.5 PT2 BDH Ưu tiên cho ngắt cho bộ định thời 2.
IP.4 PS BCH Ưu tiên cho ngắt do Port nối tiếp.
IP.3 PT1 BBH Ưu tiên cho ngắt do bộ định thời 1.
IP.2 PX1 BAH Ưu tiên cho ngắt do bên ngoài (ngắt ngoài 1).
IP.1 PT0 B9H Ưu tiên cho ngắt do bộ định thời 0.
IP.0 PX0 B8H Ưu tiên ngắt do bên ngoài (ngắt ngoài 0).
Khi hệ thống được thiết lập lại trạng thái ban đầu, thanh ghi IP sẽ mặc định
tất cả các ngắt ở mức ưu tiên thấp.
+ Thanh ghi điều khiển nguồn: Thanh ghi điều khiển nguồn PCON (Power
Control register) có địa chỉ là 87H chứa các bit điều khiển được cho trong bảng
sau:
- 90 -
Bảng 5.8. Chức năng các bit trong thanh ghi PCON
Bit
Ký
hiệu
Mô tả
7
SMO
D
Bit tăng gấp đôi tốc độ baud, bit này khi set làm cho tốc độ
baud tăng 2 lần ở các chế độ 1, 2 và 3 của Port nối tiếp.
6 - Không định nghĩa.
5 - Không định nghĩa.
4 - Không định nghĩa.
3 GF1 Bit cờ đa mục đích.
2 GF0 Bit cờ đa mục đích.
1 PD
Nguồn giảm; thiết lập để tích cực chế độ nguồn giảm, chỉ ra
khỏi chế độ bằng reset.
0 IDL
Chế độ nghỉ; thiết lập để tích cực chế độ nghỉ, chỉ ra khỏi chế
độ bằng một ngắt hoặc reset hệ thống.
PCON không được định địa chỉ bit.
Chế độ nguồn giảm: Lệnh thiết lập bit PD bằng 1 sẽ là lệnh sau cùng được
thực thi trước khi đi vào chế độ nguồn giảm. Ở chế độ nguồn giảm:
- Mạch dao động trên chip ngừng hoạt động.
- Mọi chức năng ngừng hoạt động.
- Nội dung của RAM trên chip được duy trì.
- Các chân Port duy trì mức logic của chúng.
- ALE và PSEN được duy trì ở mức thấ
p.
Trong suốt thời gian chế độ nguồn giảm, Vcc có điện áp 2V. Cần phải giữ
cho Vcc không thấp hơn sau khi đạt được chế độ nguồn giảm và cần phục hồi