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
13 trang |
Chia sẻ: Mr Hưng | Lượt xem: 857 | Lượt tải: 0
Nội dung tài liệu Kĩ thuật điện tử - Bộ định thời 8051, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
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
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:
- vxl7_6129.pdf