Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
1
Bộ LAO Động thơng binh và x hội
Trờng đại học s phạm kỹ thuật nam định
Khoa: điện - điện tử
đồ án môn học
kỹ thuật vi điều khiển
ứng dụng vi điều khiển họ 8051
Sinh viên thực hiện: ĐiNH NGọC CƯờNG
Giáo viên hớng dẫn: TRầN VĂN HạNH
Lớp: ĐL điện - điện tử k3
Nam Định - năm 2010
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
2
Phần I. Giới thiệu về đề ti
LờI NóI ĐầU
Trong nhiều lĩnh vực sản xuất công nghiệp hiện nay, nhất là ngành công
Nghiệp luyện kim, chề biến thực phẫm vấn đề đo và khống chế nhiệt độ đặc biệt
đợc chú trọng đến vì nó là một yếu tố quyết định chất lợng sản phẫm. Nắm đợc
tầm quan trọng của vấn đề trên nhóm thực hiện tiến hành nghiên cứu và thiết kế
một hệ thống đo nhiệt độ kết hợp với phơng thức truyền thông , với mong muốn là
giải quyết những yêu cầu trên. Những kiến thức năng lực đạt đợc trong quá trình
học tập ở trờng sẽ đợc đánh giá qua đợt bảo vệ đồ án môn học. Vì vậy chúng em
cố gắng tận dụng tất cả những kiến thức đã học ở trờng cùng với sự tìm tồi nghiên
cứu, để có thể hoàn thành tốt luận văn này. Những sản phẫm những kết quả đạt
đợc ngày hôm nay tuy không có gì lớn lao. Nhng đó là những thành quả của năm
học tập. Là thành công đầu tiên của chúng em trớc khi ra trờng.
Mặt dù chúng em rất cố gắng để hoàn thành tập luận văn này đúng thời hạn,
nên không tránh khỏi những thiếu sót mong quí thầy cô thông cảm. Chúng em
mong đợc đón nhận những ý kiến đóng góp. Cuối cùng xin chân thành cảm ơn quí
thầy cô và các bạn sinh viên.
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
3
Phần II: nội dung
Chơng 1:DẫN NHậP
I. ĐặT VấN Đề
Ngày nay với sự phát triển của công nghiệp vi điện tử, kỹ thuật số các hệ
thống điều khiển dần dần đợc tự động hóa. Với những kỹ thuật tiên tiến nh vi xử
lí, vi mạch số đựơc ứng dụng vào lỉnh vực điều khiển, thì các hệ thống điều khiển
cơ khí thô sơ, với tốc độ xử lí chậm chạp ít chính xác đợc thay thế bằng các hệ
thống điều khiển tự động với các lệnh chơng trình đã đợc thiết lập trớc. Trong
quá trình sản xuất ở các nhà máy, xí nghiệp hiện nay, việc đo nhiệt độ tự động là
một yêu cầu hết sức cần thiết và quan trọng. Vì nếu nắm bắt đợc nhiệt độ làm việc
của các hệ thống. Dây chuyền sản xuất giúp ta biết đợc tình trạng làm việc của
các yêu cầu. Và có những xử lý kịp thời tránh đợc những h hỏng và sự cố có thể
xảy ra. Để đáp ứng đợc yêu cầu đo nhiệt độ tự động, thì có nhiều phơng pháp để
thực hiện, nghiên cửu khảo sát vi điều khiển 8051 nhóm thực hiện nhận thấy rằng:
ứng dụng vi điều khiển 8051 vào việc đo và khống chế nhiệt độ tự động là phơng
pháp tối u nhất. Đồng đợc sự đồng ý của khoa Điện Trờng Đại Học S Phạm Kỹ
Thuật. Nhóm chúng em tiến hành thực hiện đề tài thiết kế mạng thu thập dữ liệu
dùng vi điều khiển 8051.
II.GIớI HạN Đề TI :
Với thời gian có hạn cũng nh trình độ có hạn chúng em đã cố gắng hoàn thành
tập đồ án này nhng chỉ giải quyết đợc một số vấn đề sau:
- Thiết kế mạch đo nhiệt độ trong phòng
- Thiết kế 1 hệ thống thu thập nhiệt độ phòng gồm 1 vi điều khiển master và 1
vi điều khiển slave.
-
Viết chơng trình cho vi điều khiển 8051 để đáp ứng các yêu cầu trên
III. MụC ĐíCH NGHIÊN CứU
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
4
Mục đích trớc hết khi thực hiện đề tài này là để hoàn tất chơng trình môn
học để đủ điều kiện ra trờng. Cụ thể khi nghiên cứu thực hiện đề tài là chúng em
muốn phát huy những thành quả ứng dụng của vi điều khiển nhằm tạo ra những sản
phẩm, những thiết bị tiên tiến hơn, và đạt hiệu quả sản xuất cao hơn. Mặt khác tập
đồ án này cũng có thể làm tài liệu tham khảo cho những sinh viên khóa sau. Giúp
họ hiểu rõ hơn về những ứng dụng của vi điều khiển .
Ngòai ra quá trình nghiên cứu thực hiện đề tài là một cơ hội để chúng em tự kiểm
tra lại những kiến thức đã đợc học ở trờng, đồng thời phát huy tính sáng tạo, khả
năng giải quyết một vấn đề theo yêu cầu đặt ra. Và đây cũng là dịp để chúng em tự
khẳng định mình trớc khi ra trờng để tham gia vào các hoạt động sản xuất của xã
hội.
Chơng 2: GIớI THIệU CHUNG Về Bộ VI ĐIềU KHIểN
I. GIớI THIệU
Bộ vi điều khiển viết tắt là Micro-controller, là mạch tích hợp trên một chip
có thể lập trình đợc, dùng để điều khiển hoạt động của một hệ thống. Theo các tập
lệnh của ngời lập trình, bộ vi điều khiển tiến hành đọc, lu trữ thông tin, xử lý
thông tin, đo thời gian và tiến hành đóng mở một cơ cấu nào đó. Trong các thiếh bị
điện và điện và điện tử dân dụng, các bộ vi điều khiển, điều khiển hoạt động của
TV, máy giặt, đầu đọc laser, điện thọai, lò vi-ba. Trong hệ thống sản xuất tự động,
bộ vi điều khiển đợc sử dụng trong Robot, dây chuyền tự động. Các hệ thống càng
thông minh thì vai trò của hệ vi điều khiển càng quan trọng.
II. LịCH Sử PHáT TRIểN CủA Bộ VI ĐIềU KHIểN :
Bộ vi điều khiển thực ra, là một loại vi xử lí trong tập hợp các bộ vi xử lý nói
chung. Bộ vi điều khiển đợc phát triển từ bộ vi xử lí, từ những năm 70 do sự
pháttriển và hoàn thiện về công nghệ vi điện tử dựa trên kỹ thuật MOS (Metal-
Oxide-Semiconductor) , mức độ tích hợp của các linh kiện bán dẫn trong một chip
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
5
ngày càng cao.
Năm 1971 xuất hiện bộ vi xử lí 4 bit loại TMS1000 do công ty texas Instruments
vừa là nơi phát minh vừa là nhà sản xuất. Nhìn tổng thể thì bộ vi xử lí chỉ có chứa
trên một chip những chức năng cần thiết để xử lí chơng trình theo một trình tự, còn
tất cả bộ phận phụ trợ khác cần thiết nh : bộ nhớ dữ liệu , bộ nhớ chơng trình , bộ
chuển đổi AID, khối điều khiển, khối hiển thị, điều khiển máy in,hối đồng hồ và
lịch là những linh kiện nằm ở bên ngoài đợc nối vào bộ vi xử lí.
Mãi đến năm 1976 công ty INTEL (Interlligen-Elictronics). Mới cho ra đời bộvi
điều khiển đơn chip đầu tiên trên thế giới với tên gọi 8048. Bên cạnh bộ xử lí trung
tâm 8048 còn chứa bộ nhớ dữ liệu, bộ nhớ chơng trình, bộ đếm và phát thời gian
các cổng vào và ra Digital trên một chip.Các công ty khác cũng lần lợc cho ra đời
các bộ vi điều khiển 8bit tơng tự nh 8048 và hình thành họ vi điều khiển MCS-48
(Microcontroller-sustem-48).Đến năm 1980 công ty INTEL cho ra đời thế hệ thứ
hai của bộ vi điều khiển đơn chip với tên gọi 8051. Và sau đó hàng loạt các vi điều
khiển cùng loại với 8051 ra đời và hình thành họ vi điều khiển MCS-51 . Đến nay
họ vi điều khiển 8 bit MCS51 đã có đến 250 thành viên và hầu hết các công ty hàng
dẫn hàng đầu thế giới chế tạo. Đứng đầu là công ty INTEL và rấtnhiều công ty khác
nh : AMD, SIEMENS, PHILIPS, DALLAS, OKI Ngoài ra còn có các công ty
khác cũng có những họ vi điều khiển riêng nh:
-Họ 68hcos của công ty Motola
-Họ st62 của công ty sgs-thomson
-Họ h8 của công ty Hitachi
-Họ pic của công ty Micro chip
III.KHảO SáT Bộ VI ĐIềU KHIểN 8051 V 8031
1. Các thông số cơ bản
IC vi điều khiển 8051/8031 thuộc họ MCS51 có các đặt điểm sau :
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
6
- 4kbyte ROM (đợc lập trình bởi nhà sản xuất chỉ có ở 8051)
- 128 búyt RAM
- 4port I10 8bit
- Hai bộ định thời 16bit
- Giao tiếp nối tiếp
- 64KB không gian bộ nhớ chơng trình mở rộng
- 64 KB không gian bộ nhớ dữ liệu mở rộng
- một bộ xử lí luận lí (thao tác trên các bit đơn)
- 210 bit đợc địa chỉ hóa
- bộ nhân / chia 40s
2.CấU TRúC BÊN TRONG CủA 8051 / 8031
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
7
Hình 2.1 Cấu trúc bên trong của 8051/8031
Nhiệm vụ các khối
- CPU: thực hiện các phép toán số học và lô gíc, đa ra các chỉ thị lệnh
- Bộ tạo dao động: tạo ra tín hiệu xung nhịp cho CPU , tạo xung nhịp cho
timer/couter
- BUS điều khiển: tập chung tín hiệuđiều khiểnhoạt động của vi điều khiển
- PSEN: ( Program store enable) dùng để truy suất bộ nhớ ngoài ( bộ nhớ trong của
8051: ROM 4 kbyte, RAM 128 byte)
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
8
+ Khi PSEN= 0: cho phép truy suất bộ nhớ ngoài
+ Khi PSEN= 1: cho phép truy suất bộ nhớ trong
- EA: dùng để truy suất bộ nhớ dữ liệu hoặc bộ nhớ chơng trình ngoài
- RST: reset
- ALE: (Adress Latch Enable) dùng để tách tín hiệu địa chỉvà tín hiệu ở cổng P0
- Khối vào ra song song: dùng để truy suất dữ liệu 8 bit
- Khối vào ra nối tiếp: dùng để truy suất dữ liệu nối tiếp theo tiêu chuẩn RS232
- Khối sử lý ngắt: tiếp nhận ngắt và thực hiện chơng trình phục vụ ngắt
- Timer/ couter: tạo khoảng thời gian hoặc đếm các sự kiện
- ROM on chip: (4 kbyte) lu giữ chơng trình
- RAM on chíp: (128 byte) lu giữ chơng trình tạm thời
3.Sơ Đồ CHÂN VI ĐIềU KHIểN
Hình 2.2 Sơ đồ chân của IC 89C51
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
RST
P0.0
Vcc
1
2
3
5
6
4
7
8
9
11
12
10
13
14
15
17
18
16
19
20
40
39
38
36
35
37
34
33
32
30
29
31
28
27
26
24
23
25
22
21
8051
(89C51)
P0.1
P0.2
P0.4
P0.5
P0.3
PSEN
P0.6
P2.5
P2.3
P2.1 (A9)
P2.7
P2.4(A12)
P2.6
P2.0 (AB)
P2.2
(RXD)
(TXD)
(NT0)
(NT1)
(T0)
(T1)
(WR)
(RD)
XTAL
XTAL1
GND
P0.6
EA/CP
ALE/PRO
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
9
Chức năng các chân
Chân 32 ặ 39 thuộc cổng P0 thực hiện truy suất dữ liệu hoặc làm chân địa
chỉ trong trờng hợp có thiết kế mở rộngbộ nhớ
Chân 1 ặ 8 thuộc cổng P1 chỉ dùng để truy suất dữ liệu
Chân 21ặ 28 thuộc cổng P2có chức năng cơ bản dùng để vào ra dữ liệu
trong trờng hợp có thiết kế mở rộng bộ nhớ thì nó đợc dùng làm chân địa chỉ cho
các bít cao của địa chỉ 16 bit
Chân 10 ặ 17 thuộc cổng P3 ở trạng thái bình thơng ta có thể dùng để vào
ra dữ liệu, ngoài ra cổng P3 còn lu giữ các chức năng đặc biệt
P
3.I
Tên Chức năng
P
3.0
R
XD
Nhập dữ liệu trong trờng hợp truyền nối tiếp
P
3.1
T
XD
Phát dữ liệu trong trờng hợp truyền song song
P
3.2
INT
0
Đầu vào ngắt 0
P
3.3
INT
1
Đầu vào ngắt 1
P
3.4
T
0
Đầu vào cho bộ timer/couter 0
P
3.5
T
1
Đầu vào cho bộ timer/couter 1
P
3.6
WR Đờng điều khiển ghi bộ nhớ ngoài
P
3.7
RD Đờng điều khiển đọc bộ nhớ ngoài
Chân 18, 19: Đầu vào của bộ dao động
Chân 20: chân Mass
Chân 40: chân dơng nguồn
4.Tổ chức bộ nhớ
Các vi điều khiển thuộc ho 8051 đều tổ chức thành 2 không gian chơng
trình và dữ liệu. Kiến trúc vi xử lý 8 bit của 8051 này cho phép truy nhập và tính
toán nhanh hơn đối với không gian dữ liệu nhờ việc phân không gian bộ nhớ
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
10
chơng trình và dữ liệu nh trên. Tuy nhiên bộ nhớ ngoài đợc truy nhập bởi hệ
thống 16 bit địa chỉ vẫn có thể thực hiện nhờ thanh ghi con trỏ Bộ nhớ chơng trình
( ROM, EFROM) là bộ nhớ chỉ đọc, có thể mở rộng tối đa 64kbyte. Với họ vi điều
khiển 89xx, bộ nhớ chơng trình đợc tích hợp sẵn trong chip có kich thớc nhỏ
nhất là 4Kbyte. Với các vi điều khiển không tích hợp sẵn bộ nhớ chơng trình trên
chip, buộc phải thiết kế bộ nhớ chơng trình bên ngoài. Ví dụ sử dụng EFROM:
2746(64Kbyte) khi đó chân PSEN phải đặt ở mức cao (5V). Bộ nhớ dữ liệu (RAM)
tồn tại độc lập so với bộ nhớ chơng trinh. Họ vi điều khiển8051 có bộ nhớ dữ liệu
tích hợp trên chip nhỏ nhất là 128 Byte và có thể mở rộng dữ liệu ngoài lên tới
64Kbyte. Với những vi điều khiển không tích hợp Rom trên chip thì vẫn có RAM
treenc chip là 128 byte. Khi sử dụng RAM ngoài Cpu đọc và ghi dữ liệu nhờ tín
hiệu trên các chân RD và WR. Khi sử dụng cả bộ nhớ chơng trình và bộ nhớ dữ
liệu bên ngoài thì buộc phảo kết hợp chân RD và PSEN bởi cổng logic AND đế
phân biệt tín hiệu truy xuất dữ liệu trên ROM hay trên RAM
4.1 Bộ nhớ chơng trình
Hình 2.3 Cấu trúc bộ nhớ chơng trình
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
11
Hình 2.4 Địa chỉ ngắt trên bộ nhớ chơng trình
Sau khi khởi động CPU bắt đầu thực hiện chơng trình ở vị trí 0000h. Mõi
khi có ngắt xảy ra con trỏ của CPU sẽ nhảy đến đúng địa chỉ ngắt tơng ứng và thực
thi chơng trình tại đó
4.2 Bộ nhớ dữ liệu
Hình 2.5 Cấu trúc bộ nhớ dữ liệu
Hình trên mô tả cẩu trúc bộ nhớ dữ liệu trong và bộ nhớ dữ liệu ngoài của họ
vi điều khiển 8051. CPU sẽ dùng đến các chân RD và WR khi truy cập đến bộ nhớ
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
12
dữ liệu ngoài. Dới đây là cấu trúc bộ nhớ dữ liệu trong chip, đợc chia làm 3 khối
là 128 byte thấp, 128 byte cao và 128 byte đặc biệt
Hình 2.6 Cấu trúc bộ nhớ dữ liệu trên chip
Hình dới đây mô tả cấu trúc 128 byte thấp của bộ nhớ dữ liệu của họ vi điều
khiển 8051. 32byte đầu tiên ( 00H - 1FH) đợc sử dụng cho 4 bộ bank thanh ghi R0
- R7. Hai bit của thanh ghi đặc biệt PSW sẽ lựa chon 1 trong 4 bộ thanh ghi mà vi
điều khiển sẽ dùng trong khi thực hiện chơng trình
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
13
Hình 2.7 Cấu trúc 128 byte thấp của bộ nhớ dữ liệu trong
8051 chứa 210 vị trí bit đợc định địa chỉ trong đó 128 bit chứa các byte ở
địa chỉ từ 20H đến 2FH và phần còn lại chứa trong các thanh ghi chức năng đặc
biệt. Ngoài ra 8051 còn có các port xuất/nhập có thể định địa chỉ bit, điề 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. Vùng
RAM đa mục đích có 80 byte đặt ở địa chỉ 30H đến 7FH, bân dới vùng này từ địa
chỉ 00H đến 20Fh là vùng nhớ có thể sử dụng tơng tự. Bất kỳ ở vị trí nào trên 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 hay gián tiếp. 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ếp phần trên của Ram nội từ địa chỉ 80H đến FFH. ( Cần
lu ý là không phảI tất cả 128 byte địa chỉ từ 80H đến FFH đều đợc định nghĩa mà
chỉ có 21 địa chỉ đợc định nghĩa )
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
14
Hình 2.8 128 byte cao của bộ nhớ dữ liệu
4.3 Các chế độ định địa chỉ
4.3.1 Chế độ định địa chỉ tức thời
Chế độ định địa chỉ tức thời thơng dùng để nạp dữ liệu cho thanh ghi, dữ
liệu là một hăng số cụ thể, dữ liệu đợc gọi qua tên nhãn ỷtong chế đọ định địa chỉ
tức thời thì đằng trớc dữ liệu có ký hiệu #
Vd: Nạp giá tri 25H vào thanh ghi A (Reg A)
MOV A,#25H
Số liệu đợc đặt tên là data equ 25H
MOV A,#data (Nạp giá tri 25H vào thanh ghi A)
Chú ý: chế độ định địa chỉ này số liệu thờng là một hằng số không thay đổi
trong suốt chơng trình hoạt động, và giá trị nạp vào phải có kích thớc phù hợp với
thanh ghi (thanh ghi A, B, R là thanh ghi 8 bit, thanh ghi DPTR là thanh ghi 16 bit)
4.3.2 Chế độ định địa chỉ thanh ghi
Trong chế độ này dữ liệu đợc lu trữ trong các thanh ghi va CPU truy xuất
tới dữ liệu thông qua tên của thanh ghi. Trong câu lệnh dịch chuyển dữ liệu sử dụng
phơng pháp địng địa chỉ thanh ghi thì các toán hạng trong câu lệnh phải có kích
thớc phù hợp nhau, và không đợc sử dụng 2 thanh ghi R
i
trng 1 câu lệnh
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
15
Vd: di chuyển nội dung thanh ghi R
0
vào thanh ghi A
MOV A,R0
4.3.3 Chế độ định địa chỉ trực tiếp
Trong phơng pháp định địa chỉ trực tiếptoán hạng trong câu lệnh thể hiện
địa chỉ của nguồn nhớ chứa dữ liệu (ngăn nhớ của Ram on chip) chế độ định địa chỉ
này thông thờng dùng để chỏ tới vùng không gian nhớ30 ặ 7F h. Phơng pháp
này đợc ứng dụng nhiều trong câu lệnh thao tác ngăn xếp
- PUSH địa chỉ trực tiếp (cất dữ liệu trong ô nhớ có địa chỉ trực tiếp vào ngăn xếp)
- POP địa chỉ trực tiếp (lấy dữ liệu trong ngăn xếp đa ra ô nhớ có địa chỉ trực tiếp)
Vd: PUSH 7
4.3.4 Chế độ định địa chỉ gián tiếp
Trong chế độ định địa chỉ này thì thanh ghi dữ liệu R
0
và R
1
làm con chỏ để
chỏ tới dữ liệu trong bộ nhớ. Trong câu lệnh nếu R
0
và R
1
làm con chỏthì có ký hiệu
@ phía trớc .
Vd: MOV R0,#30H (Nạp thanh ghi dữ liệu R
0
giá trị 30h)
MOV a,@R0 (Nạp nội dung ô nhớ có địa chỉ trong R
0
30H vào thanh ghi A
4.3.5 Chế độ định địa chỉ chị số thanh ghi
Trong phơng pháp định địa chỉ gián tiêpthì thanh ghi con trỏ 8 bit (R
0
R
1
)
chỉ có thể chỏ tới địa chỉ tối đa là FFh trong trờng hợp muốn trỏ tới các địa chỉ lớn
hơn ta sẽ sử dụng phơng pháp định địa chỉ chỉ số. Trong phơng pháp này ta dùng
thanh ghi chứa A và thanh ghi con chỏ d liệu DPTR để xác định địa chỉ. Chú ý:
thanh ghi A bao giờ cũng kếtt hợp với DPTR để tạo địa chỉ nhng DPTR có thể đi
riêng. Phơng pháp định địa chỉnày dùng để chỏ tới ROM on chip và ROM RAM
ngoài
Vd: MOVC A,@A+DPTR (8051 lấy nội dung thanh ghi A + nội dung của DPTR
làm đị chỉ của ROM on chip sau đó sao dữ liệu ở địa chỉ A+DPTR vào thanh ghi A
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
16
MOVX A,@DPTR (8051 lấy dữ liệu trong RAM ngoài có địa chỉ ở DPTR
sao vào thanh ghi A)
4.4 Tập lệnh của họ vi điều khiển 8051
Quy ớc:
# Data: toán hang định địa chỉ tức thời
Direct : Toán hạng định địa chỉ trực tiếp
@Ri : Toán hạng định đia chỉ gián tiếp
Rn : Toán hạng định địa chỉ thanh ghi
4.4.1 Nhóm lệnh di chuyển dữ liệu
a. Lệnh Mov:
* Trờng hợp 1:
Mov A, Data
Mov A, direct
Mov A, @Ri
Mov A, Rn
*Trờng hợp 2: Mov Direct, A
Mov Direct, #Data
Mov Direct, @Ri
Mov D
* Trờng hợp 3: Mov Rn, #Data
Mov Rn, A
Mov Rn, Direct
* Trờng hợp 4: Mov @Ri, #data
Mov @Ri, A
Mov Direct
b, Lệnh Movx:
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
17
Movx A,@Ri
Movx @ Ri,A
c, Lệnh Movc
Movc A,@A+DPTR
Movc A,@A+PC
d, Lệnh trao đổi nội dung thanh ghi A với toán hạng 2
XCH A, Direct
XCH A, @Ri
XCH A, Rn
e, Lệnh XCHD
XCHD A,@Ri
f, Lệnh PUSH
PUSH Direct
g, Lệnh POP
POP Direct
4.4.2 Nhóm lệnh số học:
a, Lệnh cộng không nhớ ADD
ADD A, # data
ADD A, Direct
ADD A, @Ri
ADD A, Rn
b, Lệnh cộng có nhớ ADDC
ADDC A, # data
ADDC A, Direct
ADDC A, @Ri
ADDC A, Rn
c, Lệnh tăng toán hạng một đơn vị:
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
18
INC A
INC Direct
INC @Ri
INC Rn
d, Lệnh trừ
SUBB # data
SUBB Direct
SUBB @Ri
SUBB Rn
e, Lệnh giảm nội dung thanh ghi một giá trị:
DEC A
DEC Divect
DEC @Ri
DEC Rn
g, Lệnh nhân MUL:
MUL AB
Thc hiện nhân nội dung thanh ghi A với nội dung thanh ghi B
Kết quả: Byte thấp lu trên thanh ghi A
Byte cao lu trên thanh ghi B
f, Lệnh chia DIV:
DIV AB
Thc hiện chia nội dung thanh ghi A với nội dung thanh ghi B
Kết quả: Phần nguyên lu trên thanh ghi A
Phần d lu trên thanh ghi B
4.4.3 Nhóm lệnh logic:
a, Lệnh ANL: Cú pháp:
ANL A, # Data
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
19
ANL A, Direct
ANL A, @Ri
ANL A, Rn
ANL Direct, #Data
ANL Direct, A
Lệnh thực hiện giữa các bít tơng ứng của toán hạng thứ nhất với các bít của
toán hạng hai
Bảng chân lí :
IN OUT
0 0 0
0 1 0
1 0 0
1 1 1
Bảng 1.8 Bảng chân lý lệnh ANL
b, Lệnh ORL:
Cú pháp: ORL A, #Data
ORL A, Direct
ORL A, @Ri
ORL A, Rn
ORL Direct, #Data
ORL Direct, A
Bảng chân lý:
IN OUT
0 0 0
0 1 1
1 0 1
1 1 1
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
20
c,Lệnh hoặc tuyệt đối
XRL A, #Data
XRL A, Direct
XRL A, @Ri
XRL A, Rn
XRL Direct, #Data
XRL Direct, A
Bảng chân lí:
IN OUT
00 0
01 1
10 1
11 0
d, Lệnh xoá thanh ghi A
Cú pháp : CLR A
A
0
Lệnh lấy phần bù thanh ghi A
CPL A
A
A
e, Lệnh quay phải nội dung thanh ghi A
Cú pháp: RR A
- Lệnh này di chuyển đợc tất cả các bít của thanh ghi A sang phải 1 bít
f, Lệnh quay trái nội dung thanh ghi A
Cú pháp: RL A
- Lệnh này di chuyển tất cả các bít của thanh ghi A sang trái 1 bit
g, Lệnh quay phải nội dung thanh ghi A qua cờ C
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
21
Cú pháp: RRC A
h, Lệnh quay trái nội dung thanh ghi A qua cờ C
Cú pháp: RLC A
k,Lệnh trao đổi 4 bit cao với 4 bít thấp của thanh ghi A
Cú pháp: SWAP A
4.4.4 Nhóm lệnh rẽ nhánh chơng trình
Nhóm lệnh rẽ nhánh không điều kiện
a, Lệnh nhảy JMP
Cú pháp: JMP nhãn
Thực hiện rẽ nhánh chơng trình đến địa chỉ đợc xác đinh bởi toán hạng nhãn
*Khái niệm về nhãn:
Nhãn là tên hình thức đại diện cho một địa chỉ vật lý xác đinh trong bộ nhớ
*Quy tắc đặt tên nhãnP:
-Tên nhãn bao giờ cũng bao gồm các chữ cái từ A
ữ
Z; a
ữ
z; các số từ 0
ữ
9
-Kết thúc tên của nhãn là dấu :
-Giữa các ký tự trong nhãn không đợc đặt dấu cách
-Tên nhãn phải đợc bắt đầu bằng một chữ cái
-Tên nhãn không đợc trùng với các từ đã đợc định nghĩa trớc
-Tên nhãn không dai quá 32 ký tự
b, Lệnh gọi chơng trình con
*Lệnh CALL
Cú pháp: CALL tên chơng trình con
*Lệnh ACALL< lệnh gọi tuyệt đối>
Cú pháp: ACALL địa chỉ 11bít
*Lệnh LCALL<lệnh gọi dài>
Cú pháp: LCALL địa chỉ 16 bít
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
22
c.Lệnh AJMP
Cú pháp: AJMP địa chỉ 11
d,Lệnh nhảy không điều kiện
*Lệnh nhảy dài LJMP
Cú pháp: LJMP địa chỉ 16
*Lệnh nhảy ngắn SJMP
Cú pháp: SJMP Rel
e, Lệnh JZ
Cú pháp: JZ nhãn
Thực hiện kiểm tra nội dung thanh ghi A
*A
0
Nếu A=0 rẽ nhánh đến nhãn
Nếu A
0 thực hiện lệnh tiếp theo
Nhóm lệnh rẽ nhánh có điều kiện
e, Lệnh JNZ
Thực hiện kiểm tra nội dung thanh ghi A
*A
0
Nếu A=0 thực hiện lệnh tiếp theo
Nếu A
0 rẽ nhánh đến nhãn
b, Lệnh CJNE: So sánh nội dung của toán hạng1
Cú pháp: CJNE TH1, TH2, nhãn
So sánh nội dung của TH1
TH2
-Nếu TH1
TH2 rẽ nhánh đến nhãn
-Nếu TH1=TH2 thực hiện lệnh tiếp theo
CJNE A, #data, nhãn
CJNE A, Direct, nhãn
c, Lệnh DJNZ
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
23
Cú pháp: DJNZ TH,nhãn
DJNZ Rn,nhãn
DJNZ Direct, nhãn
Giảm nội dung của toán hạng(TH)đi một đơn vị và so sanh với 0
Nếu TH
0 thì rẽ nhánh chơng trình đến địa chỉ xác định bởi toán hạng
nhãn
Nếu TH=0 thì thực hiện lệnh tiếp theo
1, TH
TH-1
2, TH
0
TH
0 rẽ nhánh nhãn
TH=0 thực hiện lệnh tiếp theo
d, Lệnh NOP
4.4.5 Nhóm lệnh xử lý toán hạng bít
a, Lệnh xoá bít CLR
Cú pháp : CLR THbit
THbit=0
CLR C
b, Lệnh SETB
Cú pháp: SETB C ; C=1
SETB THbít
Thbit=1
c, Lệnh CPL
Cú pháp: CPL C
CPL THbít
Thbit=THbít
d, Lệnh ANL:
Cú pháp:
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
24
ANL C,THbít
ANL C,/THbít
e, Lệnh ORL:
Cú pháp:
ORL C,THbít
ORL C,/THbít
f, Lệnh MOV
Mov C,THbít
Mov THbít,C
Sao chép nội dung của toán hạng 2 vào toán hạng 1.
Một trong 2 toán hạng là cờ C
g, Lệnh MOV
Cú pháp:
JC nhãn
Thực hiện kiểm tra cờ C
-Nếu C=1 thực hiện rẽ nhánh
-Nếu C=0 thực hiện lênh tiếp theo
h, Lệnh JNC
Cú pháp: JNC nhãn
Thực hiện kiểm tra cờ C
-Nếu C=1 thực hiện lệnh tiếp theo
-Nếu C=0 thực hiện rẽ nhánh
Thực hiện kiểm tra nội dung thanh ghi a
*A
0
A
0 rẽ nhánh đến nhãn
A=0 thực hiện lệnh tiếp theo
i, Lệnh JB
Đồ án môn học: Vi xử lý GVHD: TRầN VĂN HạNH
Sinh viên: ĐINH NGọC CƯờNG Lớp: ĐL - ĐĐT3
25
Cú pháp :
JB TH, nhãn
Kiểm tra nội dung của toán hạng
-Nếu TH=1 thì rẽ nhánh đến nhãn
-Nếu TH=0 thì thực hiện lệnh tiếp theo
k, Lệnh JNB
Cú pháp: JNB THbít, nhãn
-Nếu TH=0 thì rẽ nhánh đến nhãn
-Nếu TH=1 thì thực hiện lệnh tiếp theo
l, Lệnh JBC
Cú pháp: JBC THbít, nhãn
4.5Cấu trúc chơng trình viết cho 8051
Một chơng trình hợp ngữ phảI có dạng quy ớc theo dạng của trình hợp
dịch, để chơng trinh hợp dịnh không báo lỗi trong quá trình biên dịch. Với vi điều
khiển 8051 có chơng trình hợp dịch trong môI trờng DOS và Windown. Hiện nay
có rất nhiều trình hợp dịch cho họ vi điều khiển 8051 nh Pinace, Read 51, Keil C.
Cấu trúc cơ bản của chơng trình viết cho vi điều khiển 8051 có 2 loại là:
- Chơng trình có phục vụ ngắt
- Chơng trình không phục vụ ngắt
4.5.1 Dạng chơng trình không phục vụ ngắt và khai báo dữ liệu
- Đây là dạng chơng trình đơn giản nhất vì không có chơng trình phục vụ ngắt,
không có khai báo dữ liệu
- Cấu trúc chơng trình: