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

Nghiên cứu về Vi điều khiển 8051. Thiết kế mô hình đồng hồ thời gian thực hiển thị trên Led 7 thanh

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 (1.44 MB, 86 trang )

MỤC LỤC
ADC0804............................................................................................................................76
Khối hiển thị;......................................................................................................................78
Phân tích khối nguồn.........................................................................................................79
Phân tích khối đọc cảm biến nhiệt độ................................................................................79
3.2. SƠ ĐỒ NGUYÊN LÝ...................................................................................................80
3.3. MẠCH IN.....................................................................................................................81


DANH SÁCH HÌNH VẼ
Hình 1.1 Bố trí bên trong của họ 8051................................................................................9
Hình 1.2 Sơ đồ khối của vi điều khiển AT89S52...............................................................15
Hình 1.3 Hoạt động của Timer 0 và Timer 1 ở chế độ 0...................................................29
Hình 1.4 Hoạt động của Timer0 và Timer1 ở chế độ 1.....................................................29
Hình 1.5 Hoạt động của Timer0 và Timer1 ở chế độ 2.....................................................30
Hình 1.6 Hoạt động của Timer0 ở chế độ 3.......................................................................31
Hình 1.7 Sơ đồ khối cổng nối tiếp của 8051......................................................................34
Hình 1.8 Giản đồ truyền nhận dữ liệu ở chế độ 0.............................................................36
Hình 1.9 Tốc độ baud ở chế độ 0........................................................................................36
Hình 1.10 Giản đồ truyền nhận dữ liệu của chế độ 1.......................................................37
Hình 1.11 Dùng Timer 1 và Timer 2 cung cấp tốc độ baud cho cổng nối tiếp................37
Hình 1.12 Tốc độ baud ở chế độ 1......................................................................................38
Hình 1.13 Tốc độ baud ở chế độ 2......................................................................................38
Hình 1.14 Tốc độ baud ở chế độ 3......................................................................................39
Hình 1.15 Chương trình trước (a) và sau (b) khi có ngắt xảy ra.....................................41
Hình 2.1 Các dạng đóng gói của chip DS1307..................................................................45
Hình 2.2 Sơ đồ chân của DS1307......................................................................................45
Hình 2.3 Sơ đồ mắc cơ bản của DS1307...........................................................................46
Hình 2.4 Sơ đồ cấu trúc của các thanh ghi trong DS1307...............................................47
Hình 2.5 Cách cập nhật dữ liệu cho DS1307....................................................................48
Hình 2.6 Tổ chức theo bit của các thanh ghi....................................................................48


Hình 2.7 Sơ đồ cấu trúc bên trong của DS1307................................................................50
Hình 2.8 Điều kiện Start và Stop........................................................................................51
Hình 2.9 Quá trình đọc và ghi dữ liệu của DS1307..........................................................52
Hình 2.10 Sơ đồ tổng quát của đồng hồ............................................................................54
Hình 2.11 Thuật toán giao tiếp của DS1307 với Vi Điều Khiển.......................................54
Hình 2.12 Quá trình đọc dữ liệu từ DS1307 được lưu vào Ram AT89S52......................55
Hình 2.13 Thuật toán cài đặt giờ.......................................................................................56
Hình 2.14 Thuật toán cập nhật dữ liệu cho DS1307........................................................57
Hình 2.15 Sơ đồ chân thực tế của ADC0804.....................................................................58
Hình 2.16 Cách mắc tạo xung đồng hồ cho chíp ADC0804.............................................59
Hình 2.17 Sơ đồ chân của AT89S52..................................................................................61


Hình 2.18 Cấu trúc của các chân trên Port0.....................................................................62
Hình 2.19 Cấu trúc của các chân trên Port 1 và Port 3....................................................63
Hình 2.20 Cấu trúc của các chân trên Port2.....................................................................63
Hình 2.21 Mạch reset AT89S52.........................................................................................65
Hình 2.22 Mạch tạo dao động............................................................................................65
Hình 2.23 Mạch tạo xung cho Vi điều khiển.....................................................................66
Hình 2.24 Sơ đồ chân thực tế 74HC595............................................................................66
Hình 2.25 Sơ đồ chân 7 SEG-COM-ANODE và hình ảnh minh họa..............................68


DANH SÁCH CÁC BẢNG BIỂU
Bảng 1.1 Các đặc tính của 8051 đầu tiên............................................................................8
Bảng 1.2 So sánh các đặc tính của các thành viên họ 8051.............................................10
Bảng 1.3 Các phiên bản của 8051 do hãng Atmel cung cấp (Flash Rom)......................11
Bảng 1.4 Các phiên bản 8051 từ hãng Dalas Semiconductor..........................................13
Chữ “T” đứng sau 5000 là có đồng hồ thời gian thực......................................................13
Bảng 1.5 Một số thành viên của họ 8051...........................................................................13

