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

Thiết kế hệ thống đèn điều khiển trạm thu phí giao thông sử dụng vi điều khiển AT89C51

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 (3.53 MB, 62 trang )

MỤC LỤC
MỤC LỤC....................................................................................................................1
LỜI NÓI ĐẦU..............................................................................................................2
Chương I: CƠ SỞ LÝ THUYẾT HỌ VI ĐIỀU KHIỂN T89C51............................................4
1.1 Tổng quan về bộ vi điều khiển 8051...........................................................................4
1.1.1. Định nghĩa :.............................................................................................................................4
1.1.2. Sự phát triển của bộ điều khiển 8051.....................................................................................4
1.1. 3. Sơ đồ chức năng 8051 ............................................................................................................5

1.2. Sơ đồ, chức năng các chân của 8051..........................................................................8
1.2.1 Chức năng các chân của 8051................................................................................................9
1.2.2 Nhóm chân cổng vào ra............................................................................................................9
1.2.3 Nhóm chân nguồn dao động và điều khiển............................................................................10
1.2.4 Các thanh ghi đặc biệt:...........................................................................................................11
1.2.5 Lệnh Reset...............................................................................................................................12

1.3 Hoạt động của bộ định thời (timer).........................................................................13
1.3.1 Giới thiệu..............................................................................................................................13
1.3.2 Thanh ghi điều khiển timer (TCON):.....................................................................................13
1.3.3 Thanh ghi chế độ timer (TMOD):...........................................................................................13
1.3.4 Các chế độ timer:...................................................................................................................14
1.3.5 Nguồn tạo xung nhịp:...........................................................................................................17
1.3.6 Bắt đầu dừng và điều khiển các timer ..................................................................................18
1.3.7 Khởi động và truy xuất các thanh ghi timer...........................................................................19

1.4 Tập lệnh của 8051:...................................................................................................19

Chương II : ỨNG DỤNG ĐIỀU KHIỂN ĐÈN BÁO HIỆU TRẠM THU PHÍ GIAO THÔNG...26
2.1 Nguyên lý hoạt động của mạch...............................................................................26
2.2 Sơ đồ khối của hệ thống..........................................................................................27
2.2.1 Khối VĐK..................................................................................................................................27


2.2.2 Khối Hiển Thị ...........................................................................................................................28
2.2.3 Khối giao tiếp vi điều khiển với bàn phím...............................................................................35

2.3 Một số linh kiện và công cụ khác.............................................................................37

1


Chương III : CHƯƠNG TRÌNH MÔ PHỎNG ĐÈN BÁO HIỆU TRẠM THU PHÍ.................39
3.1 Chương trình cho mạch điều khiển đèn hiệu trạm thu phí giao thông.......................39
3.3 Chương trình mô phỏng ..........................................................................................49
3.4 Mạch đèn thu phí giao thông demo.........................................................................56
3.4.1 Các khối và linh kiện................................................................................................................56
3.4.2 Hoạt động của mạch................................................................................................................57

KẾT QUẢ..................................................................................................................60
HƯỚNG PHÁT TRIỂN................................................................................................61
TÀI LIỆU THAM KHẢO...............................................................................................62

LỜI NÓI ĐẦU
Kỹ thuật vi xử lý ngày nay rất phát triển, nó được ứng dụng rất nhiều
trong các lĩnh vực như sản xuất công nghiệp,tự động hóa và nhiều lĩnh vực khác
nữa.So với kĩ thuật số thì kĩ thuật vi xử lí nhỏ gọn hơn nhất nhiều do nó được
tích hợp lại và được lập trình để điều khiển.

2


Với tính ưu việt của vi xử lý thì trong phạm vi đồ án tốt nghiệp này em chỉ
tiến hành việc dùng vi xử lí, vi điều khiển trong điều khiển đền báo hiệu tại trạm

thu phí giao thông , đây chỉ là một ứng dụng nhỏ của nó trong những ứng dụng
của nó.
Nhữn kiến thức được học cộng với sự hiểu biết từ các tài liệu tham khảo
tuy có thể hoàn thành đồ án này nhưng không thể tránh khỏi thiếu sót mong thầy
cô giáo khi xem bài báo cáo này có thể thông cảm cho em.
Để hoàn thành bài báo cáo này em đã nhận được sự chỉ bảo tận tình của cô
giáo hướng dẫn.Cuối cùng chúng em xin chân thành cảm ơn cô giáo bộ môn
hướng dẫn Bùi Thị Mai Hoa và các thầy cô trong bộ môn kĩ thuật máy tính.

3


