- Trang Chủ
- Điện - Điện tử
- Giáo trình Vi điều khiển (Nghề: Cơ điện tử - Cao đẳng): Phần 1 - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội
Xem mẫu
- ỦY BAN NHÂN DÂN THÀNH PHỐ HÀ NỘI
TRƯỜNG CAO ĐẲNG NGHỀ VIỆT NAM - HÀN QUỐC THÀNH PHỐ HÀ NỘI
TRỊNH THỊ HẠNH(Chủ biên)
TẠ VĂN BẰNG – BÙI VĂN CÔNG
GIÁO TRÌNH VI ĐIỀU KHIỂN
Nghề: Cơ điện tử
Trình độ: Cao đẳng
(Lưu hành nội bộ)
Hà Nội - Năm 2019
- LỜI NÓI ĐẦU
Để cung cấp tài liệu học tập cho học sinh - sinh viên và tài liệu cho giáo viên
khi giảng dạy, Điện tử Trường CĐN Việt Nam - Hàn Quốc thành phố Hà Nội đã
chỉnh sửa, biên soạn cuốn giáo trình “VI ĐIỀU KHIỂN” dành riêng cho học sinh -
sinh viên nghề Cơ điện tử. Đây là mô đun trong chương trình đào tạo nghề Cơ điện
tử trình độ Cao đẳng.
Nhóm biên soạn đã tham khảo các tài liệu: “vi điều khiển ” dùng cho sinh
viên các Trường Cao đẳng, Đại học kỹ thuật của tác giả. Sổ tay linh kiện điện tử
cho người thiết kế mạch. Giáo trình linh kiện điện tử và ứng dụng. Sổ tay tra cứu
các tranzito Nhật Bản (Nguyễn Kim Giao, Lê Xuân Thế Kỹ thuật VXL & lập trình
ASSEMBLY cho hệ VXL - Đỗ Xuân Tiến – NXB KH&KT - 200. Họ VĐK 8051 -
Tống Văn On & Hoàng Đức Hải - NXB LĐXH – 2001 và nhiều tài liệu khác.
Mặc dù nhóm biên soạn đã có nhiều cố gắng nhưng không tránh được những
thiếu sót. Rất mong đồng nghiệp và độc giả góp ý kiến để giáo trình hoàn thiện
hơn.
Xin chân thành cảm ơn!
Hà Nội, ngày … tháng … năm 2019
Chủ biên: Trịnh Thị Hạnh
1
- MỤC LỤC
LỜI NÓI ĐẦU ..................................................................................................... 1
MỤC LỤC ............................................................................................................ 2
GIÁO TRÌNH MÔ ĐUN ................................................................................ 4
Bài 1 .................................................................................................................. 7
Cấu trúc họ vi điều khiển 8051 ...................................................................... 7
Mục tiêu......................................................................................................... 7
1.1. Tổng quan............................................................................................... 7
1.2. Sơ đồ chân .............................................................................................. 8
1.3. Cấu trúc Port I/O .................................................................................... 9
1.4. Tổ chức bộ nhớ .................................................................................... 11
1.5. Các thanh ghi chức năng đặc biệt ........................................................ 17
1.7. Các cải tiến của 8032/8052 .................................................................. 28
1.8. Hoạt động Reset ................................................................................... 28
1.9. Thực hành ứng dụng ............................................................................ 29
Bài 2 ................................................................................................................ 36
Tập lệnh 8051................................................................................................. 36
2.1. Mở đầu ................................................................................................. 36
2.2. Các cách định địa chỉ ........................................................................... 39
2.3. Các nhóm lệnh...................................................................................... 45
2.4. Thực hành............................................................................................. 74
Bài 3 ................................................................................................................ 82
Bộ định thời.................................................................................................... 82
3.1. Mở đầu ................................................................................................. 82
3.2. Thanh ghi SFR của timer ..................................................................... 84
3.3. Các chế độ làm việc ............................................................................. 86
3.4. Nguồn cung cấp xung cho Timer ......................................................... 88
2
- 3.5. Khởi tạo và truy xuất thanh ghi Timer ................................................. 88
3.6. Thực hành............................................................................................. 91
Bài 4 ................................................................................................................ 97
Cổng nối tiếp .................................................................................................. 97
4.1. Thanh ghi điều khiển............................................................................ 97
4.2. Chế độ làm việc.................................................................................... 98
4.3. Khởi tạo và truy xuất thanh ghi PORT nối tiếp ................................. 104
4.4. Truyền thông đa xử lý ........................................................................ 106
4.5. Thực hành........................................................................................... 113
TÀI LIỆU THAM KHẢO .......................................................................... 127
3
- GIÁO TRÌNH MÔ ĐUN
Tên mô đun: Vi điều khiển
Mã số mô đun: MĐ 43
Thời gian mô đun: 60 giờ (LT: 18 giờ; TH/TT/TN/BT/TL: 42 giờ)
I. Vị trí, tính chất mô đun
- Vị trí:
Mô đun Vi điều khiển là mô đun được bố trí dạy sau khi học xong môn học
mô đun: Kỹ thuật xung số điện tử cơ bản, điện tử nâng cao, điện tử công suất, và
học trước môn vi mạch số lập trình..
- Tính chất:
Là mô đun chuyên môn nghề.
II. Mục tiêu của mô đun
- Kiến thức:
+ Vận hành được các thiết bị và dây chuyền sản xuất dùng vi điều khiển
+ Xác định được các nguyên nhân gây ra hư hỏng xảy ra trong thực tế.
- Kỹ năng
+ Kiểm tra và viết được các chương trình điều kiển.
+ Trình bày được cấu trúc, ứng dụng cả vi điều khiển trong công nghiệp
+ Kiểm tra và viết được các chương trình điều kiển.
+Vận hành được các thiết bị và dây chuyền sản xuất dùng vi điều khiển
+ Xác định được các nguyên nhân gây ra hư hỏng xảy ra trong thực tế.
- Năng lực tự chủ, trách nhiệm:
+ Rèn luyện thái độ nghiêm túc, cẩn thận, chính xác trong học tập và thực
hiện công việc
III. Nội dung mô đun
1. Nội dung tổng quát và phân bổ thời gian
4
- Thời gian
Số TT Tên các bài trong mô đun Tổng Lý Thực Kiểm
số thuyết hành tra+
1 Cấu trúc họ vi điều khiển 8051 12 6 6 0
1. Tổng quan
2. Sơ đồ chân
3. Cấu trúc Port I/O
4. Tổ chức bộ nhớ
5. Các thanh ghi chức năng đặc biệt
6. Bộ nhớ ngoài
7. Các cải tiến của 8032/8052
8. Hoạt động Reset
9. Thực hành ứng dụng
2 Tập lệnh 8051 18 6 12 1
1. Mở đầu
2. Các cách định địa chỉ
3. Các nhóm lệnh
4. Thực hành
Kiểm tra
3 Bộ định thời 18 6 12 1
1. Mở đầu
2. Thanh ghi SFR của timer
3. Các chế độ làm việc
4. Nguồn cung cấp xung cho
Timer
5. Khởi động, dừng, điều khiển
Timer
6. Thực hành
Kiểm tra
5
- 4 Cổng nối tiếp 12 11 1
1. Thanh ghi điều khiển
2. Chế độ làm việc
3. Khởi tạo và truy suất thanh ghi
PORT nối tiếp
4. Truyền thông đa xử lý
5. Thực hành
Kiểm tra
Cộng 60 18 39 3
6
- Bài 1
Cấu trúc họ vi điều khiển 8051
Mục tiêu
- Mô tả được cấu trúc họ vi điều khiển chuẩ công nghiệp
- Thực hiện truy xuất bộ nhớ dữ liệu, bộ nhớ chương trình đúng qui trình
kỹ thuật
- Thực hiện đúng kỹ thuật phương pháp mở rộng bộ nhớ ngoài.
- Trình bày được nguyên lý hoạt động của mạch reset
- Nghiêm túc, cẩn thận, chính xác trong học tập và thực hiện công việc
1.1. Tổng quan
Khoa học kỹ thuật đang ngày càng phát triển rất mạnh mẽ, các công nghệ mới
thuộc các lĩnh vực khác nhau cũng nhờ đó đã ra đời nhằm đáp ứng nhu cầu của xã
hội và kỹ thuật Vi điều khiển cũng nằm trong số đó. Hiện nay kỹ thuật Vi xử lý đã
được giảng dạy rộng rãi ở các trường Đại học và Cao đẳng trong cả nước, tuy nhiên
lĩnh vực mới Vi điều khiển vẫn đang còn rất mới mẻ, và những ứng dụng của nó
vẫn chưa được khai thác triệt để trong các hệ thống điều khiển, đo lường và điều
chỉnh của các dây chuyền công nghiệp. Qua quá trình tham gia giảng dạy tại trường
Đại học SPKT Hưng yên và thời gian học tập nâng cao ở CHLB Đức, tác giả đã tập
trung nghiên cứu và biên soạn giáo trình kỹ thuật Vi điều khiển nhằm phục vụ công
việc giảng dạy lĩnh vực này tại trường. Toàn bộ nội dung giáo trình được chia làm
2 phần. Phần 1 bao gồm các kiến thức cơ bản về phần cứng và các tập lệnh của họ
Vi điều khiển 80C51/ AT89C51. ở phần 2 tác giả tập trung trình bày phần cứng họ
Vi điều khiển 80C52/ AT89S8252 và kỹ thuật lập trình bằng hợp ngữ. Đối tượng
của quyển giáo trình này là các sinh viên ngành Điện, Điện tử, Cơ điện tử, Công
nghệ thông tin. Tuy nhiên để tiếp thu tốt nội dung từ quyển giáo trình này, người
học cần có kiến thức về kỹ thuật số, kỹ thuật mạch điện tử và đã biết qua một ngôn
ngữ lập trình cấp cao như Pascal, C…
Mặc dù đã rất cố gắng trong quá trình biên soạn, nhưng do trình độ và thời
gian còn bị hạn chế nên chắc chắn quyển giáo trình này không tránh khỏi những
thiếu sót, rất mong nhận được những ý kiến đóng góp, phê bình của bạn đọc.
7
- 1.2. Sơ đồ chân
Hình 1.1. IC 80C51/AT89C51
Hình 1.1. sơ đồ chân 8051
Chức năng của các chân tín hiệu như sau:
- P0.0 đến P0.7 là các chân của cổng 0.
- P1.0 đến P1.7 là các chân của cổng 1.
- P2.0 đến P2.7 là các chân của cổng 2
- P3.0 đến P3.7 là các chân của cổng 3
- RxD: Nhận tín hiệu kiểu nối tiếp.
- TxD: Truyền tín hiệu kiểu nối tiếp.
- /INT0: Ngắt ngoài 0.
8
- - /INT1: Ngắt ngoài 1.
- T0: Chân vào 0 của bộ Timer/Counter 0.
- T1: Chân vào 1 của bộ Timer/Counter 1.
- /Wr: Ghi dữ liệu vào bộ nhớ ngoài.
- /Rd: Đọc dữ liệu từ bộ nhớ ngoài.
- RST: Chân vào Reset, tích cực ở mức logic cao trong khoảng 2 chu kỳ máy.
- XTAL1: Chân vào mạch khuyếch đaị dao động
- XTAL2: Chân ra từ mạch khuyếch đaị dao động.
- /PSEN : Chân cho phép đọc bộ nhớ chương trình ngoài (ROM ngoài).
- ALE (/PROG): Chân tín hiệu cho phép chốt địa chỉ để truy cập bộ nhớ
ngoài, khi On-chip xuất ra byte thấp của địa chỉ. Tín hiệu chốt được kích hoạt ở
mức cao, tần số xung chốt = 1/6 tần số dao động của bộ VĐK. Nó có thể được dùng
cho các bộ Timer ngoài hoặc cho mục đích tạo xung Clock. Đây cũng là chân nhận
xung vào để nạp chương trình cho Flash (hoặc EEPROM) bên trong On-chip khi nó
ở mức thấp.
- /EA/Vpp: Cho phép On-chip truy cập bộ nhớ chương trình ngoài khi /EA=0,
nếu /EA=1 thì On-chip sẽ làm việc với bộ nhớ chương trình nội trú. Khi chân này
được cấp nguồn điện áp 12V (Vpp) thì On-chip đảm nhận chức năng nạp chương
trình cho Flash bên trong nó.
- Vcc: Cung cấp dương nguồn cho On-chip (+ 5V).
- GND: nối mát.
1.3. Cấu trúc Port I/O
1.3.1. Port 0
- Port 0 (P0.0 – P0.7) có số thứ tự chân từ 32 – 39. Port 0 có hai chức năng:
- Port xuất/nhập dữ liệu (P0.0 - P0.7) cho các thiết kế vi điều khiển không sử
dụng bộ nhớ bên ngoài.
- Bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7) cho các thiết kế vi
điều khiển có sử dụng bộ nhớ bên ngoài.
- Khi ALE = 0 thì Port 0 đóng vai trò là bus dữ liệu (D0 – D7).
9
- - Khi ALE = 1 thì Port 0 đóng vai trò là bus địa chỉ (A0 – A7).
- Cần ghi nhớ một vấn đề rất quan trọng là khi Port 0 đóng vai trò là port
xuất/nhập dữ liệu thì phải kết nối thêm các điện trở kéo lên bên ngoài (xem
hình bên).
- Ở chế độ mặc định (hay nói cách khác là sau khi vi điều khiển được reset)
thì các chân Port 0 (P0.0 - P0.7) được cấu hình là port xuất dữ liệu. Muốn các chân
Port 0 làm port nhập dữ liệu thì cần phải lập trình lại, bằng cách ghi mức logic cao
(mức 1) đến tất cả các bit của port trước khi bắt đầu nhập dữ liệu từ port.
1.3.2. Port 1
- Port 1 (P1.0 – P1.7) có số thứ tự chân từ 1 – 8. Port 1 có một chức năng:
- Port xuất/nhập dữ liệu (P1.0 – P1.7) cho các thiết kế vi điều khiển có sử
dụng hoặc không sử dụng bộ nhớ bên ngoài.
- Khác với Port 0, đối với Port 1 thì không cần phải kết nối thêm các điện trở
kéo lên bên ngoài vì nó đã được thiết kế sẵn các điện trở kéo lên bên trong.
- Ở chế độ mặc định (hay nói cách khác là sau khi vi điều khiển được reset)
thì các chân Port 1 (P1.0 – P1.7) được cấu hình là port xuất dữ liệu. Muốn các chân
Port 1 làm port nhập dữ liệu thì cần phải lập trình lại, bằng cách ghi mức logic cao
(mức 1) đến tất cả các bit của port trước khi bắt đầu nhập dữ liệu từ port.
1.3.3. Port 2
- Port 2 (P2.0 – P2.7) có số thứ tự chân từ 21 – 28. Port 2 có hai chức năng:
- Port xuất nhập dữ liệu (P2.0 – P2.7) cho các thiết kế vi điều khiển không sử
dụng bộ nhớ bên ngoài.
- Bus địa chỉ byte cao (A8 – A15) cho các thiết kế vi điều khiển có sử dụng
bộ nhớ chương trình (ROM) bên ngoài hoặc có sử dụng bộ nhớ dữ liệu (RAM) bên
ngoài có dung lượng lớn hơn 256 byte.
- Khác với Port 0, đối với Port 2 thì không cần phải kết nối thêm các điện trở
kéo lên bên ngoài vì nó đã được thiết kế sẵn các điện trở kéo lên bên trong.
- Ở chế độ mặc định (hay nói cách khác là sau khi vi điều khiển được reset)
thì các chân Port 2 (P2.0 – P2.7) được cấu hình là port xuất dữ liệu. Muốn các chân
Port 2 làm port nhập dữ liệu thì cần phải lập trình lại, bằng cách ghi mức logic cao
(mức 1) đến tất cả các bit của port trước khi bắt đầu nhập dữ liệu từ port.
10
- 1.3.4. Port 3
- Port 3 (P3.0 – P3.7) có số thứ tự chân từ 10 – 17. Port 3 có hai chức năng:
- Port xuất nhập dữ liệu (P3.0 – P3.7) cho các thiết kế vi điều khiển không sử
dụng bộ nhớ ngoài hoặc các chức năng đặc biệt.
- Các tín hiệu điều khiển cho các thiết kế vi điều khiển có sử dụng bộ nhớ
ngoài hoặc các chức năng đặc biệt.
- Khác với Port 0, đối với Port 3 thì không cần phải kết nối thêm các điện trở
kéo lên bên ngoài vì nó đã được thiết kế sẵn các điện trở kéo lên bên trong.
- Ở chế độ mặc định (hay nói cách khác là sau khi vi điều khiển được reset)
thì các chân Port 3 (P3.0 – P3.7) được cấu hình là port xuất dữ liệu. Muốn các chân
Port 3 làm port nhập dữ liệu thì cần phải lập trình lại, bằng cách ghi mức logic cao
(mức 1) đến tất cả các bit của port trước khi bắt đầu nhập dữ liệu từ port.
1.4. Tổ chức bộ nhớ
Hình 1.2: Không gian bộ nhớ của vi điều khiển 8051.
- Hầu hết các vi xử lý đều được bổ sung một không gian bộ nhớ chung cho
các chương trình và dữ liệu. Lý do ở đây là các chương trình thường được lưu trữ
11
- trên một đĩa và được tải vào RAM để thực thi, vì vậy khi đó cả dữ liệu và các
chương trình đều hiện diện trong RAM hệ thống.
- Mặt khác, các vi điều khiển thì rất hiếm khi được sử dụng như là CPU trong
các "hệ thống máy tính". Thay vào đó, chúng giữ vai trò như là thành phần trung
tâm trong các thiết kế hướng điều khiển. Hệ thống vi điều khiển có dung lượng bộ
nhớ bị giới hạn và không có đĩa lưu trữ chương trình. Chương trình điều khiển phải
được lưu trữ trong ROM.
- Vì lý do nêu trên, vi điều khiển 8051 cung cấp một không gian bộ nhớ tách
biệt cho các chương trình (mã) và dữ liệu. Như được minh họa trong Hình 2.3.1, cả
hai thành phần chương trình và dữ liệu có thể được lưu trữ vào loại bộ nhớ tương
ứng bên trong vi điều khiển, tuy nhiên khi cần thiết có thể mở rộng cả hai loại bộ
nhớ này lên, bằng cách sử dụng thêm các thành phần linh kiện bên ngoài, có dung
lượng tối đa là 64KB bộ nhớ chương trình và 64KB bộ nhớ dữ liệu.
- Bộ nhớ bên trong vi điều khiển 8051 gồm có ROM bên trong và RAM bên
trong. RAM bên trong được chia ra làm nhiều vùng khác nhau: RAM đa chức năng,
RAM định địa chỉ bit, các dãy thanh ghi và các thanh ghi chức năng đặc biệt. Hình
2.3.1 minh họa các không gian bộ nhớ bên trong và bên ngoài (bộ nhớ mở rộng)
của vi điều khiển 8051. Hình 2.3.2 minh họa chi tiết của bộ nhớ dữ liệu bên trong,
như trong hình thì không gian bộ nhớ dữ liệu bên trong được chia ra thành các
vùng như sau: các dãy thanh ghi (00H – 1FH), RAM định địa chỉ bit (20H – 2FH),
RAM đa chức năng (30H – 7FH) và các thanh ghi chức năng đặc biệt (80H –
FFH). Các vùng không gian bộ nhớ này được trình bày và phân tích như bên dưới
đây.
12
- Hình 1.3. Bộ nhớ dữ liệu bên trong của vi điều khiển 8051.
13
- 1.4.1. RAM đa chức năng
Vùng RAM đa chức năng bao gồm 80 byte, có địa chỉ từ 30H – 7FH. Tất cả
các vị trí nhớ (ô nhớ) trong vùng RAM đa chức năng này đều có thể được truy xuất
bằng cách sử dụng chế độ định địa chỉ trực tiếp, tức thời hoặc gián tiếp (chi tiết về
các chế độ định địa chỉ sẽ được trình bày rõ trong "Bài 3: Giới thiệu tập lệnh của vi
điều khiển 8051").
Xét một ví dụ đơn giản "Thực hiện thao tác chuyển nội dung của ô nhớ có địa chỉ
5FH vào thanh ghi A", có thể được thực hiện bằng các phương pháp như sau:
Phương pháp định địa chỉ trực tiếp:
MOV A, 5FH
Lệnh trên: Chuyển nội dung của ô nhớ có địa chỉ 5FH vào thanh ghi A.
Phương pháp định địa chỉ gián tiếp:
MOV R0, #5FH
MOV A, @R0
Lệnh thứ 1: Chuyển giá trị 5FH vào thanh ghi R0.
Lệnh thứ 2: Chuyển nội dung của ô nhớ có địa chỉ "được trỏ" bởi thanh ghi
R0 (trường hợp này là ô nhớ có địa chỉ 5FH) vào thanh ghi A.
1.4.2. RAM định địa chỉ bit
Tính năng truy xuất riêng lẻ từng bit một thông qua phần mềm là một tính
năng mạnh của hầu hết các vi điều khiển. Các bit có thể được đặt, xóa, AND,
OR,… chỉ bằng một lệnh duy nhất. Ngoài ra, các port xuất/nhập của vi điều khiển
8051 được định địa chỉ bit, điều này làm đơn giản hóa chương trình điều khiển giao
tiếp với các thiết bị xuất và nhập đơn bit.
Vi điều khiển 8051 có 210 vị trí nhớ được định địa chỉ bit, trong đó có 128 vị
trí nhớ có địa chỉ byte từ 20H – 2FH và phần còn lại thì nằm trong các thanh ghi
chức năng đặc biệt Các địa chỉ này có thể được truy xuất theo các byte (tương tự
như vùng RAM đa chức năng đã trình bày ở phần trên) hoặc theo các bit phụ thuộc
vào từng lệnh sử dụng.
14
- Xét một ví dụ đơn giản "Thực hiện thao tác đặt bit 29H trong RAM bên trong
(nghĩa là làm cho bit có địa chỉ 29H nhận giá trị logic cao [1])", có thể được thực
hiện bằng các phương pháp như sau:
Phương pháp định địa chỉ bit:
SETB 29H
Lệnh trên: Làm cho bit nhớ có địa chỉ 29H (bit này thuộc ô nhớ có địa chỉ 25H)
nhận giá trị logic cao [1]. Các bit nhớ còn lại lân cận bit 29H sẽ không bị ảnh hưởng.
Phương pháp định địa chỉ trực tiếp, tức thời:
MOV A, 25H
ORL A, #00000010B
MOV 25H, A
Lệnh thứ 1: Chuyển nội dung của ô nhớ có địa chỉ 25H vào thanh ghi A.
Lệnh thứ 2: Thực hiện phép OR từng bit của thanh ghi A với giá trị nhị
phân 00000010. Việc thực hiện phép OR với giá trị này là có chủ đích, vì bit 29H
là bit thứ 1 trong ô nhớ cho nên để bit này nhận giá trị logic cao [1] thì ta sẽ phải
OR với giá trị mà trong đó chỉ có bit thứ 1 có giá trị logic cao [1] và các bit còn lại
có giá trị logic thấp [0].
Lệnh thứ 3: Chuyển nội dung của thanh ghi A vào ô nhớ có địa chỉ 25H.
1.4.3. Các dãy thanh ghi
32 vị trí nhớ đầu tiên của bộ nhớ dữ liệu bên trong vi điều khiển 8051 chứa
các dãy thanh ghi. Tập lệnh của 8051 có hỗ trợ 8 thanh ghi, từ R0 đến R7, và mặc
định (sau khi vi điều khiển được reset) cho các thanh ghi này có địa chỉ tương ứng
lần lượt từ 00H – 07H. Các vị trí nhớ trong vùng nhớ này có thể được truy xuất
theo các kiểu tương tự như vùng RAM đa chức năng đã trình bày ở phần trên hoặc
theo kiểu định địa chỉ thanh ghi.
Các lệnh sử dụng các thanh ghi R0 – R7 thì ngắn gọn hơn và được thực thi
nhanh hơn các lệnh tương đương sử dụng kiểu định địa chỉ trực tiếp. Đối với các
giá trị dữ liệu thường hay được sử dụng thì nên sử dụng một trong các thanh ghi
này để lưu trữ chúng.
15
- Xét một ví dụ đơn giản "Thực hiện thao tác chuyển nội dung của ô nhớ có địa
chỉ 05H vào thanh ghi A ", có thể được thực hiện bằng các phương pháp như sau:
Phương pháp định địa chỉ thanh ghi:
MOV A, R5
Lệnh trên: Chuyển nội dung của thanh ghi R5 vào thanh ghi A, vì mặc định
thì thanh ghi R5 tương ứng với ô nhớ có địa chỉ 05H. Vì vậy thao tác của lệnh cũng
chính là chuyển nội dung của ô nhớ có địa chỉ 05H vào thanh ghi A. Tuy nhiên với
phương pháp định địa chỉ thanh ghi thì lệnh này chỉ có độ dài một byte.
- Phương pháp định địa chỉ trực tiếp:
MOV A, 05H
Lệnh trên: Chuyển nội dung của ô nhớ có địa chỉ 05H vào thanh ghi A. Tuy
nhiên với phương pháp định địa chỉ trực tiếp thì lệnh này chỉ có độ dài hai byte.
Bảng 0.1: Địa chỉ của các thanh ghi R0 – R7 tương ứng trong từng dãy
Vùng RAM dãy thanh ghi này được chia ra làm 4 dãy, mỗi dãy có 8 thanh
ghi. Bảng 1.1 minh họa mối quan hệ địa chỉ giữa các thanh ghi R0 – R7 với dãy
thanh ghi tích cực (dãy thanh ghi được chọn). Mặc định thì dãy thanh ghi tích cực
là Dãy 0 (Bank 0), việc thay đổi dãy thanh ghi tích cực có thể được thực hiện bằng
cách thay đổi giá trị của các bit chọn dãy thanh ghi (RS1 và RS0) trong thanh ghi
từ trạng thái chương trình (PSW: Program Status Word). Vấn đề này sẽ được trình
bày trong các phần tiếp theo.
16
- Ví dụ 1: Dựa vào Bảng 2.3.1, hãy cho biết mối quan hệ giữa ký hiệu
thanh ghi R4 với các ô nhớ có địa chỉ tương ứng trong dãy thanh ghi tích cực?
Nếu Dãy 0 tích cực: Thanh ghi R4 Ô nhớ có địa chỉ 04H.
Nếu Dãy 1 tích cực: Thanh ghi R4 Ô nhớ có địa chỉ 0CH.
Nếu Dãy 2 tích cực: Thanh ghi R4 Ô nhớ có địa chỉ 14H.
Nếu Dãy 3 tích cực: Thanh ghi R4 Ô nhớ có địa chỉ 1CH.
Ví dụ 2: Khi vi điều khiển 8051 thực hiện lệnh MOV R4, #1AH thì giá
trị "1AH" sẽ được chuyển vào trong ô nhớ có địa chỉ là bao nhiêu thuộc RAM bên
trong? Xét riêng cho từng trường hợp dãy thanh ghi tích cực là Dãy 0 và Dãy 3?
Hình 1.4: Minh họa việc di chuyển dữ liệu khi Dãy 0 và Dãy 3 tích cực.
1.5. Các thanh ghi chức năng đặc biệt
SFR đảm nhiệm các chức năng khác nhau trong On-chip. Chúng nằm ở
RAM bên trong On-chip, chiếm vùng không gian nhớ 128 Byte được định địa chỉ
từ 80h đến FFh. Cấu trúc của SFR bao gồm các chức năng thể hiện ở bảng 2.3 và
bảng 2.4.
Thanh Nội dung
ghi MSB LSB
IE EA - ET2 ES ET1 EX1 ET0 EX0
IP - - PT2 PS PT1 PX1 PT0 PX0
PSW CY AC FO RS1 RS0 OV - P
TMOD GAT C/(/T M1 M0 GATE C/(/T M1 M0
E ) )
TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
SCON SM0 SM1 SM2 REN TB8 RB8 TI RI
17
- PCON SMO - - - GF1 GF0 PD IDL
D
P1 T2 T2E /SS MOS MISO SCK
X I
P3 RXD TXD /INT /INT1 T0 T1 /WR /RD
0
Bảng 1.2. Chức năng riêng của từng thanh ghi trong SFR
Symbol Name Address Reset Values
* ACC Thanh ghi tích luỹ 0E0h 00000000b
*B Thanh ghi B 0F0h 00000000b
* PSW Từ trạng thái chương trình 0D0h 00000000b
SP Con trỏ ngăn xếp 81h 00000111b
DP0H Byte cao của con trỏ dữ liệu 0 82h 00000000b
DP0L Byte thấp của con trỏ dữ liệu 0 83h 00000000b
* P0 Cổng 0 80h 11111111b
* P1 Cổng 1 90h 11111111b
Symbol Name Address Reset Values
* P2 Cổng 2 0A0h 11111111b
* P3 Cổng 3 0B0h 11111111b
* IP TG điều khiển ngắt ưu tiên 0B8h xxx00000b
* IE TG điều khiển cho phép ngắt 0A8h 0xx00000b
TMOD Điều khiển kiểu Timer/Counter 89h 00000000b
* TCON TG điều khiển Timer/Counter 88h 00000000b
TH0 Byte cao của Timer/Counter 0 8Ch 00000000b
TL0 Byte thấp của Timer/Counter 0 8Ah 00000000b
TH1 Byte cao của Timer/Counter 1 8Dh 00000000b
TL1 Byte thấp của Timer/Counter 1 8Bh 00000000b
* SCON Serial Control 98h 00000000b
SBUF Serial Data Buffer 99h indeterminate
PCON Power Control 87h 0xxx0000b
* : có thể định địa chỉ bit, x: không định nghĩa
18
- 1.5.1. Thanh ghi ACC
Là thanh ghi tích luỹ, dùng để lưu trữ các toán hạng và kết quả của phép tính.
Thanh ghi ACC dài 8 bits. Trong các tập lệnh của On-chip, nó thường được quy
ước đơn giản là A.
1.5.2. Thanh ghi B
Thanh ghi này được dùng khi thực hiện các phép toán nhân và chia. Đối với
các lệnh khác, nó có thể xem như là thanh ghi đệm tạm thời. Thanh ghi B dài 8 bits.
Nó thường được dùng chung với thanh ghi A trong các phép toán nhân hoặc chia.
1.5.3. Thanh ghi SP
Thanh ghi con trỏ ngăn xếp dài 8 bit. SP chứa địa chỉ của dữ liệu hiện đang ở
đỉnh của ngăn xếp. Giá trị của nó được tự động tăng lên khi thực hiện lệnh PUSH
trước khi dữ liệu được lưu trữ trong ngăn xếp. SP sẽ tự động giảm xuống khi thực
hiện lệnh POP. Ngăn xếp có thể đặt ở bất cứ nơi nào trong RAM on-chip, nhưng
sau khi khởi động lại hệ thống thì con trỏ ngăn xếp mặc định sẽ trỏ tới địa chỉ khởi
đầu là 07h, vì vậy ngăn xếp sẽ bắt đầu từ địa chỉ 08h.
1.5.4. Thanh ghi DPTR
Thanh ghi con trỏ dữ liệu (16 bit) bao gồm 1 thanh ghi byte cao (DPH-8bit)
và 1 thanh ghi byte thấp (DPL-8bit). DPTR có thể được dùng như thanh ghi 16 bit
hoặc 2 thanh ghi 8 bit độc lập. Thanh ghi này được dùng để truy cập RAM ngoài.
1.5.5. Ports 0 to 3
P0, P1, P2, P3 là các chốt của các cổng 0, 1, 2, 3 tương ứng. Mỗi chốt gồm 8
bit. Khi ghi mức logic 1 vào một bit của chốt, thì chân ra tương ứng của cổng ở
mức logic cao. Còn khi ghi mức logic 0 vào mỗi bit của chốt thì chân ra tương ứng
của cổng ở mức logic thấp. Khi các cổng đảm nhiệm chức năng như các đầu vào thì
trạng thái bên ngoài của các chân cổng sẽ được giữ ở bit chốt tương ứng. Tất cả 4
cổng của on-chip đều là cổng I/O hai chiều, mỗi cổng đều có 8 chân ra, bên trong
mỗi chốt bit có bộ “Pullup-tăng cường” do đó nâng cao khả năng nối ghép của
cổng với tải (có thể giao tiếp với 4 đến 8 tải loại TTL).
1.5.6. Thanh ghi SBUF
Đệm dữ liệu nối tiếp gồm 2 thanh ghi riêng biệt, một thanh ghi đệm phát và
một thanh ghi đệm thu. Khi dữ liệu được chuyển tới SBUF, nó sẽ đi vào bộ đệm
phát, và được giữ ở đấy để chế biến thành dạng truyền tin nối tiếp. Khi dữ liệu
được truyền đi từ SBUF, nó sẽ đi ra từ bộ đệm thu.
19
nguon tai.lieu . vn