Tải bản đầy đủ (.pdf) (13 trang)

Bài giảng kỹ thuật vi xử lý Bộ định thời 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 (153.77 KB, 13 trang )

1
Electrical 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
2
Electrical 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
3
Electrical 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
4
Electrical 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
5
Electrical 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
6
Electrical 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
7
Electrical 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
8
Electrical 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
9
Electrical Engineering
17
Vớ d v tớnh hiu qu ngt
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 kin xy ra ngt
Timer 0 trn
Timer 1 trn
Truyn v nhn tớn hiu ni tip
S kin ngoi 0
S kin ngoi 0
10
Electrical Engineering
19
Bng Vector ngt
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
Khi ng ngt
Bit Name Bit Address Explanation of Function
7 EA AFh Cho phộp ngt ton cc Interrupt Enable/Disable
6 - AEh Undefined
5 - ADh Undefined
4 ES ACh Cho phộp ngt ni tip
3 ET1 ABh Cho phộp ngtTimer 1
2 EX1 AAh Cho phộp ngt External 1
1 ET0 A9h Cho phộp ngt ni tip Timer 0
0 EX0 A8h Cho phộp ngt 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

×