Tải bản đầy đủ (.doc) (70 trang)

đồ án kỹ thuật điện điện tử Thiết kế mạch thí nghiệm dùng Vi điều khiển 80C51 phối ghép với các thiết bị ngoại vi LCD, ADC0809, RTC DS12887 và bàn phím số HEX.

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 (839.31 KB, 70 trang )

Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
Bộ giáo dục và đào tạo cộng Hòa xã hội chủ nghĩa việt nam
Trờng đại học bách khoa hà nội
Độc lập Tự do Hạnh phúc

Nhiệm vụ
thiết kế tốt nghiệp
Họ và tên Ngô Quốc Toàn
Khoá: 4 Khoa: Điện
Ngành Điều khiển Tự động
1. Đề tài: Thiết kế mạch thí nghiệm dùng Vi điều khiển 80C51 phối ghép với
các thiết bị ngoại vi : LCD, ADC0809, RTC DS12887 và bàn phím số HEX.
2. Các số liệu ban đầu:





3. Nội dung các phần thuyết minh và tính toán:






4. Các bản vẽ đồ thị (ghi rõ các loại bản vẽ và kích thớc các bản vẽ):








5. Cán bộ hớng dẫn: Vũ Vân Hà
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
1
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
6. Ngày giao nhiệm vụ thiết kế:
7. Ngày hoàn thành nhiệm vụ:
Ngày tháng 04 năm 2006
Chủ nhiệm bộ môn cán bộ hớng dẫn
(Ký, ghi rõ họ tên) (Ký, ghi rõ họ tên)
Sinh viên đã hoàn thành
Ngày tháng 04 năm 2006
(Ký, ghi rõ họ tên)
Mục Lục
Lời cảm ơn 7
Mở đầu 8
Phần I: Tổng quan về VđK 8051 và Các thiết bị ngoại vi 9
Chơng I: Vi điều khiển 8051 9
I. Khái niệm chung về Vi điều khiển 9
I.1 Sự ra đời 9
I.2 Điểm khác biệt giữa VĐK và VXL dùng chung 9
I.3 Tiêu chuẩn lựa chọn 1 bộ vi điều khiển 10
II. Vi điều khiển 8051 10
II.1 Sơ đồ khối của 8051 10
II.2 Sơ đồ và chức năng các chân của 8051 11
II.2.1 Sơ đồ các chân 11
II.2.2 Chức năng của các chân 11
II.2.3 Cấu trúc của các cổng xuất/nhập 14
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4

2
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
II.3 Tổ chức bộ nhớ 8051 14
II.3.1 Vùng RAM đa mục đích 15
II.3.2 Vùng RAM định địa chỉ bit 15
II.3.3 Các dãy thanh ghi 15
II.3.4 Các thanh ghi chức năng đặc biệt 15
II.3.4.1 Từ trạng thái chơng trình PSW 15
II.3.4.2 Thanh ghi B 16
II.3.4.3 Con trỏ stack 16
II.3.4.4 Con trỏ dữ liệu 17
II.3.4.5 Các thanh ghi port 17
II.3.4.6 Các thanh ghi định thời TMOD và TCON 17
II.3.4.7 Thanh ghi của cổng nối tiếp 19
II.3.4.8 Các thanh ghi ngắt 20
II.3.4.9 Thanh ghi điều khiển nguồn 20
II.4 Bộ nhớ ngoài 21
II.4.1 Truy xuất bộ nhớ chơng trình ngoài 21
II.4.2 Truy xuất bộ nhớ dữ liệu ngoài 22
II.4.3 Hoạt động Reset 23
III. Tập lệnh của 8051 24
III.1 Các kiểu định địa chỉ 24
III.1.1 Định địa chỉ thanh ghi 24
III.1.2 Định địa chỉ trực tiếp 24
III.1.3 Định địa chỉ gián tiếp 25
III.1.4 Định địa chỉ tức thời 26
III.1.5 Định địa chỉ tơng đối 26
III.1.6 Định địa chỉ tuyệt đối 26
III.1.7 Định địa chỉ dài 27
III.1.8 Định địa chỉ chỉ số 27

III.2 Các loại lệnh 27
III.2.1 Lệnh số học 27
III.2.2 Các lệnh Logic 28
III.2.3 Nhóm lệnh di chuyển dữ liệu 30
III.2.4 Các lệnh xử lý bit 31
III.2.5 Các lệnh rẽ nhánh 31
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
3
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
III.2.6 Nhóm lệnh dịch, quay 33
III.2.7 Các lệnh làm việc với Stack 33
IV. Hoạt động định thời 33
IV.1 Các bộ định thời của 8051 33
IV.2 Thanh ghi chế độ bộ định thời 34
IV.2.1 Các chế độ định thời và cờ tràn 34
IV.2.1.1 Chế độ định thời 13-bit 34
IV.2.1.2 Chế độ định thời 16-bit 34
IV.2.1.3 Chế độ tự nạp lại 8-bit 34
IV.2.1.4 Chế độ định thời chia xẻ 35
IV.3 Nguồn xung clock định thời 35
V. Hoạt động ngắt 35
V.1 Tổ chức ngắt của 8051 35
V.1.1 Cho phép và không cho phép ngắt 35
V.1.2 Ưu tiên ngắt 35
V.1.3 Chuỗi vòng 36
V.2 Xử lý ngắt 36
V.3 Các vector ngắt 36
V.4 Các ngắt do port nối tiếp 36
V.5 Các ngắt ngoài 37
VI. Lập trình hợp ngữ 37

VI.1 Trình dịch hợp ngữ 37
VI.2 Khuôn dạng của chơng trình hợp ngữ 37
VI.3 Cấu trúc chơng trình 38
VI.4. Tổ chức chơng trình 38
Chơng II: Các Thiết Bị Ngoại vi 39
I. Đồng hồ thời gian thực DS12887 39
I.1 Hoạt động 40
I.2 Chức năng các chân 41
I.3 Bản đồ địa chỉ 43
I.4 Các thanh ghi điều khiển 46
I.5 Minh họa ghép nối giữa DS12887 với 8051 49
II. Thiết bị hiển thị LCD 49
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
4
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
II.1 LCD 49
II.2 Minh họa ghép nối giữa LCD với 8051 52
III. ADC0809 52
III.1 Sơ đồ các chân của ADC0809 53
III.2 Các bớc lập trình cho ADC0809 54
III.3 Minh họa ghép nối ADC0809 với 8051 55
IV.Bàn phím HEX 55
IV.1 Minh họa ghép nối bàn phím với 8051 56
V. Giải mã địa chỉ 74LS138 57
VI. Chốt địa chỉ 74HC373 57
V.1.Sơ đồ chân của 74HC373 57
V.2 Hoạt động của 74LS373 57
Phần II. Thiết kế 59
Chơng I: Thiết kế phần cứng 59
I. Mạch nguyên lý 59