Chương I: CƠ SỞ LÝ THUYẾT HỌ VI ĐIỀU KHIỂN
T89C51
1.1 Tổng quan về bộ vi điều khiển 8051
1.1.1. Định nghĩa :
Bộ vi điều khiển 8051 hay còn gọi là bộ vi xử lý được cấu tạo là một vi mạch số
mật độ cực lớn làm việc theo chương trình tức theo nguyên tắc nhận lệnh từ bên
ngoài và thực hiện lệnh đó.
Bộ vi xử lý là một hệ thống thao tác trên các bit 0 và 1, nhưng bản thân hệ thống
không giải quyết được vấn đề gì cả, mà bài toán chỉ được giải khi bộ vi xử lý
thực hiện tất cả các chương trình ứng dụng mà ngươi lập trình đưa vào.
1.1.2. Sự phát triển của bộ điều khiển 8051
Sự phát triển của kĩ thuật vi xử lý gán liền với sự phát triển của bộ vi điều khiển.
Intel hãng sản xuất bộ vi sử lý đầu tiên và là hãng có bộ vi điều khiển lớn nhất và
phong phú nhất.
Trong các họ vi điều khiển 8 bít hàng đầu thì 8051 có số lượng lớn nhất và có
nhiều hãng cung cấp nhất. Nhà cung cấp lầ nhà sản xuất bên cạnh nhà sáng chế
bộ vi điều khiển đối với 8051 thì nhà sáng chế là Intel. Nhưng hiên nay có rất
nhiều hãng cung sản xuất. Các hãng này gồm Intel , Atmel , Philips/

Signetics , AMD , Simens , Matra , Pallas...
Năm 1981 hãng Intel cho ra mắt bộ vi điều khiển được gọi là 8051. Bộ vi điều
khiển này là một vi mạch tổng quát của họ MCS – 51 , bộ vi điều khiển
này có các thống số và các đặc trưng như sau.
- 4KB ROM .
- 128 byte RAM.
- 4 port xuất nhập ( 4 cổng vào/ra) 8bít .
- 2bộ định thời 16 bít .
- Mạch giao tiếp nối tiếp .
- Không gian nhớ chương trình ( mã) ngoài 64K .
- Bộ xử lý bít .
- 210 vị trí nhớ được định địa chỉ , mỗi vị trí 1 bít .

4


- Nhân / chia trong 4μs .
8051 đã trở nên rất phổ biến sau khi Intel cho phép các nhà sản xuất khác sản
xuất và bán bất kì biến dạng nào của 8051 nhưng với điều kiện họ phải mã
chương trình tương thích với 8051 mặc dù do các hãng sản xuất khác nhau nên
tốc độ và dung lượng nhớ của ROM trên chíp là khác nhau nhưng tất cả các lệnh
đó đều tương thích với 8051 ban đầu.
Các thông số của 8051
Đặc tính Số lượng
ROM 4K byte
RAM 128 byte
Bộ định thời 2
Chân vào / ra 32
Cổng nối tiếp 1
Nguồn ngắt 6

1.1. 3. Sơ đồ chức năng 8051 .
Bộ vi điều khiển 8051 là thành viên đầu tiên của họ 8051 nó bao gồm các thành
phần sau : Bộ vi sử lý , bộ nhớ và các thiết bị vào ra ngoài ra còn các mạch phụ
trợ khác tuỳ theo từng loại của bộ vi điều khiển 8051 .

5


Sơ đồ khối của 8051

6


* CPU
Còn được gọi là bộ xử lý trung tâm nó đIều khiển mọi hoạt động của hệ và hoạt
động theo chương trình đIều khiển có sẵn
* Bộ nhớ
Bộ nhớ là nơi chứa chương trình và dữ liệu nó bao gồm có bộ nhớ trong và bộ
nhớ ngoài .
+ Bộ nhớ trong bao gồm 2 thành phần ROM và RAM
ROM ( Read only memory ) : Là bộ nhớ cố định có đặc điểm thông tin chỉ có thể
đọc thông tin ra và thông tin không bị mất khi mất điện. Bộ nhớ ROM được dùng
để chứa chương trình chính hoặc chứa chương trình điều hành hay chương trình
hướng dẫn.
RAM (.................) là bộ nhớ động có đặc điểm là thông tin có thể ghi hoặc đọc ra
một ra một cách tuỳ ý và thông tin đó sẽ bị mất đi khi mất điện.
RAM được sử dụng để nạp phần còn lại của hệ điều hành từ đĩa khởi động hoặc
nạp vào các chương trình ứng dụng từ bộ nhớ ngoài, lưu trữ số liệu và trạng thái
hệ thống trong quá trình làm việc.
+ Bộ nhớ ngoài gồm băng từ, đĩa từ... được sử dụng nhiều vì giá thành rất rẻ và

được dùng để lưu trữ thông tin và dữ liệu
• Cổng vào ra
+ Thực hiện trao đổi thông tin giữa CPU với các thiết bị ngoại vi như bàn phím,
chuột máy in...
+ Để tránh cho CPU mất nhiều thời gian cho các cổng vào/ ra thì trong các máy
tính người ta sử dụng các bộ xử lý giá thành thấp, chuyên dụng cho các cổng
vào/ ra. Vì vậy khi CPU đang bận các bộ xử lý vào ra vẫn có thể làm công
việc của nó.
• Các Bus
Các đường dây dùng để truyền song song các tín hiệu có cùng chức năng và có
các loại Bus sau đây.
+ Bus địa chỉ: Là hệ thống các dây dẫn song song mà CPU cần tới để xác định
địa chỏ của các thành phần trong qúa trình làm việc

7