Bảng 1.6 Số chu kì máy WDT đếm tùy theo giá trị S0, S1, S2..........................................17
Bảng 1.7 Thời gian tràn của WDT.....................................................................................17
Bảng 1.8 Các thanh ghi trạng thái chương trình (PSW: Program Status Word)............21
7............................................................................................................................................24
6............................................................................................................................................24
5............................................................................................................................................24
4............................................................................................................................................24
3............................................................................................................................................24
2............................................................................................................................................24
1............................................................................................................................................24
0............................................................................................................................................24
GATE1.................................................................................................................................24
C/#T1...................................................................................................................................24
M1........................................................................................................................................24
M0........................................................................................................................................24
GATE0.................................................................................................................................24
C/#T0...................................................................................................................................24
M1........................................................................................................................................24
M0........................................................................................................................................24
Bảng 1.9 Thanh ghi chức năng TMOD.............................................................................24
Bảng 1.10 Thanh ghi chức năng TCON............................................................................25
Bảng 1.11 Thanh ghi chức năng T2CON..........................................................................27
Bảng 1.12 Thanh ghi chức năng T2MOD.........................................................................28
Bảng 1.13 Vị trí và ý nghĩa các bit của thanh ghi SCON.................................................35

5


SM0......................................................................................................................................35
SM1......................................................................................................................................35

SM2......................................................................................................................................35
REN.....................................................................................................................................35
TB8......................................................................................................................................35
RB8......................................................................................................................................35
TI..........................................................................................................................................35
RI.........................................................................................................................................35
Bit.........................................................................................................................................35
Ý nghĩa.................................................................................................................................35
REN.....................................................................................................................................35
Bit cho phép cổng được phép nhận dữ liệu.......................................................................35
TB8......................................................................................................................................35
Bit dữ liệu truyền thứ 9 khi cổng làm việc ở chế độ truyền và nhận 9 bit.......................35
RB8......................................................................................................................................35
Bit dữ liệu nhận thứ 9 khi cổng làm việc ở chế độ truyền và nhận 9 bit.........................35
TI..........................................................................................................................................35
Cờ báo ngắt khi hoàn thành quá trình truyền 1 byte dữ liệu, cờ phải được xóa bởi phần
mềm......................................................................................................................................35
RI.........................................................................................................................................35
Cờ báo ngắt khi 1 byte dữ liệu được nhận về đầy đủ, cờ phải được xóa bởi phần mềm. 35
SM2......................................................................................................................................35
Bit cho phép chế độ truyền thông giữa nhiều vi điều khiển với nhau (Mode2 và 3).......35
Bảng 1.14 Các chế độ của cổng nối tiếp phụ thuộc SM1, SM0........................................35
Bảng 1.15 Bảng tốc độ baud khác nhau............................................................................37
Bảng 1.16 Các giá trị của thanh ghi TH1 tạo tốc độ baud...............................................40
Bảng 1.17 Vị trí và công dụng các bit của thanh ghi IE...................................................42
Bảng 1.18 Vị trí và công dụng các bit của thanh ghi IP...................................................42
Bảng 1.19 Các cờ gây ngắt.................................................................................................43
Bảng 1.20 Các Vector ngắt.................................................................................................44
Bảng 2.1 Bảng so sánh điện áp..........................................................................................60
Bảng 2.2 Tên chân và chức năng các chân của Port 3.....................................................64

Bảng 2.3 Bảng mã cho Led Anode chung (a là MSB, dp là LSB)....................................69
Bảng 2.4 Bảng mã cho Led Anode chung (a là LSB, dp là MSB)....................................70
Bảng 2.5 Bảng mã của Led Cathode chung......................................................................71

6


LỜI NÓI ĐẦU
Ngày nay ngành kỹ thuật điện tử có vai trò rất quan trọng trong cuộc sống
của con người. Các hệ thống điện tử ngày nay rất đa dạng và đang thay thế các công
việc hàng ngày của con người từ những công việc đơn giản đến phức tạp như điều
khiển tín hiệu đèn giao thông, các biển quảng cáo, đo tốc độ động cơ hay các đồng
hồ số… Các hệ thống này có thể thiết kế theo hệ thống tương tự, hệ thống số hay là
dùng vi điều khiển. Tuy nhiên trong các hệ thống điện tử thông minh hiện nay
người ta thường sử dụng vi điều khiển hơn là các hệ thống tương tự hay hệ thống số
bởi một số ưu điểm vượt trội mà vi điều khiển mang lại đó là: độ tin cậy cao, giá
thành thấp, dễ dàng thiết kế, lắp đặt và vận hành… Để làm được điều đó chúng ta
phải có kiến thức về vi điều khiển, hiểu được cấu trúc và chức năng của nó.
Sau gần 3 năm học tập và nghiên cứu tại trường, với sự giảng dạy của các thầy,
cô giáo trong trường cùng với sự hướng dẫn tận tình của thầy Hoàng Văn Quang, em đã
chọn đề tài: “ Nghiên cứu về Vi điều khiển 8051. Thiết kế mô hình đồng hồ thời
gian thực hiển thị trên Led 7 thanh” để làm đồ án tốt nghiệp với mong muốn áp dụng
những kiến thức đã học vào thực tế phục vụ nhu cầu đời sống con người. Nội dung của
đề tài bao gồm 3 chương:
-

