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.14 MB, 69 trang )
Bên trong chip 8051 có một port nối tiếp hoạt động ở một vài chế độ trên
một tầm tần số rộng. Chức năng cơ bản của port nối tiếp là thực hiện việc
chuyển đổi dữ liệu song song thành nối tiếp khi phát và chuyển đổi dữ liệu từ
nối tiếp thành song song khi thu. Đặc trưng của port nối tiếp là hoạt động song
công nghĩa là có khả năng thu và phát đồng thời. Ngoài ra port nối tiếp còn có
một đặc trưng khác, việc đệm dữ liệu khi thu của port này cho phép một ký tự
được nhận và lưu trong bộ đệm thu trong khi ký tự tiếp theo được nhận vào. Nếu
CPU đọc ký tự thứ nhất trước khi ký tự thứ hai được nhận đầy đủ, dữ liệu sẽ
không bị mất.
Hoạt động nối tiếp sử dụng đến hai thanh ghi chức năng đặc biệt SBUF và
SCON để truy xuất port nối tiếp. Bộ đệm của port nối tiếp SBUF có địa chỉ byte
là 99h, trên thực tế bao gồm hai bộ đệm. Việc ghi lên SBUF sẽ nạp dữ liệu để
phát và việc đọc SBUF sẽ truy xuất dữ liệu đã nhận được. Điều náy có nghĩa là
ta có hai thanh ghi riêng rẽ và phân biệt. Thanh ghi điều khiển port nối tiếp
SCON có địa chỉ byte là 98h, là thanh ghi được định địa chỉ từng bit, nó có chứa
các bit trạng thái và các bit điều khiển. Các bit điều khiển sẽ thiết lập chế độ hoạt
động cho port nối tiếp còn các bit trạng thái chỉ ra sự kết thúc việc thu hoặc phát
một ký tự. Các bit trạng thái được kiểm tra bởi phần mềm hoặc được lập trình để
tạo ra ngắt.
* Bộ nhớ chương trình:
Bộ nhớ chương trình thường là ROM, bộ nhớ chương trình được sử dụng để
cất giữ chương trình điều khiển hoạt động của vi điều khiển. Bộ nhớ ROM có
một đặc trưng là không bị mất đi khi bị mất điện. Chương trình được ghi vào
trên ROM là do người sản xuất ghi vào chúng ta không thể can thiệp được vào.
* Bộ nhớ số liệu:
Bộ nhớ số liệu thường là bộ nhớ RAM, bộ nhớ số liệu dùng để cất giữ các
thông tin tạm thời trong quá trình vi điều khiển làm việc. Đây là bộ nhớ truy
xuất ngẫu nhiên dung để lưu trữ chương trình trong quá trình làm việc. Nó sẽ bị
mất dữ liệu khi mất điện.
2.2.2. Tổ chức bộ nhớ của 8051.
19
Tất cả các vi điều khiển thuộc họ 8051 đều được phân chia bộ nhớ thành hai
vùng địa chỉ cho bộ nhớ dữ liệu và bộ nhớ chương trình. Sự phân chia logic giữa
bộ nhớ dữ liệu và bộ nhớ chương trình cho phép truy nhập bộ nhớ dữ liệu bằng 8
bit địa chỉ giúp cho việc lưu trữ và thao tác dữ liệu nhanh hơn. Tuy nhiên chúng
ta cũng có thể sử dụng địa chỉ bộ nhớ dữ liệu 16 bit thông qua thanh ghi DPTR.
Do đó có thể chứa được 64K=65536 ô nhớ mỗi loại.
Bộ nhớ onchip của 8051 gồm có 4 Kbyte bộ nhớ chương trình (ROM,
EPROM, EEPROM hoặc Flash tùy loại) và 128 byte bộ nhớ dữ liệu (RAM). 4
Kbyte bộ nhớ chương trình on - chip nằm trong không gian địa chỉ 64 Kbyte
dành cho bộ nhớ chương trình (thuộc dải địa chỉ từ 0x0000 đến 0x0FFF).
Ngược lại 128 byte RAM onchip lại không nằm trong không gian địa chỉ 64
Kbyte dành cho bộ nhớ dữ liệu. Ta có thể tưởng tượng không gian bộ nhớ
chương trình là một chiếc thùng được lấp đầy 1/16 dung tích bởi 4 Kbyte bộ nhớ
onchip, còn không gian bộ nhớ dữ liệu là một thùng to dung tích 64 Kbyte rỗng
hoàn toàn và có một hộp nhỏ dung tích 128 byte (Địa chỉ từ 0x00 đến 0x7F) nằm
riêng rẽ bên cạnh.
64 K
Byte
Phần không
gian địa chỉ cho
bộ nhớ chương
trình bằng 64 K
Byte trừ đi bộ
nhớ on - chip
Phần không gian
địa chỉ cho bộ
nhớ dữ liệu
( Hoàn toàn
trống rỗng 64K
Byte dành cho
bộ nhớ dữ liệu
ghép thêm bên
ngoài nếu có
Bộ nhớ on - chip
Bộ nhớ SRAM
Dung lượng
tùy loại chip
20
Hình 2.5: Cấu trúc bộ nhớ 8051
Bộ nhớ chương trình là loại bộ nhớ chỉ cho phép đọc, không cho phép ghi.
Một số vi điều khiển được tích hợp sẵn bộ nhớ chương trình bên trong với dung
lượng khoảng 4kbyte hay 8kbyte, số còn lại phải sử dụng bộ chương trình mở
rộng mà quá trình truy nhập được thực hiện thông qua sự điều khiển bằng tín
hiệu PSEN.
Tuy nhiên vi điều khiển 8051 cho phép chúng ta sử dụng đến 64 kbyte bộ
nhớ chương trình bằng cách sử dụng cả bộ nhớ chương trình bên ngoài và bên
trong.
Bộ nhớ dữ liệu chiếm giữ vùng địa chỉ phân chia của bộ nhớ chương trình.
Dung lượng của bộ nhớ dữ liệu có thể mở rộng lên đến 64 kbyte. Trong quá
trình truy nhập bộ nhớ số liệu, CPU phát ra các tín hiệu đọc và tín hiệu viết số
liệu thông qua các chân RD và WD.
Chúng ta có thể kết hợp bộ nhớ chương trình mở rộng với bộ nhớ số liệu mở
rộng bằng cách cho hai tín hiệu RD và PSEN qua một cổng logic AND, lối ra
của cổng này sẽ tạo tín hiệu đọc cho bộ nhớ mở rộng.
Thân chương trình
( Chương trình
chính, chương trình
con, chương trình
xử lý ngắt, bảng các
hằng số….)
0x0FFF
0x0030
Véc tơ ngắt thứ n
…
Véc tơ ngắt thứ 1
Địa chỉ reset
21
0x0003
0x0000
Hình 2.6: Bộ nhớ chương trình 8051
* Bộ nhớ chương trình:
Sau khi reset CPU bắt đầu thực hiện chương trình từ địa 0000h. Vùng đầu
của bộ nhớ chương trình là vùng chứa các vecter ngắt, mỗi ngắt được phân chia
một vùng địa chỉ cố định trong bộ nhớ chương trình. Khi xuất hiện ngắt , CPU sẽ
nhảy tới địa chỉ này, đây cũng là địa chỉ đầu của chương trình con phục vụ ngắt.
Các vector ngắt cách nhau 8 byte, vì vậy nếu chương trình con phục vụ ngắt quá
dài(> 8 byte) thì tại vector ngắt ta phải đặt một lệnh nhảy không điều kiện tới
vùng địa chỉ khác chứa chương trình con phục vụ ngắt.
* Bộ nhớ dữ liệu:
Chúng ta có thể dùng tới 64 kbyte bộ nhớ số liệu ngoại vi. Độ rộng bus địa
chỉ của bộ nhớ số liệu ngoài có thể là 8 bit hoặc 16 bit. Bus địa chỉ rộng 8 bit
thường được sử dụng để liên kết với một hoặc nhiều đường vào ra khác để định
địa chỉ cho RAM theo trang. Trong trường hợp bus địa chỉ rộng 16 bit, cổng Port
2 sẽ phát ra 8 bit địa chỉ cao còn cổng Port 1 sẽ phát 8 bit địa chỉ thấp. Bằng
cách này ta có thể truy nhập trực tiếp lên bộ nhớ dữ liệu ngoài với độ lớn tối đa
là 64 kbyte.
Bộ nhớ số liệu được chia ra làm 3 vùng:
- 128 byte cao
- 128 byte thấp
- Vùng dành cho các thanh ghi chức năng đặc biệt SFR
Địa chỉ của bộ nhớ số liệu trong luôn là 8 bit, và có thể quản lý được 256
byte bộ nhớ. Tuy nhiên trên thực tế cách định địa chỉ của bộ nhớ RAM trong có
thể quản lý tới 384 byte.
22