1Electrical Engineering
1
Bộ định thời 8051
• Có 2 bộ định thời 8 bit, 16 bit 8052 có
thêm bộ định thời 16 bit
•Xác định một khoảng thời gian
•Đếm sự kiện
• Tạo tốc độ baud trong truyền thông nối
tiếp
Electrical Engineering
2
Cách đếm timer
• Bộ định thời, dù đếm thời gian hay đếm sự
kiện đều luôn luôn đếm tăng
• Giá trị bắt đầu đếm được xác định bởi phần
mềm
• Khi bộ định thời đếm hết thì chương trình
sẽ bật tắc cờ tràn, dấu hiệu cho phép thực
hiện chương trình tiếp theo
13 trang |
Chia sẻ: huongnhu95 | Lượt xem: 424 | Lượt tải: 0
Tóm tắt tài liệu Giáo trình Bộ định thời 8051, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
2Electrical Engineering
3
Cỏc thanh ghi định thời
SFR Name Description SFR Address
TH0 Timer 0 High Byte 8Ch
TL0 Timer 0 Low Byte 8Ah
TH1 Timer 1 High Byte 8Dh
TL1 Timer 1 Low Byte 8Bh
TCON Timer Control 88h
TMOD Timer Mode 89h
Electrical Engineering
4
Vớ dụ giỏ trị
• Timer bắt đầu đếm từ 1000
• MOV TH0,#03
• MOV TL0, #232d
– 3 X 256 + 232 = 1000
3Electrical Engineering
5
Cỏc chế độ của bộ định thời,
TMOD
Electrical Engineering
6
Chế độ làm việc
TxM1 TxM0 Timer Mode Description of Mode
0 0 0 13-bit Timer.
0 1 1 16-bit Timer
1 0 2 8-bit auto-reload
1 1 3 Split timer mode
4Electrical Engineering
7
Chế độ 13 bit
• Chế độ này dựng tương thớch với VXL cũ
và khụng được sử dụng hiện nay
Electrical Engineering
8
Mode 1, 16 bit định thời
• Bộ đếm sẽ đếm tới – 65536, sau đú bộ đếm
sẽ quay lại 0
• Giỏ trị lớn nhất TL0 – 255
• Giỏ trị lớn nhất TH0 – 255
• Khụng tự động nạp lại
5Electrical Engineering
9
Mode 2, 8 bit định thời
• Tự động nạp lại ở chế độ 8 bớt
• THx giữ giỏ trị khởi động để nạp
• TLx sẽ đếm tới FF và quay trở lại TH
• Ưng dụng tạo xung PWM và dựng trong
cổng nối tiếp
Electrical Engineering
10
Mode 3, chế độ định thời chia xẻ
• Tạo nờn 3 bộ định thời
• Bộ định thời 0 gồm 2 bộ định thời 8 bit
• Bộ định thời 1 cú thể dựng bất cứ chế độ
nào
6Electrical Engineering
11
Khởi động, dừng và điều khiển
bộ định thời
Bit Name Bit Address Explanation of Function Timer
7 TF1 8Fh Timer 1 Overflow. Bit này sẽ bật khi Timer 1 tràn 1
6 TR1 8Eh Timer 1 Run. Khởi động và dừng Timer 1 1
5 TF0 8Dh Timer 0 Overflow. Bit này sẽ bật khi Timer 0 tràn 0
4 TR0 8Ch Timer 0 Run. Khởi động và dừng Timer 0. 0
Electrical Engineering
12
Vớ dụ về khởi động Timer
• Đặt Timer 0 ở mode 1
• Đặt Timer 1 ở mode 1
– Mov TMOD, #00010001B
– Setb TR0
– Hoặc
– Clr TR0; Dừng Timer 0
– Đợi cơ tràn xuất hiện
– Wait: JNB TF1, Wait
7Electrical Engineering
13
Vớ dụ về đọc giỏ trị bộ định thời
• Đọc byte cao
• Đọc byte thấp
• Đọc lại byte cao lần nữa
và so sỏnh
REPEAT: MOV A,TH0
MOV R0,TL0
CJNE A,TH0,REPEAT
...
Electrical Engineering
14
Đếm sự kiện
• Sử dụng thanh ghi
TMOD
• Đọc giỏ trị T0 hoặc T1
JNB P1.0,$ Đợi xe
JB P1.0,$ Chờ xe đi qua
INC COUNTER
Tăng số đếm
8Electrical Engineering
15
Vớ dụ
• Viết chương trỡnh tạo dao động tần số
10KHz trờn chõn P1.0
• 10 KHZ tương đương với chu kỳ là 100μS,
với thời gian mức thấp 50 μS, mức cao là
50μS.
• Giả thiết làm việc với tần số 12 MHz
Electrical Engineering
16
Ngắt (Interrupt)
• Tạm ngưng cụng việc hiện thời và chuyển
sang thực hiện chương trỡnh khỏc và quay
trở lại chương trỡnh cũ sau khi kết thỳc
• Mục đớch cho phộp xử lý “song song” nhiều
cụng việc
• Tạo tớnh hiệu quả khi làm việc
9Electrical Engineering
17
Vớ dụ về tớnh hiệu quả ngắt
JNB TF0, do_smt
CPL P3.0
CLR TF0
do_smt: ...
Ví dụ ch−ơng trnh ngắt
CPL P3.0
RETI
Ch−ơng trình trên phải chờ bộ
định thời
Giả sử bộ định thời đếm từ 0 –
65536
Giả sử ch−ơng trình do_smt
thực hiện mất 100 chu kỳ máy
Tổng cổng phải kiểm tra 655
lần
Electrical Engineering
18
Cỏc sự kiện xảy ra ngắt
• Timer 0 tràn
• Timer 1 tràn
• Truyền và nhận tớn hiệu nối tiếp
• Sự kiện ngoài 0
• Sự kiện ngoài 0
10
Electrical Engineering
19
Bảng Vector ngắt
Interrupt Flag Interrupt Handler Address
External 0 IE0 0003h
Timer 0 TF0 000Bh
External 1 IE1 0013h
Timer 1 TF1 001Bh
Serial RI/TI 0023h
Khi xảy ra ngắt, thì
con trỏ PC sẽ nhảy về
vị trí ngắt t−ơng ứng
trong bảng
Electrical Engineering
20
Khởi động ngắt
Bit Name Bit Address Explanation of Function
7 EA AFh Cho phộp ngắt toàn cục Interrupt Enable/Disable
6 - AEh Undefined
5 - ADh Undefined
4 ES ACh Cho phộp ngắt nối tiếp
3 ET1 ABh Cho phộp ngắt Timer 1
2 EX1 AAh Cho phộp ngắt External 1
1 ET0 A9h Cho phộp ngắt nối tiếp Timer 0
0 EX0 A8h Cho phộp ngắt External 0
SETB ET1
SETB EA
11
Electrical Engineering
21
Ưu tiờn ngắt
• Ngắt cú ưu tiờn cao sẽ xảy ra trước ngắt cú
ưu tiờn thấp
• 2 ngắt cú cựng ưu tiờn thỡ ngắt nào xảy ra
trước sẽ chạy trước
Electrical Engineering
22
Hoạt động VXL khi xảy ra ngắt
• Cất bộ đếm PC vào stack
• Trong trường hợp Timer hoặc Event ngắt
xảy ra, cờ ngắt sẽ tự động xúa
• Chương trỡnh sẽ nhảy về địa chỉ vector ngắt
• Thực hiện chương trỡnh ngắt
12
Electrical Engineering
23
Bảo vệ thanh ghi khi xảy ra ngắt
• CLR C ;Clear carry
MOV A,#25h ;Load the accumulator with
25h
ADDC A,#10h ;Add 10h, with carry
• Ngắt cú thể làm thay đổi giỏ trị thanh ghi
Electrical Engineering
24
Cỏc lệnh dựng bảo vệ
PUSH ACC
PUSH PSW
................
POP PSW
POP ACC
•Các thanh ghi cần bảo vệ
•PSW
•DPTR (DPH/DPL)
•PSW
•ACC
•B
•Registers R0-R7
13
Electrical Engineering
25
Cỏc lỗi khi sử dụng ngắt
• Quờn khụng bảo vệ thanh ghi
• Quờn khụng trả lại giỏ trị sau khi kết thỳc
ngắt
• Trả về ngắt dựng ret thay vỡ dựng reti
Electrical Engineering
26
Vớ dụ tạo xung vuụng dựng ngắt
• Viết chương trỡnh tạo dao động tần số
10KHz trờn chõn P1.0
• 10 KHZ tương đương với chu kỳ là 100μS,
với thời gian mức thấp 50 μS, mức cao là
50μS.
• Giả thiết làm việc với tần số 12 MHz
Các file đính kèm theo tài liệu này:
- giao_trinh_bo_dinh_thoi_8051.pdf