Tải bản đầy đủ
4 Bộ nhớ dữ liệu-Bộ nhớ RAM

4 Bộ nhớ dữ liệu-Bộ nhớ RAM

Tải bản đầy đủ

RAM nội trong vi điều khiển được tổ chức như sau:

- Các vị trí trên RAM được định địa chỉ theo từng Byte bằng các số thập
-

lục phân (số Hex).
Các bank thanh ghi có địa chỉ 00H đến 1FH .
210 vị trí được định địa chỉ bit .
Các vị trí RAM bình thường .
Các thanh ghi có chức năng đặc biệt có địa chỉ từ 80H đến FFH.

Các byte RAM 8 bit của vi điều khiển được gọi là "ô nhớ", nếu các ô nhớ
có chức năng đặc biệt thường được gọi là "thanh ghi", nếu là bit thì được gọi là
"bit nhớ".
1.4.1 Các bank thanh ghi
Các bank thanh ghi có địa chỉ byte từ 00H đến 1FH, có 8 thanh ghi trong
mỗi bank, các thanh ghi được đặt tên từ R0-R7, các thanh ghi này được đặt mặc
định trong bank 1. Có 4 bank thanh ghi và tại mỗi thời điểm chỉ có một bank
thanh ghi được truy xuất với các thanh ghi từ R0 đến R7, để thay đổi việc truy
xuất các thanh ghi trên các bank thanh ghi, người dùng phải thay đổi giá trị các
bit chọn bank trong thanh ghi trạng thái PSW bằng các câu lệnh trong chương
trình.
Các lệnh dùng các thanh ghi từ R0 đến R7 mất khoảng không gian lưu trữ
ít hơn và thời gian thực hiện nhanh hơn so với các lệnh dùng các ô nhớ RAM
khác, ngoài ra các thanh ghi này còn có thêm một số chức năng đặc biệt khác, vì
lí do này các dữ liệu sử dụng thường được người viết chương trình đưa vào lưu
trong các thanh ghi này. Ngoài ra, có thể truy xuất thanh ghi trên các bank thanh
ghi như với các ô nhớ bình thường khác. Ví dụ: nguời dùng có thể truy xuất đến
thanh ghi R7 bằng ô nhớ 07H.
1.4.2 Vùng RAM truy xuất từng bit
Trên RAM nội có 210 ô nhớ bit được định địa chỉ và có thể truy xuất đến
từng bit, các bit nhớ này cũng được định địa chỉ bằng các số thập lục phân- số
Hex. Trong đó có 128 bit nằm trong các ô nhớ có địa chỉ byte từ 20H đến 2FH,
các bit nhớ còn lại chứa trong nhóm thanh ghi có chức năng đặc biệt.

17

Mặc dù các bit nhớ và ô nhớ (byte) cùng được định bằng số Hex, tuy
nhiên chúng sẽ được nhận dạng là địa chỉ bit hay địa chỉ byte thông qua các câu
lệnh tương ứng dành cho các bit nhớ hoặc các ô nhớ này :
Ví dụ :
mov

05H,#10111111B

;>>> lệnh này thiết lập giá trị cho ô

nhớ có địa chỉ là 05H.
1.4.3 Vùng RAM bình thường
Vùng RAM này có địa chỉ byte từ 30H đến 7FH, dùng để lưu trữ dữ liệu,
được truy xuất theo từng byte.
1.4.4 Các thanh ghi có chức năng đặc biệt
Các thanh ghi này được định địa chỉ byte, một số được định thêm địa chỉ
bit, có địa chỉ của các thanh ghi này nằm trong khoảng 80H đến FFH. Các thanh
ghi đặc biệt này được dùng để xác lập trạng thái hoạt động cần thiết cho Vi điều
khiển.
1.4.5 Tìm hiểu một số ô nhớ có chức năng đặc biệt