II.Sơ đồ mạch 61
Chơng II: Thiết kế phần mềm 62
I. Chuơng trình quét bàn phím HEX 62
II. Đọc thời gian từ đồng hồ thời gian thực RTC DS12887 67
III. Điều khiển ADC0809 để thực hiện chuyển đổi 74
Kết luận 78
Tài liệu tham khảo 79
Lời cảm ơn
Trớc hết chúng em gửi lời cám ơn tới tập thể các thầy cô giáo bộ môn Điều
khiển tự động - Khoa điện trờng Đại học Bách khoa Hà Nội. Đã luôn giúp đỡ và
truyền đạt cho chúng em những kiến thức quý báu trong qúa trình học tập tại tr-
ờng.
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
5
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
Chúng em xin chân thành cảm ơn thầy giáo hớng dẫn Vũ Vân Hà đã nhiệt
tình hỡng dẫn chúng em trong quá trình làm đồ án .
Sinh viên thực hiện
Trịnh Mạnh Hùng
Nguyễn Xuân Linh
Ngô Quốc Toàn
mở đầu
Đề tài: Thiết kế mạch thí nghiệm dùng Vi điều khiển 80C51 phối ghép với
thiết bị ngoại vi : LCD, ADC0809, RTC DS12887 và bàn phím số HEX.
Điều khiển tự động, ngày nay đã và đang đợc ứng dụng vào rất nhiều
ngành sản xuất và cuộc sống. Từ những nhà máy, dây chuyền sản xuất cho đến
những đồ dùng phục vụ sinh hoạt nh: máy giặt, lò vi sóng
Để thực hiện việc điều khiển tự động có nhiều phơng pháp, cách thức nh
bằng máy tính, vi xử lý hay hệ điều khiển chuyên dụng. Tùy vào lĩnh vực mà lựa
chọn hệ thống điều khiển thích hợp. Với sinh viên học chuyên ngành điều khiển

tự động phải nắm bắt đợc tất cả những kiến thức cơ sở, tổng quát nhất để từ đó
có thể giải quyết các bài toán điều khiển đặt ra trong công việc sau này. Một
trong những kiến thức cần phải có đó là việc nghiên cứu và thiết kế mạch ứng
dụng sử dụng bộ vi điều khiển. Do đó chúng em đã chọn đề tài : Thiết kế mạch
thí nghiệm dùng Vi điều khiển 80C51 phối ghép với các thiết bị ngoại vi LCD,
ADC0809, RTC DS12887 và HEX-keypad.
Các công việc thực hiện:
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
6
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
Tìm hiểu về Vi điều khiển 8051, và các thiết bị ngoại vi.
Thiết kế mạch nguyên lý.
Xây dựng các bài toán điều khiển.
Phơng pháp thực hiện
Tìm hiểu các thiết bị
Vẽ mạch nguyên lý bằng phần mềm Protel
Viết phần mềm bằng hợp ngữ bằng KeilC
Phần I :tổng quan về Vi đIều khiển 8051 và các thiết bị
ngoại vi
Chơng I: Vi điều khiển 8051
I. Khái niệm chung về Vi điều khiển
I.1. Sự ra đời
Vào năm 1971 tập đoàn Intel đã giới thiệu 8080, bộ vi xử lí thành công
đầu tiên, tiếp đó không lâu Motorola, RCA, MOS Technology và Zilog cũng đã
giới thiệu các bộ vi xử lí tơng tự : 6800, 1801, 6502 và Z80. Bản thân các vi
mạch này tuy không có nhiều hiệu quả sử dụng nhng khi là một phần của một
máy tinh đơn board (Single Board Computer), chúng trở thành thành phần trung
tâm trong các sản phẩm có ích dùng để nghiên cứu và thiết kế.
Năm 1976 Intel giới thiệu bộ vi điều khiển( Micro Controller) 8748, một
chip tơng tự nh các bộ vi xử lí và là chip đầu tiên trong họ vi điều khiển MCS-

48. 8748 là một vi mạch chứa trên 17000 transistor bao gồm một CPU, 1Kbyte
EPROM, 64 byte RAM, 27 chân xuất nhập và một bộ định thời 8 bit. Sự ra đời
của IC này và các IC khác của họ MCS-48 đã nhanh chóng trở thành chuẩn công
nghiệp trong các ứng dụng hớng điều khiển (Control Oriented Application).
Độ phức tạp, kích thớc và khả năng của bộ vi điều khiển đợc tăng thêm
một bậc quan trọng vào năm 1980 khi Intel công bố chip 8051, bộ vi điều khiển
đầu tiên của họ vi điều khiển MCS-51. So với 8048, chip 8051 chứa trên 60000
transistor bao gồm 4Kbyte ROM, 128 byte RAM, 32 đờng xuất nhập, 1 port nối
tiếp và 2 bộ định thời 16 bit. Vi điều khiển 8051 cũng nh họ vi điều khiển MCS-
51 là một trong những bộ vi điều khiển 8-bit mạnh và linh hoạt nhất, đã trở
thành bộ vi điều khiển hàng đầu trong những năm gần đây.
I.2 Điểm khác biệt giữa vi điều khiển và vi xử lý dùng chung
Những bộ vi xử lý dùng chung thờng gặp nh họ Intel x86 (8086, 80286,
80386, 80486, Pentium ) hoặc họ 680x0 của Motorola (6800, 68010, 68020,
68030, 68040). Những bộ vi xử lý này không có RAM, ROM và không có các
port I/O trên chip, do đó khi sử dụng thiết kế hệ thống phải bổ sung thêm RAM,
ROM, I/O và các bộ định thời (Timer/Counter) ngoài để cho chúng hoạt động
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
7
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
đợc. Tuy việc này làm cho hệ thống cồng kềnh, phức tạp và giá thành cao hơn
nhng chúng lại có u điểm là linh hoạt hơn so với vi điều khiển.
Trong khi đó với vi điều khiển nó có sẵn : 1 CPU( bộ vi xử lý) cùng 1 l-
ợng cố định RAM, ROM, các cổng I/O và Timer/Counter đợc tích hợp tất cả
trên cùng 1 chip.
I.3 Tiêu chuẩn lựa chọn 1 bộ vi điều khiển
Hiện nay có nhiều loại vi điều khiển, với loại vi điều khiển 8bit có 4 loại
chính sau: 6811 (Motorola), 8051 (Intel), Z8 (Zilog) và PIC16x (Micro
Technology). Mỗi loại trên đều có 1 tập lệnh và thanh ghi riêng nên chúng đều
không tơng thích lẫn nhau. Ngoài ra còn có những bộ vi điều khiển 16bit và