+ Bus dữ liệu: Là hệ thống đường truyền song song được dùng để trao đổi dữ
liệu giữa CPU với các thành phần bên ngoài và giữa các thành phần với nhau
+ Bus điều khiển: Gồm các đường dây dùng để truyền tín hiệu điều khiển cần
thiếu giúp cho CPU điều khiển việc trao đổi dữ liệu, xử lý sự cố và đồng bộ toàn
hệ thống
1.2. Sơ đồ, chức năng các chân của 8051
Sơ đồ chân của 8051

Sơ đồ chân của 8051

8



1.2.1 Chức năng các chân của 8051
Chíp 8051 có 40 chân trong đó có 32 chân có công dụng xuất/ nhập tuy nhiên 24
trong 32 chân này có 2 mục đích sử dụng. Mỗi một chân này có thể hoạt động
xuất/nhập như một đường địa chỉ/dữ liệu của bus địa chỉ/dữ liệu đa hợp, 32 chân
này hình thành 4 port 8 bít. 8 chân cho một bort và có thể sử dụng như một đơn
vị giao tiếp song song như máy in, bộ biến đổi DA...
Các chân còn lại dành cho nguồn Vcc , đất GND, các chân dao động XTAL1.
1.2.2 Nhóm chân cổng vào ra
Bốn cổng vào ra Port0, Port1, Port2, Port3, đèu có 8 chân và tạo thành cổng 8
bít . Khi Reset thì tất cảc các cổng làm nhiệm vụ đầu ra còn để làm
nhiệm vụ đầu vào thì cần phải lập trình.

a. Cổng Port 0
Cổng Port0 Có 8 chân (Chân từ 32 đến 39) bình thường đây là cổng ra, vào hoặc
ra nhưng nó có hai tác dụng trong các thiết kế tối thiểu thì Port 0 được sử fụng
làm nhiệm vụ xuất nhập còn trong các thiết bị lớn hơn thì Port trở thành
bus địa chỉ và bus dữ liệu đa hợp.

b. Cổng Port 1
Cổng Port 1 cũng có các chân ( Các chân từ 1 đến 8) các chân này chỉ có một tác
dụng là dùng để giao tiếp với các thiết bị ngoại vi (làm đường xuất nhập hoặc
làm các ngõ vào cho các mạch dịch thời thứ 3). Để chuyển cổng port 1 thành đầu
vào cần lập trình bằng cách ghi 1 đến tất cả các bít của cổng.

c. Cổng port 2
Cổng Port 2 có 8 chân( từ chân 24 đến chân 28) có thể được sử dụng làm đầu vào
hoặc đầu ra. Cổng này có hai chức năng là chuyển địac hỉ và dữ liệu, byte địa chỉ
cao của bus địa chỉ 16 bít cho các thiết kế có bộ nhớ chương
trình ngoài .


d. Cổng Port 3
Cổng Port có 8 chân từ chân 10 đến chân 17. Cổng này có thể được sử dụng làm
đầu vào hoặc đầu ra. Khi không làm nhiệm vụ xuất nhập thì nó sẽ có các chức
năng riêng liên quan đến các đặc trung cụ thể của 8051 , tuy nhiên cổng Port3
còn có một chấc năng quan trọng khác là cung cấp một số tín hiệu đặc biệt chẳng
hạn như ngắt.
Bảng chức năng của cổng Port3
Bít Tên Địa chỉ bít Chức năng

9


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 INT0 B2H Ngõ vào ngắt ngoài 0
P3.3 INT1 B3H Ngõ vào ngắt ngoài 1
P3.4 T0 B4H Ngõ vào của bộ định thời / đếm 0
P3.5 T1 B5H Ngõ vào của bộ định thời / đếm 1
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
1.2.3 Nhóm chân nguồn dao động và điều khiển

a. Nhóm chân nguồn
+ Chân Vcc: Chân 40 cung cấp điện áp nguồn +5V cho chíp
+ Chân GND: Chân số 20 là cung cấp nguồn âm (là chân mát)

b. Nhóm chân dao động
Nhóm chân XTAL1 và XTAL2 là các chân 18 và 19 của chíp 8051
hiện tại đã có môt bộ dao động đồng hồ ở bên ngoài dùng để kích hoạt và hai hân
này cần được nối với bộ dao động thạch anh ở ngoài va khi đó được mắc với các

tụ ổn định tần số dao động cho thạch anh .
Tần số danh định của thạch anh là 12 MHz cho tất cả họ vi điều khiển 8051 . Bộ
dao động tạo xung đồng hồ không nhất thiết là bộ dao động dùng thạch anh mà
cũng có thể dùng bộ dao động TTL khi đó dao động được nối tới chân XTAL1
còn chân XTAL2 để hở .

