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

ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN

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 (705.31 KB, 101 trang )

Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện

Chương I: GIỚI THIỆU
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 hoỏ. Với kỹ thuật tiờn tiến vi xử lý, vi
mạch số….được ứng dụng vào lĩnh vực điều khiển tự động với chương trỡnh thiết
lập trước thay thế cho các hệ thống điều khiển cơ khí thô sơ, tốc độ xử lý chậm, ít
chính xác.
Hiện nay, hầu hết cỏc quy trỡnh sản xuất hàng tiờu dựng quỏ trỡnh sấy đóng
vai trũ quan trọng quyết định đến chất lượng sản phẩm. Do đó, việc đo được nhiệt
độ, độ ẩm và khống chế các yếu tố này theo đúng yêu cầu mong muốn là điều hết
sức quan trọng và cần thiết.
Để kiểm soát được nhiệt độ, độ ẩm trong buồng sấy, dùng vi điều khiển 8051
để tự động hoá quá trỡnh là phương pháp tiện lợi, giỏ thành thớch hợp cho những
ứng dụng rộng rói. Được sự đồng ý của Khoa Điện - Trường Đại học Bách khoa Đà
Nẵng, em tiến hành thực hiện đề tài “Dùng vi điều khiển để đo nhiệt độ, độ ẩm và
khống chế độ ẩm trong phũng kớn”.
II. Giới hạn đề tài:
- Đo nhiệt độ và độ ẩm phũng kớn, khống chế độ ẩm trong phũng theo một
giỏ trị đặt trước.
- Tính toán hệ số khối lượng hơi nước trong không khí trong phạm vi hoạt
động của thiết bị đo theo tiêu chuẩn của hơi nước bóo hoà theo nhiệt độ và hiển thị
thông số này khi giá trị độ ẩm được thiết lập.
III. Mục đích nghiên cứu:
Đề tài này nhằm các mục đích:
- Dùng kỹ thuật vi điều khiển để áp dụng vào các quy trỡnh sản xuất sản
phẩm cần đến công đoạn đo nhiệt độ, độ ẩm.
- Giúp người sử dụng có thể kiểm soát, điều khiển được độ ẩm của một
không gian kín thích hợp.
- Hổ trợ người vận hành có thể tính được nhanh chóng khối lượng hơi nước


trong phạm vi thể tích không khí đang quang sát .

GVHD: ThS. Lâm Tăng Đức Trang:- 1 - SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
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, lưu 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ết bị đ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 ti vi, 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 CáC Bộ VI ĐIềU KHIểN:
Bộ vi điều khiển được phát triển từ bộ vi xử lí, từ những năm 70 của thế kỷ
XX, do sự phát triể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 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ộ chuyển đổi AID, khối điều khiển, khối hiển thị, điều khiển máy in,
khố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í.
Đến năm 1976 Công ty INTEL (Interlligen-Electronics) 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, là chip đầu tiên của họ
vi điều khiển MCS 48. 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 8 bit 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.
Bộ vi điều khiển đầu tiên của Tập đoàn SIEMENS cung cấp chip SAB 8051,
một cải tiến của 8051 có 6 Port xuất/nhập 8 bit, đặc biệt có một bộ biến đổi AD 8
bit với 8 kênh ngõ vào.
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 Motorola
Họ ST62 của công ty SGS-THOMSON
Họ H8 của công ty Hitachi
Họ pic cuả công ty Microchip
GVHD: ThS. Lâm Tăng Đức Trang:- 2 - SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
III.KHảO SáT Bộ VI ĐIềU KHIểN 8051 Và 8031 :
IC vi điều khiển 8051/8031 thuộc họ MCS51 có các đặt điểm sau :
- 4KB ROM (được lập trình bởi nhà sản xuất chỉ có ở 8051)
- 128 byte RAM
- 4port I/0 8 bit
- Hai bộ định thời 16 bit
- Mạch 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
- Bộ xử lý Bit (thao tác trên các bit riêng lẻ)
- 210 bit được địa chỉ hóa
- Nhân/chia 4µs,
1./ Cấu trỳc bờn trong của 8051 / 8031:
GVHD: ThS. Lâm Tăng Đức Trang:- 3 - SVTH: Võ Ngọc Tuyến
OTHER

REGISTER
128 byte
RAM
128 byte
RAM
8032\8052
ROM
0K:
8031\8032
4K:8951
8K:8052
INTERRUPT
CONTROL
INT1\
INT0\
SERIAL PORT
TEMER0
TEMER1
TEMER2
8032\8052
CPU
OSCILATOR
BUS
CONTROL
I/O PORT
SERIAL
PORT
EA\
RST
ALE\

PSEN\
P
0
P
1
P
2
P
3
Address\Data
TXD RXD
TEMER2
8032\8052
TEMER1
TEMER1
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
Hình 2.1 : Sơ Đồ Khối 8051 / 8031
Phần chính của vi điều khiển 8051 / 8031 là bộ xử lí trung tâm (CPU: central
processing unit ) bao gồm :
- Thanh ghi tích lũy A
- Thanh ghi tích lũy phụ B, dùng cho phép nhân và phép chia
- Đơn vị logic học (ALU : Arithmetic Logical Unit )
- Từ trạng thái chương trình (PSW : Prorgam Status Word)
- Bốn băng thanh ghi
- Con trỏ ngăn xếp
- Ngoài ra còn có bộ nhớ chương trình, bộ giải mã lệnh, bộ điều khiển thời
gian và logic.
Đơn vị xử lí trung tâm nhận trực tiếp xung từ bộ giao động, ngoài ra còn có
khả năng đưa một tín hiệu giữ nhịp từ bên ngoài.
Chương trình đang chạy có thể cho dừng lại nhờ một khối điều khiển ngắt ở

bên trong. Các nguồn ngắt có thể là: các biến cố ở bên ngoài , sự tràn bộ đếm định
thời hoặc cũng có thể là giao diện nối tiếp.
Hai bộ định thời 16 bit hoạt động như một bộ đếm.
Các cổng (port0, port1, port2, port3 ). Sử dụng vào mục đích điều khiển.
ở cổng 3 có thêm các đường dẫn điều khiển dùng để trao đổi với một bộ nhớ
bên ngoài, hoặc để đầu nối giao diện nối tiếp, cũng như các đường ngắt dẫn bên
ngoài.
Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ, làm
việc độc lập với nhau. Tốc độ truyền qua cổng nối tiếp có thể đặt trong vảy rộng và
được ấn định bằng một bộ định thời.
Trong vi điều khiển 8051 / 8031 có hai thành phần quan trọng khác đó là bộ
nhớ và các thanh ghi :
Bộ nhớ gồm có bộ nhớ Ram và bộ nhớ Rom (chỉ có ở 8031) dùng để lưu trữ
dữ liệu và mã lệnh.
Các thanh ghi sử dụng để lưu trữ thông tin trong quá trình xử lí. Khi CPU làm
việc nó làm thay đổi nội dung của các thanh ghi.
2./ Chức năng các chân vi điều khiển :
a.port0 : là port có 2 chức năng (các chân từ 32 đến 39) trên 8051 trong các
thiết kế cỡ nhỏ dùng làm điện tụ xuất/nhập. Đối với các thiết kế cỡ lớn (với bộ nhớ
mở rộng) port0 trở thành bus địa chỉ và bus dữ liệu đa hợp.
b.port1 : port1 là một port I/O (các chân 1 đến 8) trên 8051. Các chân được ký
hiệu P1.0, P1.1,…., P1.7 có thể dùng cho các thiết bị ngoài nếu cần. Port1 không có
chức năng khác, vì vậy chúng ta chỉ được dùng trong giao tiếp với các thiết bị
ngoài.
GVHD: ThS. Lâm Tăng Đức Trang:- 4 - SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
c.port2 : port2 là một port công dụng kép (các chân 21 đến 28) trên 8051 được
dùng như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết kế
dùng bộ nhớ mở rộng.
d.Port3 : port3 là một port công dụng kép (các chân 10 đến 17). Các chân

