Tài liệu Vi xử lý - Chương 2: Phần cứng họ mcs-51: Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
1
CHƯƠNG 2: PHẦN CỨNG HỌ MCS-51
I. GIỚI THIỆU CHUNG VỀ VI ĐIỀU KHIỂN
Quá trình phát triển nhanh của các loại vi xử lý cho phép ứng dụng chúng trong các quá trình sản
xuất như các bộ điều khiển. Khác với các loại vi xử lý sử dụng để xử lý thơng tin (các máy tính PC
xử lý văn bản, cơ sở dữ liệu, tính tốn khoa học kỹ thuật), các vi điều khiển (microcontroller) được
thiết kế để lắp đặt trực tiếp vào ứng dụng cụ thể. Trong đĩ suốt quá trình vận hành của mình vi
điều khiển chỉ thực hiện duy nhất một chức năng. Việc ứng dụng rộng rãi các bộ vi điều khiển dẫn
đến yêu cầu sản xuất tất cả các vi mạch trong một vỏ. Việc tích hợp nhiều vi mạch trên một vỏ
làm giảm giá thành và làm tăng tính tin cậy của vi điều khiển.
Yêu cầu tăng cao tốc độ xử lý dẫn đến các cấu trúc của vi điều khiển khác với các cấu trúc của các
bộ vi xử lý như Z80, 8086 và các vi xử lý dùng cho máy tính PC. Cấu trúc của vi điều khiển cho
phép...
16 trang |
Chia sẻ: tranhong10 | Lượt xem: 2253 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Vi xử lý - Chương 2: Phần cứng họ mcs-51, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
1
CHƯƠNG 2: PHẦN CỨNG HỌ MCS-51
I. GIỚI THIỆU CHUNG VỀ VI ĐIỀU KHIỂN
Quá trình phát triển nhanh của các loại vi xử lý cho phép ứng dụng chúng trong các quá trình sản
xuất như các bộ điều khiển. Khác với các loại vi xử lý sử dụng để xử lý thơng tin (các máy tính PC
xử lý văn bản, cơ sở dữ liệu, tính tốn khoa học kỹ thuật), các vi điều khiển (microcontroller) được
thiết kế để lắp đặt trực tiếp vào ứng dụng cụ thể. Trong đĩ suốt quá trình vận hành của mình vi
điều khiển chỉ thực hiện duy nhất một chức năng. Việc ứng dụng rộng rãi các bộ vi điều khiển dẫn
đến yêu cầu sản xuất tất cả các vi mạch trong một vỏ. Việc tích hợp nhiều vi mạch trên một vỏ
làm giảm giá thành và làm tăng tính tin cậy của vi điều khiển.
Yêu cầu tăng cao tốc độ xử lý dẫn đến các cấu trúc của vi điều khiển khác với các cấu trúc của các
bộ vi xử lý như Z80, 8086 và các vi xử lý dùng cho máy tính PC. Cấu trúc của vi điều khiển cho
phép truy cập nhanh bộ nhớ dữ liệu, truy cập và xử lý nhanh các dữ liệu, truy cập nhanh các thiết
bị (phép nhân và chia dấu phẩy đứng, các phép tốn đại số Boole với 1 bit )
Tổng quát ta cĩ thể nĩi rằng vi điều khiển là một máy tính trong một chip (monolithic
microcomputer). Trong đĩ đã bao gồm CPU, bộ nhớ, các thiết vị vào/ra phổ biến. Cấu trúc của vi
điều khiển được thiết kế để phục vụ một mục đích cụ thể mà chỉ cần tối thiểu các mạch phụ trợ.
Chức năng của vi điều khiển được xác định bởi chương trình lưu trong bộ nhớ ROM hoặc EPROM.
Chương trình được nạp một lần và khơng thay đổi trong suốt quá trình hoạt động.
Bộ nhớ của các vi điều khiển cĩ cấu trúc khác với bộ nhớ của vi xử lý Z80 cùng loại. Tại các họ vi
xử lý ta dùng cấu trúc bộ nhớ Neuman, trong đĩ bản đồ bộ nhớ dùng chung cho cả chương trình
(thường trong ROM- Read only memory) và dữ liệu (RWM – read write memory). Các bộ vi điều
khiển sử dụng cấu trúc Harward. Tại đây bộ nhớ được chia làm hai loại: bộ nhớ chương trình
(ROM) và bộ nhớ dữ liệu (RWM).
Hình 2.1: Cấu trúc Neuman Hình 2.2: Cấu trúc Harward
Việc phân biệt này được suy ra từ thực tế rằng bộ nhớ ROM dùng để lưu chương trình khơng thể
ghi vào được, và bộ nhớ này thường cĩ độ dài vài kB (yêu cầu 10 đến 16 bit địa chỉ). CPU truy cập
bộ nhớ này chủ yếu để đọc lệnh. Bộ nhớ dữ liệu để lưu các kết quả tạm thời thơng thường bé
hơn, chỉ cần 8 bit địa chỉ hoặc thậm chí 4 bit địa chỉ. Với địa chỉ bộ nhớ dữ liệu nhỏ, tốn hạng sẽ
cĩ địa chỉ ngắn và nhiều khi cĩ thể lọt vào vào mã lệnh (object code) cĩ độ dài 8 bit. Cấu trúc bộ
nhớ Harward là cơ sở cho việc xử lý nhanh thơng tin trong các ứng dụng điều khiển.
Cấu trúc khơng đổi của các loại vi điều khiển lại là giới hạn đối với việc áp dụng trong thực tế. Tuy
vậy trên thị trường cĩ rất nhiều loại vi điều khiển cho các loại ứng dụng cụ thể khác nhau, mỗi loại
tự phân biệt bằng lượng tối thiểu thiết bị được tích hợp bên trong.
CPU Bộ nhớ
chương trình
+
Bộ nhớ
dữ liệu
CPU Bộ nhớ
chương trình
Bộ nhớ
dữ liệu
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
2
* HỌ VI ĐIỀU KHIỂN X51
Vi điều khiển 8051 ra đời vào năm 1980 và đã là loại vi điều khiển tương đối “lớn tuổi”. Tuy vậy
8051 đã nhận được sự mến chuộng đặc biệt của các nhà thiết kế hệ thống đến nỗi hiện nay tồn
tại rất nhiều nhà sản xuất tập trung phát triển các sản phẩm trên cơ sở 8051 và phát triển thêm
các thiết bị ngoại vi khác. Ví dụ chỉ riêng Philips đã sản xuất 24 loại vi điều khiển trên cơ sở 8051
như được thể hiện trên hình 2.1. Các vi điều khiển này khác nhau như sau: bộ nhớ chương trình
từ 2kB đến 32 kB, bộ nhớ này cĩ loại cĩ thể nạp một lần hoặc nhiều lần (EPROM), bộ nhớ
EEPROM để nhớ các hằng số, bộ nhớ dữ liệu mở rộng đến 256 kB, bộ ADC 8 hoặc 10 bit với bộ
chọn 8 kênh, các cổng vào/ra mở rộng, bộ so sánh hoặc lưu dữ liệu, bus 2 dây I2C. Các nhà sản
xuất cung cấp các vi điều khiển cĩ tần số từ 12MHz đến 33 MHz với loại vỏ DIL, PLCC đến loại nhỏ
PQFP. Một số nhà sản xuất tập trung vào các vi điều khiển với các phép tính số học (Siemens
80C537) hoặc việc định thời khác nhau (Dallas DS80C320). Tổng kết các hướng phát triển cụ thể
của vi điều khiển trên cơ sở 8051 được tổng kết như trên hình 2.3.
Hình 2.3: Các thành phần mở rộng của họ vi điều khiển trên cơ sở 8051
Trên thị trường Việt nam hiện tại loại vi điều khiển AT89C51 của hãng Atmel rất được phổ biến. Vi
điều khiển này cĩ thể mua được với giá 25,000 đ/1đv. Kèm theo với vi điều khiển này là rất nhiều
các thiết bị phụ trợ như bộ lập trình, các board mạch cơ bản, các phần mềm phụ trợ Vi điều
khiển AT89C51 và các loại cùng họ của hãng Atmael cĩ bộ nhớ chương trình bên trong là EEPROM
là bộ nhớ cĩ thể xố là nạp được bằng tín hiệu điện. Điều này cho phép người lập trình cĩ thể thử
nghiệm, nạp chương trình vào vi điều khiển nhiều lần. Thiết bị nạp chương trình (programmer)
cho vi điều khiển này là tương đối đơn giản và cĩ thể tự làm được. Cĩ thể tham khảo tại trang chủ
của hãng Atmel tại địa chỉ www.atmel.com.
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
3
II. CẤU TRÚC CỦA VI ĐIỀU KHIỂN 8051
Các vi mạch của họ MCS-51 gồm: 8031/8032, 8051/8052, 8751/8752, 8951/8952, 892051
Vi mạch tiêu biểu của họ MCS-51 là 8031/8051 có các đặc điểm sau:
- 4 KB ROM nội (0 KB đối với 8031).
- 128 byte RAM nội.
- 4 port nhập/xuất 8 bit (I/O port).
- 2 bộ định thời 16 bit (timer).
- Mạch giao tiếp nối tiếp (serial port) 2 chiều.
- Bộ điều khiển ngắt xử lý 5 nguồn yêu cầu ngắt trong đó có 2 nguồn ngắt ngoài, 2 nguồn
ngắt bên trong từ hai timer và 1 nguồn ngắt từ kênh nối tiếp. Mức độ ưu tiên của các ngắt
được quy định cụ thể.
- 64 KB không gian bộ nhớ chương trình ngoài.
- 64 KB không gian bộ nhớ dữ liệu ngoài.
- 210 bit được địa chỉ hoá.
- Bộ nhân/chia 4 μs (với tần số thạch anh 12MHz).
Chip Bộ nhớ chương
trình trên chip
Bộ nhớ dữ liệu
trên chip
Số bộ định thời
(timer)
8031 0 KB 128 byte 2
8051 4 KB ROM 128 byte 2
8751 4 KB EPROM 128 byte 2
8951 4 KB Flash ROM 128 byte 2
8032 0 KB 256 byte 3
8052 8 KB ROM 256 byte 3
8752 8 KB EPROM 256 byte 3
8952 8 KB Flash ROM 256 byte 3
Bảng 2.1: Một số thông số của các chip tiêu biểu của họ MCS-51.
III. SƠ LƯỢC CÁC CHÂN (PINOUT) CỦA 8051
Sơ đồ chân 8031/8051:
8051
29
30
40 20
31
19
18
9
39
38
37
36
35
34
33
32
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
PSEN
ALE
VCC VSS
EA
XTAL1
XTAL2
RST
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
Hình 2.4
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
4
Sơ đồ khối của 8051:
Hình 2.5
1. Port 0
Port 0 (P0.0 ÷ P0.7) là port hai chức năng trên các chân từ 32 đến 39. Trong các thiết kế cỡ
nhỏ (không dùng bộ nhớ ngoài) nó có chức năng như các đường I/O. Đối với các thiết kế lớn
với bộ nhớ ngoài, port 0 được dồn kênh giữa bus dữ liệu (D0 ÷ D7) và byte thấp của bus địa
chỉ (A0 ÷ A7).
2. Port 1
Port 1 (P1.0 ÷ P1.7) là một port I/O trên các chân từ 1 đến 8. Port 1 không có chức năng
khác, nó chỉ được dùng cho giao tiếp với thiết bị ngoài.
3. Port 2
Port 2 (P2.0 ÷ P2.7) là port có công dụng kép trên các chân từ 21 đến 28. Nó được dùng như
các đường I/O hoặc là byte cao của bus địa chỉ (A8 ÷ A15) đối với các thiết kế dùng bộ nhớ
ngoài.
4. Port 3
Port 3 (P3.0 ÷ P3.7) là một port công dụng kép trên các chân từ 10 đến 17. Các chân của
port này vừa có chức năng là các đường I/O vừa có chức năng riêng khác tùy từng chân.
Bảng sau mô tả các chức năng riêng của từng chân:
Bit Tên Chức năng
P3.0 RXD Dữ liệu nhận cho port nối tiếp
P3.1 TXD Dữ liệu phát cho port nối tiếp
P3.2 INT0 Ngắt ngoài 0
P3.3 INT1 Ngắt ngoài 1
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
5
P3.4 T0 Ngõ vào timer/counter 0
P3.5 T1 Ngõ vào timer/counter 1
P3.6 WR Xung ghi bộ nhớ dữ liệu ngoài
P3.7 RD Xung đọc bộ nhớ dữ liệu ngoài
Bảng 2.2: Chức năng của các chân của port 3.
5. PSEN (Program Store Enable)
- PSEN là tín hiệu ra trên chân 29. Nó là tín hiệu điều khiển để cho phép đọc bộ nhớ
chương trình ngoài và thường được nối đến chân OE (Output Enable) của bộ nhớ này.
- PSEN sẽ ở mức 0 (mức tích cực) trong thời gian lấy lệnh. Các mã nhị phân của chương
trình được đọc từ bộ nhớ qua bus dữ liệu và được chốt vào thanh ghi lệnh của 8051 để giải
mã. Khi thực thi chương trình trong ROM nội, PSEN được duy trì ở mức 1 (mức không tích
cực).
6. ALE (Address Latch Enable)
- ALE là tín hiệu ra trên chân 30. Nó là tín hiệu ra cho phép chốt địa chỉ để phân kênh cho
bus dữ liệu (D0 ÷ D7) và byte thấp của bus địa chỉ (A0 ÷ A7) trên port 0: trong nửa đầu của
chu kỳ bộ nhớ, xung ALE cho phép chốt địa chỉ vào một thanh ghi bên ngoài, trong nửa sau
của chu kỳ bộ nhớ, các đường port 0 như là các đường xuất/nhập dữ liệu.
- Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số của mạch dao động trên chip và có
thể được dùng làm nguồn xung nhịp cho các thành phần khác của hệ thống. Ví dụ, nếu xung
nhịp mạch dao động trên 8051 là 12 MHz thì ALE có tần số là 2 MHz. Chỉ trừ khi thi hành
lệnh MOVX, một xung ALE sẽ bị mất đi. Chân này cũng được làm ngõ vào của xung lập
trình cho EPROM trong 8051.
7. EA (External Access)
EA là tín hiệu vào trên chân 31. Nó thường được nối với +5V (mức 1) hay GND (mức 0).
Nếu ở mức 1, 8051 thực thi chương trình từ ROM nội trong khoảng địa chỉ thấp (4 KB). Nếu
ở mức 0, 8051 chỉ thực thi chương trình từ bộ nhớ chương trình ngoài. Trong 8031, chân này
luôn được nối GND vì không có bộ nhớ chương trình trên chip.
8. RST (Reset)
RST là ngõ vào trên chân 9. Khi tín hiệu này được đưa lên mức cao (trong ít nhất là 2 chu kỳ
máy), hệ thống sẽ khởi động lại.
9. XTAL1 và XTAL2
XTAL1 và XTAL2 là ngõ vào và ngõ ra của mạch dao động trên chip ở chân 18 và 19.
Chúng thường được nối với một thạch anh ngoài và các tụ như hình 2.6 để tạo xung clock.
Tần số thạch anh thông thường là 12 MHz.
Chu kì máy (TM) = 1 / (fOSC/12) = 12 / fOSC
Nếu tần số thạch anh là 12 MHz thì chu kì máy bằng 1 μs.
Hình 2.6
10. VCC và VSS
Là các chân nguồn trên chân 40 và20. VCC = +5V, VSS nối đất.
Mạch dao
động
trên chip
fosc
XTAL
12 MHz
C2
30p
0
XTAL2
C1
30p
XTAL1
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
6
IV. CẤU TRÚC CỦA PORT I/O
Sơ đồ mạch bên trong của các chân port I/O được vẽ đơn giản như sau:
Hình 2.7
Việc ghi ra một chân port sẽ nạp dữ liệu từ bus nội vào chốt port. Ngõ ra của chốt được nối
qua một cổng đảo đến cực G của FET và ngõ ra của FET nối đến chân port. Khi ghi mức 1
đến chốt port, ngõ ra cổng đảo sẽ là mức 0 làm FET tắt, ngõ ra chân port sẽ là mức 1.
Ngược lại, khi ghi mức 0 đến chốt port sẽ làm FET dẫn nên ngõ ra chân port sẽ là mức 0.
Các câu lệnh yêu cầu hoạt động đọc-sửa-ghi (ví dụ lệnh CPL P1.5), sẽ đọc ở chân chốt port
để tránh hiểu nhầm mức điện áp ở chân port do ảnh hưởng tải. Các câu lệnh nhập một bit từ
port (ví dụ MOV C,P1.5) sẽ đọc chân port. Trong trường hợp này, chốt port phải ở mức 1,
nếu không thì FET sẽ dẫn và kéo ngõ ra xuống mức 0. Khi reset hệ thống, tất cả các chốt
port được cài bằng 1, vì thế các chân port có thể được dùng như là các ngõ nhập ngay mà
không cần phải cài các chốt port nữa. Tuy nhiên nếu một chốt port bị xoá (ví dụ lệnh CLR
P1.5), và sau đó muốn nhập vào từ chân port thì bộ chốt phải được thiết lập lên mức 1 trước
(ví dụ phải dùng lệnh SETB P1.5 trước).
Chú ý: điện trở kéo lên (pull up) không có ở port 0 (trừ khi port này làm nhiệm vụ dồn kênh
bus địa chỉ/dữ liệu). Do đó khi port này được dùng làm I/O thì cần có điện trở kéo lên bên
ngoài.
V. TỔ CHỨC BỘ NHỚ
- 8051 có không gian bộ nhớ riêng bên trong cho chương trình (ROM) và dữ liệu (RAM).
- Có thể mở rộng đến 64K bộ nhớ chương trình ngoài và 64K bộ nhớ dữ liệu ngoài (tương ứng
với 16 bit địa chỉ).
- Có 256 byte RAM nội ( địa chỉ 00H ÷ FFH):
+ 128 byte RAM nội địa chỉ 00H ÷ 7FH: là các bank (dãy) thanh ghi, vùng RAM định vị bit
và vùng RAM đa dụng.
+ 128 byte RAM nội địa chỉ 80H ÷ FFH: là các thanh ghi chức năng đặc biệt.
1. Các bank thanh ghi
- Địa chỉ từ 00H ÷ 1FH.
- Có 4 bank thanh ghi: 0, 1, 2, 3.
- Mỗi bank có 8 thanh ghi: từ R0 ÷ R7.
- Tại mỗi thời điểm, chỉ có một bank thanh ghi tích cực (thông qua việc cài các bit chọn bank
trong thanh ghi PSW). Bank thanh ghi tích cực mặc nhiên sau khi reset hệ thống là bank 0.
2. Vùng RAM định vị bit
- Địa chỉ từ 20H ÷ 2FH.
Ghi vào chốt
Chốt port
Bus nội của 8051
Vcc
chân
port
Điện trở
nội kéo
lên
Đọc
chân port
D
CLK
Q
Q
Đọc
chốt port
0
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
7
- Gồm 128 bit được định địa chỉ từ 00H đến 7FH trong các byte địa chỉ từ 20H ÷ 2FH.
- Có thể truy xuất từng byte hay từng bit.
Ý tưởng truy xuất từng bit riêng rẽ bằng phần mềm là một đặc tính mạnh của các vi điều
khiển, đặc biệt đối với các ứng dụng điều khiển. Các bit có thể được đặt, xóa, AND, OR
với một lệnh đơn.
3. Vùng RAM đa dụng
- Địa chỉ từ 30 ÷ 7FH.
- Gồm 80 byte được định địa chỉ từ 30H ÷ 7FH, được sử dụng tùy mục đích của người dùng.
Hình 2.8
Địa chỉ
byte
Địa chỉ bit
7F
30
RAM đa dụng
2F 7F 7E 7D 7C 7B 7A 79 78
2E 77 76 75 74 73 72 71 70
2D 6F 6E 6D 6C 6B 6A 69 68
2C 67 66 65 64 63 62 61 60
2B 5F 5E 5D 5C 5B 5A 59 58
2A 57 56 55 54 53 52 51 50
29 4F 4E 4D 4C 4B 4A 49 48
28 47 46 45 44 43 42 41 40
27 3F 3E 3D 3C 3B 3A 39 38
26 37 36 35 34 33 32 31 30
25 2F 2E 2D 2C 2B 2A 29 28
24 27 26 25 24 23 22 21 20
23 1F 1E 1D 1C 1B 1A 19 18
22 17 16 15 14 13 12 11 10
21 0F 0E 0D 0C 0B 0A 09 08
20 07 06 05 04 03 02 01 00
1F
18
Bank 3
17
10
Bank 2
0F
08
Bank 1
07
00
Bank thanh ghi mặc định cho
R0 – R7 (Bank 0)
RAM
Địa chỉ
byte
Địa chỉ bit
Ký hiệu
(tên)
FF
F0 F7 F6 F5 F4 F3 F2 F1 F0 B
E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC
D0 D7 D6 D5 D4 D3 D2 - D0 PSW
B8 - - - BC BB BA B9 B8 IP
B0 B7 B6 B5 B4 B3 B2 B1 B0 P3
A8 AF - - AC AB AA A9 A8 IE
A0 A7 A6 A5 A4 A3 A2 A1 A0 P2
99 Không được địa chỉ hóa bit SBUF
98 9F 9E 9D 9C 9B 9A 99 98 SCON
90 97 96 95 94 93 92 91 90 P1
8D Không được địa chỉ hóa bit TH1
8C Không được địa chỉ hóa bit TH0
8B Không được địa chỉ hóa bit TL1
8A Không được địa chỉ hóa bit TL0
89 Không được địa chỉ hóa bit TMOD
88 8F 8F 8D 8C 8B 8A 89 88 TCON
87 Không được địa chỉ hóa bit PCON
83 Không được địa chỉ hóa bit DPH
82 Không được địa chỉ hóa bit DPL
81 Không được địa chỉ hóa bit SP
80 87 86 85 84 83 82 81 80 P0
CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
8
VI. CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT
(SFRs – SPECIAL FUNCTION REGISTERS)
1. Thanh ghi tích luỹ A (Accummulator)
- Còn kí hiệu là ACC (tương ứng với địa chỉ E0H), được định địa chỉ từng bit.
- Thường là toán hạng đích trong các lệnh số học và logic, kết quả của lệnh chứa trong thanh
ghi A.
Ví dụ:
2. Thanh ghi trạng thái chương trình PSW (Program Status Word)
Địa chỉ là D0H, chứa các bit trạng thái như sau:
CY AC F0 RS1 RS0 OV - P
- Cờ nhớ CY (C)
Có hai công dụng:
+ Được đặt bằng 1 nếu có một số nhớ sinh ra bởi phép cộng hoặc có một số mượn bởi
phép trừ. Ví dụ, nếu thanh ghi tích luỹ chứa FFH, thì lệnh sau:
ADD A, #1
sẽ trả về thanh ghi A kết quả là 00H và đặt cờ nhớ C = 1.
+ Là “thanh ghi tích lũy” 1 bit trong các lệnh logic thao tác trên bit. Ví dụ, lệnh sau sẽ
AND bit 25H với cờ nhớ và đặt kết quả trở vào cờ nhớ:
ANL C, 25H
- Cờ nhớ phụ AC (Auxiliary Carry)
+ Cờ nhớ AC được đặt bằng 1 nếu có số nhớ sinh ra từ bit 3 sang bit 4 trong phép cộng.
Ví dụ:
78 0111 1000
+ 69 + 0110 1001
E1 1110 0001
+ Được dùng khi cộng các giá trị BCD.
- Cờ F0 : là một bit cờ đa dụng, được dùng tùy mục đích của người sử dụng.
- RS1 và RS0
Là các bit dùng để chọn bank thanh ghi tích cực. Chúng được xóa sau khi reset hệ thống
và được thay đổi bằng phần mềm nếu cần.
RS1 RS0 Bank
0 0 0: địa chỉ 00H ÷ 07H
0 1 1: địa chỉ 08H ÷ 0FH
1 0 2: địa chỉ 10H ÷ 17H
1 1 3: địa chỉ 18H ÷ 1FH
Bảng 2.3: Chọn bank thanh ghi.
- Cờ tràn OV (Overflow)
Được đặt bằng 1 sau một lệnh cộng hoặc lệnh trừ nếu có một phép toán bị tràn số học.
Khi các số có dấu được cộng hoặc trừ với nhau, phần mềm có thể kiểm tra bit này để
A
+
Toán hạng nguồn
=
Kết quả
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
9
xác định xem kết quả có nằm trong tầm xác định không. Khi các số không dấu được
cộng, bit OV có thể được bỏ qua. Các kết quả lớn hơn +127 hoặc lớn hơn –128 sẽ đặt bit
OV. Ví dụ, phép cộng sau bị tràn và bit OV được đặt:
Hex: 0F Thập phân: 15
+ 7F + 127
8E 142
Kết quả là một số có dấu 8EH được xem như –114, không phải là kết quả đúng (142), vì
vậy bit OV được đặt.
- Cờ kiểm tra chẵn lẻ P (Parity)
Được tự động tạo ra theo phương pháp kiểm tra chẵn đối với dữ liệu trong thanh ghi A.
+ Kiểm tra chẵn (even parity): tổng số các bit 1 trong thanh ghi A và cờ P là chẵn.
+ Kiểm tra lẻ (odd parity): tổng số các bit 1 trong thanh ghi A và cờ P là lẻ.
3. Thanh ghi B
- Địa chỉ là F0H, được định địa chỉ từng bit.
- Được dùng kèm với thanh ghi A trong các phép toán nhân, chia hay dùng như một thanh
ghi đa dụng.
4. Con trỏ stack SP (Stack Pointer)
- Stack (ngăn xếp) là vùng nhớ trên RAM mà μP dùng để lưu thông tin tạm thời.
- Con trỏ stack SP có địa chỉ là 81H, là thanh ghi chứa địa chỉ của byte dữ liệu hiện hành
trên đỉnh của stack.
- Các lệnh trên stack bao gồm các thao tác cất dữ liệu vào stack và lấy dữ liệu ra khỏi vùng
stack. Lệnh cất dữ liệu vào stack (PUSH) sẽ làm tăng nội dung SP trước khi ghi dữ liệu và
lệnh lấy dữ liệu ra khỏi vùng stack (POP) sẽ đọc dữ liệu và giảm nội dung SP. Việc cất và
lấy dữ liệu trên vùng stack tuân theo nguyên tắc First In Last Out (FILO).
- Vùng stack của 8051 được giữ trong RAM nội. Khi khởi động, nội dung mặc định của SP là
07H. Do đó vùng stack là 08H ÷ 7FH. Trong trường hợp này, bank thanh ghi 1 (có thể cả 2
và 3) sẽ không dùng được vì vùng RAM này đã được dùng làm stack. Vì vậy, cần khởi động
lại giá trị cho SP, thường lấy vùng nhớ phía trên từ 60H ÷ 7FH.
- Trước khi thực hiện một chương trình con hoặc chương trình phục vụ ngắt, địa chỉ của lệnh
kế tiếp của lệnh hiện hành sẽ được tự động lưu vào vùng stack. Sau khi thực thi xong và
thoát khỏi chương trình con hoặc chương trình phục vụ ngắt, địa chỉ của lệnh kế tiếp được
lưu trong vùng stack sẽ được đưa vào PC và chương trình sẽ tiếp tục thực thi tại điểm mà nó
đã ngưng trước đó. Trong trường hợp có nhiều chương trình con lồng nhau hoặc ngắt trong
ngắt, quy tắc FILO sẽ đảm bảo cho việc thực thi chương trình theo đúng trình tự.
5. Thanh ghi con trỏ dữ liệu DPTR (Data Pointer)
- Là thanh ghi 16 bit, gồm hai thanh ghi 8 bit là DPL (byte thấp) và DPH (byte cao).
- Được dùng để xác định địa chỉ bộ nhớ ngoài (bộ nhớ chương trình ngoài hay bộ nhớ dữ liệu
ngoài).
6. Các thanh ghi port
- Gồm 4 thanh ghi tương ứng với 4 port:
P0 Ù Port 0 : ở địa chỉ 80H
P1 Ù Port 1 : ở địa chỉ 90H
P2 Ù Port 2 : ở địa chỉ A0H
P3 Ù Port 3 : ở địa chỉ B0H
- Để truy xuất port ta truy xuất các thanh ghi port tương ứng.
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
10
- Các thanh ghi này được định địa chỉ từng bit.
Ví dụ: P1.0 : bit 0 của thanh ghi P1
P2.7 : bit 7 của thanh ghi P2
7. Các thanh ghi bộ định thời (Timer)
- 8051 có hai bộ định thời/đếm 16 bit được dùng cho việc định thời hoặc đếm sự kiện:
+ Timer 0 gồm TL0 (byte thấp) ở địa chỉ 8AH và TH0 (byte cao) ở địa chỉ 8BH.
+ Timer 1 gồm TL1 (byte thấp) ở địa chỉ 8CH và TH1 (byte cao) ở địa chỉ 8DH.
- Việc vận hành timer được điều khiển bởi thanh ghi chế độ timer TMOD (ở địa chỉ 89H) và
thanh ghi điều khiển timer TCON (ở địa chỉ 88H).
- Chỉ có TCON được định địa chỉ từng bit.
8. Các thanh ghi port nối tiếp (Serial port)
- 8051 chứa một port nối tiếp trên chip dành cho việc trao đổi thông tin với các thiết bị nối
tiếp như máy tính, modem hoặc cho việc giao tiếp với các IC khác có giao tiếp nối tiếp (các
bộ chuyển đổi A/D, các thanh ghi dịch ).
- Thanh ghi SBUF (Serial Buffer) ở địa chỉ 99H là bộ đệm nhập/xuất nối tiếp. Khi xuất dữ
liệu thì ghi lên SBUF, khi nhập dữ liệu thì đọc từ SBUF.
- 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 Control) ở địa chỉ 98H. Đây là thanh ghi được định địa chỉ
từng bit.
9. Các thanh ghi ngắt (Interrupt)
- 8051 có 5 nguồn ngắt, 2 mức ưu tiên ngắt.
- Các ngắt bị cấm sau khi reset hệ thống và sẽ được cho phép bằng cách lập trình cho thanh
ghi cho phép ngắt IE (Interrupt Enable) ở địa chỉ A8H. Đây là thanh ghi định địa chỉ từng bit.
-Việc xác lập chế độ ưu tiên ngắt được lập trình thông qua thanh ghi ưu tiên ngắt IP
(Interrupt Priority).
10. Thanh ghi điều khiển nguồn PCON (Power Control)
- Không được định địa chỉ từng bit.
- Chứa các bit điều khiển như sau:
SMOD - - - GF1 GF0 PD IDL
+ SMOD:bit tăng gấp đôi tốc độ baud của port nối tiếp nếu được đặt (SMOD = 1).
+ GF1, GF0: các bit cờ đa dụng.
+ PD: thiết lập chế độ nguồn giảm khi được đặt, chỉ thoát khi reset.
+ IDL: thiết lập chế độ nguồn nghỉ khi được đặt, chỉ thoát nếu có ngắt hoặc reset.
• Chế độ nguồn giảm (PD =1): cần cỡ 2V
+ 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ác RAM trên chip được duy trì.
+ Các chân port được duy trì ở mức logic của chúng.
+ ALE và PSEN được giữ ở mức thấp.
• Chế độ nghỉ (IDL = 1)
+ Tín hiệu clock nội khóa không cho đến CPU nhưng không khóa đối với các chức
năng ngắt, định thời và port nối tiếp.
+ Nội dung của tất cả các thanh ghi được duy trì.
+ ALE và PSEN được giữ ở mức cao.
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
11
VII. BỘ NHỚ NGOÀI
- 8051 có khả năng mở rộng bộ nhớ lên đến 64K bộ nhớ chương trình ngoài và 64K bộ nhớ dữ
liệu ngoài. Do đó có thể dùng thêm ROM, RAM và các IC giao tiếp ngoại vi như 74573, 74244,
74245 nếu cần.
- Khi dùng bộ ngớ ngoài, port 0 được dồn kênh giữa bus địa chỉ (A0 ÷ A7) và bus dữ liệu (D0 ÷
D7), port 2 thường dùng làm byte cao của bus địa chỉ (A8 ÷ A15).
- Ngõ ra ALE chốt byte thấp của địa chỉ ở mỗi nửa đầu chu kỳ bộ nhớ (nửa sau chu kỳ bộ nhớ
port 0 được dùng làm bus dữ liệu).
Hình 2.9
1. Truy xuất bộ nhớ chương trình ngoài
- Tín hiệu EA được tích cực ( EA = 0).
- Tín hiệu PSEN nối với OE để cho phép đọc bộ nhớ chương trình ngoài.
Ví dụ: Kết nối phần cứng 8051 với bộ nhớ ngoài EPROM 64K như sau:
Hình 2.10
- Trong một chu kỳ máy điển hình, ALE có 2 xung và do đó có thể đọc 2 byte của lệnh từ bộ
nhớ chương trình (nếu lệnh chỉ có 1 byte thì byte thứ hai được loại bỏ).
Giản đồ thời gian của chu kỳ tìm-nạp lệnh ở bộ nhớ chương trình ngoài như sau:
Hình 2.11
A8 ÷ A15
A0 ÷ A7 D0 ÷ D7
Port 2
Port 0
1 chu kỳ bộ nhớ
74HC373
A7-A0
A15-A8
D Q
GALE
2Port
EA
0Port
PSEN OE
EPROM
D7-D0
8051
CS
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
12
2. Truy xuất bộ nhớ dữ liệu ngoài
- Cho phép đọc/ghi bởi các tín hiệu RD / WR .
- Lệnh dùng để truy xuất bộ nhớ dữ liệu ngoài là MOVX, sử dụng DPTR hay R0/R1 để
chứa địa chỉ dữ liệu.
- RAM ngoài có thể giao tiếp với 8051 theo cùng cách như EPROM ngoại trừ đường RD nối
với đường cho phép xuất OE và đường WR nối với đường ghi WR của RAM.
- Trong trường hợp chỉ có một lượng nhỏ bộ nhớ dữ liệu ngoài (không có bộ nhớ chương
trình ngoài) có thể dùng địa chỉ 8 bit để tạo trang bộ nhớ 256 byte.
Ví dụ: Giao tiếp giữa 8051 và RAM 1K ngoài được kết nối như sau:
Hình 2.12
Giản đồ thời gian của chu kỳ đọc và ghi bộ nhớ dữ liệu ngoài như sau:
Hình 2.13
Hình 2.14
A7-A0D Q
G
74HC373
D7-D0
ALE
EA
0Port
P2.0
PSEN CS
(1KB) RAM8051
P2.1
WR
RD
WR
OE
A8
A9
NC
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
13
3. Giải mã địa chỉ
Hình 2.15
- Được dùng trong trường hợp cần phải giao tiếp nhiều ROM và/hoặc nhiều RAM. Do các
chip cùng nối vào bus dữ liệu của vi điều khiển nên cần có mạch giải mã để đảm bảo tại
mỗi thời điểm chỉ có một chip được chọn nối với bus dữ liệu, các chip khác xem như hở
mạch.
- Một IC giải mã điển hình là 74138 (giải mã 3 → 8).
4. Xếp chồng không gian bộ nhớ chương trình và dữ liệu
- Dùng RAM vừa làm bộ nhớ chương trình vừa làm bộ nhớ dữ liệu.
- Mạch trình bày ở hình sau cho phép RAM được ghi như là bộ nhớ dữ liệu và được đọc như
là bộ nhớ chương trình hoặc dữ liệu. Do đó một chương trình có thể được nạp vào RAM
(bằng cách ghi vào RAM như bộ nhớ dữ liệu) và được thực thi (bằng cách truy xuất như bộ
nhớ chương trình).
Vì PSEN được dùng để đọc bộ nhớ chương trình và RD được dùng để đọc bộ nhớ dữ liệu
nên một RAM có thể dùng làm không gian nhớ chương trình và dữ liệu bằng cách nối chân
OE tới ngõ ra cổng AND có các ngõ vào là PSEN và RD .
VIII. HOẠT ĐỘNG RESET
- 8051 được reset bằng cách giữ chân RST ở mức cao tối thiểu 2 chu kỳ máy và sau đó chuyển
về mức thấp.
- Bảng trạng thái các thanh ghi sau khi reset:
Thanh ghi Nội dung
Bộ đếm chương trình PC 0000H
Thanh ghi tích luỹ A 00H
Thanh ghi B 00H
RAM
PSEN
RD
WR
OE
WR
Hình 2.16
Bus dữ liệu
Bus địa chỉ
A0-A12
D0-D7
A0-A12
2764
EPROM
(8KB)
CS
OE
D0-D7
A0-A12
6264
RAM
(8KB)
WR
CS
OE
A14
74LS138
A
B
C
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
G1
G2A
G2B
CS
A15
VCC
A13
0
A0-A12
CS
CSCS
/WR
/RD/PSEN
Chọn các
EPROM/RAM
khác
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
14
Từ trạng thái chương trình PSW 00H
Con trỏ stack SP 07H
Con trỏ dữ liệu DPTR 0000H
Port 0 – 3 FFH
Thanh ghi ưu tiên ngắt IP xxx00000B (8031/8051)
xx000000B (8032/8052)
Thanh ghi cho phép ngắt IE 0xx00000B (8031/8051)
0x000000B (8032/8052)
Các thanh ghi định thời 00H
Thanh ghi điều khiển nối tiếp SCON 00H
Bộ đệm dữ liệu nối tiếp SBUF 00H
Thanh ghi điều khiển nguồn PCON (HMOS)
(CMOS)
0xxxxxxxB
0xxx0000B
Bảng 2.4: Trạng thái các thanh ghi sau khi reset.
- Mạch reset tiêu biểu:
IX. CÁC CẢI TIẾN CỦA 8032/8052
Các vi mạch 8032/8052 có hai cải tiến so với 8031/8051. Một là có thêm 128 byte RAM trên
chip. Các địa chỉ này trùng với các thanh ghi chức năng đặc biệt, tuy nhiên không xảy ra
xung đột vì các byte RAM này chỉ có thể truy xuất bằng cách dùng kiểu định địa chỉ gián
tiếp.
Ví dụ:
MOV A,0F0H ; chép nội dung thanh ghi B vào thanh ghi A
MOV R0,#0F0H
MOV A,@R0 ; chép nội dung tại địa chỉ RAM là F0H vào thanh ghi A
Cải tiến thứ hai là có thêm một bộ định thời 16-bit. Bộ định thời 2 này được lập trình nhờ
vào 5 thanh ghi chức năng đặc biệt thêm vào.
Thanh ghi Địa chỉ Mô tả Địa chỉ bit
T2CON C8H Điều khiển Có
RCAP2L CAH Nhận byte thấp Không
RCAP2H CBH Nhận byte cao Không
TL2 CCH Byte thấp của timer 2 Không
TH2 CDH Byte cao của timer 2 Không
Bảng 2.5: Các thanh ghi của bộ định thời 2.
+5V
8.2K
Reset
100
0
+
10uF
RST
a/ Tác động bằng tay
+
10uF
+5V
RST
8.2K
0
b/ Tác động khi mở nguồn
Hình 2.17
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
15
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 2
2.1. Giá trị của con trỏ stack (SP) của 8051 ngay sau khi khởi động hệ thống là bao nhiêu?
Vùng stack bắt đầu từ đâu?
2.2. Mô tả cách để chọn bank thanh ghi tích cực là bank 3?
2.3. Nếu tần số dao động thạch anh cấp cho 8051 là 4MHz thì thời gian của một chu kỳ máy
(TM) là bao nhiêu?
2.4. Nếu tần số dao động thạch anh cấp cho 8051 là 10MHz thì tần số của tín hiệu trên chân
ALE là bao nhiêu (nếu không dùng lệnh MOVX)?
2.5. Nếu tần số dao động thạch anh cấp cho 8051 là 8MHz thì thời gian tối thiểu mà chân
RST phải ở mức cao là bao nhiêu để tạo tín hiệu reset hệ thống?
2.6. Kể tên các tín hiệu điều khiển của 8051 được dùng để truy xuất EPROM ngoài và RAM
ngoài.
2.7. Địa chỉ bit của bit MSB tại địa chỉ byte 25H trong RAM nội của 8051 là gì?
2.8. Nêu sự khác nhau giữa chế độ nguồn nghỉ và chế độ nguồn giảm của 8051?
2.9. Xác định bảng phân vùng địa chỉ cho mỗi chip nhớ trong hệ thống sau (ghi rõ địa chỉ bắt
đầu và địa chỉ kết thúc) :
− 1 ROM 16 KB bắt đầu từ địa chỉ 0000H
− 2 RAM 8 KB bắt đầu từ địa chỉ 4000H
− 2 ROM 4 KB bắt đầu từ địa chỉ 8000H
− 4 RAM 2 KB bắt đầu từ địa chỉ A000H
− 8 RAM 1 KB bắt đầu từ địa chỉ C000H
2.10. Xác định bảng phân vùng địa chỉ cho các tín hiệu chọn chip ( CSx ) ứng với các mạch
giải mã địa chỉ sau :
2.11. Thiết kế kit 8031 với 1 chip ROM chương trình ngoài 8 KB và 2 chip RAM dữ liệu ngoài
8KB:
− Vẽ sơ đồ mạch giải mã địa chỉ tạo tín hiệu chọn chip (tích cực mức thấp) và bảng
phân vùng địa chỉ tương ứng.
− Vẽ sơ đồ kết nối hoàn chỉnh của kit trên.
2.12. Thiết kế kit 8051 với 4 chip RAM 16KB:
0CS
CS1
CS2
CS3
CS4
CS5
CS6
CS7
A10
A11
A12
A15
A14
A13
74LS138
1
2
3
15
14
13
12
11
10
9
7
6
4
5
A
B
C
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
G1
G2A
G2B
U1
Hình a
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51
16
− Vẽ sơ đồ mạch giải mã địa chỉ tạo tín hiệu chọn chip (tích cực mức thấp) và bảng
phân vùng địa chỉ tương ứng.
− Vẽ sơ đồ kết nối hoàn chỉnh của kit trên.
2.13. Thiết kế kit 8031 với 1 chip ROM chương trình ngoài 8 KB, 2 chip RAM 8 KB, 2 I/O
xuất (2 IC 74373) và 1 I/O nhập (IC 74244):
− Vẽ sơ đồ mạch giải mã địa chỉ tạo tín hiệu chọn chip (tích cực mức thấp) và bảng
phân vùng địa chỉ tương ứng.
− Vẽ sơ đồ kết nối hoàn chỉnh của kit trên.
Sơ đồ chân và bảng hoạt động tương ứng của các IC 74244 và 74373:
2.14. Thiết kế mạch giải mã và xác định bảng phân vùng địa chỉ cho bộ nhớ gồm: 2 ROM 2
KB, 1 ROM 4 KB và 1 RAM 8 KB.
2.15. Thiết kế mạch giải mã địa chỉ tạo tín hiệu chọn chip (tích cực mức thấp) cho các bộ nhớ
RAM theo bảng phân vùng địa chỉ:
Tín hiệu chọn chip Vùng địa chỉ
CS0 0000H ÷ 0FFFH
CS1 1000H ÷ 2FFFH
CS2 3000H ÷ 6FFFH
CS3 7000H ÷ EFFFH
2.16. Sử dụng IC 74138 và các cổng logic cần thiết để thiết kế mạch giải mã địa chỉ tạo tín
hiệu chọn chip (tích cực mức thấp) theo bảng phân vùng địa chỉ sau (không quan tâm đến đặc
tính truy xuất):
Tín hiệu chọn chip Vùng địa chỉ
CS0 F000H ÷ F3FFH
CS1 F400H ÷ F7FFH
CS2 F800H ÷ FBFFH
CS3 FC00H ÷ FFFFH
Các file đính kèm theo tài liệu này:
- Ch2.pdf