c. Nhóm chân điều khiển .
+ Chân RESET ( chân số 9 ) là chân khởi động lại trạng thái ban đầu của hệ
thống . Khi có xung cao đặt tới chân này thì bộ vi điều khiển 8051 sẽ kết thúc
mọi hoại động hiện tại và tiến hành khởi động lại . Quá trình này xảy ra hoàn
toàn tương tự như khi bật nguồn và khi đó mọi giá trị trên thanh ghi đều bị xoá
hết
Chân EA ( Chân số 31 ) Là chân truy xuất ngoài có thể được nối với +5V khi có
mức logic1 và nối đất khi có mức logic 0 .
Nếu có mức logic 1 thì nó sẽ thực thi chương trình trong ROM .
Nếu có mức logic 0 và chân PSEN cũng ở mức 0 thì chương trình cần thực thi
chứa ở bộ nhớ ngoài vì trong chíp không có bộ nhớ chương trình .
+ Chân PSEN (chân 29 )

10


Là chân ra có chức năng cho phép cất chương trình 1 và cho phép bộ nhớ chương
trình cung cấp cho ta 4 tín hiệu điều khiển bus và là tín hiệu xuất trên chân này
và đây cũng là tín hiệu cho phép truy xuất bộ nhớ chương trình ngoài và được
nối với OE .
Tín hiệu PSEN ở mức logic 0 khi thực hiện thời gian tìm nạp lệnh .
Tín hiệu PSEN ở mức logic 1 khi thực hiện 1 chương trình chứa ở ROM .
+ Chân chốt địa chỉ ALE ( Chân 30 ) .
Là chân có mức tích cực cao và là chân xuất tín hiệu cho phép xuất địa chỉ ALE .

Khi pỏt được chọn làm bus địa chỉ / dữ liệu thi chân ALE xuất tín hiệu để chốt
địa chỉ và sau khi chốt các chân của port sẽ xuất / nhập dữ liệu hợp lệ trong suốt
1/2 thứ 2 của chu kì bộ nhớ .
Chân ALE còn được sử dụng để phân kênh địa chỉ và dữ liệu bằng cách nối tới
chân G của chíp 74LS373 .
Tín hiệu ALE có tần số bằng 1/6 tần số của mạch dao động , chân ALE còn dùng
làm chân nhận xung ngõ vào lập trình cho EDROM .
1.2.4 Các thanh ghi đặc biệt:

a.Các thanh ghi port xuất nhập:
Các port của 8051 bao gồm port 0 ở địa chỉ 80H, port 1 ở địa chỉ 90H,port 2 ở
địa chỉ A0H, port 3 ở địa chỉ B0H.Tất cả các port đều được địa chỉ hóa từng
bit.Điều đó cung cấp một khả năng giao tiếp thuận lợi.

b.Các thanh ghi timer:
8051 chứa 2 bộ định thời đếm 16 bit được dùng trong việc định thời hoặc đém
sự kiện.Time 0 ở địa chỉ 8AH (TL0: byte thấp) và 8CH (TH0: byte cao).Time 1 ở
địa chỉ 8BH (TL1: byte thấp) và 8DH (TH1: byte cao).Việc vận hành timer được
set bởi thanh ghi Timer Mode (TMOD) ở địa chỉ 89H và thanh ghi điều khiển
timer(TCON) ở địa chỉ 88H.Chỉ có TCON được địa chỉ hóa từng bit.

c. Các thanh ghi port nối tiếp:
8051 chứa một port trên chip dành cho việc trao đổi thông tin với các thiết bị
như máy tính ,modem hoặc cho việc giao tiếp với các IC khác có giao tiếp nối
tiếp (có bộ chuyển đổi A/D, các thanh ghi dịch…).

11


d. Các thanh ghi ngắt:

8051 có cấu trúc 5 nguồn ngắt và 2 mức ưu tiên.Các ngắt bị cấm sau khi reset hệ
thống và sẽ được cho phép bằng việc ghi thanh ghi cho phép ngắt(IE) ở địa chỉ
8AH.Cả 2 thanh ghi đều được địa chỉ hóa từng bit.

e .Các thanh ghi điều khiển công suất:
thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa nhiều bit điều khiển.
1.2.5 Lệnh Reset.
8051 được reset bằng cách giữ chân RST ở mức cao ít nhất trong 2 chu kì máy
và trả nó về mức thấp.RST có thể được kích khi cấp điện đùng một mạch R-C.

Mạch reset hệ thống
Trạng thái của tất cả các thanh ghi 8051sau khi reset hệ thống được tóm tắt
trong bảng sau:

12