port3 có nhiều chức năng riêng (mỗi chân có chức năng riêng liên quan đến các đặc
trưng cụ thể của 8051).
Bit Tên Địa chỉ bit Chức năng chuyển đổi
P3.0 RxD B0H Nhận dữ liệu của port nối tiếp
P3.1 TxD B1H Phát dữ liệu của port nối tiếp
P3.2
INTO
B2H Ngắt 0 bên ngoài
P3.3
INT1
B3H Ngắt 1 bên ngoài
P3.4
T0
B4H Ngõ vào của timer/counter0
P3.5 T1 B5H Ngõ vào của timer/counter 1
P3.6 WR B6H Xung ghi bộ nhớ dữ liệu ngoài
P3.7 RD B7H Xung đọc bộ nhớ dữ liệu ngoài
Bảng 2.1 : Chức năng của các chân trên port3
e. PSEN (Program Store Enable ): 8051/8031 có 4 tín hiệu điều khiển bus
PSEN là tín hiệu ra trên chân 29. Nó là tín hiệu điều khiển để cho phép bộ nhớ
chương trình mở rộng và thường được nối đến chân OE (Output Enable) của một
EPROM để cho phép đọc các bytes mã lệnh.
PSEN sẽ ở trong thời gian tìm - nạp lệnh. Các mã nhị phân của chương trình
được đọc từ EPROM qua bus và được chốt vào thanh ghi lệnh của 8051 để giải mã
lệnh. Khi thi hành chương trình trong ROM nội (8051) PSEN sẽ ở mức thụ động
(logic1).
f. ALE (Address Latch Enable ) :
8051 sử dụng chân 30, chân xuất tín hiệu cho phép chốt địa chỉ ALE để giải
đa hợp (Demultiplexing) bú dữ liệu và bus địa chỉ. Khi Port0 sử dụng đa hợp phân
ALE xuất đến hiện chốt địa chỉ vào 1 thanh ghi ngoài hay nửa đầu chu kỳ bộ nhớ

(Memory cycle) sau đó các thanh ghi bên ngoài trong nửa đầu của chu kỳ bộ nhớ.
Sau đó, các chân port 0 dùng để xuất/nhập dữ liệu trong nửa sau chu kỳ của bộ nhớ.
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à nguồn xung nhịp cho các hệ thống. Nếu xung trên 8051 là 12MHz
thì ALE có tần số 2MHz. Chỉ ngoại trừ khi thi hành lệnh MOVX, một xung ALE sẽ
GVHD: ThS. Lâm Tăng Đức Trang:- 5 - SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
bị mất. Chân ALE cũng được làm ngõ vào cho xung lập trình cho EPROM trong
8051.
g. EA (External Access) :
Tín hiệu vào EA(chân 31) có thể thường được nối với 5V (logic 1) hoặc với
GND (logic 0). Nếu ở logic 1, 8051 thi hành chương trình từ ROM nội trong
khoảng địa chỉ thấp (4K). Nếu ở logic 0, bộ nhớ bên trong chương trình 8051 sẽ bị
cấm và chương trình thi hành từ EPROM mở rộng. Người ta còn dùng chân EA
làm chân cấp điện áp 21V khi lập trình cho EPROM trong 8051.
h. RST (Reset) :
Ngõ vào RST (chân 9) là ngõ reset của 8051. Khi tín hiệu này được đưa lên
mức cao (trong ít nhất 2 chu kỳ máy), các thanh ghi trong 8051 được tải những giá
trị thích hợp để khởi động hệ thống.
i. Các chân XTAL1 và XTA2 :
Như trong hình vẽ, 8051 có một bộ dao động trên chip. Nó thường được nối
với thạch anh giữa hai chân 18 và 19. Các tụ ổn định cũng cần thiết như đã vẽ. Tần
số thạch anh thông thường là 12MHz.
j.Các chân nguồn :
8051 vận hành với nguồn đơn +5V. Vcc được nối vào chân 40 và Vss (GND)
được nối vào chân 20.
30pF
30pF
GVHD: ThS. Lâm Tăng Đức Trang:- 6 - SVTH: Võ Ngọc Tuyến
40

32 AD7
33 AD6
34 AD5
35 AD4
36 AD3
37 AD2
38 AD1
39 AD0
8
7
6
5
4
3
2
1
28 A15
27 A14
26 A13
25 A12
24 A11
23 A10
22 A9
21 A8
Vcc
XTAL.1
XTAL.2
PSEN\
ALE
EA\

RST
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
18
19
12 MHz
P3.7
P3.6

P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
17
16
15
14
13
12
11
10
RD
WR
T1
T0
INT1
INT0
TXD
RXD
8951
29
30
31
9
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
Hình 2.2: Sơ đồ chân 8051
3. Tổ chức bộ nhớ :

8051 / 8031 có cấu trúc theo bộ nhớ harvard :có những vùng cho bộ nhớ riêng
biệt cho chương trình dữ liệu.Cả chương trình và dữ liệu có thể ở bên trong
8051,dù vậy chúng có thể được mở rộng bằng các thành phần ngoài lên đến
64Kbyte bộ nhớ chương trình và 64 Kbyte bộ nhớ dữ liệu.
Bộ nhớ bên trong bao ROM(8051) và RAM trên chip,RAM trên chip bao
gồm nhiều phần:các dãy thanh ghi(00H-1FH),phần lưu trữ địa chỉ hoá từng
bit(20H-2FH),phần lưu trữ đa dụng(30H-7FH) và các thanh ghi chức năng đặt
biệt(80H-FFH).
FFFF FFFF
Bộ nhớ Bộ nhớ
FF chương dữ liệu
trình được
được chọn chọn
qua PSEN qua WR
và RD
00 0000 0000
Bộ nhớ trên chip Bộ nhớ ngoài(external memory)
Hình 2.3 : Tóm tắt các vùng bộ nhớ của 8051/8031
a. RAM đa dụng:
Moùi ủũa chổ trong vuứng RAM ủa duùng ủeàu coự theồ ủửụùc truy xuaỏt
tửù do duứng caựch ủaựnh ủũa chổ trửùc tieỏp hoaởc giaựn tieỏp. Vớ duù, ủeồ
ủoùc noọi dung ụỷ ủũa chổ 5FH cuỷa RAM noọi vaứo thanh ghi tớch luừy leọnh
sau seừ ủửụùc duứng :
MOV A, 5FH
Lệnh này di chuyển một byte dữ liệu bằng cách đánh địa chỉ trực tiếp để xác
định “địa chỉ nguồn”(5FH). Đích nhận dữ liệu được ngầm định trông mã lệnh là
thanh ghi tích luỹ A.
GVHD: ThS. Lâm Tăng Đức Trang:- 7 - SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
RAM bên trong cũng có thể được truy xuất bằng cách đánh địa chỉ gián tiếp

qua RO hay R1. Ví dụ,hai lệnh sau thi hành cùng nhiệm vụ như lệnh trên :
MOV R0, #5FH
MOV A, @R0
Lệnh đầu dùng địa chỉ tức thời để di chuyển giá trị 5FH vào thanh ghi R0 và
lệnh thứ hai dùng địa chỉ trực tiếp để di chuyển dữ liệu “được trỏ bởi R0” vào
thanh ghi tích luỹ.
địa chỉ byte địa chỉ bit
7F
30
2F
2E
2D
2C
2B
2A
29
28
27
26
25
24
23
22
21
20
1F
18
17
10
0F

08
07
00
RAM đa dụng
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
BANK 3
BANK 2
BANK 1
Dãy thanh ghi mặc định
R0-R7
Bảng tóm tắt bản đồ vùng nhớ trên chip data 8051
GVHD: ThS. Lâm Tăng Đức Trang:- 8 - SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
địa chỉ byte địa chỉ bit
FF

