+ Tạo tốc ñộ baud cho port nối tiếp của chip 8051.- Trong các ứng dụng ñịnh thời trong một khoảng thời gian , bộ ñịnh thời ñược lập trình sao cho sẽ bị tràn sau một khoảng thời gian quy
Trang 1GV LÊ TIẾN DŨNG
Bộ môn Tự ựộng hóa Ờ Khoa điện
Trường đại học Bách khoa Ờ đại học đà Nẵng
Trang 2CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
NỘI DUNG CHƯƠNG 4
Trang 3+ Tạo tốc ñộ baud cho port nối tiếp của chip 8051.
- Trong các ứng dụng ñịnh thời trong một khoảng thời gian , bộ ñịnh thời ñược lập trình sao cho sẽ bị tràn sau một khoảng thời gian
quy ñịnh và set cờ tràn của bộ ñịnh thời bằng 1
- Việc ñếm sự kiện ñược dùng ñể xác ñịnh số lần xuất hiện của một
sự kiện Sự kiện là một kích thích bên ngoài cung cấp một chuyển
trạng thái từ 1 xuống 0 tới một chân của 8051
Trang 4CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
2 Các thanh ghi dùng truy xuất Timer/Counter
không 8DH
Byte cao của bộ ñịnh thời 1
TH1
không 8CH
Byte cao của bộ ñịnh thời 0
TH0
không 8BH
Byte thấp của bộ ñịnh thời 1
TL1
không 8AH
Byte thấp của bộ ñịnh thời 0
TL0
không 89H
Chọn chế ñộ
TMOD
Có 88H
ðiều khiển
TCON
ðịnh ñịa chỉ bit ðịa chỉ
M ục ñích
SFR
Trang 5CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
2 Các thanh ghi dùng truy xuất Timer/Counter
* Thanh ghi TCON
- TCON chứa các bit ñiều khiển và trạng thái của bộ ñịnh
thời 0 và 1
Trang 6CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
2 Các thanh ghi dùng truy xuất Timer/Counter
* Thanh ghi TCON
-4 bit cao TCON.4 - TCON.7 ñược dùng ñể ñiều khiển 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).
- 4 bit thấp 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.
Trang 7CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
2 Các thanh ghi dùng truy xuất Timer/Counter
* Thanh ghi TCON
Bit ñiều khiển hoạt ñộng của bộ ñịnh thời 0.
8CH
TR0 TCON.4
Cờ tràn của bộ ñịnh thời 0.
8DH
TF0 TCON.5
Bit ñiều khiển hoạt ñộng của bộ ñịnh thời 1 Bit này ñược set hoặc ñược xóa bởi phần mềm ñể ñiều khiển
bộ ñịnh thời hoạt ñộng hoặc ngưng hoạt ñộng.
8EH
TR1 TCON.6
Cờ tràn của bộ ñịnh thời 1 Cờ này ñược set 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ộ VðK trỏ ñến trình phục vụ ngắt.
8FH
TF1 TCON.7
Mô t ả
ðịa chỉ
Ký hi ệu
Bit
Trang 8CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
2 Các thanh ghi dùng truy xuất Timer/Counter
* Thanh ghi TCON
Chọn kích khởi cạnh hay mức cho ngắt ngoài 0
88H
IT0 TCON.0
Cờ ngắt bên ngoài 0
89H
IE0 TCON.1
Chọn kích khởi cạnh hay mức cho ngắt ngoài 1 Cờ này ñược set hoặc xóa bởi phần mềm khi xảy ra cạnh
âm hoặc mức thấp tại chân ngắt ngoài
8AH
IT1 TCON.2
Cờ ngắt bên ngoài 1 (kích khởi cạnh) Cờ này ñược
set bởi phần cứng khi có cạnh âm (xuống) xuất hiện trên chân /INT1, ñược xóa bởi phần mềm, hoặc phần cứng khi CPU trỏ ñến trình phục vụ ngắt
8BH
IE1 TCON.3
Mô t ả
ðịa chỉ
Ký hi ệu
Bit
Trang 9CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
2 Các thanh ghi dùng truy xuất Timer/Counter
* Thanh ghi TMOD
Chứa 2 nhóm 4-bit dùng ñể thiết lập chế ñộ hoạt ñộng cho bộ ñịnh thời 0 và bộ ñịnh thời 1.
Trang 10CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
2 Các thanh ghi dùng truy xuất Timer/Counter
* Thanh ghi TMOD
- TMOD không ñược ñịnh ñịa chỉ bit và ñiều này cũng không cần thiết.
- TMOD ñược nạp giá trị một lần bằng phần mềm ở thời ñiểm bắt ñầu của một chương trình ñể khởi ñộng chế ñộ hoạt ñộng của bộ ñịnh thời Sau ñó , bộ ñịnh thời có thể ñược dừng, bắt ñầu bằng cách truy xuất các thanh ghi ñặc biệt khác của bộ ñịnh thời.
Trang 11CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
2 Các thanh ghi dùng truy xuất Timer/Counter
* Thanh ghi TMOD
Bit
Trang 12CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
2 Các thanh ghi dùng truy xuất Timer/Counter
* Thanh ghi TMOD
Bit
Trang 13Chế ñộ tự ñộng nạp lại 8-bit.
2 0
1
Chế ñộ ñịnh thời 16-bit.
1 1
0
Chế ñộ ñịnh thời 13-bit.
0 0
0
Mô tả Chế ñộ
M0 M1
Chọn chế ñộ ñịnh thời
Trang 14- Thời gian tối ña có thể ñịnh thời: 2 13 = 8192 µ µ µs (OSC =
11,0592MHz).
Trang 15CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
3 Các chế ñộ (mode) ñịnh thời
Chế ñộ 0
Trang 16-Thời gian ñịnh thời tối ña: 2 16 = 65536 µ µ µs.
- Muốn ñịnh khoảng thời gian lớn hơn ta dùng bộ ñịnh thời 16-bit kết hợp với các vòng lặp.
Trang 18bộ ñịnh thời lưu giữ giá trị nạp lại
- Khi số ñếm tràn từ FFh xuống 00H, không chỉ cờ tràn của
bộ ñịnh thời ñược set lên 1 mà giá trị trong THx còn ñược
nạp vào TLx, việc ñếm sẽ tiếp tục từ giá trị này cho ñến khi xảy ra 1 tràn (FFh → 00h) kế tiếp,
Trang 21CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
4 Các bước lập trình ñịnh thời
1 Nạp giá trị ban ñầu cho các thanh ghi: Chọn bộ
Timer/Counter (0,1), chọn Mod (0,1,2,3), ñặt thời gian cần ñịnh thời cho các thanh ghi TH, TL
2 Kích hoạt cho bộ Timer/Counter hoạt ñộng
(bằng lệnh "SETB TR0" cho Timer 0 và "SETB TR1" cho Timer 1 Timer bắt ñầu ñếm lên.
Trang 22CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
4 Các bước lập trình ñịnh thời
3 Kiểm tra trạng thái của cờ tràn (lệnh JNB TFx,ñích) ñể biết khi
nào thời gian ñịnh thời kết thúc Khi xảy ra tràn thì cờ tràn TF0 hoặc TF1 sẽ bật lên mức cao.
4 Dừng bộ ñịnh thời "CLR TR0" hoặc "CLR TR1".
5 Xóa cờ TF (nếu ko phải là ngắt) ñể chuẩn bị cho vòng kế tiếp.
6 Quay trở lại bước 2 ñể nạp lại giá trị cần ñịnh thời cho TL và TH
(ñối với chế ñộ 0,1) nếu muốn lặp lại việc ñịnh thời.
Trang 232- Nạp vào thanh ghi TH giá trị ñịnh thời (-n µ s).
3- Khởi ñộng bộ ñịnh thời (SETB TR0 hoặc SETB TR1);
4- Kiểm tra cờ tràn TF bằng lệnh "JNB TFx, ñích" ñể xem cờ ñã ñược bật chưa Thoát khỏi vòng lặp khi TF lên mức cao
LOOP: JNB TF0, LOOP 5- Xóa cờ tràn TFx
6- Quay trở lại bước 4 vì chế ñộ 2 là chế ñộ tự nạp lại.
Trang 24CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
5 Cách xác ñịnh giá trị cần nạp vào thanh ghi TH, TL
Giả sử chúng ta ñã biết thời gian trễ cần có, vậy giá trị nạp cho các thanh ghi
TH và TL là bao nhiêu? Tần số dao ñộng thạch anh: 11.0592MHz Các bước thực hiện sử dụng máy tính Calculator của Windows như sau:
1- Chọn máy tính Calculator từ Windows và ñặt chế ñộ tính về số thập phân Decimal.
2- Nhập từ bàn phím thực hiện chia thời gian trễ cho 1,085µs ñược một số thập phân n.
3- Chuyển số âm "- n." sang số Hexa, ta ñược một số yyxxH là giá trị Hexa cần
nạp cho các thanh ghi của bộ ñịnh thời.
4- ðặt TL = xx và TH = yy.
Trang 25CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
5 Cách xác ñịnh giá trị cần nạp vào thanh ghi TH, TL
Giải thích: Các bộ ñịnh thời ñếm lên và thiết lập cờ tràn bằng 1 khi xảy ra tràn số ñếm từ FFFFH xuống 0000H, vậy thì một khoảng thời gian n µ s có thể ñược ñịnh thời bằng cách khởi ñộng TL và TH chứa số ñếm nhỏ hơn 0000H một lượng là n, nghĩa là "-n".
Trang 26CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
* Chân GATE trong các bộ ñịnh thời
+ Khi GATE = 0 thì các bộ ñịnh thời Timer0 và Timer1 ñược khởi ñộng bằng lệnh tương ứng "SETB TR0" và "SETB TR1".
+ Khi GATE = 1 thì việc khởi ñộng và dừng bộ ñịnh thời Timer
0 và Timer 1 ñược thực hiện từ bên ngoài thông qua chân P3.2 (/INT0) và P3.3 (/INT1) tương ứng Lúc ñó, ngoài việc phải set TR0
và TR1 lên bằng 1 còn phải ñưa tín hiệu vào từ bên ngoài thông qua /INT0 và /INT1.
Trang 27CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
* Chân GATE trong các bộ ñịnh thời
Ứng dụng: Nhằm ñể cung cấp cho người dùng khả
năng kiểm soát hoạt ñộng ñịnh thời từ bên ngoài VðK Ví
dụ trong trường hợp còi báo ñộng theo từng thời gian nhất
ñịnh: Cứ sau 10p thì còi báo ñộng kêu Nếu nối một công tắc chuyển mạch ñến chân /INTx thì ta có thể dừng hoặc khởi ñộng bộ ñịnh thời và như vậy có thể tắt hoặc mở còi báo ñộng.
Trang 29CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
Trang 30MOV TH0,#0xEE ; Nạp TH = EE.
SETB TR0 ; Bắt ñầu ñịnh thời
AGAIN: JNB TF0,AGAIN ; Chờ tràn, nhảy nếu bit TF0 chưa ñược set bằng 1
Trang 31CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
Trang 32- Một tràn xảy ra sau mỗi 50µs yêu cầu một giá trị số ñếm nhỏ hơn 00h một lượng là +50 phải nạp và nạp lại cho TL0, nghĩa là giá trị nạp cho TH0 là -50 (<FF).
Trang 34CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
ORG 0x0000H MOV TMOD,#02 ; Chọn chế ñộ 2 (Chế ñộ tự nạp lại 8-bit)
MOV TH0,# -50 ; TH0 chứa giá trị nạp lại -50 MOV TL0,#-50
END.
Trang 35CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
7 Lập trình bộ ñếm
- Xung từ bên ngoài sẽ làm tăng giá trị các thanh ghi TH, TL.
- Chọn chức năng ñếm bằng bit C/T của thanh ghi TMOD.
Trang 36CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
7 Lập trình bộ ñếm
- Bộ ñếm sẽ ñếm lên khi có xung xuất hiện từ:
+ chân T0: Timer/Counter0 external input (P3.4, chân số 14) + chân T1: Timer/Counter1 externa input (P3.5, chân số 15).
8051
P3.4 (T0) P3.5 (T1)
Trang 38CHƯƠNG 4:
HOẠT ðỘNG ðỊNH THỜI/ ðẾM SỰ KIỆN
ORG 0000H MOV TMOD,#01100000B ; Chọn bộ ñếm 1, chế ñộ 2, C/T=1 MOV TH1,#0 ; Xóa TH1, bắt ñầu ñếm lên từ giá trị 0.
SETB P3.5 ; Lấy ñầu vào là chân T1
MOV P1,A ; Hiển thị số ñếm ra cổng P1
JNB TF1,BACK ; Kiểm tra cờ tràn
CLR TF1 ; Xóa cờ tràn
SJMP AGAIN ; Lặp lại
END.
Trang 39THANK YOU !
SEE YOU IN NEXT CHAPTER.