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

bài tập lớn môn kĩ thuật vi xử lý - vi điều khiển 8051

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 (801.97 KB, 52 trang )

Khoa Điện – Điện Tử

Lớp DHDT1_K1
TRƯỜNG ĐẠI HỌC THÀNH ĐÔ
KHOA ĐIỆN - ĐIỆN TỬ

BÀI TẬP LỚN MÔN KĨ THUẬT
VI XỬ LÝ

Họ và tên:
 Nguyễn Văn Thức
 Nguyễn Thanh Thi
 Nguyễn Thị Thùy
 Nguyễn Khắc Sáng
 Nguyễn Đình Sỹ
Lớp: …ĐT1…

Khóa: 1…

Hà Nội 2012

Bài tập lớn môn Điện tử số

1


Khoa Điện – Điện Tử

Lớp DHDT1_K1
MỤC LỤC


Bài tập lớn môn Điện tử số

2


Khoa Điện – Điện Tử

Lớp DHDT1_K1
LỜI NÓI ĐẦU

Trong sự phát triển của đất nước ta hiện nay, điện- điện tử là ngành có vai trò rất
quan trọng trong sự phát triển chung đó. Các hệ thống điện- điện tử được ứng dụng
trong mọi lĩnh vực của đời sống cũng như trong các dây truyền sản xuất hiện đại.
Để xây dựng lên các hệ thống điện- điện tử phải cần rất nhiều kiến thức như:
Phân tích hệ thống, thiết kế đánh giá hệ thống, kiến thức về phần cứng, kiến thức về
phần mềm…Vì vậy đòi hỏi các kỹ sư điện tử phải có một kiến thức vững vàng.
Bản báo cáo này cung cấp những kiến thức cơ bản nhất về vi điều khiển 8051.
Đồng thời qua những kiến thức cơ bản đó, các bạn sinh viên sẽ có cái nhìn tổng quát
nhất về vi xử lý và vi điều khiển.
Nội dung của bản báo cáo gồm 3 chương:
Chương 1: Họ vi điều khiển 8051.
Chương 2: Ngắt và Timer trong 8051.
Chương 3: Một số bài ứng dụng của 8051.
Vì thời lượng biên soạn có hạn nên trong bản báo cáo này, nhóm em chỉ đưa ra
những vấn đề cơ bản nhất. Nhóm em mong các quí thầy cô có những lời khuyên giúp
nhóm em hoàn thiện hơn bản báo cáo này.
Chúng em xin chân thành cảm ơn !

Bài tập lớn môn Điện tử số


3


Khoa Điện – Điện Tử

Lớp DHDT1_K1
Chương 1
HỌ VI ĐIỀU KHIỂN 8051

1.1. Một số khái niệm cơ bản:
1.1.1.Vi xử lí (VXL): Là thuật ngữ chung dùng để ứng dụng các công nghệ vi xử lí,
công nghệ tích hợp và xử lí theo chương trình vớ các chip được chế tạo chỉ tích hợp
những phần cứng thiết yếu như CPU cùng với các giao tiếp với CPU và các phần cứng
khác. Các phần cứng còn lại (kể cả bộ nhớ) không được tích hợp lên chip mà được
ghép nối bên ngoài.
1.1.2. Vi điều khiển (VĐK): Là thuật ngữ dùng để chỉ các chíp được tích hợp các thiết
bị ngoại vi lên trên cùng 1 IC, việc tích hợp thêm các thiết bị ngoại vi như vậy tạo ra
nhiều lợi ích như : giảm thiểu các ghép nối bên ngoài, giảm thiểu các linh kiện điện tử
phụ, giảm chi phí cho thiết kế hệ thống, nâng cao hiệu xuất và tính năng sử dụng.
1.1.3. Các phương pháp lựa chọn một bộ vi điều khiển:
Hiện nay, có 4 bộ vi điều khiển 8 bit chính. Đó là : 6811 của Motorola, 8051 của
Intel, Z8 của Xilog và Pic16 x của Microchip Technology . Mỗi một loại trên điều có
một tập lệnh và thanh ghi riêng duy nhất, nếu chúng không tương thích lẫn nhau. Và
cũng có rất nhiều các nhà sản suất khác có cùng loại như trên, vậy đâu sẽ là tiêu chuẩn
lựa chọn một bộ vi điều khiển cơ bản. Gồm có 3 tiêu chuẩn chính trong việc lựa chọn
một bộ vi điều khiển là :
- Tiêu chuẩn thứ nhất: Là phải đáp ứng nhu cầu tính toán của bài toán một cách hiệu
quả về mặt giá thành và đầy đủ chức năng có thể nhìn thấy được.
Trong khi phân tích bài toán thì trước hết bộ vi điều khiển mà ta chọn phải đáp
ứng được nhu cầu đặt ra về mặt công suất và giá thành. Chúng ta phải biết được bộ vi

điều khiển nào là 8 bit,16 bit hay 32 bit để có thể đáp ứng tốt nhất nhu cầu bài toán, các
tiêu chuẩn được đưa ra để cân nhắc là:
+ Tốc độ: Tốc độ lớn nhất mà bộ vi điều khiển hỗ trợ là bao nhiêu.
+ Kiểu đóng vỏ: Đó là kiểu đóng 40 chân DIP hay QEP hay là kiểu khác