F0
E0
D0
B8
B0
A8
A0
99
98
90
8D
8C
8B
8A
89
F7 F6 F5 F4 F3 F2 F1 F0 B
E7 E6 E5 E4 E3 E2 E1 E0 ACC
D7 D6 D5 D4 D3 D2 D1 D0 PSW
- - - BC BB BA B9 B8 IP
B7 B6 B5 B4 B3 B2 B1 B0 P3
AF - - AC AB AA A9 A8 IE
A7 A6 A5 A4 A3 A2 A1 A0 P2
Không định địa chỉ bit
9F 9E 9D 9C 9B 9A 99 98 SCON
97 96 95 94 93 92 91 90 P1
Không định địa chỉ bit
Không định địa chỉ bit
Không định địa chỉ bit
Không định địa chỉ bit
Không định địa chỉ bit

88
87
83
82
81
8F 8E 8D 8C 8B 8A 89 88 TCON
Không định địa chỉ bit
PCON
DPH
DPL
SP
Không định địa chỉ bit
Không định địa chỉ bit
Không định địa chỉ bit
GVHD: ThS. Lâm Tăng Đức Trang:- 9 - SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
80
87 86 85 84 83 82 81 80 PO
Tóm tắc bộ nhớ dữ liệu trên chip
b.RAM địa chỉ hoá từng bit:
8051 / 8031 chứa 210 vị trí bit được địa chỉ hoá,trong đó 128 bit là ở các byte
20H đến 2FH,và phần còn lại trong các thanh ghi chức năng đặc biệt.ý tưởng truy
xuất từng bit từng bit riêng rẽ bằng phần mềm là một đặt tính của vi điều khiển nói
chung. Các bit có thể được đặt, xoá, AND, OR bằng một lệnh đơn.Đa số các bộ vi
xử lí đòi hỏi một chuổi lệnh đọc sửa ghi để nhận được cùng kết quả.
Hơn nữa,các port I/O cũng được địa chỉ từng bit làm đơn giản phần mềm xuất nhập
từng bit.
128 bit ở các byte 20H đến 2FH có thể được truy xuất như các byte hay các bit phụ
thuộc vào lệnh được dùng, ví dụ để đặt bit 67H, ta dùng lệnh sau:
SETB 67H

Chú ý rằng “địa chỉ bit 67H” là bit có trọng số lớn nhất (MSB) ở “địa chỉ byte
2CH” lệnh trên sẽ không tác động đến các bit khác của địa chỉ này.
c.Các dãy thanh ghi:
32 byte thấp của bộ nhớ nội là các dãy thah ghi. Bộ nhớ lệnh của
8051/8031hổ trợ 8 thanh ghi (R0 đến R7) và theo mặc định(sau khi reset hệ thống)
và các thanh ghi này ở các địa chỉ 00H-07H. Lệnh sau đây sẽ đọc nội dung ở đia
chỉ 05H vào thanh ghi tích luỹ.
MOV A,R5
ẹaõy laứ leọnh moọt byte duứng ủũa chổ thanh ghi. Taỏt nhieõn, thao taực
tửụng tửù coự theồ ủửụùc thi haứnh baống leọnh 2 byte duứng ủũa chổ trửùc tieỏp
naốm trong byte thửự hai:
MOV A,05H
Caực leọnh duứng caực thanh ghi R0 ủeỏn R7 thỡ seừ ngaộn vaứ nhanh hụn
caực leọnh duứng ủũa chổ trửùc tieỏp. Caực giaự trũ dửừ lieọu ủửụùc duứng
thửụứng xuyeõn neõn duứng moọt trong caực thanh ghi naứy.
Bank thanh ghi tớch cửùc coự theồ chuyeồn ủoồi baống caựch thay ủoồi
caực bit choùn bank thanh ghi trong tửứ traùng thaựi chửụng trỡnh (PSW). Giaỷ
sửỷ raống bank thanh ghi 3 ủửụùc tớch cửùc, leọnh sau seừ ghi noọi dung cuỷa
thanh ghi tớch luừy vaứo ủũa chổ 18H:
MOV R0,A
Y tưởng dùng các dãy thanh ghi cho phép “chuỷên hướng” chương trình
nhanh và hiệu quả( từng phần riêng rẽ của phần mềm sẽ có một hanh ghi riêng rẽ
không phụ thuộc vào các phần khác.
4./ Các thanh ghi chức năng đặc biệt:
GVHD: ThS. Lâm Tăng Đức Trang:- 10 - SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
Các thanh ghi nội của 8051/8031 được truy xuất ngầm định bởi lệnh. Ví dụ
lệnh “INC A” sẽ tăng nội dung của thanh ghi tích lũy A lên 1. Tác động này được
ngầm định trong mã lệnh.
Các thanh ghi trong 8051/8031 được định dạng như một phần của RAM trên

chip. Vì vậy một thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi trực tiếp, sẽ
khơng có lợi khi đặt chúng vào trong RAM trên chip).Đó là lý do để 8051/8031 có
nhiều thanh ghi. Cũng như R0 đến R7, có 21 thanh ghi chức năng đặc biệt (SFR:
Special Funtion Register) ở vùng trên của RAM nội, từ địa chỉ 80H đến FFH. Chú
ý rằng hầu hết 128 địa chỉ từ 80H đến FFH khơng được định nghĩa. Chỉ có 21 địa
chỉ SFR là được định nghĩa.
Ngoái trửứ tớch luừy (A) coự theồ ủửụùc truy xuaỏt ngầm nhử ủaừ noựi,
ủa soỏ caực SFR ủửụùc truy xuaỏt duứng ủũa chổ trửùc tieỏp. chuự yự raống moọt
vaứi SFR coự theồ ủửụùc ủũa chổ hoựa bit hoaởc byte. Ngửụứi thieỏt keỏ phaỷi
thaọn tróng khi truy xuaỏt bit vaứ byte. Vớ dú leọnh sau:
SETB 0E0H
Seừ Set bit 0 trong thanh ghi tớch luừy, caực bit khaực khõng thay ủoồi. Ta
thaỏy raống E0H ủồng thụứi laứ ủũa chổ byte cuỷa thanh ghi tớch luừy vaứ laứ
ủũa chổ bit coự tróng soỏ nhoỷ nhaỏt trong thanh ghi tớch luừy. Vỡ leọnh SETB
chổ taực ủoọng trẽn bit, nẽn chổ coự ủũa chổ bit laứ coự hieọu quaỷ.
a. Từ trạng thái chương trình PSW (Program Status Word):
Bit Ký hiệu Địa chỉ Y nghiã
PSW.7
PSW.6
PSW.5
PSW.4
PSW.3
PSW.2
PSW.1
PSW.0
CY
AC
F0
RS1
RS0

OV
P
D7H
D6H
D5H
D4H
D3H
D2H
D1H
D0H
Cờ nhớ
Cờ nhớ phụ
Cờ 0
Chọn dãy thanh ghi (bit 1)
Chọn dãy thanh ghi (bit 0).
00=bank 0;địa chỉ 00H-07H
01=bank 1:địa chỉ 08H-0FH
10=bank 2:địa chỉ 10H-17H
11=bank 3:địa chỉ 18H-1FH
Cờ tràn
Dự trữ
Cờ kiểm tra chẳn lẻ.
Bảng 2.2: Thanh ghi PSW
• Cờ nhớ (CY) có cơng dụng kép. Thơng thường nó được dùng cho các lệnh số
học: có sẽ được set nếu có một số nhớ sinh ra bởi phép cộng hoặc có một số
mượn phép trừ. Ví dụ, nếu thanh chứa A có nội dung là FFH, thì lệnh sau:
ADD A,#1
Sẽ trả về thanh ghi tích luỹ kết quả 00H và set cờ nhớ trong PSW.
GVHD: ThS. Lâm Tăng Đức Trang:- 11 - SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện

Cờ nhớ cũng có thể xem như một thanh ghi 1 bit cho các lệnh thao tác trên
bit. Ví dụ, lệnh sẽ AND bit 25H với cờ nhớ CY và đặt kết quả trở vể cờ nhớ:
ANL C,25H
• Cờ nhớ phụ:
Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết quả của 4 bit thấp
trong khoảng 0AH đến 0FH. Nừu các giá trj cộng được là số BCD, thì sau lệnh
cộng cần có DA A( hiệu chỉnh thập phân thanh ghi tích luỹ)để mang kết quả lớn
hơn 9 trở về tầm từ 0÷9.
• Cờ 0
Cờ 0 (F0)là một bit đa dụng dùng cho các ứng dụng của người dùng.
• Các bit chọn dãy thanh ghi
(RSO và RS1) dùng xác định dãy thanh ghi tích cực. Chúng được xố sau khi
reset hệ thống và được thay đổi mức logic bằng phần mềm nếu cần. Ví dụ, ba
lệnh sau cho phép dãy thanh ghi 3 và di chuyển nội dung cuả thanh ghi R7 (địa chỉ
byte 1FH) đến thanh ghi tích luỹ:
SETB RS1
SETB RSO
MOV A,R7
Khi chương trình được hợp dịch các địa chỉ bit đúng được thay thế cho các
ký hiệu “RS1” và “RS0”. Vởy lệnh SETB RS1 sẽ giơng như lệnh SETB 0D4H.
• Cờ tràn
Cờ tràn (OV) được set sau phép tốn cộng hoặc trừ nếu có xuất hiện một tràn
số học. Khi các số có dấu được cộng hoặc trừ với nhau, phần mềm có thể kiểm
tra bit này để xác định xem kết quả của nó co nằm trong tầm xác định khơng. Khi
các số khơng dấu khơng được cộng, bit OV có thể được bỏ qua. Các kết quả lớn
hơn -127 hoặc nhỏ hơn +128 sẽ set cờ OV bằng 1.
b. Thanh ghi B:
Thanh ghi B ụỷ ủũa chổ F0H ủửụùc duứng chung vụựi thanh ghi A trong caực
pheựp toaựn nhãn vaứ chia. Leọnh MUL AB seừ nhãn 2 giaự trũ khõng daỏu 8
bit trong A vaứ B rồi traỷ về keỏt quỷa 16 bit trong A (byte thaỏp) vaứ B (byte

cao). Leọnh DIV AB seừ chia A cho B rồi traỷ về keỏt quỷa nguyẽn trong A
vaứ phần dử trong B. Thanh ghi B cuừng coự theồ ủửụùc xem nhử thanh ghi
ủeọm ủa dúng. Noự ủửụùc ủũa chổ hoựa tửứng bit baống caực ủũa chổ bit FOH
ủeỏn F7H.
c. Con trỏ ngăn xếp(stack):
Con troỷ ngaờn xeỏp (Stack Pointer) laứ moọt thanh ghi 8 bit ụỷ ủũa chổ 81H.
Noự chửựa ủũa chổ cuỷa byte dửừ lieọu hieọn haứnh trẽn ủổnh cuỷa ngaờn xeỏp.
Caực leọnh trẽn ngaờn xeỏp bao gồm caực thao taực caỏt dửừ lieọu vaứo ngaờn
xeỏp vaứ laỏy dửừ lieọu ra khoỷi ngaờn xeỏp. Leọnh caỏt dửừ lieọu vaứo ngaờn
xeỏp seừ laứm taờng SP trửụực khi ghi dửừ lieọu, vaứ leọnh laỏy dửừ lieọu ra
GVHD: ThS. Lâm Tăng Đức Trang:- 12 - SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
khoỷi ngaờn xeỏp seừ laứm giaỷm SP. Ngaờn xeỏp cuỷa 8051/8031 ủửụùc giửừ
trong RAM noọi vaứ ủửụùc giụựi hán caực ủũa chổ coự theồ truy xuaỏt baống
ủũa chổ giaựn tieỏp. chuựng laứ 128 byte ủầu cuỷa 8051/8031.
Để khởi động lại SP ngăn xếp bắt đầu tại 60H, các lệnh sau đây được dùng:
MOV SP,#5FH
Trên 8051/8031 ngăn xếp bị giới hạn 32 byte vì địa chỉ cao nhất của RAM
trên chip là 7FH. Dùng giá trị 5FH vì SP sẽ tăng lên 60H trước khi cất byte dữ liệu
đầu tiên.
Người thiết kế có thể chon khơng phảI khởi động lại con trỏ ngăn xếp mà để
nó lấy giá trị mặc định khi reset hệ thống. Giá trj mặc định đó là 07H và kết quả là
ngăn đầu tiên để cất dữ liệu có địa chỉ 08H. Nếu phần mềm ứng dụng khơng khởi
động lại SP , dãy thanh ghi 1 (có thể cả 2 và 3) sẽ khơng được dùng vì vùng RAM
này đã được dùng làm ngăn xếp.
Ngaờn xeỏp ủửụùc truy xuaỏt trửùc tieỏp baống caực leọnh PUSH vaứ POP
ủeồ lửu giửừ tám thụứi vaứ laỏy lái dửừ lieọu hoaởc ủửụùc truy xuaỏt ngầm
baống caực leọnh gói chửụng trỡnh con (ACALL, LACALL) vaứ caực leọnh trụỷ
về (RET,RETI) ủeồ caỏt vaứ laỏy lái boọ ủeỏm chửụng trỡnh.
d. Con trỏ dữ liệu(DPTR):

DPTR ủửụùc duứng ủeồ truy xuaỏt boọ nhụự ngoaứi laứ moọt thanh ghi 16 bit
ụỷ ủũa chổ 82H(DPL: byte thaỏp) vaứ 83H (DPH:byte cao). Ba leọnh sau seừ ghi
55H vaứo RAM ngoaứi ụỷ ủũa chổ 1000H:
MOV A,#55H
MOV DPTR,#1000H
MOVX @DPTR,A
Leọnh ủầu tiẽn duứng ủũa chổ tửực thụứi ủeồ taỷi dửừ lieọu 55H vaứo
thanh ghi tớch luừy, leọnh thửự hai cuừng duứng ủũa chổ tửực thụứi, lần naứy ủeồ
taỷi dửừ lieọu 16 bit 1000H vaứo con troỷ dửừ lieọu. Leọnh thửự ba duứng ủũa chổ
giaựn tieỏp ủeồ di chuyeồn dửừ lieọu trong A (55H) ủeỏn RAM ngoaứi ụỷ ủũa chổ
ủửụùc chửựa trong DPTR (1000H)
e. Các thanh ghi port xuất nhập:
Caực port cuỷa 8051/8031 bao gồm Port 0 ụỷ ủũa chổ 80H, Port 1 ụỷ ủũa
chổ 90 H, Port 2 ụỷ ủũa chổ A0H vaứ Port 3 ụỷ ủũa chổ B0H. Taỏt caỷ caực Port
ủều ủửụùc ủũa chổ hoựa tửứng bit. ẹiều ủoự cung caỏp moọt khaỷ naờng giao
tieỏp thuaọn lụùi.
f. Các thanh ghi định thời(timer):
8051/8031 chửựa 2 boọ ủũnh thụứi/ủeỏm 16 bit ủửụùc duứng trong vieọc
ủũnh thụứi hoaởc ủeỏm sửù kieọn. Timer 0 ụỷ ủũa chổ 8AH (TL0:byte thaỏp) vaứ
8CH (TH0:byte cao).Timer 1 ụỷ ủũa chổ 8BH (TL1:byte thaỏp) vaứ 8DH (TH1:
byte cao). Vieọc vaọn haứnh timer ủửụùc set bụỷi thanh ghi Timer Mode (TMOD)
ụỷ ủũa chổ 89H vaứ thanh ghi ủiều khieồn timer (TCON) ụỷ ủũa chổ 88H. Chổ
coự TCON ủửụùc ủũa chổ hoựa tửứng bit.
GVHD: ThS. Lâm Tăng Đức Trang:- 13 - SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
g. Các thanh ghi port nối tiếp:
8051/8031 chửực moọt port noỏi tieỏp trẽn chip daứnh cho vieọc trao ủoồi
thõng tin vụựi caực thieỏt bũ noỏi tieỏp nhử maựy tớnh, modem hoaởc cho vieọc
giao tieỏp vụựi caực IC khaực coự giao tieỏp noỏi tieỏp (coự boọ chuyeồn ủoồi
A/D, caực thanh ghi dũch ). Moọt thanh ghi gói laứ boọ ủeọm dửừ lieọu noỏi