32bit, vì thế để lựa chọn bộ vi điều khiển trong thiết kế cần phải dựa trên những
tiêu chuẩn sau:
1. Đáp ứng nhu cầu tính toán của bài toán 1 cách hiệu quả về giá
thành và đầy đủ chức năng có thể nhìn thấy đợc:
a. Tốc độ: tốc độ lớn nhất mà bộ vi điều khiển hỗ trợ là
bao nhiêu?
b. Kiểu đóng vỏ: kiểu DIP (Dual In-line Package) hay
QFP (Quadrangle Flat Package). Đây là điều quan
trọng đối với yêu cầu về không gian, kiểu lắp ráp và
tạo mẫu cho sản phẩm.
c. Công suất tiêu thụ.
d. Dung lợng RAM, ROM trên chip.
e. Số cổng vào/ra và Timer/Counter trên chip.
f. Giá thành trên 1 đơn vị sản phẩm.
2. Công cụ phát triển phần mềm.
3. Nguồn cung cấp các bộ vi điều khiển: tức khả năng sẵn sàng
đáp ứng về số lợng trong hiện tại và tơng lai.
II. Vi điều khiển 8051
Vi điều khiển 8051 là thành viên đầu tiên của họ MCS-51 của Intel, sau
đố các nhà sản xuất IC khác nh Siemens, Advanded Devices, Phillips đợc cấp
phép làm nhà cung cấp thứ 2 cho các chip của họ MCS-51.
II.1 Sơ đồ khối của 8051
Chip 8051 có các đặc trng cơ bản sau:
- 4 Kbyte ROM
- 128 Byte RAM
- 4 I/O port 8bit
- 1 bộ điều khiển ngắt ( Interrupt Control)
- 1 Mạch dao động nội (Oscillatior)
- 1 bộ điều khiển bus (Bus Control)
- 2 Timer 16bit

- Mạch giao tiếp nối tiếp
- Không gian nhớ chơng trình (mã) ngoài 64Kbyte
- Không gian nhớ dữ liệu ngoài 64Kbyte
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
8
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
- Bộ xử lý bit
- 210 vị trí nhớ đợc định địa chỉ
- Nhân/chia trong 4às
Hình 1: Sơ đồ khối của chip 8051
II.2 Sơ đồ và chức năng các chân của 8051
II.2.1 Sơ đồ các chân : Hình 2: Sơ đồ các chân của 8051
II.2.2 Chức năng của các chân
a. Port 0 : Port 0 (các chân từ 32 39) có 2 công dụng: có thể đợc sử dụng
làm nhiệm vụ xuất/nhập hoặc trở thành bus địa chỉ và bus dữ liệu đa hợp.
b. Port 1: Port 1 (các chân từ 1 8) chỉ có 1 công dụng là xuất/nhập.
c. Port 2: Port 2 (các chân từ 21 28) có 2 công dụng: hoặc làm nhiệm vụ
xuất/nhập hoặc là byte địa chỉ cao của bus địa chỉ 16-bit.
d. Port 3: Port 3 (các chân 10 17) có 2 công dụng. Khi không hoạt động
xuất/nhập, các chân của Port 3 có nhiều chức năng riêng.
Bit Tên Địa chỉ
bit
Chức năng
P3.0
RXD
B0H
Chân nhận dữ liệu của port nối tiếp
P3.1
TXD
B1H

Chân phát dữ liệu của port nối tiếp
P3.2
0INT
B2H Ngõ vào ngắt ngoài 0
P3.3
1INT
B3H Ngõ vào ngắt ngoài 1
P3.4
T0
B4H Ngõ vào của Timer/Counter 0
P3.5 T1 B5H Ngõ vào của Timer/Counter 0
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
9
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
P3.6
WR
B6H Điều khiển ghi bộ nhớ dữ liệu ngoài
P3.7
RD
B7H Điều khiển đọc bộ nhớ dữ liệu ngoài
Hình 2: Sơ đồ các chân của 8051
e. Chân
PSEN
(Program Store Enable) : (chân 29) đây là tín hiệu điều
khiển cho phép truy xuất bộ nhớ chơng trình ngoài. Chân này thờng đợc
nối với chân cho phép xuất OE (Output Enable) của EPROM (hoặc
ROM) để cho phép đọc các byte lệnh. Tín hiệu
PSEN

ở mức logic 0 trong

suốt thời gian tìm và nạp lệnh. Khi thực thi chơng trình ở ROM nội ,
PSEN
đợc duy trì ở mức logic 1 (logic không tích cực).
f. Chân ALE (chân 30): chân xuất tín hiệu cho phép chốt địa chỉ (Address
Latch Enable) để giải đa hợp (Demultiplexing) bus dữ liệu và bus địa chỉ.
Tín hiệu ALE có tần số f=1/6 f
osc
(f
osc
: tần số của bộ dao động bên trong
8051) và có thể đợc dùng làm xung clock cho các phần còn lại của hệ
thống. Chân ALE còn đợc dùng để nhận xung ngõ vào lập trình cho
EPROM.
g. Chân truy xuất ngoài
EA
(chân 31) : ngõ vào này có thể đợc nối +5
V
(mức logic 1) hoặc nối đất (mức logic 0). Nếu chân này có mức logic 1:
8051 thực thi chơng trình trong ROM nội, còn khi ở mức logic 0 thì 8051
thực thi chơng trình chứa ở bộ nhớ ngoài. Các phiên bản EPROM của
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
10
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
8051 còn sử dụng chân
EA

làm chân nhận điện áp cấp điện 21
V
cho việc
lập trình EPROM nội.

h. Chân RESET (chân 9): đây là ngõ vào xóa chính (Master reset) của
8051, dùng để thiết lập lại trạng thái ban đầu cho hệ thống hay gọi tắt là
Reset hệ thống. Khi ngõ vào này đợc treo ở mức logic 1 tối thiểu là 2 chu
kỳ máy, các thanh ghi bên trong 8051 đợc nạp các giá trị thích hợp cho
việc khởi động lại hệ thống.
i. XTAL1 và XTAL2 ( chân 18 và 19): Mạch dao động bên trong chip
8051 đợc ghép với thạch anh bên ngoài ở hai chân XTAL1 và XTAL2
(chân 18 và 19). Tần số danh định của thạch anh là 12 MHz cho hầu hết
các chip của họ MCS-51. XTAL1: Ngõ vào đến mạch khuếch đại đảo của
mạch dao động. XTAL2: Ngõ ra từ mạch khuếch đại đảo của mạch dao
động.
j. Chân Vcc (chân 40) lấy nguồn nuôi +5
V
để cấp cho chip.
k. Chân Vss ( chân 20) chân nối đất.
II.2.3. Cấu trúc của các cổng xuất/nhập.
Việc ghi đến một chân của port sẽ nạp dữ liệu bộ chốt điều khiển của
port, ngõ ra Q của bộ chốt điều khiển của một transistor trờng và transistor này
nối với chân của port. Khả năng fanout của port 1,2,3 là 4 tải vi mạch TTL loại
schottky công suất thấp còn của port 0 là 8 tải loại LS.
Lu ý: khi điện trở kéo lên sẽ không có ở port 0 (trừ khi port làm nhiệm vụ
của bus địa chỉ/dữ liệu đa hợp). Do vậy một điện trở kéo lên bên ngoài phải đợc
cần đến. Giá trị của điện trở này phụ thuộc vào đặc tính ngõ vào của thành phần
ghép nối với chân của port.
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
11
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
II.3 Tổ chức bộ nhớ 8051
8051 có không gian bộ nhớ riêng cho chơng trình và dữ liệu: cả 2 bộ nhớ
chơng trình và dữ liệu đều đặt bên trong chip, tuy nhiên vẫn có thể mở rộng bộ