Chương 1: Tổng quan về họ Vi điều khiển 8051

-


Chương 2: Các linh kiện liên quan

-

Chương 3: Thiết kế mô hình

Do kiến thức và trình độ năng lực còn hạn hẹp nên việc thực hiện đề tài này
không thể tránh được thiếu sót, kính mong nhận được sự thông cảm và góp ý của tất cả
các thầy, cô giáo và các bạn để đồ án này được hoàn thiện hơn.
Em xin chân thành cảm ơn.

7


CHƯƠNG 1. TỔNG QUAN VỀ HỌ VI ĐIỀU KHIỂN 8051
1.1 Tóm tắt về lịch sử của 8051
Năm 1981, hãng Intel giới thiệu bộ vi điều khiển 8051. Bộ vi điều khiển này chứa
trên 60.000 transistor bao gồm 128 byte Ram, 4 kbyte Rom, 2 bộ định thời, một
cổng nối tiếp và bốn cổng vào/ra song song (độ rộng 8 bit) tất cả đều được đặt trên
một chip. 8051 là bộ xử lý 8 bit, có nghĩa là CPU chỉ có thể làm việc được 8 bit dữ
liệu tại một thời điểm.
Dữ liệu lớn hơn 8 bit được chia thành các dữ liệu 8 bit để xử lý, 8051 đã trở lên 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 các biến thể của
8051. Điều này dẫn đến sự ra đời nhiều phiên bản 8051 với tốc độ khác nhau và
dung lượng Rom trên chíp khác nhau, nhưng các lệnh đều tương thích với 8051 ban
đầu. Như vậy, nếu ta viết chương trình cho một phiên bản của 8051 thì cũng chạy
được với mọi phiên bản khác không phụ thuộc vào hãng sản xuất.
Vi điều khiển 8051 là loại vi điều khiển 8 bit, công suất tiêu thụ thấp nhưng tính
năng tương đối mạnh và trở thành bộ vi điều khiển hàng đầu trong những năm gần
đây.

Bảng 1.1 Các đặc tính của 8051 đầu tiên
Đặc Tính
Rom
Ram
Bộ Định Thời
Chân vào/ra
Cổng nối tiếp
Nguồn ngắt

Số Lượng
4 kbyte
128 byte
2
32
1
6

Ngoài ra 8051 còn có các thông số đặc tính sau:
+ Không gian nhớ chương trình (mã) ngoài 64 kbyte.
+ Không gian nhớ dữ liệu ngoài 64 kbyte.
+ Bộ nhớ xử lý bit (thao tác trên các bit riêng rẽ).
8


+ 210 vị trí nhớ được định địa chỉ, mỗi vị trí 1 bit.
+ Nhân/chia trong 4µs.
1.2 Sơ đồ khối chung của họ 8051
- Interrupt Control: điều khiển ngắt
- Other Register: các thanh ghi khác
- 128 byte Ram

- Bộ định thời: 0, 1, 2
- CPU: đơn vị điều khiển trung tâm
- Oscillator: mạch dao động
- Bus Control: điều khiển Bus
- Input/output: các chân vào ra
- Serial port: cổng nối tiếp
- INT1/INT0: các ngắt 1/0

Hình 1.1 Bố trí bên trong của họ 8051

9


1.3 Các thành viên khác của 8051
Có hai bộ vi điều khiển là các thành viên khác của họ 8051 là 8052 và 8031.
1.3.1 Bộ vi điều khiển 8052
Bộ vi điều khiển 8052 là một thành viên của họ 8051, 8052 có tất cả các đặc
tính chuẩn của 8051 ngoài ra nó có thêm 128 byte Ram và một bộ định thời nữa.
Bảng 1.2 So sánh các đặc tính của các thành viên họ 8051
Đặc Tính
Rom
Ram
Bộ định thời
Chân vào/ra
Cổng nối tiếp
Nguồn ngắt

8051
4 kbyte
128 byte

2
32
1
6

8052
8 kbyte
256 byte
3
32
1
6

8031
Không có
128 byte
2
31
1
1

* Dựa vào bảng 1.2 có thể thấy các chương trình viết cho 8051 đều chạy trên 8052
nhưng điều ngược lại là không đúng.
1.3.2 Bộ vi điều khiển 8031
Một thành viên khác nữa của 8051 là chíp 8031. Chíp được coi như là 8051
không có Rom trên chíp. Để sử dụng chíp này phải bổ sung Rom ngoài cho nó,
Rom ngoài phải chứa chương trình mà 8031 sẽ nạp và thực hiện. Với 8051, chương
trình được chứa trong Rom trên chíp bị giới hạn bởi 4 kbyte, còn Rom ngoài gắn
với 8031 thì có thể lớn đến 64 kbyte. Khi sử dụng Rom ngoài chỉ có thể còn lại
hai cổng để sử dụng cho mục đích vào ra, để giải quyết vấn đề này giải pháp có thể