tieỏp (SBUF) ụỷ ủũa chổ 99H seừ giửừ caỷ hai giửừ lieọu truyền vaứ nhaọn. Khi
truyền dửừ lieọu thỡ ghi lẽn SBUf, khi nhaọn dửừ lieọu thỡ ủóc SBUF. Caực
mode vaọn haứnh khaực nhau ủửụùc laọp trỡnh qua thanh ghi ủiều khieồn port
noỏi tieỏp (SCON) (ủửụùc ủũa chổ hoựa tửứng bit) ụỷ ủũa chổ 98H.
h. Các thanh ghi ngắt:
8051/8031 coự caỏu truực 5 nguồn ngaột, 2 mửực ửu tiẽn. Caực ngaột bũ
caỏm sau khi reset heọ thoỏng vaứ seừ ủửụùc cho pheựp baống vieọc ghi thanh ghi
cho pheựp ngaột (IE) ụỷ ủũa chổ A8H mức ưu tiên ngắt được thiết lập qua thanh
ghi ưu tiên ngắt IP có địa chỉ B8H.Cả hai thanh ghi ủửụùc ủũa chổ hoựa tửứng bit.
i. Các thanh ghi điều khiển nguồn:
Thanh ghi ủiều khieồn nguồn (PCON) ụỷ ủũa chổ 87H chửựa nhiều bit
ủiều khieồn. Chuựng ủửụùc toựm taột trong baỷng sau:
Bit Kyự hieọu Mơ tả
7
6
5
4
3
2
1
0
SMOD
GF1
GF0
PD
IDL
Bit gaỏp ủõi toỏc ủoọ baud, neỏu ủửụùc
set thỡ toỏc ủoọ baud seừ taờng gaỏp ủõi
trong caực mode 1,2 vaứ 3 cuỷa port noỏi
tieỏp

Khõng ủũnh nghúa
Khõng ủũnh nghúa
Khõng ủũnh nghúa
Bit cụứ ủa mục đích 1
Bit cụứ ủa mục đích 2
Nguồn giảm, được set để tích cực chế độ
nguồn giảm,chỉ thốt khi reset hệ thống
Mode nghĩ set ủeồ kớch hoát mode nghĩ
chổ thoaựt khi coự ngaột hoaởc reset heọ
thoỏng.
Baỷng 2.3 :Thanh ghi ủiều khieồn nguồn (PCON)
5/. Bộ nhớ ngồi:
8051/8031 coự khaỷ naờng mụỷ roọng boọ nhụự ủeỏn 64K boọ nhụự
chửụng trỡnh vaứ 64K boọ nhụự dửừ lieọu bẽn ngoaứi. Do ủoự coự theồ duứng
thẽm ROM vaứ RAM neỏu cần.
Khi duứng boọ nhụự ngoaứi, port 0 khõng coứn laứ moọt port I/O thuần
tuựy nửừa. Noự ủửụùc hụùp kẽnh giửừa bus ủũa chổ (A0-A7) vaứ bus dửừ lieọu
(D0-D7) vụựi tớn hieọu ALE ủeồ choỏt byte thaỏp cuỷa ủũa chổ khi baột ủầu
GVHD: ThS. Lâm Tăng Đức Trang:- 14 - SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
mi chu kyứ boọ nhụự. Port 2 thõng thửụứng ủửụùc duứng cho byte cao cuỷa
bus ủũa chổ.
Trong nửỷa ủầu cuỷa mi chu kyứ boọ nhụự, byte thaỏp cuỷa ủũa chổ
ủửụùc caỏp trong port 0 vaứ ủửụùc choỏt baống xung ALE. Moọt IC choỏt
74HC373 (hoaởc tửụng ủửụng) seừ giửừ byte ủũa chổ thaỏp trong phần coứn lái
cuỷa chu kyứ boọ nhụự. Trong nửỷa sau cuỷa chu kyứ boọ nhụự port 0 ủửụùc
duứng nhử bus dửừ lieọu vaứ ủửụùc ủóc hoaởc ghi tuứy theo leọnh.
a/ Truy xuất bộ nhớ chương trình ngồi :
Boọ nhụự chửụng trỡnh ngoaứi laứ một IC ROM ủửụùc pheựp bụỷi tớn
hieọu PSEN .

Moọt chu kyứ maựy cuỷa 8051/8031 coự 12 chu kyứ xung nhũp. Neỏu boọ
dao ủoọng trẽn chip ủửụùc laựi bụỷi moọt thách anh 12MHz thỡ chu kyứ maựy
keựo daứi 1µs. Trong moọt chu kyứ maựy seừ coự 2 xung ALE vaứ 2 byte ủửụùc
ủóc tửứ boọ nhụự chửụng trỡnh (neỏu leọnh chỉ có 1 byte thỡ byte thửự 2ừ ủửụùc
loái boỷ). Giaỷn ủồ thụứi gian cuỷa moọt lần laỏy leọnh ủửụùc veừ ụỷ hỡnh
2.5:
Hình 2.4:Giao tiếp giữa 8051 và EPROM
GVHD: ThS. Lâm Tăng Đức Trang:- 15 - SVTH: Võ Ngọc Tuyến
Port 0
EA
8051
ALE

Port 2
PSEN
D0-D7
A0-A7
EPROM
A8-A15
OE
D Q
74HC373
G
O S C
A L E
P S E N
P o r t 2
P o r t 1
P C L O p c o d e
P C L

P C H
P C H
P 1
P 2
P 1
P 2
P 1
P 2
P 1 P 2 P 1
S 1
S 2
S 3
S 4
S 5 S 6
P 1P 2 P 2
S 1
M o ät c h u k y ø m a ùy
P 1 P 2
ỏn tt nghip: o v khng ch m phũng kớn Khoa: in


Hỡnh 2.5:Gin thi gian c b nh chng trỡnh ngoi.
b/ Truy xut b nh d liu ngoi :
Bo nh d lieu ngoai la mot bo nh RAM ực cho phep
ghi/oực bang cac tn heu WR va RD (cac chaừn P3.6 va P3.7).Ch co
mot cach truy xuat bo nh d lieu ngoai la vi lenh MOVX dung
con tro d lieu (DPTR) 16 bit hoac R0 va R1 xem nh thanh ghi a ch.
Ket noi bus a ch va bus d lieu gia RAM va 8051/8031 cung
giong EPROM va do o cung co the leừn en 64 byte bo nh RAM.
Ngoai ra, chaừn RD cua 8051/8031 ực noi ti chaừn cho phep xuat

(OE) cua RAM va chaừn WR ực noi ti chaừn ghi (WR) cua RAM.
Hỡnh2.6: Giao tip gia 8051/8031 v RAM
Gian thi gian cho lnh c b nh d liu ngoi c v trờn hỡnh sau
i vi lnh MOVX A,@DPTR:
GVHD: ThS. Lõm Tng c Trang:- 16 - SVTH: Vừ Ngc Tuyn
Port 0
8051
EA
ALE
Port 2

RD
WR
D
0
-D
7
RAM
A
0
-A
7
A
8
-A
15
OE
WE
74HC373
O D


G
S 5
D P L
M o ọt c h u k y ứ m a ựy
P o r t 2
P C H
O p c o d e
S 2
R D
S 3
P C L
S 1
S 6
D P H
A L E
P S E N
S 1
S 2
S 4 S 3
S 4 S 5
S 6
P o r t 0
D A T A
M o ọt c h u k y ứ m a ựy
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
Hình 2.7:Giản đồ thời gian của lệnh MOVX
Giaỷn ủoà thụứi gian cho leọnh ghi (MOVX @DPTR, A) cuừng tửụng tửù
chổ khaực ủửụứng WR seừ thay vaứo ủửụứng RD vaứ dửừ lieọu ủửụùc xuaỏt ra
treõn port 0 (RD vaón giửừ mửực cao).