nhớ chơng trình và bộ nhớ dữ liệu bằng cách sử dụng chip nhớ bên ngoài với
dung lợng tối đa 64Kbyte cho bộ nhớ chơng trình và bộ nhớ dữ liệu.
Bộ nhớ nội trong chip bao gồm cả RAM và ROM. RAM trên chip bao gồm
vùng RAM đa chức năng, vùng RAM với từng bit đợc định địa chỉ, dãy thanh
ghi (bank register) và các thanh ghi chức năng đặc biệt SFR (special function
register). Hai đặc tính đáng lu ý là :
a. các thanh ghi và các port xuất/nhập đợc định địa chỉ theo kiểu
ánh xạ bộ nhớ (memory mapped) và đợc truy xuất nh một vị trí
nhớ trong bộ nhớ
b. vùng stack thờng trú trong RAM trên chip (RAM nội) thay vì ở
trong RAM ngoài nh các bộ vi xử lý.
II.3.1 Vùng RAM đa mục đích
Vùng RAM đa mục đích có 80 byte đặt ở địa chỉ từ 30H đến 7FH, bên d-
ới vùng này từ địa chỉ 00H đến 2FH là vùng nhớ có thể đợc sử dụng tơng tự. Bất
kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể đợc truy xuất tự do
bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp.
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
12
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
II.3.2. Vùng RAM định địa chỉ bit
8051 chứa 210 vị trí bit đợc định địa chỉ trong đó 128 bit chứa trong các
byte ở địa chỉ từ 20H đến 2FH (16 byte x 8 bit = 128 bit) và phần còn lại chứa
trong các thanh ghi đặc biệt. Ngoài ra 8051 còn có các port xuất/nhập có thể
định địa chỉ từng bit, điều này làm đơn giản việc giao tiếp bằng phần mềm với
các thiết bị xuất/nhập đơn bit.
II.3.3 Các dãy thanh ghi
32 vị trí thấp nhất của bộ nhớ nội chứa các dãy thanh ghi . Các lệnh của
8051 hỗ trợ 8 thanh ghi từ R0 đến R7 thuộc dãy 0 (bank 0). Đây là dãy mặc
định sau khi reset hệ thống. Các thanh ghi này ở các địa chỉ từ 00H đến 07H.
Lệnh sử dụng các thanh ghi từ R0 đến R7 là các lệnh ngắn và thực hiện nhanh

hơn so với các lệnh tơng đơng sử dụng kiểu định địa chỉ trực tiếp. Các giá trị dữ
liệu thờng đợc sử dụng nên chứa trong các thanh ghi này. Dãy thanh ghi đang đ-
ợc sử dụng gọi là dãy thanh ghi tích cực.
II.3.4 Các thanh ghi chức năng đặc biệt (SFR)
Cũng nh các thanh ghi từ R0 đến R7, ta có 21 thanh ghi chức năng đặc
biệt SFR chiếm phần trên của RAM nội từ địa chỉ 80H đến FFH. Ta cần lu ý là
không phải tất cả 128 địa chỉ từ 80H đến FFH đều đợc định nghĩa mà chỉ có 21
địa chỉ đợc định nghĩa.
II.3.4.1 Từ trạng thái chơng trình PSW ( Program Status Word)
Địa chỉ byte: D0H
7 6 5 4 3 2 1 0
CY AC F0 RS1 RS0 OV - P
Bit Ký
hiệu
Địa chỉ Mô tả bit
PSW.7 CY D7H
Cờ nhớ (carry flag). Cờ này đợc set nếu có bit nhớ từ
bit 7 trong phép cộng hoặc đợc set nếu có bit mợn
cho bit 7 trong phép trừ
PSW.6 AC D6H
Cờ nhớ phụ. Cờ này đợc set trong phép cộng nếu có
bit nhớ từ bit 3 sang bit 4 hoặc nếu kết quả trong 4
bit thấp nằm trong khoảng từ 0AH 0FH
PSW.5 F0 D5H Cờ O, cờ này dành cho ngời sử dụng
PSW.4 RS1 D4H Chọn dãy thanh ghi (bit 1)
PSW.3 RS0 D3H Chọn dãy thanh ghi (bit 0)
00 = bank 0 : địa chỉ từ 00H 07H
01 = bank 1 : địa chỉ từ 08H 0FH
10 = bank 2 : địa chỉ từ 10H 17H
11 = bank3 : địa chỉ từ 18H 1FH

PSW.2 OV D2H
Cờ tràn (Overflow flag), cờ này đợc set sau khi cộng
hoặc trừ nếu có 1 số tràn số học (nghĩa là tràn trên
các phép toán số có dấu: kết quả của phép toán lớn
hơn +127 hoặc nhỏ hơn -128)
PSW.1 D1H Dự trữ
PSW.0 P D0H
Cờ kiểm tra chẵn/lẻ. Cờ này đợc set hoặc clear bởi
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
13
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
phần cứng sau mỗi 1 chu kỳ lệnh, để chỉ ra rằng có 1
số chẵn hoặc số lẻ bit 1 trong thanh chứa
II.3.4.2 Thanh ghi B
Thanh ghi B ở địa chỉ F0H đợc dùng chung với thanh chứa A trong các
phép toán nhân, chia. Lệnh MUL AB nhân 2 số 8 bit không dấu chứa trong A và
B và chứa kết quả 16 bit vào cặp thanh ghi B, A (thanh chứa A cất byte thấp và
thanh ghi B cất byte cao).
Lệnh chia DIV AB chia A bởi B, thơng số cất trong thanh chứa A và d số cất
trong thanh ghi B. Thanh ghi B còn đợc xử lý nh một thanh ghi nháp. Các bit đ-
ợc định địa chỉ của thanh ghi B có địa chỉ từ F0H đến F7H.
II.3.4.3 Con trỏ stack (Stack pointer)
Con trỏ stack SP (stack pointer) là 1 thanh ghi 8 bit ở địa chỉ 81H. SP chứa
địa chỉ của dữ liệu hiện đang ở đỉnh của stack. Các lệnh liên quan đến stack bao
gồm lệnh cất dữ liệu vào stack và lệnh lấy dữ liệu ra khỏi stack. Việc cất vào
stack làm tăng SP trớc khi ghi dữ liệu và việc lấy dữ liệu ra khỏi stack sẽ giảm
SP. Vùng stack của 8051 đợc giữ trong RAM nội và đợc giới hạn đến các địa
chỉ truy xuất đợc bởi kiểu định địa chỉ gián tiếp. Các lệnh PUSH và POP sẽ cất
dữ liệu vào stack và lấy dữ liệu từ stack, các lệnh gọi chơng trình con (ACALL,
LCALL) và lệnh trở về (RET, RETI) cũng cất và phục hồi nội dung của bộ đếm