Bài tập lớn môn Điện tử số

4


Khoa Điện – Điện Tử

Lớp DHDT1_K1

+ Công suất tiêu thụ: Điều này đặc biệt khắt khe đối với những sản phẩm dùng
pin,acquy…
+ Dung lượng bộ nhớ ROM và RAM trên chíp
+ Số chân vào - ra và bộ định thời trên chíp.
+ Khả năng dễ dàng nâng cấp công suất cao hoặc giảm công suất tiêu thụ.
+ Giá thành cho một đơn vị: Điều này quyết định giá thành cuối cùng của bộ sản phẩm
mà một bộ vi điều khiển được sử dụng
- Tiêu chuẩn thứ hai: Là khả năng phát triển các sản phẩm xung quanh nó dễ ràng như
thế nào? Các cân nhắc chủ yếu trong tiêu chuẩn này bao gồm: khả năng có sẵn trình
lượng ngữ,gỡ rối, trình biên dịch ngôn ngữ C hiệu quả về mã nguồn, trình mô phỏng hỗ
trợ kĩ thuật và khả năng sử dụng trong nhà và ngoài môi trường, Trong nhiều trường
hợp sự hỗ trợ của nhà cung cấp thứ ba (không phải nhà sản xuất chip) cho chíp cũng tốt
như nhau.
- Tiêu chuẩn thứ ba: Là khả năng sẵn sàng đáp ứng về số lượng trong hiện tại và tương
lai. Đối với một số nhà thiết kế tiêu chuẩn này còn quan trọng hơn hai tiêu chuẩn
trước. Hiện nay, các bộ vi điều khiển 8 bit dấu đầu, hộ 8051 có số lượng lớn các nhà

cung cấp(nhiều nguồn). Trong trường hợp 8051 nhà sáng chế của nó là Intel, nhưng
hiện nay có rất nhiều nhà sản xuất nó (bao gồm: Intel,Atmel, AMD…)
1.2. Tổng quan về họ vi điều khiển 8051
1.2.1. Lịch sử ra đời và phát triển
Vào năm 1981. Hãng Intel giới thiệu bộ vi điều khiển được gọi là 8051.Bộ vi
điều khiển này bao gồm: 128 byte RAM ,4K byte ROM trên chip, 2 bộ đinh thời, 1
cổng nối tiếp và 4 cổng vào ra tất cả được đặt trong cùng một chíp. Họ 8051 là một bộ
vi xử lí 8 bit, nghĩa là CPU xử lí được 8 bit dữ liệu trong cùng một thời điểm, còn
những dữ liệu nào lớn hơn 8 bit sẽ được chia ra thành các dữ liệu 8 bit cho CPU xử lí.
Họ vi điều khiển 8051 đã trở nên phổ biến khi Intel cho phép các nhà sản xuất
khác cùng sản xuất ra 8051 và bán bất kỳ dạng biến thể nào của nó nhưng tất cả những
chíp biến thể đó đều phải tương thích với 8051 ban đầu về các lệnh. Điều này có nghĩa
Bài tập lớn môn Điện tử số

5


Khoa Điện – Điện Tử

Lớp DHDT1_K1

là nếu ta viết chương trình điều khiển cho phiên bản của họ 8051 thì tất cả những dạng
biến thể đó điều hoạt động được.
1.2.2. Các đặc tính của họ 8051:
- Các đặc tính riêng của họ 8051
Đặc tính

Số lượng

Ram trên chip


128 byte

Rom

4k byte

Bộ định thời

2

Chân vào ra

32

Cổng nối tiếp

1

Nguồn ngắt

6

- Ngoài bộ vi điều khiển 8051, chúng ta còn có bộ vi điều khiển 8052,8031 và các
dạng biến thể khác.
- Bảng so sánh các đặc tính của họ 8051 với các loại khác:

Bài tập lớn môn Điện tử số

6



Khoa Điện – Điện Tử

Lớp DHDT1_K1

1.3. Bố trí bên trong của sơ đồ khối 8051:

1.3.1. Đơn vị xử lí trung tâm CPU:
- Cấu tạo: CPU được xem như bộ não của vi điều khiển và nó có cấu tạo bao gồm đơn
vị xử lí số học và lôgic(ALU), các thanh ghi, các khối lôgic và các mạch giao tiếp.
- Chức năng: CPU tiến hành các thao tác tính toán xử lý, đưa ra các tín hiệu địa chỉ, dữ
liệu và điều khiển nhằm thực hiện một nhiệm vụ nào đó do người lập trình đưa ra thông
qua các lệnh.
1.3.2. Bộ nhớ :
Hiện nay, bộ nhớ của vi điều khiển 8051 gồm có hai dạng chính. Đó là bộ nhớ
chương trinh và bộ nhớ dữ liệu. Trong đó, bộ nhớ chương trình dùng để chứa mã
chương trình hướng dẫn cho CPU thực hiện một nhiệm vụ nào đó. Thông thường bộ
nhớ chương trình không bị mất dữ liệu khi dừng cung cấp nguồn nuôi. Thí dụ có thể kể
7
Bài tập lớn môn Điện tử số


Khoa Điện – Điện Tử

Lớp DHDT1_K1