c/ Giải mã địa chỉ:
Nếu có nhiều EPROM hoặc có nhiều RAM hoặc cả hai giao tiếp với 8051 ta
cần giãi mã địa chỉ. Thí dụ, nếu các RAM và ROM 8 bit được sử dụng, địa chỉ phải
được giãi mã để chọn IC nhớ này trên các giới hạn 8K: 0000H-1FFFH, 2000H –
3FFFH,…Một IC giải mã điển hình là 74HC138 với các ngõ ra được nối với ngõ
vào chọn chip CS của IC nhớ (như hình) cho bộ nhớ có nhiều EPROM 2764(8K)
và RAM 6264 (8K). Do đường cho phép riêng rẽ (PSEN cho bộ nhớ chương trình,
RD và WR cho bộ nhớ dữ liệu), 8051 có thể quản lý bộ nhớ đến 64K với EPROM
và 64 K cho RAM.
GVHD: ThS. Lâm Tăng Đức Trang:- 17 - SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
Hình 2.8:Giãi mã địa chỉ (Address Decording)
6/. Lệnh reset:
8051/8031 ủửụùc reset baống caựch giửừ chaõn RST ụỷ mửực cao tối thiểu
2 chu kyứ maựy vaứ traỷ noự veà mức thaỏp. RST coự theồ ủửụùc kớch khi caỏp
ủieọn duứng moọt maùch R-C.
Hình 2.9:Mạch reset hệ thống
Trạng thái của tất cả các thanh ghi của 8051/8031 sau khi reset hệ thống
được tóm tắt trong bảng sau:
GVHD: ThS. Lâm Tăng Đức Trang:- 18 - SVTH: Võ Ngọc Tuyến
+ 5 V
+ 5 V
1 0 0
8 , 2 K
1 0 U F
RAM
RAM
text
Address Bus (A0- A15)
Data Bus (D0-D7)

74HC138
C
B
A
E
E
E
7
6
5
4
3
2
1
0
CS
CS
CS
CS
CS
CS
A0-A12 A0-A12
D0-D7D0-D7OE OE
WE
WR RD
PSEN
RAM
8KBytes
EPROM
8KBytes

2764
6264
Select another EPROM/RAM
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
Thanh ghi Noọi dung
Đếm chương trình
Thanh chứa A
Thanh ghi B
PSW
SP
DPTR
Port 0-3
IP
IE
Các thanh ghi định thời
SCON
SBUF
PCON(HMOS)
PCON(CMOS)
0000H
00H
00H
00H
07H
0000H
FFH
xxx00000B
0xx00000B
00H
00H

00H
0xxxxxxB
0xxx0000B
Bảng 2.3 trạng thái các thanh ghi sau khi reset
Quan tróng nhaỏt trong caực thanh ghi trẽn laứ thanh ghi ủeỏm chửụng
trỡnh, noự ủửụùc ủaởt lái 0000H. Khi RST trụỷ lái mửực thaỏp, vieọc thi haứnh
chửụng trỡnh luõn baột ủầu ụỷ ủũa chổ ủầu tiẽn trong boọ nhụự trong chửụng
trỡnh: ủũa chổ 0000H. Noọi dung cuỷa RAM trẽn chip khõng bũ thay ủoồi bụỷi
leọnh reset.
7. Hoạt động của bộ định thời (timer)
7.1 Giới thiệu:
Moọt ủũnh nghúa ủụn giaỷn cuỷa timer laứ moọt chui caực flip-flop chia
ủõi tần soỏ noỏi tieỏp vụựi nhau, chuựng nhaọn tớn hieọu vaứo laứm nguồn
xung nhũp. Ngoừ ra cuỷa tần soỏ cuoỏi laứm nguồn xung nhũp cho flip-flop
baựo traứn cuỷa timer (flip-flop cụứ). Giaự trũ nhũ phãn trong caực flip-flop cuỷa
timer coự theồ xem nhử soỏ ủeỏm soỏ xung nhũp (hoaởc caực sửù kieọn) tửứ khi
khụỷi ủoọng timer. Vớ dú timer 16 bit seừ ủeỏm lẽn tửứ 0000H ủeỏn FFFFH.
Cụứ baựo traứn seừ lẽn 1 khi soỏ ủeỏm traứn tửứ FFFFH ủeỏn 0000H.
8051/8031 cú 2 timer 16 bit, mỗi timer cú bốn cỏch làm việc. Người ta sử dụng cỏc
timer để : a) định khoảng thời gian, b) đếm sự kiện c) tạo tốc độ baund cho port
nối tiếp trong 8051/8031.
Trong caực ửựng dúng ủũnh khoaỷng thụứi gian, ngửụứi ta laọp trỡnh timer
ụỷ moọt khoaỷng ủều ủaởn vaứ ủaởt cụứ traứn timer. Cụứ ủửụùc duứng ủeồ
ủồng boọ hoựa chửụng trỡnh ủeồ thửùc hieọn moọt taực ủoọng nhử kieồm tra
tráng thaựi cuỷa caực cửỷa ngoừ vaứo hoaởc gửỷi caực sửù kieọn ra caực ngoừ ra.
Caực ửựng dúng khaực coự theồ sửỷ dúng vieọc táo xung nhũp ủều ủaởn cuỷa
GVHD: ThS. Lâm Tăng Đức Trang:- 19 - SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
timer ủeồ ủo thụứi gian trõi qua giửừa hai sửù kieọn (vớ dú : ủo ủoọ roọng
xung).

ẹeỏm sửù kieọn duứng ủeồ xaực ủũnh soỏ lần xaồy ra cuỷa moọt sửù kieọn.
Moọt “sửù kieọn” laứ baỏt cửự taực ủoọng ngoaứi naứo coự theồ cung caỏp moọt
chuyeồn tráng thaựi trẽn moọt chãn cuỷa 8051/8031. Caực timer cuừng coự
theồ cung caỏp xung nhũp toỏc ủoọ baud cho port noỏi tieỏp trong 8051/8031.
Truy xuaỏt timer cuỷa 8051/8031 duứng 6 thanh ghi chửực naờng ủaởc bieọt
cho trong baỷng sau:
SFR MUẽC ẹÍCH ẹềA CHặ ẹũa chổ hoựa tửứng
bit
TCON
TMOD
TL0
TL1
TH0
TH1
ẹiều khieồn timer
Cheỏ ủoọ timer
Byte thaỏp cuỷa timer
0
Byte thaỏp cuỷa timer
1
Byte cao cuỷa timer 0
Byte cao cuỷa timer 1
88H
89H
8AH
8BH
8CH
8DH
Coự
Khõng

Khõng
Khõng
Khõng
Khõng
Bảng 2.4: Thanh ghi chức năng đặc biệt dùng timer.
7.2 Thanh ghi chế độ timer (TMOD)
Thanh ghi TMOD chửựa hai nhoựm 4 bit duứng ủeồ ủaởt cheỏ ủoọ laứm vieọc
cho timer 0 vaứ timer 1.
Bit Tẽn Timer Mõ taỷ
7
6
5
4
3
2
1
0
GATE
C/T
M1
M0
GATE
C/T
M1
M0
1
1
1
1
0

0
0
0
Bit (Mụỷ) coồng, khi lẽn 1 timer chổ cháy khi INT1
ụỷ mửực cao.Bit
Bit chọn chế độ counter/timer
1 bộ đếm sự kiện
0 bộ định khoảng thời gian
Bit 1 của chế độ (mode)
Bit 0 của chế độ
00:chế độ 0 : timer 13 bit
01: chế độ 1 :timer 16 bit
10: chế độ 2 :tự động nạp lại 8255A bit
11: chế độ 3 :tỏch timer
Bit mở cổng
Bit chọn counter/timer
Bit 1 của chế độ
Bit 0 của chế độ
GVHD: ThS. Lâm Tăng Đức Trang:- 20 - SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
Bảng 2.5: Túm tắt thanh ghi TMOD
7.3 Thanh ghi ủiều khieồn timer (TCON)
Thanh ghi TCON chửựa caực bit tráng thaựi vaứ caực bit ủiều khieồn cho
timer 0 vaứ timer 1.
Bit Kyự
hieọu
ẹũa chổ Mõ taỷ
TCON.7
TCON.6
TCON.5