là mở rộng cổng vào ra cho 8031 bằng cách sử dụng vi mạch PPI 8255.
1.4 Các phiên bản của 8051
Mặc dù 8051 là thành viên phổ biến nhất của họ 8051 nhưng còn có rất nhiều
phiên bản của nó với những tên gọi khác nhau tùy thuộc vào kiểu bộ nhớ chương
trình, công nghệ chế tạo, tần số làm việc…
Ví dụ: Phiên bản của 8051 với bộ nhớ UV-PROM được kí hiệu 8751. Phiên bản
Flash Rom cũng được bán bởi nhiều hãng khác nhau, chẳng hạn như Atmel với tên
gọi AT89C51 còn phiên bản NV-RAM của 8051 do Dalas Semiconductor cung cấp
10


thì được gọi là DS5000. Ngoài ra còn có phiên bản OTP (lập trình được một lần)
cũng được sản xuất bởi nhiều hãng.
1.4.1 Bộ vi điều khiển 8751
Chíp 8751 chỉ có 4 kbyte bộ nhớ UV-EPROM trên chíp. Để sử dụng chíp
này cần có bộ đốt PROM và bộ xóa UV-EPROM để xóa nội dung của bộ nhớ
UV-EPROM bên trong 8751 trước khi ta có thể lập trình lại nó. Do ROM trên chíp
đối với 8751 là UV-EPROM nên cần phải mất 20 phút để xóa 8751 trước khi nó
có thể được lập trình trở lại. Vì điều này dẫn đến nhiều nhà sản xuất giới thiệu các
phiên bản FLASH-ROM và UV-RAM. Ngoài ra còn có nhiều phiên bản với các tốc
độ khác nhau của 8751 từ nhiều hãng khác nhau.
8751 được sử dụng trong công việc phát triển và bộ nhớ chương trình trên
các vi mạch này được xóa bằng ánh sáng từ nguồn tử ngoại.
1.4.2 Bộ vi điều khiển AT8951 từ Atmel Corporation
AT8951 là phiên bản 8051 có Rom trên chíp ở dạng bộ nhớ Flash. Phiên bản
này là lý tưởng đối với những phát triển nhanh vì bộ nhớ Flash có thể được xóa
trong vài giây. Dùng AT89C51 để phát triển một hệ thống dựa trên bộ vi điều
khiển yêu cầu một bộ đốt Rom hỗ trợ bộ nhớ Flash, không yêu cầu bộ xóa Rom.
Hãng Atmel đã cho ra đời một phiên bản của AT89C51 có thể lập trình qua cổng
truyền thông Com của máy tính IBM PC.


Bảng 1.3 Các phiên bản của 8051 do hãng Atmel cung cấp (Flash Rom)
Kí hiệu

Rom

Ram

Chan
11

Timer

Ngắt VCC

Đóng vỏ


I/O
32

AT89C51

4 kbyte 128

2

AT89LV51

byte

4 kbyte 128

32

2

byte
AT89C1051 1 kbyte 64

15

1

6

5v

40 chân/2

6

3v

hàng
40 chân/2

3

3v


hàng
20 chân/2

byte
AT89C2051 2 kbyte 128

15

2

6

3v

hàng
20 chân/2

AT89C52

byte
8 kbyte 128

32

3

8

5v


hàng
40 chân/2

AT89LV52

byte
8 kbyte 128

3v

hàng
40 chân/2

32

3

8

byte

hàng

AT89C2051 là bộ vi điều khiển 8 bit được chế tạo theo công nghệ CMOS, có thể
hoạt động được ở dải điện áp 2,7V đến 6V. Bộ vi điều khiển được đóng gói DIP 20
chân, khá nhỏ gọn so với 89S52 nhưng vẫn có đủ tài nguyên thông dụng như:
+ Bộ nhớ: 2 kbyte Flash có thể ghi/xóa 1000 lần, 128x8-bit Ram
+ Có thể hoạt động ở tần số thạch anh lên tới 24MHz
+ 15 chân xuất/nhập
+ 2 bộ Timer/Counter 16 bit

+ 6 nguồn ngắt
+ 1 cổng nối tiếp
+ 1 bộ so sánh (Analog Comparator)
AT89C4051 có sơ đồ chân và các tài nguyên giống AT89C2051, ngoại trừ bộ nhớ
Rom có dung lượng lớn hơn (4 kbyte). AT89S52 là một bộ vi điều khiển thông
dụng, giá rẻ, có khá nhiều chức năng hay, đặc biệt là có tích hợp sẵn bộ nạp ISP trên
chíp giúp người sử dụng có thể dễ dàng thực hiện các bài thí nghiệm với chi phí rất
thấp.
Cũng có rất nhiều phiên bản kí hiệu thể hiện kiểu đóng vỏ và tốc độ khác nhau của
sản phẩm. Ví dụ chữ C đứng trước 51 trong AT89C51-12PC là kí hiệu cho CMOS,
”12” kí hiệu cho 12MHz, và “P” là kiểu đóng vỏ DIP và chữ “C” cuối cùng là kí
hiệu cho thương mại (ngược với chữ “M” là quân sự).
12