đến như: ROM, PROM, EPROM, EEPROM, Flash. Bộ nhớ dữ liệu dùng để chứa dữ
liệu (bao gồm các tham số, các biến tạm thời…). Tùy vào dạng dữ liệu mà loại bộ nhớ
này có thể mất hoặc không mất dữ liệu khi dừng cấp nguồn nuôi.

1.3.3. Cổng vào/ ra nối tiếp:
- Khái niệm: Cổng nối tiếp có thể được hiểu đơn giản là việc truyền lần lượt các bít dữ
liệu trên cùng một đường tín hiệu. Đồng thời việc truyền dữ liệu bằng cổng nối tiếp
phải tuân theo một cơ chế, một giao thức hay một nguyên tắc nhất định. Thí dụ một số
giao thức như: SPI, I2C, SCI…
- Phân loại: Cổng nối tiếp gồm có 02 kiểu dữ liệu chính:
+ Truyền đồng bộ: Thiết bị truyền và nhận đều dùng chung một xung nhịp.
+ Truyền dị bộ: Thiết bị truyền và nhận sử dụng hai nguồn xung nhịp riêng với độ
chênh lệch nhau không nhiều.
Lưu ý: Trong truyền dữ liệu nối tiếp, xung nhịp là yếu tố không thể thiếu và nó có vai
trò xác định giá trị của bít dữ liệu hay nói một cách khác là xác định thời điểm đọc mức
lôgic trên đường truyền dữ liệu.
- Chức năng: Cổng nối tiếp gồm 03 chức năng cơ bản:
+ Đơn công: Thiết bị chỉ có thể hoặc là truyền, hoặc là nhận dữ liệu.
+ Bán song công: Thiết bị có thể truyền và nhận dữ liệu nhưng tại một thời điểm chỉ có
thể làm một trong hai việc đó.
+ Song công: Thiết bị có thể đồng thời truyền và nhận dữ liệu.
1.3.4. Cổng vào/ ra song song:
- Khái niệm: Cổng song song có thể được hiểu là cổng gồm các bít dữ liệu được
truyền cùng một lúc trên các đường tín hiệu khác nhau.
- Đặc điểm:
+ Đây là cổng bao gồm các đường tín hiệu được nối với một số chân của IC dùng để
giao tiếp với thế giới bên ngoài IC. Giao tiếp ở đây là đưa điện áp ra hoặc đọc vào giá
Bài tập lớn môn Điện tử số

8


Khoa Điện – Điện Tử


Lớp DHDT1_K1

trị điện áp tại chân cổng tương ứng với giá trị lôgic 0(mức điện áp thấp xấp xỉ 0
VDC)hoặc 1(mức điện áp cao xấp xỉ +5 VDC).
+ Mỗi cổng vào/ra song song thường vào/ra khác nhau và gọi là các cổng 08 bít. Các
đường tín hiệu vào/ra của các cổng và thuộc cùng một cổng là độc lập với nhau. Từ đó,
ta có thể đưa ra hay đọc vào các giá trị lôgic khác nhau đối với từng đường tín hiệu
vào/ra.
+ Các cổng vào/ra song song có thể được tích hợp thêm các chức năng đặc biệt liên
quan đến các ngoại vi khác.
1.3.5. Bộ đếm/Bộ định thời:
- Nhiệm vụ : Dùng để đếm các xung nhịp và giá trị của bộ đếm sẽ được tăng lên 01
đơn vị hay giảm đi 01 đơn vị mỗi khi có thêm một xung nhịp tại đầu vào đếm.
- Phân loại xung nhịp: Gồm 02 loại chính:
+ Xung nhịp bên trong IC: Đó là xung nhịp được tạo ra nhờ kết hợp mạch dao động
bên trong IC và các linh kiện phụ bên ngoài nối với IC hay còn được gọi là các bộ định
thời (Timers).
+ Xung nhịp bên ngoài IC:Là các tín hiệu lôgic thay đổi liên tục giữa 02 mức 0-1và
không nhất thiết phải là đều đặn hay còn được gọi là các bộ đếm (counters).
1.3.6. Khối giao tiếp bus:
- Chức năng: Dùng để ghép nối giữa các bus bên trong chip và các chân đưa ra ngoài
chip. Ngoài ra, việc đưa các tín hiệu địa chỉ và dữ liệu ra ngoài là nhằm mở rộng khả
năng phối ghép thêm của vi xử lý với các ngoại vi khác (chủ yếu là các bộ nhớ
ngoài) ngoài các ngoại vi được tích hợp trên IC.
- Đặc điểm của các đường tín hiệu:
+ Thông thường thì số lượng các đường tín hiệu là giữ nguyên khi đưa ra ngoài chip,
tuy nhiên trong một số trường hợp số lượng các đường tín hiệu có thể nhỏ hơn số lượng
thực bên trong (ví dụ như trường hợp của vi xử lý 8088, bus dữ liệu bên trong là 16 bit
nhưng đưa ra ngoài chỉ có 8 bit).
Bài tập lớn môn Điện tử số


9


Khoa Điện – Điện Tử

Lớp DHDT1_K1