TCON.4
TCON.3
TCON.2
TCON.1
TCON.0
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
Cụứ baựo traứn timer 1. ẹaởt bụỷi phần cửựng
khi
traứn, ủửụùc xoựa bụỷi phần mềm hoaởc phần
cửựng
khi boọ xửỷ lyự chổ ủeỏn chửụng trỡnh phúc vú
ngaột.
Bit ủiều khieồn timer 1 cháy. ẹaởt/xoựa
baống phần mềm cho timer cháy/ngửng.
Cụứ baựo traứn timer 0

Bit ủiều khieồn timer 0 cháy
Cụứ cánh ngaột 1 bẽn ngoaứi
Cụứ cánh ngaột 1 bẽn ngoaứi, phần cửựng khi
phaựt hieọn moọt cánh xuoỏng ụỷ INT1, xoựa
baống phần mềm hoaởc phần cửựng khi CPU
chổ ủeỏn chửụng trỡnh phúc vú ngaột.
ẹaởt/xoựa baống phần mềm ủề ngaột ngoaứi
tớch cửùc cánh xuoỏng/mửực thaỏp.
Cụứ cánh ngaột 0 bẽn ngoaứi.
Cụứ kieồu ngaột 0 bẽn ngoaứi.
Baỷng 2.6: Toựm taột thanh ghi TCON
7. 4 Caực cheỏ ủoọ timer.
a/ Cheỏ ủoọ 0, cheỏ ủoọ timer 13 bit.
ẹeồ tửụng thớch vụựi 8048 (coự trửựụực 8051)
Ba bit cao cuỷa TLX (TL0 / TL1) khõng duứng
Xung nhũp
Timer Cụứ baựo traứn
b/ Cheỏ ủoọ 1- cheỏ ủoọ timer 16 bit :
Hoát ủoọng nhử timer 16 bit ủầy ủuỷ.
Cụứ baựo traứn laứ bit TFx trong TCON coự theồ ủóc hoaởc ghi baống
phầm mềm.
GVHD: ThS. Lâm Tăng Đức Trang:- 21 - SVTH: Võ Ngọc Tuyến
TLx THx
(5 bit) (8 bit)
TFx
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
MSB cuỷa giaự trũ trong caực thanh ghi timer laứ bit 7 cuỷa THx vaứ LBS
laứ bit 0 cuỷa TLx. Caực thanh ghi timer (TLx/THx) coự theồ ủửụùc ủóc hoaởc
ghi baỏt cửự luực naứo baống phầm mềm.
Xung nhũp

Timer Cụứ baựo traứn
c/ Cheỏ ủoọ 0- cheỏ ủoọ tửù ủoọng náp lái 8 bit.
TLx hoát ủoọng nhử moọt timer 8 bit, trong khi ủoự THx vn giửừ
nguyẽn giaự trũ ủửụùc náp. Khi soỏ ủeỏm traứn tửự FFH ủeỏn 00H, khõng
nhửừng cụứ timer ủửụùc set maứ giaự trũ trong THx ủồng thụứi ủửụùc náp vaứo
TLx. Vieọc ủeỏm tieỏp túc tửứ giaự trũ naứy lẽn ủeỏn FFH xuoỏng 00H vaứ
náp lái cheỏ ủoọ naứy raỏt thõng dúng vỡ sửù traứn timer xaỷy ra trong
nhửừng khoaỷng thụứi gian nhaỏt ủũnh vaứ tuần hoaứn moọt khi ủaừ khụỷi ủoọng
TMOD vaứ THx.
Xung nhũp
timer Cụỷ baựo traứn
Náp lái
d/ Cheỏ ủoọ 3- cheỏ ủoọ taựch timer:
Timer 0 taựch thaứnh hai timer 8 bit (TL0 vaứ TH0), TL0 coự cụứ baựo
traứn laứ TF0 vaứ TH0 coự cụứ baựo traứn laứ TF1.
Timer 1 ngửng ụỷ cheỏ ủoọ3, nhửng coự theồ ủửụùc khụỷi ủoọng baống
caựch chuyeồn sang cheỏ ủoọ khaực. Giụựi hán duy nhaỏt laứ cụứ baựo traứn
TF1 khõng coứn bũ taực ủoọng khi timer 1 bũ traứn vỡ noự ủaừ ủửụùc noỏi tụựi
TH0.
Khi timer 0 ụỷ cheỏ ủoọ 3, coự theồ cho timer 1 cháy vaứ ngửng baống caựch
chuyeồn noự ra ngoaứi vaứ vaứo cheỏ ủoọ 3. Noự vn coự theồ ủửụùc sửỷ dúng
bụỷi port noỏi tieỏp nhử boọ táo toỏc ủoọ baund hoaởc noự coự theồ ủửụùc sửỷ
dúng baống baỏt cửự caựch naứo khõng cần ngaột (vỡ noự khõng coứn ủửụùc
noỏi vụựi TF1).
Xung nhũp
Timer
GVHD: ThS. Lâm Tăng Đức Trang:- 22 - SVTH: Võ Ngọc Tuyến
TLx THx
(8 bit) (8 bit)
TFx

TLx
(8 bit)
TFx
THx
(8 bit)
TL1 TH1
TL0
TF0
TH0
TF1
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
Xung nhũp
Timer
Cụứ baựo traứn
I/12 Fosc
Cụứ baựo traứn
7.5 Nguồn táo xung nhũp.
Coự hai nguồn táo xung nhũp coự theồ coự,ủượcù chón baống caựch ghi
vaứo bit C/T (counter/timer) trong TMOD khi khụỷi ủoọng timer. Moọt nguồn
táo xung nhũp duứng cho ủũnh khoaỷng thụứi gian, caựi khaực cho ủeỏm sửù
kieọn.
Crytal
Timer
Clock
T0 or T1
pin
0=Up (Internal Timing)
1=Down (Event Counting)
Nguồn xung táo nhũp
- ẹũnh khoaỷng thụứi gian (interval timing)

Neỏu C/T =0 hoát ủoọng timer liẽn túc ủửụùc chón vaứ timer ủửụùc
duứng cho vieọc ủũnh khoaỷng thụứi gian. Luực ủoự, timer laỏy xung nhũp tửứ
boọ dao ủoọng trẽn chip. Boọ chia 12 ủửụùc thẽm vaứo ủeồ giaỷm tần soỏ xung
nhũp ủeỏn giaự trũ thớch hụùp cho phần lụựn caực ửựng dúng. Nhử vaọy thách
anh 12 MHz seừ cho toỏc ủoọ xung nhũp timer 1 MHz.Bao traứn timer xaỷy ra sau
moọt soỏ (coỏ ủũnh) xung nhũp, phú thuoọc vaứo giaự trũ ban ủầu ủửụùc náp
vaứo caực thanh ghi timer TLx/THx.
- ẹeỏm sửù kieọn (Event counting)
- Neỏu C/T=1, timer laỏy xung nhũp tửứ nguồn bẽn ngoaứi. Trong hầu
heỏt caực ửựng dúng nguồn bẽn ngoaứi naứy cung caỏp cho timer moọt
xung khi xaỷy ra moọt “sửù kieọn “, timer duứng ủeỏm sửù kieọn ủửụùc xaực
ủũnh baống phần mềm baống caựch ủóc caực thanh ghi TLx/THx vỡ giaự
trũ 16 bit trong caực thanh ghi naứy taờng thẽm 1 cho mi sửù kieọn.
Nguồn xung nhũp ngoaứi coự tửứ thay ủoồi chức naờng cuỷa caực chãn
port 3. Bit 4 cuỷa port 3 (P3.4) duứng laứm ngoừ vaứo táo xung nhũp bẽn trong
timer 0 vaứ ủửụùc gói laứ “T0”. Vaứ P3.5 hay “T1” laứ ngoừ vaứo táo xung
nhũp cho timer 1.
GVHD: ThS. Lâm Tăng Đức Trang:- 23 - SVTH: Võ Ngọc Tuyến
On chip
Osillator
÷12