chơng trình PC (program counter).
II.3.4.4 Con trỏ dữ liệu DPTR
Con trỏ dữ liệu DPTR (data pointer) đợc dùng để truy xuất bộ nhớ chơng
trình ngoài hoặc bộ nhớ dữ liệu ngoài. DPTR là một thanh ghi 16 bit có địa chỉ
là 82H (DPL, byte thấp) và 83H (DPH, byte cao).
II 3.4.5 Các thanh ghi port
Các port xuất/nhập của 8051 bao gồm Port 0 tại địa chỉ 80H, Port 1 tại
địa chỉ 90H, Port 2 tại địa chỉ A0H và Port 3 tại địa chỉ B0H. Tất cả các port đều
đợc định địa chỉ từng bit nhằm cung cấp các khả năng giao tiếp mạnh.
II.3.4.6 Các thanh ghi định thời TMOD (Timer Mode Register) và TCON
(Timer/Counter Control Register)
8051 có 2 bộ đếm/định thời (counter/timer) 16 bit để định các khoảng
thời gian hoặc để đếm các sự kiện.
Bộ định thời 0 có địa chỉ 8AH (TL0, byte thấp) và 8CH (TH0, byte cao).
Bộ định thời 1 có địa chỉ 8BH (TL1, byte thấp) và 8DH (TH1, byte cao).
Hoạt động của bộ định thời đợc thiết lập bởi thanh ghi chế độ định thời TMOD
(Timer Mode Register) ở địa chỉ 88H. Chỉ có TCON đợc định địa chỉ từng bit.
TMOD : có chức năng điều khiển chọn chế độ định thời/đếm. Địa chỉ byte là
89H, không đợc định địa chỉ bit
7 6 5 4 3 2 1 0
GATE
TC /
M1 M0 GATE
TC /
M1 M0
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
14
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
GATE : Bit điều khiển cổng. Khi bit TRx trong TCON đợc set = 1 và
GATE = 1 thì bộ Timer/Counter chỉ hoạt động trong khi INTx ở mức cao (điều

khiển cứng). Khi GATE = 0 bộ Timer/Counter chỉ hoạt động khi TRx =1 (điều
khiển mềm).
TC /
: bit chọn chức năng đếm (counter) hay định thời (timer). Khi
TC /
= 0 bộ Timer/Counter hoạt động định thời (dùng xung clock nội của hệ thống).
Khi
TC /
= 1, Timer/Counter hoạt động đếm (dùng xung clock nhận từ ngõ vào
Tx).
M1, M0 : Bit chọn chế độ
M1 M0 Chế độ
0 0 0 Bộ định thời 13 bit
0 1 1 Bộ định thời/đếm 16 bit
1 0 2 Bộ định thời/đếm 8 bit tự động nạp lại
1 1 3 Bộ định thời 0: TL0 là bộ định thời/đếm 8 bit đợc điều
khiển bởi các bit điều khiển bộ định thời 0. TH0 là bộ
định thời 8 bit đợc điều khiển bởi các bit điều khiển bộ
định thời 1.
Bộ định thời/đếm 1 ngng hoạt động
TCON : có chức năng điều khiển bộ định thời/đếm. Địa chỉ byte là 88H, có
định địa chỉ bit
7 6 5 4 3 2 1 0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Ký hiệu Vị trí Địa chỉ Mô tả
TF1 TCON.7 8FH
Cờ tràn bộ định thời 1 : đợc set bởi phần cứng khi
bộ định thời/đếm bị tràn, xóa bằng phần mềm
hoặc bởi phần cứng khi trình phục vụ ngắt đợc trỏ
đến

TR1 TCON.6 8EH Bit điều khiển bộ định thời 1 hoạt động, đợc
set/clear bởi phần mềm.
TF0 TCON.5 8DH Cờ tràn bộ định thời 0
TR0 TCON.4 8CH Bit điều khiển bộ định thời 0 hoạt động
IE1 TCON.3 8BH
Cờ ngắt ngoài 1, tác động cạnh. Đợc set bởi phần
cứng khi phát hiện có ngắt ngoài tác động cạnh,
đợc xóa bởi phần cúng khi ngắt đã đợc xử lý
IT1 TCON.2 8AH
Bit điều khiển chọn loại ngắt, đợc set/xóa để xác
định ngắt ngoài thuộc loại tác động cạnh âm
(xuống) hay tác động mức thấp
IE0 TCON.1 89H Cờ ngắt ngoài 0, tác động cạnh
IT0 TCON.0 88H Bit điều khiển chọn loại ngắt
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
15
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
II.3.4.7 Thanh ghi của cổng nối tiếp (Serial Port)
Bên trong 8051 có một port nối tiếp để truyền thông với các thiết bị nối
tiếp nh các thiết bị đầu cuối hoặc modem, hoặc để giao tiếp với các IC khác có
mạch giao tiếp nối tiếp (nh các thanh ghi dịch chẳng hạn). Chế độ hoạt động của
cổng nối tiếp đợc thiết lập bằng cách ghi từ điều khiển lên thanh ghi chọn chế
độ SCON( Serial Port Control Register). SCON có địa chỉ byte là 98H, định địa
chỉ bit.
7 6 5 4 3 2 1 0
SM0 SM1 SM2 REN TB8 RB8 TI RI
Ký hiệu Vị trí Địa chỉ Mô tả
SM0 SCON.7 9FH Bit chọn chế độ
SM1 SCON.6 9EH Bit chọn chế độ
SM2 SCON.5 9DH Bit này cho phép truyền thông đa xử lý ở các

chế độ 2 & 3. Trong chế độ 2 hoặc 3 nếu
SM2 = 1, RT sẽ không đợc tích cực nếu bit
nhận đợc thứ 9 (RB8) bằng = 0. Trong chế độ
1, nếu SM2 = 1, RI sẽ không đợc tích cực nếu
ta không nhân đợc bit stop hợp lệ.
REN SCON.4 9CH
Cho phép thu. Việc set hoặc xóa bit này bởi
phần mềm sẽ cho phép hoặc không cho phép
hoạt động thu.
TB8 SCON.3 9BH Bit phát 8, bit thứ 9 đợc phát ở các chế độ 2
& 3. Bit này đợc set hoặc xóa bằng phần
mềm.
RB8 SCON.2 9AH Bit thu 8. Trong các chế độ 2 & 3, RB8 là bit
dữ liệu thứ 9 thu đợc. Trong chế độ 1, nếu
SM2 = 0, RB8 là bit stop thu đợc. Trong chế
độ 0, RB8 không đợc sử dụng.
TI SCON.1 99H Cờ ngắt phát, cờ này đợc set bởi phần cứng ở
cuối thời gian phát bit thứ trong chế độ 0
hoặc ở giữa thời gian của bit stop trong các
chế độ khác. Cờ TI phải đợc xóa bằng phần
mềm.
RI SCON.0 98H
Cờ ngắt thu, cờ này đợc set bởi phần cứng ở
cuối thời gian thu bit thứ 8 trong chế độ 0
hoặc ở giữa thời gian của bit stop trong các
chế độ khác. Cờ RI phải đợc xóa bởi phần
mềm.
SM0 SM1 Chế độ Mô tả Tốc độ baud
0 0 0 Thanh ghi dịch
f