+ Khi đưa ra ngoài, các tín hiệu địa chỉ và dữ liệu có thể được ghép với nhau (cùng sử
dụng chung một số chân nào đó) hoặc được tách riêng (tín hiệu địa chỉ dùng một số
chân, tín hiệu dữ liệu dùng một số chân khác).
+ Người ta thường “dồn kênh” hay còn gọi là ghép chức năng giữa bus địa chỉ và bus
dữ liệu để giảm thiểu số chân cần thiết. Lúc đó, tín hiệu địa chỉ sẽ xuất hiện trước và tín
hiệu dữ liệu xuất hiên sau trên cùng một tập hợp các đường tín hiệu.
1.4. Kiểu đóng vỏ của chíp 8051
- Cấu tạo: Một bộ chíp 8051 có tất cả 40 chân với các chức năng riêng và được đóng
vào trong một hộp theo các cách khác nhau.
- Phân loại: Hiện nay có 2 kiểu đóng vỏ đối với họ 8051:
+ Đóng theo kiểu hai hàng chân PDIP/Cerdip:

+ Đóng theo kiểu vuông dẹt PQFP/TQFP:

Bài tập lớn môn Điện tử số

10


Khoa Điện – Điện Tử

Lớp DHDT1_K1


+ Đóng theo kiểu vuông dẹt PLCC/LCC:

1.5. Chức năng các chân của 8051:
Bài tập lớn môn Điện tử số

11


Khoa Điện – Điện Tử

Lớp DHDT1_K1

Chíp AT89C51 gồm có 40 chân. Trong đó, có 32 chân dành cho 4 cổng P0, P1,
P2, P3 với mỗi cổng có 8 chân. Và 8 chân còn lại dùng cho nguồn VCC, đất GND, các
chân giao động XTAL1 và XTAL2 tái lập RST cho phép chốt địa chỉ ALE truy cập địa
chỉ ngoài cho phép cất chương trình. Cụ thể là:
- Chân VCC: Đó là chân số 40 dùng để cấp điện áp nguồn (+5V) cho chíp.
- Chân GND: Đó là chân số 20 và còn được gọi là chân nối Mass.
- Chân XTAL1 và XTAL2: Lần lượt là hai chân đầu vào 19 và 18 được nối với bộ
giao động thạch anh. Bộ giao động thạch anh được nối tới XTAL1 và XTAL2 cũng cần
hai tụ điện giá trị 30pF. Một phía của tụ điện được nối xuống đất. Cần phải lưu ý rằng
có nhiều tốc độ khác nhau của họ 8051. Tốc độ được coi như là tần số cực đại của bộ
giao động được nối tới chân XTAL.

- Chân RST: Đó là chân số 9 còn gọi là chân tái lập RESET cho chíp 8051. Nó là đầu
vào có mức tích cực cao (bình thường ở mức thấp). Khi chân này được cấp một xung
cao thì vi điều khiển sẽ hiểu rằng phải thiết lập lại trạng thái. Dưới đây là sơ đồ cấu tạo
chân RST:


Bài tập lớn môn Điện tử số

12


Khoa Điện – Điện Tử

Lớp DHDT1_K1

- Chân EA : Đó là chân số 31 có nghĩa là truy cập ngoài (External Access). Ngoài ra,
nó là một chân đầu vào và phải được nối hoặc với VCC hoặc GND. Hay nói cách khác
nó không được để hở.
- Chân PSEN : Đó là chân số 29, chân này cho phép xuất giá trị vào bộ nhớ ngoài, chân
này được nối với chân OE (Output Enable) của Rom ngoài. Khi vi điều khiển làm việc
với bộ nhớ ngoài, chân PSEN phát ra tín hiệu kích hoạt ở mức thấp và được kích hoạt 2
lần trong một chu kí máy.
- Chân ALE: Đó là chân số 30, chân này cho phép chốt địa chỉ ngoài và được tích cực
cao. Tín hiệu ở chân ALE dùng làm tín hiệu điều khiển để giải đa hợp các đường địa
chỉ và các đường dữ liệu khi kết nối chung với IC chốt. Ngoài ra, chân ALE đượ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. Các
xung đưa vào chân ALE có tốc độ bằng 1/6 tần số dao động đưa vào vi điều khiển, như
vậy có thể dùng tín hiệu chân ALE làm tín hiệu xung nhịp cho các phần khác của hệ
thống.
- Cổng P0: Đây là cổng chiếm tất cả 8 chân (từ chân số 32 đến 39). Nó có thể được
dùng như cổng đầu ra, để sử dụng các chân của cổng 0 vừa làm đầu ra, vừa làm đầu vào
thì mỗi chân phải được nối tới một điện trở kéo bên ngoài 10kΩ vì cổng P0 là một
màng mở khác với các cổng P1, P2 và P3. Ngoài ra, khi nối 8051/31 tới bộ nhớ ngoài
thì cổng 0 cung cấp cả địa chỉ và dữ liệu 8051 dồn dữ liệu và địa chỉ qua cổng P0 để
tiết kiệm số chân. Dưới đây là sơ đồ cổng P0:


Bài tập lớn môn Điện tử số

13


Khoa Điện – Điện Tử

Lớp DHDT1_K1