1.4.3 Bộ vi điều khiển DS5000 từ hãng Dalas Semiconductor
Một phiên bản phổ biến khác nữa của 8051 là DS5000 của hãng
Semiconductor. Bộ nhớ Rom trên chíp của DS5000 ở dưới dạng NV-RAM. Khả
năng đọc/ghi của nó cho phép chương trình được nạp vào Rom trên chíp trong khi
nó vẫn ở trong hệ thống (không phải lấy ra). Điều này còn có thể được thực hiện
thông qua cổng nối tiếp của máy tính IBM-PC. Việc nạp chương trình trong hệ
thống (in-system) của DS5000 thông qua cổng nối tiếp của PC làm cho nó trở thành
một hệ thống phát triển tại chỗ lý tưởng. Một ưu việt của NV-RAM là khả năng
thay đổi nội dung của Rom theo từng byte tại một thời điểm. Điều này tương phản
với bộ nhớ Flash và EPROM mà bộ nhớ của chúng phải được xóa sạch trước khi
lập trình lại cho chúng.
Bảng 1.4 Các phiên bản 8051 từ hãng Dalas Semiconductor
Chữ “T” đứng sau 5000 là có đồng hồ thời gian thực
Mã linh kiện


Rom

Ram

Chân

Timer

Ngắt

Vcc

Đóng

I/O
vỏ
DS5000-8
8kbyte
128
32
2
6
5V
40
DS5000-32
32kbyte
128
32
2
6

5V
40
DS5000T-8
8kbyte
128
32
2
6
5V
40
DS5000T-8
32kbyte
128
32
2
6
5V
40
* Đồng hồ thời gian thực RTC là khác với bộ định thời Timer. RTC tạo và giữ thời
gian 1 phút, giờ, ngày, tháng, năm kể cả khi tắt nguồn.
Còn có nhiều phiên bản DS5000 với những tốc độ và kiểu đóng gói khác nhau.
Ví dụ DS5000-8-8 có 8 kbyte NV-RAM và tốc độ 8MHz.
Thông thường DS5000-8-12 hoặc DS5000T-8-12 là lý tưởng với những dự án
của sinh viên.
Bảng 1.5 Một số thành viên của họ 8051

Mã linh kiện
DS5000-8-8
DS5000-8-12
DS5000-32-8

DS5000T-32-12
DS5000-32-12

NV-RAM
8kbyte
8kbyte
32kbyte
32kbyte
32kbyte
13

Tốc độ
8MHz
12MHz
8MHz
8MHz(with RTC)
12MHz


DS5000-8-12

8kbyte

12MHz(with RTC)

1.4.4 Phiên bản OTP của 8051
Các phiên bản OTP của 8051 là các chíp 8051 có thể lập trình được một lần
và được cung cấp từ nhiều hãng khác nhau. Các phiên bản Flash và NV-RAM
thường được sử dụng để phát triển sản phẩm mẫu. Khi một sản phẩm được thiết kế
và được hoàn thiện tuyệt đối thì phiên bản OTP của 8051 được dùng để sản xuất

hàng loạt vì giá thành một đơn vị sản phẩm sẽ rẻ hơn.
1.4.5 Họ 8051 từ hãng Philips
Một nhà sản xuất chính của họ 8051 khác nữa là Philips Corporation. Thật
vậy, hãng này có một dải lựa chọn rộng lớn cho các bộ vi điều khiển 8051. Nhiều
sản phẩm của hãng đã có kèm theo đặc tính như các bộ chuyển đổi ADC, DAC,
cổng I/O mở rộng và các phiên bản OTP và Flash.

14


1.5 Kiến trúc phần cứng của họ Vi điều khiển 8051
1.5.1 Sơ đồ khối của 8051/8052/AT89S52

Hình 1.2 Sơ đồ khối của vi điều khiển AT89S52
1.5.2 Chức năng các khối của 8051/8052/AT89S52
1.5.2.1 CPU
- 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).
- Thanh ghi 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.

15


1.5.2.2 Bộ nhớ chương trình (bộ nhớ Rom)
Gồm 8kbyte Flash.
1.5.2.3 Bộ nhớ dữ liệu (bộ nhớ Ram)
Gồm 256byte.