• Các thanh ghi có địa chỉ 80H, 90H, A0H, B0H:
Đây là các thanh ghi kiểm tra và điều khiển mức logic của các Port, có thể
truy xuất và xác lập các thanh ghi này với địa chỉ byte hoặc tên riêng lần lượt là
P0, P1, P2, P3 tương ứng với các Port xuất. Chẳng hạn để tất cả các chân của
Port 0 lên mức logic 1, cần làm cho các bit của thanh ghi có địa chỉ 80H lên mức
1.

• Thanh ghi A
Thanh ghi A là thanh ghi quan trọng, dùng để lưu trữ các toán hạng và kết
quả của phép tính.
Thanh ghi A có độ dài 8 bits, có địa chỉ là E0H.

• Thanh ghi B
Thanh ghi B ở địa chỉ F0H, được dùng với thanh ghi A để thực hiện các phép
toán số học. Khi thực hiện lệnh chia với thanh ghi A, số dư được lưu trữ ở thanh

18

ghi B. Ngoài ra thanh ghi B còn được dùng như một thanh ghi đệm có nhiều
chức năng.

• Con trỏ ngăn xếp SP: địa chỉ 81H
Con trỏ ngăn xếp SP là một thanh ghi có địa chỉ 81H, giá trị của nó được
tăng, giảm tự động khi thực hiện các lệnh PUSH, CALL, POP con trỏ SP dùng
quản lí và xử lí các nhóm dữ liệu liên tục. Giá trị mặc định của SP là 07H.

• Con trỏ dữ liệu DPTR
Con trỏ dữ liệu DPTR là thanh ghi 16 bit duy nhất của Vi điều khiển được tạo
thành từ hai thanh ghi DPL (byte thấp-địa chỉ byte 82H) và DPH (byte cao-địa
chỉ byte 83H). Hai thanh ghi DPL và DPT có thể truy xuất độc lập bởi người sử
dụng. Con trỏ dữ liệu DPTR thường được sử dụng khi truy xuất dữ liệu từ bộ nhớ
ROM hoặc bộ nhớ từ bên ngoài.

• Thanh ghi trạng thái chương trình PSW (địa chỉ byte D0H)
ĐỊA
BIT

CHỈ
BIT


HIỆU
C hoặc

CHỨC NĂNG

PSW.7

D7H

PSW.6

D6H AC

Cờ nhớ phụ

PSW.5

D5H F0

Cờ 0 hay cờ Zero

PSW.4

D4H RS1

Bit lựa chọn dãy thanh ghi

PSW.3

D3H RS0

Bit lựa chọn dãy thanh ghi

PSW.2

D2H 0V

PSW.1

D1H -

Chưa được thiết kế để sử dụng

PSW.0

D0H P

Cờ chẵn lẻ

Cy

Cờ nhớ

Cờ tràn với phép tính liên quan đến số nhị phân có
dấu

Chức năng từng bit trong thanh trạng thái PSW:

- Cờ nhớ C
Cờ được sử dụng trong các lệnh toán học:

19

C=1 nếu phép toán cộng xảy ra tràn hoặc phép trừ có mượn
C=0 nếu phép toán cộng không tràn hoặc phép trừ không có mượn.

- Cờ nhớ phụ AC:
Cờ AC được dùng trong các phép toán cộng hai số BCD.
Khi cộng số BCD:
Nếu kết quả 4 bit lớn hơn 09H thì AC=1
Nếu kết quả 4 bit dưới 09H thì AC=0.

- Cờ 0 hay cờ nhớ Z:
Cờ Z = 0 khi thanh ghi A có giá trị khác 0
Cờ Z =1 khi thanh ghi A có giá trị là 0

- Các bit chọn bank thanh ghi:
Hai bit RS1 và RS2 dùng để xác lập bank thanh ghi được sử dụng, mặc
định RS1=0 và RS2=0
RS1

RS2

0
0
1
1

0
1
0
1

Bank

thank

ghi

được sử dụng
Bank 0
Bank 1
Bank 2
Bank 3