- Cổng P1: Cổng P1 cũng chiếm tất cả 8 chân (từ chân 1 đến chân 8) nó có thể được sử
dụng như đầu vào hoặc đầu ra. So với cổng P0 thì cổng này không cần đến điện trở kéo
vì nó đã có các điện trở kéo bên trong. Trong quá trình tái lập thì cổng P1 được cấu
hình như một cổng đầu ra. Còn để biến cổng P1 thành đầu vào thì nó phải được lập
trình ở mức logic cao đến tất cả các bit của nó.
- Cổng P2: Cổng P2 cũng chiếm 8 chân (các chân từ 21 đến 28). Nó có thể được sử
dụng như đầu vào hoặc đầu ra giống như cổng P1, cổng P2 cũng không cần điện trở
kéo vì nó đã có các điện trở kéo bên trong. Khi tái lập, thì cổng P2 được cấu hình như
một cổng đầu ra. Còn để tạo cổng P2 như đầu vào thì nó phải được lập trình bằng mức
logic cao tới tất cả các chân của nó.
Vai trò kép của P2: Cổng P2 được dùng như đầu ra đơn giản trong các hệ thống dựa
trên 8751, 89C51 và DS5000. Cổng P2 cũng được chỉ định như là A8 - A15 báo chức
năng kép của nó. Vì một bộ 8051/31 có khả năng cung cấp 64kbyte bộ nhớ ngoài, nó
cần một đường địa chỉ 16 bít. Trong khi P.0 cung cấp 8 bit thấp qua A0 – A7. Công
việc của P2 là khi 8051/31được nối tới bộ nhớ ngoài thì P2 được dùng cho 8 bít của
địa chỉ 16 bit và nó không thể dùng cho vào ra.
- Cổng P3: Đây là cổng chiếm tổng cộng là 8 chân (từ chân 10 đến chân 17) nó có thể
được sử dụng như đầu vào hoặc đầu ra. Cống P3 không cần các điện trở kéo cũng như
P1 và P2. Và nó có chức năng bổ sung là cung cấp một số tín hiệu quan trọng đặc biệt
Bài tập lớn môn Điện tử số


14


Khoa Điện – Điện Tử

Lớp DHDT1_K1

chẳng hạn như các ngắt. Bảng dưới đây cung cấp các chức năng khác của cống P3
trong cả 8051 và 8031.

Nhìn vào bảng trên ta thấy:
+ Các bit P3.0 và P3.1 được dùng cho các tín hiệu nhận và phát dữ liệu trong truyền
thông dữ liệu nối tiếp.
+ Các bit P3.2 và P3.3 được dành cho các ngắt ngoài.
+ Bit P3.4 và P3.5 được dùng cho các bộ định thời 0 và 1.
+ Cuối cùng các bit P3.6 và P3.7 được cấp cho các tín hiệu ghi và đọc các bộ nhớ ngoài
được nối tới các hệ thống dựa trên 8051/31. Hai bit này, được dùng với chức năng vào ra trong các hệ thống dựa trên 8751, 89C51 hoặc D35000.
1.6. Sơ đồ mạch điện cơ bản để chíp 8051 có thể hoạt động được:

Bài tập lớn môn Điện tử số

15


Khoa Điện – Điện Tử

Lớp DHDT1_K1

Chương 2
Bài tập lớn môn Điện tử số


16


Khoa Điện – Điện Tử

Lớp DHDT1_K1
NGẮT VÀ TIMER TRONG 8051

2.1. Tìm hiểu các bộ timer:
2.1.1. Timer là gì?
- Timer là một chuỗi các Flip-Flop đươc chia làm 2, nó nhận tín hiệu vào là một xung
nhịp, xung nhịp của Flip –Flop thứ nhất cũng là xung nhịp của Flip – Flop thứ 2 mà nó
cũng chia tần số của xung đó cho 2 và cứ tiếp tục cho đến hết. Vì mỗi tầng kế tiếp phải
chia cho 2 nên timer n tầng phải chia tần số xung nhịp cho 2n.
- Các bộ định thời (timer) được sử dụng rất rộng rãi như:
+ Trong trong ứng dụng đo lường và điều khiển.
+ Định khoảng thời gian (hẹn giờ) thông qua việc thiết lập cờ trŕn bằng 1.
+ Dùng để tạo xung nhịp hoặc đo độ rộng của xung.
+ Đếm sự kiện dùng để xác định số lần xảy ra của sự kiện. Đó chính là việc đưa các sự
kiện thành sự chuyển mức từ 1 xuống 0 trên các chân T0, T1 hoặc T2 để dùng các
Timer tương ứng đếm các sự kiện đó.
- Tùy thuộc vào mỗi ứng dụng mà đầu vào bộ định thời có thể là nguồn xung lấy từ
xung nhịp của vi điều khiển hoặc nguồn xung từ bên ngoài đưa vào.
2.1.2. Các thanh ghi của Timer:
- Thanh ghi chế độ định thời (TMOD):
+ Đặc điểm: Thanh ghi TMOD chứa 2 nhóm 4 bít dùng để đặt chế độ làm việc cho
Timer 0 và Timer 1.

+ Chức năng các bít trên thanh ghi chế độ định thời (TMOD):

Bài tập lớn môn Điện tử số

17


Khoa Điện – Điện Tử

Lớp DHDT1_K1