1.5.2.4 Bộ UART (Universal Ansynchronous Receiver and
Transmitter)
Có chức năng truyền nhận nối tiếp, AT89S52 có thể giao tiếp với cổng nối
tiếp của máy tính thông qua bộ UART.
1.5.2.5 Ba bộ Timer/Counter 16 bit
Thực hiện các chức năng định thời và đếm sự kiện.
1.5.2.6 WDM (Watch Dog Timer)
WDM được dùng để phục hồi lại hoạt động của CPU khi nó bị treo bởi
nguyên nhân nào đó. WDM ở AT89S52 gồm một bộ Timer 14 bit, 1 bộ Timer 7 bit,
thanh ghi WDTPRG ( WDT programable ), điều khiển Timer 7 bit và một thanh
ghi chức năng WDTRST (WDM register). Bình thường WDT không hoạt động, để
cho phép WDT, các giá trị 1EH và E1H cần phải ghi liên tiếp vào thanh ghi
WDTRST. Timer 14 bit của WDT sẽ đếm tăng dần sau mỗi chu kì đồng hồ cho đến
giá trị 16383 thì xảy ra tràn. Khi xảy ra tràn chân Reset sẽ được đặt ở mức cao trong
khoảng thời gian 98*Tosc ( Tosc=1/Fosc ) và AT89S52 sẽ được Reset. Khi WDT
hoạt động, ngoài trừ Reset phần cứng và Reset do WDT tràn thì không có cách nào
có thể cấm được WDT, vì vậy khi sử dụng WDT thì các đoạn mã của chương trình
phải được đặt trong các khe thời gian giữa các lần WDT được khởi tạo lại.
Thanh ghi WDTPRG:
7
-

6
-

5
-

4
-


3
-

16

2
S2

1
S1

0
S0


Tùy theo các giá trị khác nhau được ghi vào S0, S1, S2, số chu kì máy mà WDT
sẽ đếm và thời gian trong các bảng 1.6, bảng 1.7
Bảng 1.6 Số chu kì máy WDT đếm tùy theo giá trị S0, S1, S2
S2
0
0
0
0
1
1
1
1

S1

0
0
1
1
0
0
1
1

S0
0
1
0
1
0
1
0
1

Số chu kì máy WDT đếm
2^14
2^15
2^16
2^17
2^18
2^19
2^20
2^21

Bảng 1.7 Thời gian tràn của WDT

S2
0
0
0
0
1
1
1
1

S1
0
0
1
1
0
0
1
1

S0
0
1
0
1
0
1
0
1


Fosc=12MHz Fosc=16MHz
16,38ms
12,28ms
32,77ms
24,57ms
65,54ms
49,14ms
131,01ms
98,28ms
262,14ms
196,56ms
524,29ms
393,12ms
1,54s
788,24ms
2,10s
1,57s

1.5.2.7 Điều khiển ngắt
Với hai nguồn ngắt ngoài và 4 nguồn ngắt trong.

17

Fosc=20MHz
9,82ms
19,66ms
39,32ms
76,64ms
157,28ms
314,56ms

629,17ms
1,25s


1.5.2.8 Bộ lập trình (ghi chương trình lên Flash Rom)
Cho phép người sử dụng có thể nạp chương trình cho chip mà không cần các
bộ nạp chuyên dụng.
1.5.2.9 Bộ chia tần số
Với hệ số chia là 12.
1.5.2.10 Bốn cổng xuất nhập
Gồm 32 chân.
1.6 Tổ chức bộ nhớ bên trong của 8051
Bộ nhớ trong 89S52 bao gồm ROM và RAM. RAM trong 89S52 bao gồm nhiều
thành phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank thanh
ghi và các thanh ghi chức năng đặc biệt.
AT89S52 có bộ nhớ được tổ chức theo cấu trúc Harvard: có những vùng bộ
nhớ riêng biệt cho chương trình và dữ liệu. Chương trình và dữ liệu có thể chứa bên
trong 89S52 nhưng 89S52 vẫn có thể kết nối với 64Kbyte bộ nhớ chương trình và
64Kbyte dữ liệu bên ngoài.

18


Bản đồ bộ nhớ Data bên trong Chip 89S52 được tổ chức như sau:
Địa chỉ
byte

Địa chỉ bit

Địa chỉ

byte

19

Địa chỉ bit


RAM bên trong AT89S52 được phân chia như sau:
- Các bank thanh ghi có địa chỉ từ 00H đến 1FH.
- RAM địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH.
- RAM đa dụng từ 30H đến 7FH.
- Các thanh ghi chức năng đặc biệt từ 80H đến FFH.
- RAM đa dụng
RAM đa dụng có địa chỉ từ 30h – 7Fh có thể truy xuất mỗi lần 8 bit bằng
cách dùng chế độ định địa chỉ trực tiếp hay gián tiếp.
Các vùng địa chỉ thấp từ 00h – 2Fh cũng có thể sử dụng cho mục đích như
trên, ngoài các chức năng đặc biệt được đề cập ở phần sau.
- RAM có thể định địa chỉ bit
Vùng địa chỉ từ 20h -2Fh gồm 16 byte có thể thực hiện như vùng RAM đa
dụng (truy xuất mỗi lần 8 bit) hay thực hiện truy xuất mỗi lần 1 bit bằng các lệnh xử
lý bit.
- Các bank thanh ghi
Vùng địa chỉ 00h – 1Fh được chia thành 4 bank thanh ghi: bank 0 từ 00h –
07h, bank 1 từ 08h – 0Fh, bank 2 từ 10h – 17h và bank 3 từ 18 – 1Fh. Các bank
thanh ghi này được đại diện bằng các thanh ghi từ R0 đến R7. Sau khi khởi động thì
hệ thống bank 0 được chọn sử dụng.
Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghi
được truy xuất bởi các thanh ghi R0 đến R7. Việc thay đổi bank thanh ghi được
thực hiện thông qua thanh ghi từ trạng thái chương trình (PSW).
- Các thanh ghi có chức năng đặc biệt