Quan trọng nhất trong các thanh ghi trên là thanh ghi đém chương trình , nó
được đặt lại 0000H. Khi RST trở lại mức thấp, việc thi hành chương trình luôn
bắt đầu ở địa chỉ đầu tiên trong bộ nhớ chương trình : địa chỉ 0000H.Nội dung
RAM trên chip không bị thay đổi khi sử dụng lệnh reset.
1.3 Hoạt động của bộ định thời (timer)
1.3.1 Giới thiệu
Một định nghĩa đơn giản của timer là chuỗi các flip-flop chia đôi tàn số nối tiếp
với nhau, chúng nhận tín hiệu và làm nguồn xung nhịp.Ngõ ra của tần số cuối
làm nguồn xung nhịp cho flip-flop báo tràn của timer(flip-flop cờ).Giá trị nhị
phân trong các flip-flop của timer có thể xem như số đếm số xung nhịp (hoặc các
sự kiện ) từ khi khởi động timer ví dụ timer 16 bit sẽ đếm lên từ 0000H đén
FFFFH.
8051 có 2 timer 16 bit, mỗi timer có 4 cách làm việc.

Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở một
khoảng đều đặn va đạt cờ tràn timer.Cờ được dùng để đồng bộ hóa chương trình
để thực hiện một tác động như kiểm tra trạng thái của các cửa ngõ vào hoặc gửi
các sự kiện ra các ngõ ra. Các ứng dụng khác có thể sử dụng để tạo xung nhịp
đều đặn của timer để đo thời gian trôi qua giữa hai sự kiện (ví dụ: đo độ xung).
Đếm sự kiện dùng để xác định số lần xảy ra của một sự kiện.Một sự kiện là bất
cứ tác động ngoài nào có thể cung cấp một chuyển trạng thái trên chân của 80
1.3.2 Thanh ghi điều khiển timer (TCON):
Thanh ghi TCON chứa các bit trang thái và các bit điều khiển cho timer 0 và
timer 1.
Bit
TCON.7
TCON.6
TCON.5
TCON.4
TCON.3
TCON.2
TCON.1
TCON.0

Kí hiệu
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0


Địa chỉ
Mô tả
8FH
Cờ báo tràn timer1
8EH
Bit điều khiển timer 1 chạy.Đặt /Xóa
8DH
Cờ báo tràn timer 0
8CH
Bit điều khiển timer 0 chạy
8BH
Cờ cạnh ngắt 1 bên ngoài
8AH
Cờ kiểu ngắt 1 bên ngoài
89H
Cờ cạnh ngắt 0 bên ngoài
88H
Cờ cạnh ngắt 0 bên ngoài
Bảng tóm tắt thanh ghi TCON

1.3.3 Thanh ghi chế độ timer (TMOD):

13


Thanh ghi TMOD chứa 2 nhóm 4 bit dùng để đặt chế độ làm việc cho timer 0 và
timer 1.
Bit
7


Tên
GATE

Timer
1

Mô tả
Bit cổng, khi lên 1 timer chỉ chạy
khi INT1 ở mức cao
6
C/T
1
Bit chọn chế độ counter/timer
1=bộ đếm sự kiện
0=bộ định khoảng thời gian
5
M1
1
Bit 1 của chế độ (mode)
4
M0
1
Bit 0 của chế độ
00: chế độ 0:timer 13 bit
01: chế dộ 1: timer 16 bit
10: chế độ 2: tự động nạp lại
8255Abit
11: chế độ 3: tách timer
3
GATE

0
Bit cổng
2
C/T
0
Bit chọn counter/timer
1
M1
0
Bit 1 của chế độ
0
M0
0
Bit 0 của chế độ
Bảng tóm tắt thanh ghi TMOD
1.3.4 Các chế độ timer:

Chế độ 0 ,chế độ timer 13 bit
Ba bit cao của TLx (TL0 hoặc TL1) không dùng

Chế độ 1, chế độ timer 16 bit
hoạt động như timer 16 bit đầy đủ
Cờ báo tràn là bit TFx trong TCON có thể đọc hoặc ghi bằng phần mềm.

14


MSB của các giá trị trong các thanh ghi timer là bit của THx và LBS là bit 0
của TLx. Các thanh ghi timer(TLx/THx) có thể được đọc hoặc ghi bất cứ lúc nào
bằng phần mềm.


Chế độ 0 , chế độ tự động nạp lại 8 bit.
TLx hoạt động như 1 timer 8 bit, trong khi đó THx vẫn giữ nguyên giá trị dược
nạp. Khi số đếm bị tràn từ FFH đến 00H, không những cờ timer được set mà giá
trị trong THx cũng đồng thời được nạp vào trong TLx việc đếm được tiếp tục từ
giá trị này lên đến FFH xuống 00H và được nạp lại…chế độ này rất thông dụng
vì sự tràn timer xảy ra trong những khoảng thời gian nhất định và tuần hoàn 1 khi
đã khởi động TMOD và THx.

15


Chế độ 3, chế độ tách timer:
Timer 0 tách thành 2 timer 8 bit (TL0 và TF0), TL0 cờ báo tràn là TF0 và TH0
cờ báo tràn là TF1.
Timer 1 ngưng ở chế độ 3 nhưng có thể được khởi động ở chế độ khác.Giới hạn
duy nhất là cờ báo tranfTF1 không còn bị tác động khi timer 1 bị tràn vì nó đã
được nối với TH0.
Khi timer 0 ở chế độ 3 ,có thể cho timer 1 chạy và ngưng bằng cách chuyển nó
ra ngoài và vào chế độ 3 .

16


1.3.5 Nguồn tạo xung nhịp:
Có 2 nguồn xung nhịp có thể được chọn bằng cách ghi vao bit C/T
(counter/timer) trong TMOD khi khởi động timer .Một nguồn xung nhịp dùng
cho định khoảng thời gian , cái khác cho đếm sự kiện

17