GATE 1: Bít mở cổng cho Timer 1, khi được đặt bằng 1 thì Timer 1 chỉ chạy khi chân
INT 1 ở mức cao. Nếu bít này được cài đặt là 0 thì hoạt động của Timer 1 không bị ảnh
hưởng bởi mức logic trên chân INT 1.
GATE 0: Bít mở cổng cho Timer 0, khi được cài đặt bằng 1 thì Timer 0 chỉ chạy khi
chân INT 0 ở mức cao. Nếu bít này được đặt là 0 thì hoạt động của Timer 0 không bị
ảnh hưởng bởi mức logic trên chân INT 0.
C/#T1: Bít chọn chế độ Counter/Timer của Timer 1.Nếu bằng 1(couter) đếm sự kiện
<lấy xung từ bên ngoài >, nếu bằng 0(timer) dùng để định khoảng thời gian từ bên trong vi điều khiển.
C/#T0:Bít chọn chế độ Counter/Timer của Timer 0. Nếu 1 là đếm sự kiện, nếu 0 là
định thời gian.
M1-M0: Hai bít chọn chế độ làm việc của Timer (00,01,10,11)
- Thanh ghi điều khiển Timer (TCON)
+ Đặc điểm: Thanh ghi TCON chứa các bít trạng thái và các bít điều khiển cho Timer
0 và Timer 1.
TCON.7 TCON.6 TCON.5 TCON.4 TCON.3 TCON.2 TCON.1 TCON.0

TF1

TR1


TF0

TR0

IT1

IE1

IT0

IE0

+ Chức năng các bít trên thanh ghi điều khiển Timer (TCON):
TF1: Cờ báo tràn của Timer 1 được đặt bởi phần cứng khi cờ tràn, được xóa bởi phần
mềm hoặc phần cứng khi bị xử lý chỉ đến trình phục vụ ngắt.
TR1: Bít điều khiển Timer 1 hoạt động được đặt/xóa bằng phần mềm để điều khiển cho
Timer chạy/dừng.
TF0: Cờ báo tràn của Timer 0 được đặt bởi phần cứng khi cờ tràn, được xóa bởi phần
mềm hoặc phần cứng khi bị xử lấy chỉ đến trình phục vụ ngắt.
TR0: Bít điều khiển Timer 0 hoạt động được đặt/xóa bằng phần mềm để điều khiển cho
Timer chạy/dừng.

Bài tập lớn môn Điện tử số

18


Khoa Điện – Điện Tử

Lớp DHDT1_K1


IT1: Cờ ngắt do Timer 1.
IE1: Cờ ngắt ngoài 1.
IT0: Cờ ngắt do Timer 0.
IE0: Cờ ngắt ngoài 0.
- Các thanh ghi chứa giá trị của các bộ định thời:
+ Đặc điểm: Các Timer 0 và Timer 1 đều là các Timer 16 bít, mỗi Timer có thanh ghi
8 bít dùng để chứa giá trị khởi tạo hoặc giá trị hiện thời của các Timer. Cụ thể Timer 0
có TH0 và TL0; Timer TH1 và TL1.
Timer 0
TH0 (8 bít)

Timer 1
TL0 (8 bít)

TH1 (8 bít)

TL1 (8 bít)

- Thanh ghi T2CON :
+ Đặc điểm: Thanh ghi T2CON chứa các bít trạng thái và các bít điều khiển cho Timer
0 và Timer 1.
T2CON.7

T2CON.6

T2CON.5

T2CON.4


T2CON.3

T2CON.2

T2CON.1

TF2

EXF2

RCLK

TCLK

EXEN2

TR2

C/#T2

T2CON.0

CP/#RL2

+ Chức năng các bít trên thanh T2CON:
TF2: Cờ báo tràn của Timer 2, TF2 được đặt khi Timer 2 tràn và được xóa bằng phần
mềm TF2 không được thiết lập khi TCLK hoặc RCLK được đặt bằng 1.
EXF2: Cờ ngắt ngoài của Timer 2, TXF2=1, khi xảy ra sự nạp lại hoặc thu nhận.
EXF2=1cũng gây ra ngắt do Timer 2 nếu như ngắt này được lập trình cho phép, EXF2
được xóa bởi phần mềm.

RCLK: Bít chọn Timer cung cấp xung nhịp cho đường nhận cổng nối tiếp. RCLK=1
thì Timer 2 sẽ cung cấp tốc độ baud cho cổng nối tiếp (ở chế độ 1 và 3) RCLK=0 thì
Timer sẽ cung cấp tốc độ baud cho cổng nối tiếp (ở chế độ 1 và 3).
Bài tập lớn môn Điện tử số

19


Khoa Điện – Điện Tử

Lớp DHDT1_K1