osc
ữ 12
0 1 1 8-bit UART Thay đổi
1 0 2 9-bit UART
f
osc
ữ 64 hoặc f
osc
ữ 32
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
16
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
1 1 3 9-bit UART Thay đổi
II.3.4.8 Các thanh ghi ngắt
8051 có cấu trúc ngắt với 2 mức u tiên và 5 nguyên nhân ngắt (5 source,
2 priority level interrupt structure). Các ngắt bị vô hiệu hóa sau khi reset hệ
thống và sau đó đợc cho phép bằng cách ghi vào thanh ghi cho phép ngắt IE
(Interrupt Enable register) ở địa chỉ A8H. Mức u tiên ngắt đợc thiết lập qua
thanh ghi u tiên ngắt IP (Interrupt Priority register) ở địa chỉ B8H. Cả 2 thanh
ghi này đều đợc định địa chỉ từng bit.
II.3.4.9 Thanh ghi điều khiển nguồn
Thanh ghi điều khiển nguồn PCON (Power Control Register) có địa chỉ
87H chứa các bit điều khiển đợc tóm tắt trong bảng sau đây
Bit Ký hiệu Mô tả
7 SMOD
Tăng gấp đôi tốc độ baud. Nếu bộ định thời 1 đợc dùng để
tạo ra tốc độ baud và SMOD = 1, tốc độ baud đợc tăng gấp
đôi khi Port nối tiếp đợc sử dụng ở các chế độ 1, 2 hoặc 3.
6 - Dự trữ
5 - Dự trữ

4 - Dự trữ
3 GF1 Bit cờ đa mục đích 1
2 GF0 Bit cờ đa mục đích 0
1 PD
Bit chế độ nguồn giảm. Việc set bit này bằng 1 tác động
đến thao tác nguồn giảm trong các phiên bản CMOS của
8051.
0 IDL
Bit chế độ nghỉ. Việc set bit này bằng 1 tác động đến chế
độ nghỉ trong các phiên bản CMOS của 8051.

Chế độ nguồn giảm
Lệnh thiết lập bit PD bằng 1 sẽ là lệnh sau cùng đợc thực thi trớc khi đi
vào chế độ nguồn giảm. ở chế độ nguồn giảm :
(1) mạch dao động trên chip ngừng hoạt động
(2) mọi chức năng ngừng hoạt động
(3) nội dung của RAM trên chip đợc duy trì
(4) các chân port duy trì mức logic của chúng
(5) ALE và PSEN đợc giữ ở mức thấp. Chỉ ra khỏi chế độ này bằng cách
reset hệ thống.
Trong suốt thời gian ở chế độ nguồm giảm, Vcc có điện áp là 2
V
. Cần phải giữ
cho Vcc không thấp hơn sau khi đạt đợc chế độ nguồn giảm và cần phục hồi
Vcc = 5
V
tối thiểu 10 chu kỳ dao động trớc khi chân RST đạt mức thấp lần nữa.

Chế độ nghỉ
Lệnh thiết lập bit IDL bằng 1 sẽ là lệnh sau cùng đợc thực thi trớc khi đi

vào chế độ nghỉ. ở chế độ nghỉ, tín hiệu clock nội đợc khóa không cho đến CPU
nhng không khóa đối với các chức năng ngắt, định thời và port nối tiếp. Trạng
thái của CPU đợc duy trì và nội dung của tất cả các thanh ghi cũng đợc giữ
không đổi. Các chân port cũng đợc duy trì các mức logic của chúng. ALE và
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
17
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
PSEN đợc giữ ở mức cao. Chế độ nghỉ kết thúc bằng cách cho phép ngắt hoặc
bằng cách reset hệ thống. Cả hai cách vừa nêu đều xóa bit IDL.
II.4 Bộ nhớ ngoài
Các bộ vi điều khiển cần có khả năng mở rộng các tài nguyên trên chip,
cấu trúc của MCS-51 cho ta khả năng mở rộng không gian bộ nhớ chơng trình
đến 64K và không gian bộ nhớ dữ liệu đến 64K. ROM và RAM ngoài đợc thêm
vào khi cần. Các IC giao tiếp ngoại vi cũng có thể đợc thêm vào để mở rộng khả
năng xuất / nhập. Chúng trở thành một phần của không gian bộ nhớ dữ liệu
ngoài bằng cách sử dụng cách định địa chỉ kiểu I/O ánh xạ bộ nhớ. Khi bộ nhớ
ngoài đợc sử dụng, port 0 không làm nhiệm vụ của port xuất /nhập, port này trở
thành bus địa chỉ (A0-A7) và bus dữ liệu (D0-D7) đa hợp. Ngõ ra ALE chốt
byte thấp của địa chỉ ở thời điểm bắt đầu mỗi một chu kỳ bộ nhớ ngoài. Port 2
thờng làm byte cao của bus địa chỉ .
II.4.1 Truy xuất bộ nhớ chơng trình ngoài
Bộ nhớ chơng trình ngoài là bộ nhớ chỉ đọc đợc cho phép bởi tín hiệu
PSEN
. Khi có 1 EROM ngoài đợc sử dụng thì port 0 và port 2 đều không còn là
các port xuất/ nhập.
Một chu kỳ máy của 8051 có 12 chu kỳ dao động. Nếu một dao động trên chip
có tần số 12 MHz, một chu kỳ dài 1às. trong một chu kỳ máy điển hình, ALE
có hai xung và 2 byte của lệnh đợc đọc từ bộ nhớ chơng trình.
II.4.2 Truy xuất bộ nhớ dữ liệu ngoài
Bộ nhớ dữ liệu ngoài là bộ nhớ đọc/ghi đợc cho phép bởi các tín hiệu

RD

WR
ở các chân P3.7 và P3.6, lệnh dùng để truy xuất bộ nhớ dữ liệu ngoài là
MOVX, sử dụng hoặc con trỏ dữ liệu 16 bit DPTR hoặc R0, R1 làm thanh ghi
chứa địa chỉ.
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
18
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
RAM có thể giao tiếp với 8051 theo cùng cách nh EPROM nhng khác là
đờng
RD
nối với đờng cho phép xuất
OE
của RAM và
WR
nối với đờng ghi
W
của RAM. Các kết nối với bus dữ liệu và bus địa chỉ giống EPROM, và dung l-
ợng RAM ngoài lên đến 64K đợc kết nối với 8051.
Nếu có nhiều EPROM hoặc nhiều RAM hoặc cả 2 giao tiếp với 8051 ta
cần phải có thêm bộ giải mã địa chỉ. Một IC giải mã điển hình là 74HC138 đợc
dùng với các ngõ ra đợc nối với các ngõ chọn chip
CS
của các IC nhớ.
II.4.3 Hoạt động Reset
8501 đợ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. RST có thể tác động bằng tay hoặc đợc tác động
khi cần nguồn bằng cách dùng một mạch RC. Quan trọng nhất trong các thanh
ghi này có lẽ là thanh ghi PC đợc nạp 0000H. Khi RST trở lại mức thấp, việc