- Cờ tràn OV
Được sử dụng trong các phép toán cộng có dấu, với các phép toán cộng
không dấu cờ tràn OV được bỏ qua, không cần quan tâm đến OV. Nếu:
Phép cộng hai số có dấu lớn hơn +127 thì OV=1 .
Hoặc phép trừ hai số có dấu nhỏ hơn -127 thì OV=1 .
Các trường hợp còn lại OV=0 .

- Cờ chẵn lẻ
Cờ chẵn lẻ P tự động được đặt bằng 1 hoặc 0 sao cho tổng số bit mang giá
trị 1 trên thanh ghi A với cờ P luôn là một số chẵn. Cờ chẵn lẻ được dùng để xử lí
dữ liệu trước khi truyền đi theo kiểu nối tiếp hoặc xử lí dữ liệu trước khi nhận
vào theo kiểu nối tiếp (hạn chế lỗi phát sinh trong quá trình truyền).

20

1.5 Các Bộ định thời của 89C51
Vi điều khiển họ 8051 có 2 bộ định thời là bộ định thời 0 và bộ định thời 1.
Chúng có thể hoạt động như là bộ định thời hoặc bộ đếm. Chế độ hoạt động của
các Bộ định thời được cất trong thanh ghi TMOD:
GATE0
+ Nếu bit GATE xóa, các Bộ định thời được phép hoạt động khi bit TR# tương
ứng trong thanh ghi TCON thiết lập. Ngược lại, nếu GATE thiết lập thì các bộ
định thời chỉ hoạt động khi các chân INT# tương ứng tích cực (mức thấp).
+ Bit C/T# dùng để lựa chọn chế độ hoạt động bộ đếm hay bộ định thời. Nếu
được thiết lập thì nó hoạt động theo chế độ đếm sự kiện, lúc này nguồn xung cho
bộ đếm là xung ngoài đưa vào từ chân T# tương ứng (chân 14, 15). Nếu bị xóa,
thì nó hoạt động theo chế độ định thời với nguồn xung là xung tạo ra từ bộ tạo
dao động trên chip sau khi chia 12.
+ Các bit M0, M1 dùng để xác dịnh chế độ đếm cho các bộ đếm:

Các chế độ hoạt động của các bộ đếm
Sự hoạt động của các Bộ định thời được điều khiển bởi thanh ghi TCON:
IE1
+ Các bit TR# cho phép Bộ định thời hoạt động (nếu được thiết lập) hoặc không
cho phép chúng hoạt động (nếu bị xóa).
+ Các bit TF# là các cờ tràn tương ứng với các Bộ định thời. Chúng được thiết
lập khi xảy ra tràn và được xóa bằng phần cứng nếu khi đó bộ xử lý rẽ nhánh đến
chương trình phục vụ ngắt tương ứng.
+ Các bit IT# là các bit ngắt. Thiết lập IT# tạo ra chế độ ngắt cạnh, chân INT#
nhận ra một ngắt khi nhận ra có một sườn âm (↓) của tín hiệu vào. Xóa IT# tạo ra
chế độ ngắt mức, tức là ngắt được tạo ra khi tín hiệu vào ở mức thấp (0). Ở chế

21

độ ngắt mức, khi tín hiệu vào còn ở mức thấp thì ngắt được tạo ra liên tục cho
đến khi tín hiệu vào chuyển lên mức cao hoặc thiết lập IT#.
+ Các bit IE# là các cờ ngắt cạnh, được thiết lập khi dò thấy ngắt cạnh.
1.6 Điều khiển ngắt
Bộ vi điều khiển 89C51 có 5 nguồn ngắt: TF0, TF1, INT0, INT1 và ngắt
do cổng nối tiếp. Sự điều khiển hoạt động ngắt được cất trong 2 thanh ghi là
thanh ghi cho phép ngắt IE (Interrupt Enable) và thanh ghi xác định thứ tự ưu
tiên ngắt IP (Interrupt Priority).
Các bit và chức năng của chúng trong thanh ghi IE như sau (thiết lập là
cho phép, xóa là cấm):
MC
h

c
n
ă
n
g
EC
h
o
n
g

t
t
o
à
n
c

22