TC /
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
7.6. Baột ủầu dửứng vaứ ủiều khieồn caực timer.
Phửụng phaựp mụựi ủụn giaỷn nhaỏt ủeồ baột ủầu (cho cháy) vaứ dửứng
caực timer laứ duứng caực bit ủiều khieồn cháy :TRx trong TCON, TRx bũ xoựa
sau khi reset heọ thoỏng. Nhử vaọy, caực timer theo maởc nhiẽn laứ bũ caỏm (bũ
dửứng). TRx ủửụùc ủaởt lẽn 1 baống phần mềm ủeồ cho caực timer cháy.
Xung nhũp

Timer Caực thanh ghi timer
0=lẽn : timer dửứng
1=xuoỏng : timer cháy

Cho cháy vaứ dửứng timer
Vỡ TRx ụỷ trong thanh ghi TCON coự ủũa chổ bit, nẽn d daứng cho vieọc
ủiều khieồn caực timer trong chửụng trỡnh.Vớ dú: cho timer 0 cháy baống
leọnh : SETB TR0 vaứ dửứng baống leọnh SETB TR0.
Trỡnh biẽn dũch seừ thửùc hieọn vieọc chuyeồn ủoồi kyự hieọu cần thieỏt tửứ
“TR0” sang ủũa chổ bit ủuựng. SETB TR0 chớnh xaực gioỏng nhử SETB 8CH.
7.7. Khụỷi ủoọng vaứ truy xuaỏt caực thanh ghi timer.
Thõng thửụứng caực thanh ghi ủửụùc khụỷi ủoọng moọt lần ụỷ ủầu
chửụng trỡnh ủeồ ủaởt cheỏ ủoọ laứm vieọc cho ủuựng. Sau ủoự trong thãn
chửụng trỡnh caực timer ủửụùc cho cháy, dửứng, caực bit cụứ ủửụùc kieồm tra
vaứ xoựa, caực thanh ghi timer ủửụùc ủóc vaứ cập nhaọt theo ủoứi hoỷi cuỷa
caực ửựng dúng.
TMOD laứ thanh ghi thửự nhaỏt ủửụùc khụỷi ủoọng vỡ noự ủaởt cheỏ ủoọ
hoát ủoọng. Vớ dú caực leọnh sau khi khụỷi ủoọng timer 1 nhử timer 16 bit
(cheỏ ủoọ 1) coự xung nhũp tửứ boọ dao ủoọng trẽn chớp cho vieọc ủũnh
khoaỷng thụứi gian.
MOV TMOD,#00010000B
Leọnh naứy seừ ủaởt M1=0 vaứ M0=1 cho cheỏ ủoọ 1, C/T=0 vaứ GATE=0
cho xung nhũp noọi vaứ xoựa caực bit cheỏ ủoọ timer 0. Dú nhiẽn timer thaọt sửù
khõng baột ủầu ủũnh thụứi cho ủeỏn khi bit ủiều khieồn cháy TR1 ủửụùc ủaởt
lẽn 1.
Neỏu cần soỏ ủeỏm ban ủầu, caực thanh ghi timer TL1/TH1 cuừng phaỷi ủửụùc
khụỷi ủoọng. Nhụự lái laứ caực timer ủeỏm lẽn vaứ ủaởt cụứ baựo traứn khi coự
sửù chuyeồn tieỏp.
FFFFH sang 0000H.
- ẹóc timer ủang cháy.

Trong moọt soỏ ửựng dúng cần ủóc giaự trũ trong caực thanh ghi timer
ủang cháy. Vỡ phaỷi ủóc 2 thanh ghi timer “sai pha” coự theồ xaồy ra neỏu byte
thaỏp traứn vaứo byte cao giửừa hai lần ủóc. Giaự trũ coự theồ ủóc ủửụùc
GVHD: ThS. Lâm Tăng Đức Trang:- 24 - SVTH: Võ Ngọc Tuyến
TRx
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín Khoa: Điện
khõng ủuựng. Giaỷi phaựp laứ ủóc byte cao trửụực, keỏ ủoự ủóc byte thaỏp
rồi ủóc byte cao lái moọt lần nửừa. Neỏu byte cao ủaừ thay ủoồi thỡ laọp lái
caực hoát ủoọng ủóc.
7.8 Caực khoaỷng ngaộn vaứ caực khoaỷng daứi.
Daừy caực khoaỷng thụứi gian coự theồ ủũnh thụứi laứ bao nhiẽu ? vaỏn
ủề naứy ủửụùc khaỷo saựt vụựi 8051/8031 hoát ủoọng vụựi tần soỏ
12MHz.Nhử vaọy xung nhũp cuỷa caực timer coự tần soỏ laự 1 MHz.
Khoaỷng thụứi gian ngaộn nhaỏt coự theồ coự bũ giụựi hán khõng chổ bụỷi tần
soỏ xung nhũp cuỷa timer maứ coứn bụỷi phần mềm. Do aỷnh hửụỷng cuỷa
thụứi khoaỷng thửùc hieọn moọt leọnh. Leọng ngaộn nhaỏt 8051/8031 laứ moọt
chu kyứ maựy hay 1µs. Sau ủãy laứ baỷng toựm taột caực kyừ thuaọt ủeồ táo
nhửừng khoaỷng thụứi gian coự chiều daứi khaực nhau (vụựi giaỷ sửỷ xung nhũp
cho 8051/8031 coự tần soỏ 12 MHz)
Khoaỷng thụứi gian toỏi ủa Kyừ thuaọt
≈10
256
65535
Khõng giụựi hán
- Baống phần mềm
- Timer 8 bit vụựi tửù ủoọng náp lái
- Timer 16 bit
- Timer 16 bit coọng vụựi caực voứng laọp phần
mềm


Caực kyừ thuaọt ủeồ laọp trỡnh caực khoaỷng thụứi gian (FOSC=12 MHz)
8. Hoát ủoọng port noỏi tieỏp.
8.1. Giụựi thieọu.
8051/8031 coự moọt port noỏi tieỏp trong chip coự theồ hoát ủoọng ụỷ
nhiều cheỏ ủoọ khaực trẽn moọt daừy tần soỏ roọng. Chửực naờng chuỷ yeỏu
cuỷa moọt port noỏi tieỏp laứ thửùc hieọn chuyeồn ủoồi song song sang noỏi tieỏp
vụựi dửừ lieọu xuaỏt vaứ chuyeồn ủồi noỏi tieỏp sang song song vụựi dửừ lieọu
nhaọp.
Truy xuaỏt phần cửựng ủeỏn port noỏi tieỏp qua caực chãn TxD vaứ
RxD. Caực chãn naứy coự caực chửực naờng khaực vụựi hai bit cuỷa port 3. P3
ụỷ chãn 11 (TxD) vaứ P3.0 ụỷ chãn 10 (RxD).
Port noỏi tieỏp cho hoát ủoọng song cõng (full duplex : thu vaứ phaựt
ủồng thụứi) vaứ ủeọm luực thu (receiver buffering) cho pheựp moọt kyự tửù seừ
ủửụùc thu vaứ ủửụùc giửừ trong khi kyự tửù thửự hai ủửụùc nhaọn. Neỏu CPU
ủóc kyự tửù thửự nhaỏt trửụực khi kyự tửù thửự hai ủửụùc thu ủầy ủuỷ thỡ dửừ
lieọu seừ khõng bũ maỏt.
Hai thanh ghi chửực naờng ủaởc bieọt cho pheựp phần mềm truy xuaỏt
ủeỏn port noỏi tieỏp laứ : SBUF vaứ SCON. Boọ ủeỏm port noỏi tieỏp (SBUF) ụỷ
ủịa chổ 99H thaọt sự laứ hai boọ ủeỏm.Vieỏt vaứo SBUF ủeồ truy xuaỏt dửừ lieọu
GVHD: ThS. Lâm Tăng Đức Trang:- 25 - SVTH: Võ Ngọc Tuyến

×