-Định khoảng thời gian(interval timing)
Nếu C/T=0 hoạt động timer liên tục được chọn và timer được dùng cho việc
định khoảng thời gian.Lúc đó, timer lấy xung nhịp từ bộ dao động trên chip.Bộ
chia 12 được thêm vào để giảm tần số xung nhịp đến giá trị thích hợp cho phần
lớn các ứng dụng.Như vậy thạch anh 12 MHZ sẽ cho tốc độ xung nhịp timer 1
MHZ. Báo tràn timer xảy ra sau một số (cố định) xung nhịp. phụ thuộc vào giá trị
ban đầu dược nạp vào các thanh ghi timer(TLx/THx).
-Đếm sự kiện(Event Counting)
-Nếu C/T=1, timer lấy xung nhịp từ nguồn bên ngoài.Trong hầu hết các ứng
dụng nguồn bên ngoài này cung cấp cho timer 1 xung khi xảy ra 1 “sự kiện”
,timer dùn đém sự kiện được xác định bằng phần mềm bằng cách đọc các thanh
ghi TLx/THx vì giá trị 16 bit trong các thanh ghi này tăng thêm 1 cho mỗi sự
kiện.
Nguồn xung nhịp bên ngoài có thể làm thay đổi chức năng của các chân port
3.Bit 4 của port 3 (P3.4) dùng làm ngõ vào tạo xung nhịp bên trong timer 0 và
được gọi là “T0” và P3.5 hay “T1” là ngõ vào tạo xung nhịp cho timer 1.
1.3.6 Bắt đầu dừng và điều khiển các timer .
Phương pháp mới đơn giản nhất để bắt đầu và dừng các timer là sử dụng các bit
diều khiển chạy:TRx trong TCON,TRx bị xóa sau khi reset hệ thống .Như vậy là

18


các timer theo mặc nhiên là bị cấm.TRx dược đặt lên bằng 1 để cho các timer
chạy.

Vì TRx ở trong thanh ghi TCON có địa chỉ bit nên dễ dang trong việc điều khiển
các timer trong chương trình.Ví dụ: cho timer chạy bằng lệnh: SETB TR0 và

dừng bằn lệnh: CLR TR0
Trình biên dịch sẽ thực hiện việc chuyển đổi kí hiệu cần thiết “TR0” sang địa chỉ
bit đúng. SET TR0 chính xác giống như SETB 8CH.
1.3.7 Khởi động và truy xuất các thanh ghi timer.
Thông thường các thanh ghi dược khởi động một lần ở đầu chương trình để đặt
chế độ làm việc cho đúng Sau đó trong thân chương trinh các timer được cho
chạy,dừng các bít cờ được kiểm tra và xóa , các thanh ghi timer được đọc và cập
nhật …theo đòi hỏi của các ứng dụng.
TMOD là thanh ghi thứ nhất được khởi động vì nó đặt chế độ hoat động.
1.4 Tập lệnh của 8051:
Tập lệnh của 8051 có 255 lệnh gồm 139 lệnh 1 byte ,92 lệnh 2 byte và 24 lệnh
3 byte.

Các nhóm lệnh của 8051
Tập lệnh của 8051 được chia thành 4 nhóm :
- Số học
- Lôgic

19


- Chuyển dữ liệu
- Lệnh rẽ nhánh
Các chi tiết thiết lập lệnh
Rn

: Thanh ghi R0 đến R7 của bảng thanh ghi được chọn.

Data


: 8 bit địa chỉ vung dữ liệu bên trong Nó có thể là vùng Ram hoặc

các
@Ri

thanh ghi chức năng đặc biệt.
: 8 bit vung RAM dữ liệu trong được đánh giá giá địa chỉ gián tiếp

qua thanh ghi R0 hoặc R1.
#data

: Hằng 8 bit chứa trong câu lệnh.

#data 16

: Hằng 16 bit chứa trong câu lệnh.

Addr16

: 16 bit địa chỉ đích được dùng trong lệnh LCALL và LJMP.

Addr11

: 11 bit địa chỉ đích được dùng trong lệnh LCALL và ẠJMP.

Rel

: Byte offset 8 bit có dấu được dùng trong lệnh SJMP và những

lệnh nhảy có điều kiện.

Bit

: Bit được định địa chỉ trực tiếp trong RAM dữ liệu nội hoặc các

thanh ghi đặc biệt .

a.Nhóm lệnh xử lý số học:
ADD A,Rn

: Cộng nội dung thanh ghi Rn vào thanh ghi A.

ADD A,data

(2,1): Cộng trực tiếp 1 byte vào thanh ghi A.

ADD A,@Ri

(1,1): Cộng gián tiếp nội dung RAM chứa tại địa chỉ được khai

báo trong Ri vào thanh ghi A.
ADD A,#data

(2,1) : Cộng dữ liệu tức thời vào A.

ADD A,Rn

(1,1) : Cộng thanh ghi và cờ nhớ vào A.

ADD A,data


(2,1 ) : Cộng trực tiếp byte dữ liệu và cờ nhớ vào A.

ADDC A,@Ri

(1,1) : Cộng gián tiếp nội dung RAM và cờ nhớ vào A.

ADDC A,#data (2,1) :Cộng dữ liệu tức thời và cờ nhớ vào A.