thực hiện chơng trình luôn luôn bắt đầu ở vị trí đầu tiên trong bộ nhớ chơng
trình: địa chỉ 0000H. Nội dung của RAM trên chip không bị ảnh hởng bởi hoạt
động của Reset.
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
19
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
Hai mạch dùng reset hệ thống :
a)Reset bằng tay b) Reset khi cấp nguồn
iiI. Tập lệnh của 8051
Tập lệnh của MCS-51 đợc tối u hóa cho các ứng dụng điều khiển 8 bit.
Nhiều kiểu định địa chỉ cô đọng và nhanh chóng để truy xuất RAM nội đợc
dùng đến nhằm tạo thuận lợi cho các thao tác trên các cấu trúc dữ liệu nhỏ. Tập
lệnh cũng hỗ trợ các biến 1 bit cho phép quản lý bit trực tiếp trong các hệ logic
và điều khiển có yêu cầu xử lý bit.
Các lệnh của 8051 có các opcode 8 bit, do vậy số lệnh có thể lên đến 256
lệnh (thực tế có 255 lệnh, 1 lệnh không đợc định nghĩa). Ngoài opcode, một số
lệnh còn có thêm 1 hoặc 2 byte nữa cho dữ liệu hoặc địa chỉ. Tập lệnh có 139
lệnh 1 byte, 92 lệnh 2 byte và 24 lệnh 3 byte.
iiI.1 Các kiểu định địa chỉ
Vi điều khiển 8051 có 8 kiểu định địa chỉ
- Thanh ghi (Register)
- Trực tiếp (Direct)
- Gián tiếp (Indirect)
- Tức thời (Immediate)
- Tơng đối (Relative)
- Tuyệt đối (Absolute)
- Dài (Long)
- Chỉ số (Indexed)
III.1.1 Định địa chỉ thanh ghi (Register Addressing)
8051 cho phép truy xuất 8 thanh ghi làm việc, đợc đánh số từ R0

R7. Các lệnh sử dụng kiểu định địa chỉ thanh ghi đợc mã hóa bằng các dùng 3
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
20
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
bit thấp nhất của opcode( của lệnh) để chỉ ra 1 thanh ghi bên trong không gian
địa chỉ logic này. Vậy : 1 mã chức năng + địa chỉ toán hạng 1 lệnh ngắn 1
byte.
III.1.2 Định địa chỉ trực tiếp (Direct addressing)
Kiểu định địa chỉ trực tiếp đợc sử dụng để truy xuất các biến nhớ hoặc
các thanh ghi trên chip. Một byte thêm vào tiếp theo opcode dùng để xác định
địa chỉ. Trong 8051 có 128 byte bộ nhớ RAM. Bộ nhớ RAM đợc gán địa chỉ từ
00H đến FFH và đợc phân chia nh sau:
- Các ngăn nhớ từ 00H đến 1FH đợc gán cho các dãy thanh ghi và ngăn
xếp.
- Các ngăn nhớ từ 20H đến 2FH đợc dành cho không gian định địa chỉ bit
để lu dữ liệu theo từng bit.
- Các ngăn nhớ từ 30H đến 7FH là không gian để lu dữ liệu có kích thớc
1 byte.
Chế độ định địa chỉ trực tiếp có thể truy cập toàn bộ không gian của bộ
nhớ RAM. Tuy nhiên, chế độ này thờng đợc dùng để truy cập các ngăn nhớ
RAM từ 30H đến 7FH, vì thực tế đối với không gian nhớ dành cho dãy thanh
ghi thì đã đợc truy cập bằng tên thanh ghi nh R0- R7. ở chế độ định địa chỉ trực
tiếp , địa chỉ ngăn nhớ RAM chứa dữ liệu là toán hạng của lệnh .
Ví dụ :
MOV R0, 40 ; sao nội dung ngăn nhớ 40H của RAM vào R0
MOV R4, 7FH ; chuyển nội dung ngăn nhớ 7FH vào R4 .
Một ứng dụng quan trọng của chế độ định địa chỉ trực tiếp là ngăn xếp. Trong
họ 8051, chỉ có chế độ định địa chỉ trực tiếp là đợc phép cất và lấy dữ liệu từ
ngăn xếp.
III.1.3 Định địa chỉ gián tiếp (Indirect addressing)

ở chế độ này, thanh ghi đợc dùng để trỏ đến dữ liệu có trong bộ nhớ. Nếu
dữ liệu có trên chip CPU thì chỉ các thanh ghi R0 và R1 mới đợc sử dụng, và nh
vậy cũng có nghĩa là không thể dùng các thanh ghi R2-R7 để trỏ đến địa chỉ của
toán hạng ở chế độ định địa chỉ này. Nếu R0 và R1 đợc dùng làm con trỏ, nghĩa
là chúng lu địa chỉ của ngăn nhớ RAM thì trớc các thanh ghi cần đặt dấu "@"
nh các ví dụ sau:
MOV A, @R0 ; chuyển ngăn nhớ RAM có địa chỉ ở R0 vào A
MOV @R1, B ; chuyển B vào ngăn nhớ RAM có địa chỉ ở R1
Chú ý: ở đây R0 cũng nh R1 đều có dấu "@" đứng trớc. Nếu không có dấu "@"
đứng trớc thì đó là lệnh chuyển nội dung thanh ghi R0 và R1 chứ không phải dữ
liệu ngăn nhớ có địa chỉ trong R0 và R1. Một trong những u điểm của chế độ
định địa chỉ gián tiếp là cho phép truy cập dữ liệu linh hoạt hơn so với chế độ
định địa chỉ trực tiếp. Tuy nhiên R0 và R1 là các thanh ghi 8 bit, nên chúng chỉ
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
21
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
đợc phép truy cập đến các ngăn nhớ RAM trong, từ địa chỉ 30H đến 7FH và các
thanh ghi SFR. Trong thực tế, có nhiều trờng hợp cần truy cập dữ liệu đợc cất ở
RAM ngoài hoặc không gian ROM trên chip. Trong những trờng hợp đó chúng
ta cần sử dụng thanh ghi 16 bit DPTR.
III.1.4 Định địa chỉ tức thời (Immediate addressing)
Khi toán hạng là một hằng số thay vì là một biến, hằng số này có thể đa
vào lệnh và đây là byte dữ liệu tức thời.
Trong hợp ngữ, các toàn hạng tức thời đợc nhận biết nhờ vào ký tự '# ' đặt trớc
chúng. Toán hạng này có thể là một hằng số học, một biến hoặc một biểu thức
số học sử dụng các hằng số, các ký hiệu và các toán tử. Trình dịch hợp ngữ tính
giá trị và thay thế dữ liệu tức thời vào trong lệnh.
Ví dụ lệnh : MOV A, #12 ;Nạp giá trị 12(OCH) vào thanh chứa A
Tất cả các lệnh sử dụng kiểu định địa chỉ tức thời đều sử dụng hằng dữ liệu 8 bit
làm dữ liệu tức thời. Có một ngoại lệ khi ta khởi động con trỏ dữ liệu 16-bit