Các thanh ghi trong 89S52 được định dạng như một phần của RAM trên chip
vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi bộ đếm chương trình và
thanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp). Cũng như R0
đến R7, 89S52 có 21 thanh ghi có chức năng đặc biệt (SFR: Special Function
Register) ở vùng trên của RAM nội từ địa chỉ 80H đến 0FFH.

20


Sau đây là một vài thanh ghi đặc biệt thường được sử dụng:
Bảng 1.8 Các thanh ghi trạng thái chương trình (PSW: Program Status Word)

BIT

SYMBOL

ADDRESS

DESCRIPTION

PSW.7

CY

D7H

Cary Flag

PSW.6


AC

D6H

Auxiliary Cary Flag

PSW.5

F0

D5H

Flag 0

PSW4

RS1

D4H

Register Bank Select 1

PSW.3

RS0

D3H

Register Bank Select 0
00=Bank 0; address 00H÷07H

01=Bank 1; address 08H÷0FH
10=Bank 2; address 10H÷17H
11=Bank 3; address 18H÷1FH

PSW.2

OV

D2H

Overlow Flag

PSW.1

-

D1H

Reserved

PSW.0

P

DOH

Even Parity Flag

21



Chức năng từng bit trạng thái chương trình
- Cờ Carry CY (Carry Flag):
Cờ nhớ thường nó được dùng cho các lệnh toán học: C =1 nếu phép toán
cộng có sự tràn hoặc phép trừ có mượn và ngược lại C = 0 nếu phép toán cộng
không tràn và phép trừ không có mượn.
- Cờ Carry phụ AC (Auxiliary Carry Flag):
Khi cộng những giá trị BCD (Binary Code Decimal), cờ nhớ phụ AC được
set nếu kết quả 4 bit thấp nằm trong phạm vi điều khiển 0AH - 0FH. Ngược lại AC
=0
- Cờ 0 (Flag 0):
Cờ 0 (F0) là 1 bit cờ đa dụng dùng cho các ứng dụng của người dùng.
- Những bit chọn bank thanh ghi truy xuất:
RS1 và RS0 quyết định dãy thanh ghi tích cực. Chúng được xóa sau khi reset
hệ thống và được thay đổi bởi phần mềm khi cần thiết.
Tùy theo RS1, RS0 = 00, 01, 10, 11 sẽ được chọn Bank tích cực tương ứng là
Bank 0, Bank1, Bank2 và Bank3.

RS1

RS0

BANK

0

0

0


0

1

1

1

0

2

1

1

3

22


- Cờ tràn OV (Over Flag):
Cờ tràn được set sau một hoạt động cộng hoặc trừ nếu có sự tràn toán học.
- Bit Parity (P):
Bit tự động được set hay Clear ở mỗi chu kỳ máy để lập Parity chẵn với
thanh ghi A. Sự đếm các bit 1 trong thanh ghi A cộng với bit Parity luôn luôn chẵn.
Ví dụ A chứa 10101101B thì bit P set lên một để tổng số bit 1 trong A và P tạo
thành số chẵn.
Bit Parity thường được dùng trong sự kết hợp với những thủ tục của Port nối
tiếp để tạo ra bit Parity trước khi phát đi hoặc kiểm tra bit Parity sau khi thu.

1.7 Hoạt động định thời
1.7.1 Giới thiệu
Các bộ định thời ( Timer ) được sử dụng rất rộng rãi trong các ứng dụng đo
lường và điều khiển. Có thể coi một bộ định thời n bit là bộ đếm n bit được tạo ra
bởi n flip_flop mắc nối tiếp với nhau. Đầu ra của bộ định thời chính là đầu vào của
flip_flop đầu tiên...
AT89S52 có 3 bộ định thời 16 bit trong đó hai bộ Timer 0, Timer 1 có 4 chế
độ hoạt động. Timer 2 có 3 chế độ hoạt động. Các bộ định thời dùng để định
khoảng thời gian (hẹn giờ), đếm sự kiện xảy ra bên ngoài bộ vi điều khiển hoặc tạo
tốc độ baud cho cổng nối tiếp.
Trong các ứng dụng định khoảng thời gian, Timer được lập trình sao cho sẽ
tràn sau một khoảng thời gian và thiết lập cờ tràn bằng 1. Cờ tràn được sử dụng bởi
chương trình để thực hiện một hành động tương ứng như kiểm tra trạng thái của các
ngõ vào hoặc gửi các sự kiện ra các ngõ ra.
Đếm sự kiện dùng để xác định số lần xảy ra của một sự kiện. Trong ứng
dụng này người ta tìm cách quy các sự kiện thành sự chuyển mức từ 1 xuống 0 trên
các chân T0 hoặc T1 hoặc T2 để dùng các Timer tương ứng đếm các sự kiện đó.
1.7.2 Các thanh ghi của bộ định thời
1.7.2.1 Các thanh ghi của Timer 0, Timer 1
-Thanh ghi chế độ định thời (TMOD)
23


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