TCLK: Bít chọn Timer cung cấp xung nhịp cho đường truyền cổng nối tiếp. TCLK=1
thì Timer 2 sẽ cung cấp cho tốc độ baud cho cổng nối tiếp ở đường truyền TCLK thì
Timer 1 sẽ cung cấp tốc độ baud cho cổng nối tiếp ở đường truyền.
EXEN2: Bít điều khiển hoạt động của Timer 2, khi EXEN2=1 việc nạp lại hoặc thu
nhận (Capture) diễn ra khi có sự chuyển trạng thái từ 1 sang 0 ở chân T2EX nếu T2
không sử dụng để cung cấp tốc độ baud cho cổng nối tiếp.
TR2: Bít điều khiển hoạt động của Timer 2( giống như TR0 và TR1)
C/#T2: Bít chọn chế độ Counter/Timer của Timer 2.
CP/#RL2: Bít chọn chế độ thu nhận hay nạp lại của Timer 2. Khi CP/#RL2C=1 việc
thu nhận được thực hiện khi có xườn xuống ở chân T2EX và bít EXEN2 được đặt là 1.
Khi CP/#RL2C =0 việc nạp lại được thực hiện khi hoặc là Timer 2 tràn hoặc là có sườn
xuống ở chân T2EX và bít EXEN2 được đặt ở mức 1. Nế RCLK và TCLK =1, bít này
được bỏ qua, Timer 2 tự nạp lại khi tràn.
- Thanh ghi T2MOD:
Các bít từ T2MOD.7 đến T2MOD.2 không được sử dụng.Bít T2MOD.1 ký hiệu
là DCEN cho phép đầu ra khi sử dụng Timer 2 để tạo xung(chế độ tạo xung – Clock
out). Bít T2MOD.0 ký hiệu là DXEN bít này cho phép Timer 2 hoạt động nhu 1 bộ
đếm tiến/lùi.

- Thanh ghi TH2,TL2.RCAP2H và RCAP2L:
Giống như TH0,1 và TL0,1, TH2 và TL2 chứa các giá trị đếm của Timer 2, tuy
nhiên khác nhau là Timer 0,1 có thể dùng THx để chứa giá trị nạp lại còn Timer 2 lại
dùng RCAP2H và RCAP2L để chứa giá trị cần nạp lại.
2.1.3. Các chế độ hoạt động của Timer:
- Chế độ 0:
+ Đặc điểm: Chế độ 0 là chế độ định thời 13 bít, chế độ này chỉ tương thích với các bị
vị điều khiển trước kia, giờ chế độ này không còn thích hợp, ít được sử dụng. Trong
chế độ này bộ định thời dùng 13 bít (8 bít TH và 5 bít TL) để chứa giá trị đếm, 3 bít
thấp của TL không được sử dụng.
20
Bài tập lớn môn Điện tử số


Khoa Điện – Điện Tử

Lớp DHDT1_K1

+ Sơ đồ:

+ Nguyên lý hoạt động:
Nguồn xung Clock được đưa tới Timer từ các nguồn khác nhau phụ thuộc vào
bít C/#Tx trong thanh ghi TMOD. Nếu C/Tx=1, xung Clock được lấy từ bên ngoài qua
chân Tx(T0,T1 hoặc T2). Còn nếu C/Tx=0, xung Clock sẽ được lấy từ bộ chia tần trong
chíp, tần số của xung ở đây là 1/12 tần số của bộ dao động thạnh anh (Fosc).
Nguồn xung Clock nói trên sẽ được điều khiển để đưa tới các Timer bằng các bit
TR, GATE và mức logic trên các chân INTx. Nếu TRx=0, các Timer sẽ bị cấm mà
không cần quan tâm đến GATE và mức logic trên các chân INTx (thể hiện là cổng
AND). Còn nếu TRx=1, các Timer sẽ hoạt động khi hoặc là bít GATE =0 hoặc là bít
GATE=1 và trên chân INTx có mức logic là 1.

- Chế độ 1:
+ Đặc điểm:
Trong chế độ 1, bộ định thời dùng cả hai thanh ghi TH và TL để chứa giá trị
đếm, vì vậy chế độ này còn gọi là chế độ định thời 16 bít.
Với chế độ 1 giá trị lớn nhất mà Timer chứa được là 65535 (tương ứng FFFFH),
khi đếm quá giá trị này sẽ xảy ra tràn, khi cờ tràn TF sẽ được đặt bằng 1. Sau khi tràn
Bài tập lớn môn Điện tử số

21


Khoa Điện – Điện Tử

Lớp DHDT1_K1

nếu muốn chương trình đếm tiếp ta phải có câu lệnh nạp lại giá trị khởi tạo sau khi
dừng Timer.
+ Sơ đồ:

- Chế độ 2:
+ Đặc điểm:
Trong chế độ 2 bộ Timer dùng TL để chứa các giá trị đếm và TH chứa giá trị nạp lại
vì vậy chế độ này được gọi là chế độ tự nạp lại 8 bít.
Sau khi đếm quá 255 sẽ xảy ra tràn, khi đó TF được đặt bằng 1 đồng thời giá trị của
Timer tự động được nạp lại bằng nội dung TH.
+ Sơ đồ:

Bài tập lớn môn Điện tử số

22



Khoa Điện – Điện Tử

Lớp DHDT1_K1

- Chế độ 3:
+ Đặc điểm: Trong chế độ 3, Timer 0 được tách thành 2 bộ Timer 8 bít hoạt động độc
lập chế độ này sẽ giúp cung cấp thêm cho ta 1 bộ Timer nữa.
+ Sơ đồ:

+ Nguyên lý hoạt động:
Bộ Timer thứ 1 với nguồn xung Clock được lấy từ bộ chia tần trên chíp hoặc từ
bộ dao động bên ngoài qua chân T0 tùy thuộc vào giá trị của bít C/#T0 việc điều khiển

Bài tập lớn môn Điện tử số

23


Khoa Điện – Điện Tử

Lớp DHDT1_K1