DPTR, hằng địa chỉ 16 bit đợc cần đến.
III.1.5 Định địa chỉ tơng đối (Relative addressing)
Kiểu định địa chỉ tơng đối chỉ đợc sử dụng cho các lệnh nhảy. Một địa
chỉ tơng đối là một giá trị 8 bit có dấu. Giá trị này đợc cộng với một bộ đếm ch-
ơng trình để tạo ra địa chỉ của lệnh tiếp theo cần thực thi. Định địa chỉ tơng đối
có điểm lợi là cung cấp cho ta mã không phụ thuộc vào vị trí, nhng lại có điểm
bất lợi là các đích nhảy bị giới hạn trong tầm.
III.1.6 Định địa chỉ tuyệt đối (Absolute addressing)
Kiểu định địa chỉ này đợc sử dụng với các lệnh ACALL và AJMP. Đây là
các lệnh 2 byte cho phép rẽ nhánh chơng trình trong trang 2k hiện hành của bộ
nhớ chơng trình bằng cách cung cấp 11 bit thấp của địa chỉ đích. Trong đó có 3
bit cao (A8-A10) và 8 bit thấp (A0-A7) thành lập byte thứ 2 của lệnh.
III.1.7 Định địa chỉ dài (Long addressing)
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
22
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
Kiểu định địa chỉ dài chỉ đợc dùng cho các lệnh LCALL và LJMP. Các
lệnh 3 byte này chứa địa chỉ đích 16 bit. Lợi ích của kiểu định địa chỉ này là sử
dụng hết toàn bộ không gian nhớ chơng trình 64K, nhng lại có điểm bất lợi là
lệnh dài đến 3-byte và phụ thuộc vào vị trí.
III.1.8 Định địa chỉ chỉ số (Indexed addressing)
Chế độ định địa chỉ chỉ số đợc sử dụng rộng rãi khi truy cập các phần tử
dữ liệu của bảng trong không gian ROM chơng trình của 8051. Lệnh đợc dùng
cho mục đích này là "MOVC A, @A+DPTR". Thanh ghi 16 bit DPTR và thanh
ghi A đợc dùng để tạo ra địa chỉ của phần tử dữ liệu đợc lu trong ROM trên
chip. ở lệnh này, nội dung của A đợc cộng với nội dung thanh ghi 16- bit DPTR
để tạo ra địa chỉ 16 bit.
III.2 Các loại lệnh
III.2.1 Lệnh số học
ADD A, source Cộng toán hạng A với nguồn.

A, Rn
(A) (A) + (Rn)
A, Direct
(A) (A) + (Direct)
A, @Ri
(A) (A) + ((Ri))
A, #data
(A) (A) + #data
ADDC A, source Cộng có cờ nhớ (add with carry)
A, Rn
(A) (A) + (C)+ (Rn)
A, Direct
(A) (A) + (C)+ (Direct)
A, @Ri
(A) (A) + (C)+ ((Ri))
A, #data
(A) (A) + (C)+ #data
SUBB A, source Trừ số có mợn
A, Rn
(A) (A) - (C) - (Rn)
A, Direct
(A) (A) - (C) - (Direct)
A, @Ri
(A) (A) - (C) - ((Ri))
A, #data
(A) (A) - (C) - #data
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
23
Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội
INC Byte Tăng bởi 1

A
(A) (A) + 1
Rn
(Rn) (Rn) + 1
Direct
(Direct) (Direct) + 1
@Ri
((Ri)) ((Ri)) + 1
DEC Byte Giảm bởi 1
A
(A) (A) - 1
Rn
(Rn) (Rn) - 1
Direct
(Direct) (Direct) - 1
@Ri
((Ri)) ((Ri)) 1
MUL A B Nhân
(B) High byte of (A) x (B) : byte cao của kết
quả phép nhân đợc chứa trong thanh ghi B
(A) Low byte of (A) x (B) : byte thấp của
kết quả nhân đợc chứa trong thanh ghi A.
DIV A B Chia
(A) Quotient of (A) / (B) : thơng số của phép
chia đợc chứa trong thanh ghi A.
(B) Remainder of (A) / (B) : phần d đợc
chứa trong thanh ghi B.
III.2.2 Các lệnh Logic
ANL
ANL A, #data

A, Direct
(A) (A) AND + (source)
A, @Ri
A, Rn
Direct , A
(Direct) (Direct) AND (A)
Direct, #data
(Direct) (Direct) AND #data
ANL C, bit
(C) (C) AND (bit)
C, /bit
(C) (C) AND NOT(bit)
ORL
ORL A, #data
A, Direct
(A) (A) OR + (source)
A, @Ri
A, Rn
SV: Ngô Quốc Toàn ĐKTĐ 2 - K4
24
§å ¸n tèt nghiÖp Trêng ®¹i häc B¸ch Khoa Hµ Néi
Direct , A
(Direct) ← (Direct) OR (A)
Direct, #data
(Direct) ← (Direct) OR #data
ORL C, bit
(C) ← (C) OR (bit)
C, /bit
(C) ← (C) OR NOT(bit)
XRL

XRL A, #data
A, Direct
(A)← (A) XOR + (source)
A, @Ri
A, Rn
Direct , A
(Direct) ← (Direct) XOR (A)
Direct, #data
(Direct) ← (Direct) XOR #data
CLR
CLR A
(A) ← 0
C
(C) ← 0
CPL
CPL A
(A) ← NOT (A)
C
(C) ← NOT (C)
SWAP A
(A3 - A0) ←→ (A7 - A4)
III.2.3 Nhãm lÖnh di chuyÓn d÷ liÖu
MOV
MOV A, #data
(A) ← #data
A, Direct
(A) ← (Direct)
A, @Ri
(A) ← ((Ri))
A, Rn

(A) ← (Rn)
MOV Rn, #data
(Rn) ← #data
Rn, Direct
(Rn) ← (Direct)
Rn, A
(Rn) ← (Rn)
MOV Direct, #data
(Direct) ← #data
Direct, Direct
(Direct) ← (Direct)
Direct, @Ri
(Direct) ← ((Ri))
Direct, Rn
(Direct) ← (Rn)
MOV @Ri, A
((Ri)) ← (A)
@Ri, Direct
((Ri)) ← (Direct)
SV: Ng« Quèc Toµn §KT§ 2 - K4
25

×