SUBB A,Rn

(1,1) : Trừ nội dung thanh ghi A cho nội dung thanh ghi Rn và

20


cờ nhớ
SUBB A,data

(2,1) : Trừ trực tiếp A cho một số và cờ nhớ.

SUBB A,@Ri

(1,1) : Trừ gián tiếp A cho một số và cờ nhớ.

SUBB A,#data

(2,1) : Trừ nội dung A cho một số tức thời và cờ nhớ.

INC A


(1,1) : Tăng nội dung thanh ghi A lên 1 .

INC Rn

(1,1) : Tăng nội dung thanh ghi Rn lên 1.

INC data

(2,1) : Tăng dữ liệu trực tiếp lên 1.

INC @Ri

(1,1) : Tăng gián tiếp nội dung và vùng RAM lên 1.

DEC A

(1,1) : Giảm nội dung thanh ghi A xuống 1.

DEC Rn

(1,1) : Giảm nội dung thanh ghi Rn xuống 1.

DEC data

(2,1) : Giảm trực tiếp dữ liệu xuống 1.

DEC @Ri

(1,1) : Giẳm gián tiếp nội dung vùng RAM xuống 1.


INC DPTR

(1,2) :Tăng nội dung con trỏ dữ liệu lên 1.

MUL AB

(1,4) : Nhân nội dung thanh ghi A với nội dung thanh ghi B.

DIV AB

(1,4) : Chia nội dung thanh ghi A cho nội dung thanh ghi B.

DA A

(1,1) : Hiệu chỉnh thập phân thanh ghi A.

b. Nhóm lệnh Logic :
ANL A,Rn

(1,1) : AND nội dung thanh ghi A với nội dung thanh ghi Rn.

ANL A,data

(2,1) : AND nội dung thanh ghi A với dữ liệu trực tiếp .

ANL A,@Ri

(1,1) : AND nội dung thanh ghi A với dữ liệu gián tiếp trong
RAM.


ANL A,#data

(2,1) : AND nội dung thanh ghi A với dữ liệu tức thời.

ANL data,A

(2,1) : AND một dữ liệu trực tiếp với A.

ANL data,#data

(3,2) : AND một dữ liệu trực tiếp với một dữ liệu tức thời.

ANL C,bit

(2,2) : AND cờ nhớ với 1 bit trực tiếp.

ANL C,/bit

(2,2) : AND cờ nhớ với bù 1 bit trực tiếp.

ORL A,Rn

(1,1) : OR thanh ghi A với thanh ghi Rn.

ORL A,data

(2,1) : OR thanh ghi A với một dữ liệu trực tiếp.

ORL A,@Ri


(1,1) : OR thanh ghi A với một dữ liệu gián tiếp.

21


ORL A,#data

(2,1) :OR thanh ghi A với một dữ liệu tức thời.

ORL data,A

(2,1) : OR một dữ liệu trực tiếp với thanh ghi A.

ORL data,#data

(3,1) :OR một dữ liệu trực tiếp với một dữ liệu tức thời

ORL C,bit

(2,2) : OR cờ nhớ với một bit trực tiếp.

ORL C,/bit

(2,2) : OR cờ nhớ với bù của một bit trực tiếp.

XRL A,Rn

(1,1) : XOR thanh ghi A với thanh ghi Rn.

XRL A,data


(2,1) : XOR thanh ghi A với một dữ liệu trực tiếp.

XRL A,@Ri

(1,1) : XOR thanh ghi A với một dữ liệu gián tiếp.

XRL A,#data

(2,1) : XOR thanh ghi A với một dữ liệu tức thời.

XRL data,A

(2,1) : XOR một dữ liệu trực tiếp với thanh ghi A.

XRL dara,#data

(3,1) : XOR một dữ liệu trực tiếp với một dữ liệu tức thời.

SETB C

(1,1) : Đặt cờ nhớ.

SETB bit

(2,1) : Đặt 1 bit trự tiếp.

CLR A

(1,1) : Xóa thanh ghi A.


CLR C

(1,1) : Xóa cờ nhớ.

CPL A

(1,1) : Bù nội dung thanh ghi A.

CPL C

(1,1) : Bù cờ nhớ.

CPL bit

(2,1) : Bù một bit trực tiếp.

RL A

(1,1) : Quay trái nội dung thanh ghi A.

RLC A

(1,1) : Quay trái nội dung thanh ghi A qua cờ nhớ.

RR A

(1,1): Quay phải nội dung thanh ghi A.

RRC A


(1,1) : Quay phải nội dung thanh ghi A qua cờ nhớ.

SWAP

(1,1) : Quay trái nội dung thanh ghi A 1 nibble (1/2byte).

c. Nhóm lệnh chuyển dữ liệu:
MOV A,Rn

(1,1):Chuyển nội dung thanh ghi Rn vào thanh ghi A.

MOV A,data

(2,1): Chuyển dữ liệu trực tiếp vào thanh ghi A.

MOV A,@Ri

(1,1): Chuyển dữ liệu gián tiếp vào thanh ghi A.

MOV A,#data

(2,1): Chuyển dữ liệu tức thời vào thanh ghi A.

