Giáo trình Vi điều khiển - Phạm Hùng Kim Khánh

BỘ GIÁO DỤC & ĐÀO TẠO  
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHỆ  
THÀNH PHỐ HỒ CHÍ MINH  
KHOA ĐIỆN – ĐIỆN TỬ  
--- oOo ---  
GIÁO TRÌNH  
VI ĐIỀU KHIỂN  
Tác giả: ThS. PHẠM HÙNG KIM KHÁNH  
03/2008  
Sưu tầm bởi: www.daihoc.com.vn  
Giáo trình vi xử lý  
LỜI NÓI ĐẦU  
Giáo trình Vi điều khiển được biên soạn nhằm cung cấp cho sinh viên kiến thức  
về họ vi điều khiển MCS-51, cách thức lập trình điều khiển, nạp chương trình  
và thiết kế phần cứng điều khiển thiết bị.  
Giáo trình được sử dụng cho khóa học 45 tiết dành cho sinh viên hệ đại học  
Khoa Điện Điện tử trường Đại học Kỹ thuật Công nghệ TPHCM.  
Bố cục giáo trình gồm 4 chương dựa theo đề cương môn học Kỹ thuật Vi điều  
khiển dành cho sinh viên ngành Điện Tử Viễn Thông:  
Chương 1. Tổng quan về họ vi điều khiển MCS-51  
Chương 2. Lập trình hợp ngữ  
Chương 3. Các hoạt động của họ vi điều khiển MCS-51  
Chương 4. Các ứng dụng  
Phụ lục 1: Tóm tắt tập lệnh  
Phụ lục 2: Mô tả tập lệnh  
PHẠM HÙNG KIM KHÁNH  
i
Sưu tầm bởi: www.daihoc.com.vn  
Giáo trình vi xử lý  
MỤC LỤC  
Chương 1: Tổng quan về họ MCS-51..........................................................................1  
1. Giới thiệu.....................................................................................................................1  
2. Vi điều khiển AT89C51 ..............................................................................................1  
2.1. Sơ đồ..............................................................................................................2  
2.2. Định thì chu kỳ máy ......................................................................................6  
2.3. Tổ chức bộ nhớ..............................................................................................8  
2.4. Các thanh ghi chức năng đặc biệt (SFR – Special Function Registers)......17  
2.5. Cấu trúc port................................................................................................21  
2.6. Hoạt động Reset ..........................................................................................22  
2.7. Các vấn đề khác...........................................................................................23  
Bài tập chương 1............................................................................................................34  
Chương 2: Lập trình hợp ngữ....................................................................................35  
1. Các phương pháp định địa chỉ...................................................................................35  
2. Các vấn đề liên quan khi lập trình hợp ngữ...............................................................36  
2.1. Cú pháp lệnh................................................................................................36  
2.2. Khai báo dữ liệu ..........................................................................................37  
2.3. Các toán tử...................................................................................................38  
2.4. Cấu trúc chương trình..................................................................................39  
3. Tập lệnh.....................................................................................................................41  
3.1. Nhóm lệnh chuyển dữ liệu ..........................................................................41  
3.2. Nhóm lệnh xử lý bit.....................................................................................46  
3.3. Nhóm lệnh chuyển điều khiển.....................................................................47  
3.4. Nhóm lệnh logic ..........................................................................................51  
3.5. Nhóm lệnh số học........................................................................................53  
Bài tập chương 2............................................................................................................56  
Chương 3: Các hoạt động ...........................................................................................57  
1. Hoạt động định thời (Timer / Counter) .....................................................................57  
1.1. Giới thiệu.....................................................................................................57  
1.2. Hoạt động Timer / Counter .........................................................................57  
1.3. Các thanh ghi điều khiển hoạt động............................................................58  
1.3.1. Thanh ghi điều khiển timer (Timer/Counter Control Register)......58  
1.3.2. Thanh ghi chế độ timer (TMOD – Timer/Counter Mode) .............59  
ii  
Sưu tầm bởi: www.daihoc.com.vn  
Giáo trình vi xử lý  
1.4. Các chế độ hoạt động ..................................................................................59  
1.4.1. Chế độ 0..........................................................................................60  
1.4.2. Chế độ 1..........................................................................................60  
1.4.3. Chế độ 2..........................................................................................61  
1.4.4. Chế độ 3..........................................................................................61  
1.5. Timer 2 ........................................................................................................62  
1.5.1. Các thanh ghi điều khiển Timer 2 ..................................................62  
1.5.2. Chế độ capture................................................................................64  
1.5.3. Chế độ tự động nạp lại....................................................................64  
1.5.4. Chế độ tạo xung clock ....................................................................65  
1.5.5. Chế độ tạo tốc độ baud ...................................................................66  
1.6. Các ví dụ......................................................................................................67  
2. Cổng nối tiếp (Serial port).........................................................................................71  
2.1. Các thanh ghi điều khiển hoạt động............................................................72  
2.1.1. Thanh ghi SCON (Serial port controller) .......................................72  
2.1.2. Thanh ghi BDRCON (Baud Rate Control Register) ......................73  
2.2. Tạo tốc độ baud ...........................................................................................73  
2.2.1. Tạo tốc độ baud bằng Timer 1........................................................74  
2.2.2. Tạo tốc độ baud bằng Timer 2........................................................76  
2.2.3. Bộ tạo tốc độ baud nội (Internal Baud Rate Generator).................77  
2.3. Truyền thông đa xử lý .................................................................................77  
2.4. Nhận dạng địa chỉ tự động ..........................................................................78  
2.5. Kiểm tra lỗi khung.......................................................................................79  
2.6. Các ví dụ......................................................................................................79  
3. Ngắt (Interrupt)..........................................................................................................81  
3.1. Các thanh ghi điều khiển hoạt động............................................................82  
3.1.1. Thanh ghi IE (Interrupt Enable) .....................................................82  
3.1.2. Thanh ghi IP (Interrupt Priority) ....................................................82  
3.1.3. Thanh ghi TCON (Timer/Counter Control) ...................................83  
3.2. Xử lý ngắt....................................................................................................84  
3.3. Ngắt do bộ định thời....................................................................................86  
3.4. Ngắt do cổng nối tiếp ..................................................................................89  
3.5. Ngắt ngoài ...................................................................................................91  
Bài tập chương 3............................................................................................................94  
iii  
Sưu tầm bởi: www.daihoc.com.vn  
Giáo trình vi xử lý  
Chương 4: Các ứng dụng dựa trên họ vi điều khiển MCS-51.................................95  
1. Điều khiển Led đơn ...................................................................................................95  
2. Điều khiển Led 7 đoạn ..............................................................................................98  
2.1. Cấu trúc và bảng mã hiển thị dữ liệu trên Led 7 đoạn ................................98  
2.2. Các phương pháp hiển thị dữ liệu .............................................................100  
2.2.1. Phương pháp quét .........................................................................100  
2.2.2. Phương pháp chốt .........................................................................104  
3. Điều khiển ma trận Led...........................................................................................107  
4. Điều khiển động cơ bước.........................................................................................112  
5. Điều khiển LCD (Liquid Crystal Display)..............................................................115  
6. Giao tiếp với PPI8255 .............................................................................................129  
Bài tập chương 4..........................................................................................................135  
Phụ lục 1: Soạn thảo và nạp chương trình..............................................................136  
Phụ lục 2: Mô phỏng bằng Proteus..........................................................................181  
Phụ lục 3: Tóm tắt tập lệnh ......................................................................................191  
Phụ lục 4: Mô tả tập lệnh..........................................................................................195  
iv  
Sưu tầm bởi: www.daihoc.com.vn  
Giáo trình Vi điều khiển  
Tổng quan về vi điều khiển MCS-51  
Chương 1: TỔNG QUAN VỀ VI ĐIỀU  
KHIỂN MCS-51  
Chương này giới thiệu tổng quan về họ vi điều khiển MCS-51(chủ yếu trên  
AT89C51): cấu trúc phần cứng, sơ đồ chân, các thanh ghi, đặc tính lập trình và các  
đặc tính về điện.  
1. Giới thiệu  
Họ vi điều khiển MCS-51 do Intel sản xuất đầu tiên vào năm 1980 là các IC  
thiết kế cho các ứng dụng hướng điều khiển. Các IC này chính là một hệ thống vi xử  
lý hoàn chỉnh bao gồm các các thành phần của hệ vi xử lý: CPU, bộ nhớ, các mạch  
giao tiếp, điều khiển ngắt.  
MCS-51 là họ vi điều khiển sử dụng cơ chế CISC (Complex Instruction Set  
Computer), có độ dài và thời gian thực thi của các lệnh khác nhau. Tập lệnh cung cấp  
cho MCS-51 có các lệnh dùng cho điều khiển xuất / nhập tác động đến từng bit.  
MCS-51 bao gồm nhiều vi điều khiển khác nhau, bộ vi điều khiển đầu tiên là  
8051 có 4KB ROM, 128 byte RAM và 8031, không có ROM nội, phải sử dụng bộ  
nhớ ngoài. Sau này, các nhà sản xuất khác như Siemens, Fujitsu, … cũng được cấp  
phép làm nhà cung cấp thứ hai.  
MCS-51 bao gồm nhiều phiên bản khác nhau, mỗi phiên bản sau tăng thêm  
một số thanh ghi điều khiển hoạt động của MCS-51.  
2. Vi điều khiển AT89C51  
AT89C51 là vi điều khiển do Atmel sản xuất, chế tạo theo công nghệ CMOS  
có các đặc tính như sau:  
- 4 KB PEROM (Flash Programmable and Erasable Read Only Memory), có khả  
năng tới 1000 chu kỳ ghi xoá  
- Tần số hoạt động từ: 0Hz đến 24 MHz  
- 3 mức khóa bộ nhớ lập trình  
- 128 Byte RAM nội.  
- 4 Port xuất /nhập I/O 8 bit.  
- 2 bộ Timer/counter 16 Bit.  
- 6 nguồn ngắt.  
- Giao tiếp nối tiếp điều khiển bằng phần cứng.  
- 64 KB vùng nhớ mã ngoài  
- 64 KB vùng nhớ dữ liệu ngoài.  
- Cho phép xử lý bit.  
- 210 vị trí nhớ có thể định vị bit.  
- 4 chu kỳ máy (4 µs đối với thạch anh 12MHz) cho hoạt động nhân hoặc chia.  
Phạm Hùng Kim Khánh  
Trang 1  
Sưu tầm bởi: www.daihoc.com.vn  
Giáo trình Vi điều khiển  
Tổng quan về vi điều khiển MCS-51  
- Có các chế độ nghỉ (Low-power Idle) và chế độ nguồn giảm (Power-down).  
Ngoải ra, một số IC khác của họ MCS-51 có thêm bộ định thời thứ 3 và 256  
byte RAM nội.  
2.1. Sơ đồ  
P0.0 – P0.7  
Hình 1.1 – Sơ đồ khối của AT89C51  
Sưu tầm bởi: www.daihoc.com.vn  
Phạm Hùng Kim Khánh  
Trang 2  
Giáo trình Vi điều khiển  
Tổng quan về vi điều khiển MCS-51  
AT89C51 gồm có 40 chân, mô tả như sau:  
AT89C51  
39  
38  
37  
36  
35  
34  
33  
32  
21  
22  
23  
24  
25  
26  
27  
28  
P0.0/AD0  
P0.1/AD1  
P2.0/A8  
P2.1/A9  
P0.2/AD2 P2.2/A10  
P0.3/AD3 P2.3/A11  
P0.4/AD4 P2.4/A12  
P0.5/AD5 P2.5/A13  
P0.6/AD6 P2.6/A14  
P0.7/AD7 P2.7/A15  
1
2
3
4
5
6
7
8
10  
11  
12  
13  
14  
15  
16  
17  
P1.0  
P1.1  
P1.2  
P1.3  
P1.4  
P1.5  
P1.6  
P1.7  
P3.0/RXD  
P3.1/TXD  
P3.2/INT0  
P3.3/INT1  
P3.4/T0  
P3.5/T1  
P3.6/WR  
P3.7/RD  
19  
18  
30  
29  
XTAL1  
XTAL2  
ALE/PROG  
PSEN  
31  
9
EA/VPP  
RST  
Hình 1.2 – Sơ đồ chân của AT89C51  
™ Port 0:  
Port 0 là port có 2 chức năng ở các chân 32 – 39 của AT89C51:  
- Chức năng IO (xuất / nhập): dùng cho các thiết kế nhỏ. Tuy nhiên, khi dùng  
chức năng này thì Port 0 phải dùng thêm các điện trở kéo lên (pull-up), giá trị  
của điện trở phụ thuộc vào thành phần kết nối với Port.  
Khi dùng làm ngõ ra, Port 0 có thể kéo được 8 ngõ TTL.  
Khi dùng làm ngõ vào, Port 0 phải được set mức logic 1 trước đó.  
-
Chức năng địa chỉ / dữ liệu đa hợp: khi dùng các thiết kế lớn, đòi hỏi phải sử  
dụng bộ nhớ ngoài thì Port 0 vừa là bus dữ liệu (8 bit) vừa là bus địa chỉ (8 bit  
thấp).  
Ngoài ra khi lập trình cho AT89C51, Port 0 còn dùng để nhận mã khi lập trình  
và xuất mà khi kiểm tra (quá trình kiểm tra đòi hỏi phải có điện trở kéo lên).  
Phạm Hùng Kim Khánh  
Trang 3  
Sưu tầm bởi: www.daihoc.com.vn  
Giáo trình Vi điều khiển  
Tổng quan về vi điều khiển MCS-51  
™ Port 1:  
Port1 (chân 1 – 8) chỉ có một chức năng là IO, không dùng cho mục đích khác  
(chỉ trong 8032/8052/8952 thì dùng thêm P1.0 và P1.1 cho bộ định thời thứ 3). Tại  
Port 1 đã có điện trở kéo lên nên không cần thêm điện trở ngoài.  
Port 1 có khả năng kéo được 4 ngõ TTL và còn dùng làm 8 bit địa chỉ thấp  
trong quá trình lập trình hay kiểm tra.  
Khi dùng làm ngõ vào, Port 1 phải được set mức logic 1 trước đó.  
™ Port 2:  
Port 2 (chân 21 – 28) là port có 2 chức năng:  
- Chức năng IO (xuất / nhập): có khả năng kéo được 4 ngõ TTL.  
-
Chức năng địa chỉ: dùng làm 8 bit địa chỉ cao khi cần bộ nhớ ngoài có địa chỉ  
16 bit. Khi đó, Port 2 không được dùng cho mục đích IO.  
Khi dùng làm ngõ vào, Port 2 phải được set mức logic 1 trước đó.  
Khi lập trình, Port 2 dùng làm 8 bit địa chỉ cao hay một số tín hiệu điều khiển.  
™ Port 3:  
Port 3 (chân 10 – 17) là port có 2 chức năng:  
- Chức năng IO: có khả năng kéo được 4 ngõ TTL.  
Khi dùng làm ngõ vào, Port 3 phải được set mức logic 1 trước đó.  
- Chức năng khác: mô tả như bảng 1.1  
Bảng 1.1: Chức năng các chân của Port 3  
Bit Tên  
Chức năng  
P3.0 RxD Ngõ vào port nối tiếp  
P3.1 TxD Ngõ ra port nối tiếp  
P3.2  
P3.3  
Ngắt ngoài 0  
INT0  
Ngắt ngoài 1  
INT1  
P3.4 T0  
P3.5 T1  
Ngõ vào của bộ định thời 0  
Ngõ vào của bộ định thời 1  
Tín hiệu điều khiển ghi dữ liệu lên bộ nhớ ngoài.  
P3.6  
P3.7  
WR  
RD  
Tín hiệu điều khiển đọc từ bộ nhớ dữ liệu ngoài.  
Phạm Hùng Kim Khánh  
Trang 4  
Sưu tầm bởi: www.daihoc.com.vn  
Giáo trình Vi điều khiển  
Tổng quan về vi điều khiển MCS-51  
™ Nguồn:  
Chân 40: VCC = 5V ± 20%  
Chân 20: GND  
™ PSEN (Program Store Enable):  
PSEN (chân 29) cho phép đọc bộ nhớ chương trình mở rộng đối với các ứng  
dụng sử dụng ROM ngoài, thường được nối đến chân OC (Output Control) của  
ROM để đọc các byte mã lệnh. PSEN sẽ ở mức logic 0 trong thời gian AT89C51 lấy  
lệnh.Trong quá trình này, PSEN sẽ tích cực 2 lần trong 1 chu kỳ máy.  
Mã lệnh của chương trình được đọc từ ROM thông qua bus dữ liệu (Port0) và  
bus địa chỉ (Port0 + Port2).  
Khi 8951 thi hành chương trình trong ROM nội, PSEN sẽ ở mức logic 1.  
™ ALE/PROG (Address Latch Enable / Program):  
ALE/PROG (chân 30) cho phép tách các đường địa chỉ và dữ liệu tại Port 0  
khi truy xuất bộ nhớ ngoài. ALE thường nối với chân Clock của IC chốt (74373,  
74573).  
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có  
thể được dùng làm tín hiệu clock cho các phần khác của hệ thống. Xung này có thể  
cấm bằng cách set bit 0 của SFR tại địa chỉ 8Eh lên 1. Khi đó, ALE chỉ có tác dụng  
khi dùng lệnh MOVX hay MOVC. Ngoài ra, chân này còn được dùng làm ngõ vào  
xung lập trình cho ROM nội (PROG ).  
™ EA /VPP (External Access) :  
EA (chân 31) dùng để cho phép thực thi chương trình từ ROM ngoài. Khi nối  
chân 31 với Vcc, AT89C51 sẽ thực thi chương trình từ ROM nội (tối đa 8KB), ngược  
lại thì thực thi từ ROM ngoài (tối đa 64KB).  
Ngoài ra, chân EA được lấy làm chân cấp nguồn 12V khi lập trình cho ROM.  
™ RST (Reset):  
RST (chân 9) cho phép reset AT89C51 khi ngõ vào tín hiệu đưa lên mức 1  
trong ít nhất là 2 chu kỳ máy.  
™ X1,X2:  
Ngõ vào và ngõ ra bộ dao động, khi sử dụng có thể chỉ cần kết nối thêm thạch  
anh và các tụ như hình vẽ trong sơ đồ. Tần số thạch anh thường sử dụng cho  
AT89C51 là 12Mhz.  
Phạm Hùng Kim Khánh  
Trang 5  
Sưu tầm bởi: www.daihoc.com.vn  
Giáo trình Vi điều khiển  
Tổng quan về vi điều khiển MCS-51  
Giá trị C1, C2 = 30 pF ± 10 pF  
Hình 1.3 – Sơ đồ kết nối thạch anh  
2.2. Định thì chu kỳ máy  
Một chu kỳ máy bao gồm 6 trạng thái (12 xung clock). Một trạng thái bao gồm  
2 phần ứng với 12 xung clock : Phase 1 và Phase 2. Như vậy, một chu kỳ máy bao  
gồm 12 xung clock được biểu diễn từ S1P1 đến S6P2 (State 1, Phase 1 Æ State 6,  
Phase 2). Chu kỳ lấy lệnh và thực thi lệnh mô tả như hình 1.4.  
Tín hiệu chốt địa chỉ ALE tích cực 2 lần trong một chu kỳ máy (trong khoảng  
thời gian S1P2 đến S2P1 và từ S4P2 đến S5P1). Từ đó tần số xung tại chân ALE bằng  
1/6 tần số thạch anh.  
¾ Đối với các lệnh thực thi trong 1 chu kỳ:  
- Lệnh 1 byte: được thực thi tại thời điểm S1P2 sau khi mã lệnh được chốt vào  
thanh ghi lệnh tại S1P1.  
- Lệnh 2 byte: byte thứ 2 được đọc tại thời điểm S4 và sẽ được thực thi tại thời  
điểm S4.  
¾ Đối với các lệnh thực thi trong 2 chu kỳ:  
Quá trình lấy lệnh thực hiện tại thời điểm S1 của chu kỳ đầu tiên (byte mà lệnh  
1). Nếu lệnh có nhiều hơn 1 byte thì sẽ được lấy ở các thời điểm tiếp theo giống như  
các lệnh thực thi trong 1 chu kỳ.  
Phạm Hùng Kim Khánh  
Trang 6  
Sưu tầm bởi: www.daihoc.com.vn  
Giáo trình Vi điều khiển  
Tổng quan về vi điều khiển MCS-51  
Hình 1.4 – Chu kỳ lệnh  
Phạm Hùng Kim Khánh  
Trang 7  
Sưu tầm bởi: www.daihoc.com.vn  
Giáo trình Vi điều khiển  
Tổng quan về vi điều khiển MCS-51  
2.3. Tổ chức bộ nhớ  
Bộ nhớ trong  
Bộ nhớ ngoài  
Bộ nhớ chương trình 64 KB  
ROM 4KB  
0000h – FFFFh  
0000h – 0FFFh  
Điều khiển bằng PSEN  
RAM 128 byte  
00h – 7Fh  
Bộ nhớ dữ liệu 64 KB  
0000h – FFFFh  
SFR  
Điều khiển bằng RD và WR  
80h – 0FFh  
Hình 1.5 - Các vùng nhớ trong AT89C51  
Bộ nhớ của họ MCS-51 có thể chia thành 2 phần: bộ nhớ trong và bộ nhớ  
ngoài. Bộ nhớ trong bao gồm 4 KB ROM và 128 byte RAM (256 byte trong 8052).  
Các byte RAM có địa chỉ từ 00h – 7Fh và các thanh ghi chức năng đặc biệt (SFR) có  
địa chỉ từ 80h – 0FFh có thể truy xuất trực tiếp. Đối với 8052, 128 byte RAM cao (địa  
chỉ từ 80h – 0FFh) không thể truy xuất trực tiếp mà chỉ có thể truy xuất gián tiếp (xem  
thêm trong phần tập lệnh).  
Bộ nhớ ngoài bao gồm bộ nhớ chương trình (điều khiển đọc bằng tín hiệu  
PSEN ) và bộ nhớ dữ liệu (điều khiển bằng tín hiệu  
hay WR để cho phép đọc  
RD  
hay ghi dữ liệu). Do số đường địa chỉ của MCS-51 là 16 bit (Port 0 chứa 8 bit thấp và  
Port 2 chứa 8 bit cao) nên bộ nhớ ngoài có thể giải mã tối đa là 64KB.  
2.3.1. Tổ chức bộ nhớ trong  
Bộ nhớ trong của MCS-51 gồm ROM và RAM. RAM bao gồm nhiều vùng có  
mục đích khác nhau: vùng RAM đa dụng (địa chỉ byte từ 30h – 7Fh và có thêm vùng  
80h – 0FFh ứng với 8052), vùng có thể địa chỉ hóa từng bit (địa chỉ byte từ 20h –  
2Fh, gồm 128 bit được định địa chỉ bit từ 00h – 7Fh), các bank thanh ghi (từ 00h –  
1Fh) và các thanh ghi chức năng đặc biệt (từ 80h – 0FFh).  
Phạm Hùng Kim Khánh  
Trang 8  
Sưu tầm bởi: www.daihoc.com.vn  
Giáo trình Vi điều khiển  
Tổng quan về vi điều khiển MCS-51  
™ Các thanh ghi chức năng đặc biệt (SFR – Special Function Registers):  
Bảng 1.2 – Các thanh ghi chức năng đặc biệt  
Địa  
chỉ  
byte  
Có thể  
định địa  
chỉ bit  
Không định địa chỉ bit  
F8h  
F0h  
E8h  
E0h  
D8h  
D0h  
C8h  
C0h  
B8h  
B0h  
A8h  
A0h  
98h  
90h  
88h  
80h  
B
ACC  
PSW  
(T2CON)  
(RCAP2L) (RCAP2H) (TL2) (TH2)  
IP  
SADEN  
SADDR  
SBUF  
P3  
IE  
P2  
SCON  
P1  
BRL  
BDRCON  
TCON  
P0  
TMOD TL0  
SP DPL  
TH0  
DPH  
TL1  
TH1  
AUXR CKCON  
PCON  
Các thanh ghi có thể định địa chỉ bit sẽ có địa chỉ bit bắt đầu và địa chỉ byte  
trùng nhau. Ví dụ như: thanh ghi P0 có địa chỉ byte là 80h và có địa chỉ bit bắt đầu từ  
80h (ứng với P0.0) đến 87h (ứng với P0.7). Chức năng các thanh ghi này sẽ mô tả  
trong phần sau.  
Phạm Hùng Kim Khánh  
Trang 9  
Sưu tầm bởi: www.daihoc.com.vn  
Giáo trình Vi điều khiển  
Tổng quan về vi điều khiển MCS-51  
™ RAM nội: chia thành các vùng phân biệt: vùng RAM đa dụng (30h – 7Fh), vùng  
RAM có thể định địa chỉ bit (20h – 2Fh) và các bank thanh ghi (00h – 1Fh).  
Địa chỉ byte  
Địa chỉ bit  
Chức năng  
7F  
Vùng RAM đa dụng  
30  
2F  
2E  
2D  
2C  
2B  
2A  
29  
28  
27  
26  
25  
24  
23  
22  
21  
20  
1F  
18  
7F 7E 7D 7C 7B 7A 79 78  
77 76 75 74 73 72 71 70  
6F 6E 6D 6C 6B 6A 69 68  
67 66 65 64 63 62 61 60  
5F 5E 5D 5C 5B 5A 59 58  
57 56 55 54 53 52 51 50  
4F 4E 4D 4C 4B 4A 49 48  
47 46 45 44 43 42 41 40  
3F 3E 3D 3C 3B 3A 39 38  
37 36 35 34 33 32 31 30  
2F 2E 2D 2C 2B 2A 29 28  
27 26 25 24 23 22 21 20  
1F 1E 1D 1C 1B 1A 19 18  
17 16 15 14 13 12 11 10  
0F 0E 0D 0C 0B 0A 09 08  
07 06 05 04 03 02 01 00  
Vùng có thể định địa chỉ bit  
Bank 3  
17  
10  
Bank 2  
Bank 1  
Các bank thanh ghi  
1F  
08  
07  
00  
Bank thanh ghi 0 ( mặc định cho R0-R7)  
Hình 1.6 – Sơ đồ phân bố RAM nội  
¾ RAM đa dụng:  
RAM đa dụng có 80 byte từ địa chỉ 30h – 7Fh có thể truy xuất mỗi lần 8 bit  
bằng cách dùng chế độ địa chỉ trực tiếp hay gián tiếp.  
Các vùng địa chỉ thấp từ 00h – 2Fh cũng có thể sử dụng cho mục đich như trên  
ngoài các chức năng đề cập như phần sau.  
¾ RAM có thể định địa chỉ bit:  
Vùng địa chỉ từ 20h – 2Fh gồm 16 byte (= 128 bit) có thể thực hiện giống như  
vùng RAM đa dụng (mỗi lần 8 bit) hay thực hiện truy xuất mỗi lần 1 bit bằng các lệnh  
Phạm Hùng Kim Khánh  
Trang 10  
Sưu tầm bởi: www.daihoc.com.vn  
Giáo trình Vi điều khiển  
Tổng quan về vi điều khiển MCS-51  
xử lý bit. Vùng RAM này có các địa chỉ bit bắt đầu tại giá trị 00h và kết thúc tại 7Fh.  
Như vậy, địa chỉ bắt đầu 20h (gồm 8 bit) có địa chỉ bit từ 00h – 07h; địa chỉ kết thúc  
2Fh có địa chỉ bit từ 78h – Fh.  
¾ Các bank thanh ghi:  
Vùng địa chỉ từ 00h – 1Fh được chia thành 4 bank thanh ghi: bank 0 từ 00h –  
07h, bank 1 từ 08h – 0Fh, bank 2 từ 10h – 17h và bank 3 từ 18h – 1Fh. Các bank  
thanh ghi này được đại diện bằng các thanh ghi từ R0 đến R7. Sau khi khởi động hệ  
thống thì bank thanh ghi được sử dụng là bank 0.  
Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghi được  
truy xuất bởi các thanh ghi R0 đến R7. Việc thay đổi bank thanh ghi có thể thực hiện  
thông qua thanh ghi từ trạng thái chương trình (PSW).  
Các bank thanh ghi này cũng có thể truy xuất bình thường như vùng RAM đa  
dụng đã nói ở trên.  
2.3.2. Tổ chức bộ nhớ ngoài  
MCS-51 có bộ nhớ theo cấu trúc Harvard: phân biệt bộ nhớ chương trình và dữ  
liệu. Chương trình và dữ liệu có thể chứa bên trong nhưng vẫn có thể kết nối với  
64KB chương trình và 64KB dữ liệu. Bộ nhớ chương trình được truy xuất thông qua  
chân PSEN còn bộ nhớ dữ liệu đươc truy xuất thông qua chân WR hay RD .  
Lưu ý rằng việc truy xuất bộ nhớ chương trình luôn luôn sử dụng địa chỉ 16 bit  
còn bộ nhớ dữ liệu có thể là 8 bit hay 16 bit tuỳ theo câu lệnh sử dụng. Khi dùng bộ  
nhớ dữ liệu 8 bit thì có thể dùng Port 2 như là Port I/O thông thường còn khi dùng ở  
chế độ 16 bit thì Port 2 chỉ dùng làm các bit địa chỉ cao.  
Port 0 được dùng làm địa chỉ thấp/ dữ liệu đa hợp. Tín hiệu ALE để tách byte  
địa chỉ và đưa vào bộ chốt ngoài.  
Trong chu kỳ ghi, byte dữ liệu sẽ tồn tại ở Port 0 vừa trước khi WR tích cực  
và được giữ cho đến khi WR không tích cực.Trong chu kỳ đọc, byte nhận được chấp  
nhận vừa trước khi RD không tích cực.  
Bộ nhớ chương trình ngoài được xử lý 1 trong 2 điều kiện sau:  
- Tín hiệu EA tích cực ( = 0).  
- Giá trị của bộ đếm chương trình (PC – Program Counter) lớn hơn kích thước  
bộ nhớ.  
Phạm Hùng Kim Khánh  
Trang 11  
Sưu tầm bởi: www.daihoc.com.vn  
Giáo trình Vi điều khiển  
Tổng quan về vi điều khiển MCS-51  
PCH: Program Counter High – PCL: Program Counter Low  
DPH: Data Pointer High – DPL: Data Pointer Low  
Hình 1.7 – Thực thi bộ nhớ chương trình ngoài  
Phạm Hùng Kim Khánh  
Trang 12  
Sưu tầm bởi: www.daihoc.com.vn  
Kết nối phần cứng khi thiết kế bộ nhớ ngoài mô tả như sau:  
ADDRESS BUS  
DATA BUS  
U1  
U8  
U3  
A8  
A9  
D0  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
D0  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
A0  
A1  
A2  
A3  
A4  
A5  
A6  
A7  
A0  
A1  
A2  
A3  
A4  
A5  
A6  
A7  
D0  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
21  
22  
23  
24  
25  
26  
27  
28  
39  
38  
37  
36  
35  
34  
33  
32  
2
3
4
5
6
7
8
9
19  
18  
17  
16  
15  
14  
13  
12  
10  
9
8
7
6
5
4
3
25  
24  
21  
23  
2
26  
27  
1
11  
P2.0/A8  
P2.1/A9  
P0.0/AD0  
P0.1/AD1  
D0  
Q0  
Q1  
Q2  
Q3  
Q4  
Q5  
Q6  
Q7  
A0  
A1  
A2  
A3  
A4  
A5  
A6  
A7  
O0  
O1  
O2  
O3  
O4  
O5  
O6  
O7  
12  
13  
15  
16  
17  
18  
19  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
A10  
A11  
A12  
A13  
A14  
A15  
P2.2/A10 P0.2/AD2  
P2.3/A11 P0.3/AD3  
P2.4/A12 P0.4/AD4  
P2.5/A13 P0.5/AD5  
P2.6/A14 P0.6/AD6  
P2.7/A15 P0.7/AD7  
A8  
A9  
A8  
A9  
10  
11  
12  
13  
14  
15  
16  
17  
1
2
3
4
5
6
7
8
11  
1
P3.0/RXD  
P3.1/TXD  
P3.2/INT0  
P3.3/INT1  
P3.4/T0  
P3.5/T1  
P3.6/WR  
P3.7/RD  
P1.0  
P1.1  
P1.2  
P1.3  
P1.4  
P1.5  
P1.6  
P1.7  
LE  
OE  
A10  
A11  
A12  
A13  
A14  
A15  
A10  
A11  
A12  
A13  
A14  
A15  
74HC573  
22  
20  
OE/VPP  
CE  
30  
29  
19  
18  
ALE/PROG  
PSEN  
XTAL1  
XTAL2  
28  
VCC  
31  
9
EA/VPP  
RST  
ROM 27512  
AT89C51  
Hình 1.8 – Giao tiếp bộ nhớ chương trình ngoài  
Sưu tầm bởi: www.daihoc.com.vn  
ADDRESS BUS  
DATA BUS  
U4  
U7  
U6  
A8  
A9  
D0  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
D0  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
A0  
A1  
A2  
A3  
A4  
A5  
A6  
A7  
A0  
A1  
A2  
A3  
A4  
A5  
A6  
A7  
D0  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
21  
22  
23  
24  
25  
26  
27  
28  
39  
38  
37  
36  
35  
34  
33  
32  
2
3
4
5
6
7
8
9
19  
18  
17  
16  
15  
14  
13  
12  
12  
11  
10  
9
8
7
13  
P2.0/A8  
P2.1/A9  
P0.0/AD0  
P0.1/AD1  
D0  
Q0  
Q1  
Q2  
Q3  
Q4  
Q5  
Q6  
Q7  
A0  
A1  
A2  
A3  
A4  
A5  
A6  
A7  
I/O0  
I/O1  
I/O2  
I/O3  
I/O4  
I/O5  
I/O6  
I/O7  
14  
15  
17  
18  
19  
20  
21  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
A10  
A11  
A12  
A13  
A14  
A15  
P2.2/A10 P0.2/AD2  
P2.3/A11 P0.3/AD3  
P2.4/A12 P0.4/AD4  
P2.5/A13 P0.5/AD5  
P2.6/A14 P0.6/AD6  
P2.7/A15 P0.7/AD7  
6
5
A8  
A9  
27  
26  
23  
25  
4
28  
3
31  
A8  
A9  
10  
11  
12  
13  
14  
15  
16  
17  
1
2
3
4
5
6
7
8
11  
1
P3.0/RXD  
P3.1/TXD  
P3.2/INT0  
P3.3/INT1  
P3.4/T0  
P3.5/T1  
P3.6/WR  
P3.7/RD  
P1.0  
P1.1  
P1.2  
P1.3  
P1.4  
P1.5  
P1.6  
P1.7  
LE  
OE  
A10  
A11  
A12  
A13  
A14  
A15  
A10  
A11  
A12  
A13  
A14  
A15  
74HC573  
24  
29  
22  
30  
OE  
30  
29  
19  
18  
ALE/PROG  
PSEN  
XTAL1  
XTAL2  
WE  
CE1  
CE2  
31  
9
EA/VPP  
RST  
RAM 62512  
AT89C51  
Hình 1.9 – Giao tiếp bộ nhớ dữ liệu ngoài  
Sưu tầm bởi: www.daihoc.com.vn  
ADDRESS BUS  
DATA BUS  
U5  
U10  
U9  
A8  
A9  
D0  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
D0  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
A0  
A1  
A2  
A3  
A4  
A5  
A6  
A7  
A0  
A1  
A2  
A3  
A4  
A5  
A6  
A7  
D0  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
21  
22  
23  
24  
25  
26  
27  
28  
39  
38  
37  
36  
35  
34  
33  
32  
2
3
4
5
6
7
8
9
19  
18  
17  
16  
15  
14  
13  
12  
12  
11  
10  
9
8
7
13  
P2.0/A8  
P2.1/A9  
P0.0/AD0  
P0.1/AD1  
D0  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
Q0  
Q1  
Q2  
Q3  
Q4  
Q5  
Q6  
Q7  
A0  
A1  
A2  
A3  
A4  
A5  
A6  
A7  
I/O0  
I/O1  
I/O2  
I/O3  
I/O4  
I/O5  
I/O6  
I/O7  
14  
15  
17  
18  
19  
20  
21  
A10  
A11  
A12  
A13  
A14  
A15  
P2.2/A10 P0.2/AD2  
P2.3/A11 P0.3/AD3  
P2.4/A12 P0.4/AD4  
P2.5/A13 P0.5/AD5  
P2.6/A14 P0.6/AD6  
P2.7/A15 P0.7/AD7  
6
5
A8  
A9  
27  
26  
23  
25  
4
28  
3
A8  
A9  
10  
11  
12  
13  
14  
15  
16  
17  
1
2
3
4
5
6
7
8
11  
1
P3.0/RXD  
P3.1/TXD  
P3.2/INT0  
P3.3/INT1  
P3.4/T0  
P3.5/T1  
P3.6/WR  
P3.7/RD  
P1.0  
P1.1  
P1.2  
P1.3  
P1.4  
P1.5  
P1.6  
P1.7  
LE  
OE  
A10  
A11  
A12  
A13  
A14  
A15  
A10  
A11  
A12  
A13  
A14  
A15  
74HC573  
31  
24  
29  
22  
30  
OE  
30  
29  
19  
18  
ALE/PROG  
PSEN  
XTAL1  
XTAL2  
WE  
CE1  
CE2  
31  
9
U11A  
EA/VPP  
RST  
1
2
RAM 62512  
3
AT89C51  
7408  
Hình 1.10 – Giao tiếp bộ nhớ chương trình và dữ liệu ngoài dùng chung  
Sưu tầm bởi: www.daihoc.com.vn  
Tải về để xem bản đầy đủ
pdf 194 trang baolam 22080 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Vi điều khiển - Phạm Hùng Kim Khánh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_vi_dieu_khien_pham_hung_kim_khanh.pdf