6
C/#


5
M1

4
M0

3
GA

T1

TE0

2
C/#

1
M1

0
M0

T0

Thanh ghi TMOD
Bảng 1.9 Thanh ghi chức năng TMOD
Bit
7


Tên
GATE1

Timer
1

Mô tả
Bit mở cổng cho timer 1, khi được đặt
bằng 1 thì Timer 1 chỉ chạy khi chân

6

C/#T1

1

INT1 ở mức cao
Bit chọn chế độ Counter/Timer 1
1=bộ đếm sự kiện

5
4

M1
M0

1
1

0=bộ định khoảng thời gian

Bit 1 chọn chế độ của Timer 1
Bit 0 chọn chế độ của Timer 1
00: chế độ 0-Timer 13 bit
01: chế độ 1-Timer 16 bit
10: chế độ 2-8 bit tự động nạp lại

3

GATE0

0

11: chế độ 3-tách Timer
Bit mở cổng Timer 0, khi được đặt bằng
1 thì Timer 0 chỉ chạy khi chân INT0 ở

2

C/#T0

0

mức cao
Bit chọn chế độ Counter/Timer của

1
0

M1
M0


0
0

Timer 0
Bit 1 chọn chế độ của Timer 0
Bit 0 chọn chế độ của Timer 0

TMOD không có bit định vị, nó thường load một lần bởi phần mềm ở đầu chương
trình để khởi động mode Timer. Sau đó sự định giờ có thể dừng lại, được khởi động
lại như thế bởi truy xuất của các thanh ghi chức năng đặc biệt của Timer khác.
-Thanh ghi điều khiển Timer (TCON)
24


Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển Timer 0 và Timer 1.
Bốn bit cao trong TCON ( TCON.4-TCON.7 ) được dùng để điều khiển các bộ
định thời hoạt động hoặc ngưng ( TR0, TR1) hoặc để báo các bộ định thời tràn
(TF0, TF1).
Bốn bit thấp của TCON ( TCON.0-TCON.3 ) không dùng để điều khiển các bộ
định thời, chúng được dùng để phát hiện và khởi động các ngắt ngoài.
TCON.7 TCON.6 TCON.5 TCON.4 TCON.3 TCON.2 TCON.1 TCON.0
TF1
TR1
TF0
TR0
IT1
IE1
IT0
IE0

Thanh ghi TCON
Bảng 1.10 Thanh ghi chức năng TCON
Bit
TCON.7

Kí hiệu
TF1

Địa chỉ
8F

Mô tả
Cờ báo tràn của T1, được đặt bởi
phần cứng khi có tràn, được xóa bởi
phần mềm hoặc bởi phần cứng khi
bộ VXL chỉ đến chương trình phục

TCON.6

TR1

vụ ngắt
Bit điều khiển T1 hoạt động được

8EH

đặt xóa bởi phần mềm để điều khiển
TCON.5
TCON.4
TCON.3

TCON.2
TCON.1
TCON.0

TF0
TR0
IT1
IE1
IT0
IE0

cho Timer chạy/dừng
Cờ báo tràn T0
Bit điều khiển T0 hoạt động
Cờ ngắt do T1
Cờ ngắt ngoài 1
Cờ ngắt do T0
Cờ ngắt ngoài 0

8DH
8CH
8BH
8AH
89H
88H

- Các thanh ghi chứa giá trị của các bộ định thời.
Các Timer 0 và Timer 1 đều là các Timer 16 bit, mỗi Timer có thanh ghi 8 bit
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ể như sau :

Timer 0 có TH0 và TL0, Timer 1 có TH1 và TL1.
* Các thanh ghi này không được định địa chỉ bit.
Timer 1
25


TH1(8bit) TL1(8bit)
Timer 0
TH0(8bit) TL0(8bit)

1.7.2.2 Các thanh ghi của Timer 2
- Thanh ghi T2CON
T2CON.7 T2CON.6 T2CON.5 T2CON.4 T2CON.3 T2CON.2 T2CON.1 T2CON.0
TF2
EXF2
RCLK
TCLK
EXEN2
TR2
C/#T2
CP/#RL2

26


×