22


MOV Rn,data

(2,2): Chuyển dữ liệu trực tiếp vào thanh ghi Rn.


MOV Rn,#data (2,1): Chuyển dữ liệu tức thời vào thanh ghi Rn.
MOV data,A

(2,1): Chuyển nội dung thanh ghi A vào một dữ liệu trực tiếp.

MOV data,Rn

(2,2): Chuyển nội dung thanh ghi Rn vào một dữ liẹu trực tiếp

MOV data,data (3,2): Chuyển một dữ liệu trực tiếp vào một dữ liệu trực tiếp.
MOV data,@Ri (2,2): Chuyển một dữ liệu gián tiếp vào một dữ liệu gián tiếp
MOV data,#data (3,2): Chuyển một dữ liệu tức thời vào một dữ liệu trực tiếp
MOV @Ri,A

(1,1): Chuyển nội dung thanh ghi A vào một dữ liệu gián tiếp

MOV @Ri,data (2,2): Chuyển một dữ liệu trực tiếp vào một dữ liệu gián tiếp
MOV @Ri,#data (2,1): Chuyển dữ liệu tức thời vào dữ liệu gián tiếp.
MOV DPTR,#data16 (3,2): Chuyển một hằng số 16 bit vào thanh ghi con trỏ dữ
liệu.
MOV C,bit

(2,1): Chuyển một bit trực tiếp vào cờ nhớ.

MOV bit,C

(2,2): Chuyển trực tiếp một bit vào cờ nhớ.

MOV A,@A+DPTR (1,2): Chuyển byte bộ nhớ chương trình có địa chỉ là

@A+DPRT vào thanh ghi A.
MOVC A,@A+PC (1,2): Chuyển byte bộ nhớ chương trình có địa chỉ là
@A+PC vaò thanh ghi A.
MOV A,@Ri (1,2): Chuyển dữ liệu ngoài (8 bit địa chỉ) vào thanh ghi A.
MOVX A,@DPTR (1,2): Chuyển dữ liệu ngoài (16 bit địa chỉ) vào thanh ghi A.
MOVX @Ri,A (1,2): Chuyển nội dung A ra dữ liệu ngoài (8 bit địa chỉ).
MOVX @DPTR,A (1,2): Chuyển nội dung A ra dữ liệu bên ngoài (16 bit địa
chỉ).
PUSH data

(2,2) : Chuyển dữ liệu trực tiếp vào ngăn xếp và tăng SP.

POP data

(2,2) : Chuyển dữ liệu trực tiệp vào ngăn xếp và giảm SP.

XCH A,Rn

(1,1) : Trao đổi dữ liệu giữa thanh ghi Rn và thanh ghi A.

XCH A,data (2,1) : Trao đổi giữa thanh ghi A và một dữ liệu trực tiếp.
XCH A,@Ri (1,1) : Trao đổi giữa thanh ghi A và một dữ liệu gián tiếp.
XCHD A,@R (1,1) : Trao đổi giữa nibble thấp (LSN) của thanh ghi A và LSN
Của dữ liệu gián tiếp.

23


24



d. Nhóm lệnh rẽ nhánh:
ACALL addr11 (2,2): Gọi chương trình con dùng địa chỉ tuyệt đối
LCALL addr16 (3,2): Gọi chương trình con dùng địa chỉ dài.
RET

(1,2): Trở về từ lệnh gọi chương trình con.

RET1

(1,2): Trờ về từ lệnh gọi ngắt.

AJMP addr11

(2,2): Nhảy tuyệt đối.

LJMP addr16

(3,2): Nhảy dài.

SJMP rel

(2,2): Nhảy ngắn.

JMP @A+DPTR (1,2): Nhảy gián tiếp từ con trỏ dữ liệu.
JZ rel

(2,2): Nhảy nếu A=0.

JNZ rel


(2,2): Nhảy nếu A không bằng 0.

JC rel

(2,2): Nhảy nếu cờ nhớ được đặt.

JNC rel

(2,2): Nhảy nếu cờ nhớ không được đặt.

JB bit,rel

(3,2): Nhảy tương đói nếu bit trực tiếp được đặt.

JNB bit,rel

(3,2): Nhảy tương đói nếu bit trực tiếp không được đặt.

JBC bit,rel

(3,2): Nhảy tương đói nếu bit trực tiếp được đặt ,rồi xóa.

CJNE A,data,rel (3,2): So sánh dữ liệu trực tiếp với A và nhảy nếu không bằng.
CJNE A,#data,rel (3,2): So sánh dữ liệu tức thời với A và nhảy nếu không bằng.
CJNE Rn,#data,rel (3,2): So sánh dữ liệu tức thời với nội dung thanh ghi Rn và
nhảy nếu không bằng.
CJNE @Ri,#data,rel (3,2): So sánh dữ liệu tức thời với dữ liệu gián tiếp và
nhảy nếu không bằng.
DJNZ Rn,rel (2,2): Giảm thanh ghi Rn và nhảy nếu không bằng.

DJNZ data,rel (3,2): Giảm dữ liệu trực tiếp và nhảy nếu không bằng.

25


×