hoạt động của bộ thứ 1 do bít GATE, bit TL0 và mức lôgic trên chân INT0 (giống chế
độ 0,1,2). Giá trị đếm chứa trong TL0, khi tràn cờ TF0=1 gây bởi Timer 0.
Bộ Timer thứ 2 với nguồn xung Clock được lấy từ bộ chia tần trên chíp việc điều
khiển hoạt động chỉ là việc đặt lại giá trị của bít TR0, giá trị đếm chứa trong TH0 khi
cờ tràn TH1=1 gây ra ngắt bởi Timer 1.Khi Timer 0 được tách thành 2 Timer 8 bít thì
Timer 1 vẫn hoạt động bình thường với các chế độ 0,1,2 tuy nhiên khi xảy ra tràn cờ

TF1 không được thiết lập bằng 1. Như vậy trong trường hợp này Timer 1 chỉ có thể sử
dụng cho các ứng dụng không cần đến ngắt như tạo tốc độ baud cho port nối tiếp.
2.1.4. Lập trình cho Timer:
- Như ta đã biết để cho Timer hoạt động trước hết chúng ta phải tính toán hai giá trị
TH0 vàTL để nạp vào cho chip. Sau đây là các bước tinh toán để lập trình cho Timer:
+ Bước 1: Chia thời gian trễ cần thiết (độ rộng xung) cho 1us.
+ Bước 2: Lấy 65536 – n . Với n là kết quả của bước 1
+ Bước 3: Chuyển kết quả ở bước 2 sang hệ thập lục phân dưới dạng: OxAABB
+ Bước 4: Đặt TL=OxAA, TH0=OXBB.
2.2. Tìm hiểu các ngắt:
2.2.1. Ngắt là gì?
- Một bộ phận vi điều khiển có thể khắc phục một vài thiết bị, có 2 cách dể thực hiện
điều này đó là sử dụng các ngắt và thăm dò (polling). Trong phương pháp này sử dụng
các ngắt thì mỗi khi có một thiết bị bất kỳ cần đến dịch vụ của nó thì nó báo cho bộ vi
điều khiển bằng cách gửi 1 tín hiệu ngắt.
- Khi nhận được tín hiệu ngắt thì bộ vi điều khiển ngắt tất cả những gì nó đang thực
hiện để chuyển sang phục vụ thiết bị. Chương trình đi cùng với ngắt được gọi là trình
dịch vụ ngắt ISR (Interrupt Service Rouine) hay còn gọi là trình quản lý ngắt
(Interruput Handler).

Bài tập lớn môn Điện tử số

24


Khoa Điện – Điện Tử

Lớp DHDT1_K1

- Còn trong phương pháp thăm dò thì bộ vi sử điều khiển hiển thị liên tục tình trạng của

một thiết bị đã cho và điều kiện thỏa mãn thì nó phục vụ thiết bị. Sau đó nó chuyển
sang hiển thị tình trạng của thiết bị kế tiếp cho đến khi tất cả đều được phục vụ.
- Khi kích hoạt một ngắt bộ vi điều khiển đi qua các bước sau:
+ Nó kết thúc lệnh đang thực hiện và lưu địa chỉ của lệnh kế tiếp (PC) vào ngăn xếp.
+ Nó cũng lưu tình trạng hiện tại của tất cả các ngắt vào bên trong ( nghĩa là không lưu
vào ngăn xếp).
+ Nó nhảy đến một số vị trí cố định trong bộ nhớ được gọi là bảng véc tơ ngắt nói lưu
giữ địa chỉ của một tình trình phục vụ ngắt.
+ Bộ vi điều khiển nhận địa chỉ ISR từ bảng véc tơ ngắt và nhảy tới đó. Nó bắt đầu thực
hiện trình phục vụ ngắt cho đến lệnh cuối cùng của ISR là RETI (trở về từ ngắt).
+ Khi thực hiện lệnh RETI bộ vi điều khiển quay trở về nơi nó đã bị ngắt. Trước hết nó
nhận địa chỉ của bộ đếm chương trình PC từ ngăn xếp bằng cách kéo 02 byte trên đỉnh
của ngăn xếp vào PC. Sau đó bắt đầu thực hiện các lệnh từ địa chỉ đó.
Lưu ý: Ở bước 5 đến vai trò nhạy cảm của ngăn xếp, vì lý do này mà chúng ta phải cẩn
thận khi thao tác các nội dung của ngăn xếp trong ISR. Đặc biệt trong ISR cũng như bất
kỳ chương trình con CALL nào số lần đẩy vào ngăn xếp (Push) và số lần ra từ nó (Pop)
và phải bằng nhau.
2.2.2. Các ngắt (Interrupt) của 8051:
- Hiện nay, chíp AT89C51 có 6 ngắt:
+ Hai ngắt ngoài đến từ chân #INT0 và từ chân #INT1 tương ứng các chân P3.2 và
P3.3 của cổng P3. Vị trí trong bảng vector của các ngắt ngoài này lần lượt là 0003H và
0013H gán cho các chân INT0 và INT1.
+ Ngắt do bộ Timer 0. Địa chỉ của ngắt này là 000B4.
+ Ngắt do bộ Timer 1. Địa chỉ của ngắt này là 001B4.
+ Ngắt do bộ Timer 2
Bài tập lớn môn Điện tử số

25



×