Xem mẫu
- Bài 6: NGẮT BĐT (TIMER)
I>Khái niệm:
Vi điều khiển 8051 có 2 BĐT (Timer 0+1)
để tạo thời gian cũng như làm bộ đếm (đếm
sp)
II>Thanh ghi chứa giá trị của BĐT :
-Thanh ghi của bộ TIMER0
TH0 TL0
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
- Bài 6: NGẮT BĐT (TIMER)
-Thanh ghi của bộ TIMER1:
TH1 TL1
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
- Bài 6: NGẮT BĐT (TIMER)
- Thanh ghi chế độ của bộ định thời TMOD:
(MSB) (MSB)
GATE C/T M1 M0 GATE C/T M1 M0
Timer1 Timer0
- Bài 6: NGẮT BĐT (TIMER)
M1 M0 Chế Chế độ hoạt động
độ
0 0 0 Chế độ bộ định thời 13 bit. Bộ định thời/bộ
đếm 8 bit, định tỷ lệ trước 5 bit.
0 1 1 Chế độ bộ định thời 16 bit, không định tỷ lệ
trước.
1 0 2 Chế độ 8 bit tự nạp lại. THx lưu giá trị sẽ tự
nạp vào TLx mỗi khi tràn.
1 1 3 Chế độ bộ định thời chia tách
Ví dụ : để sử dụng Timer0 ở chế độ 16bit và Timer1
ở chế độ 8 bit ta khởi tạo TMOD = 0x21
- Bài 6: NGẮT BĐT (TIMER)
II>Thanh ghi cho phép và Điều khiển BĐT:
1.Thanh Ghi Cho Phép Ngắt IE (interrupt enable)
EA -- ET2 ES ET1 EX1 ET0 EX0
EA (IE.7 bit) là bit cho phép ngắt toàn bộ. Tức là nếu bạn
sử dụng một trong 5 ngắt kể trên của vđk thì bạn phải set
bit này lên với giá trị 1. Ngược lại khi bit EA =0 thì toàn bộ
các ngắt của vđk sẽ bị cấm.
- Bài 6: NGẮT BĐT (TIMER)
ET2 ( IE.5 bit) là bit cho phép ngắt của timer 2 ( chỉ ở họ 52 ).
Khi bit này = 1 thì ngắt định thời 2 sẽ được cho phép và ngược
lại.
ET1, ET0 ( IE.3, IE.1 bit ) là bit cho phép ngắt định thời 1, 0
của vđk 8051. Khi các bit này =1 thì ngắt của hai bộ định thời
này được cho phép và ngược lại.
ES ( IE.4 bit ) là bit cho phép ngắt truyền thông nối tiếp.
EX1, EX0 (IE.0 và IE.2 bit) là hai bit cho phép của hai ngắt
ngoài của vđk
- Bài 6: NGẮT BĐT (TIMER)
TF1 TR1 TF1 TR0 IE1 IT1 IE0 IT0
TF1 ( TCON.7) cờ tràn của Timer1
TR1 ( TCON.6) bit Đk hoạt động của Timer1
TF0 ( TCON.5) cờ tràn của Timer0
TR0 ( TCON.4) bit Đk hoạt động của Timer0
- Bài 6: NGẮT BĐT (TIMER)
IE1 ( TCON.3) Cờ ngắt ngoài kích theo sườn ; được CPU
thiết lập khi phát hiền có sườn xuống ngắt ngoài và đựơc CPU
xoá khi ngắt được xư lý
IT1 ( TCON.2) bit Đk kiểu ngắt INT1 được thiết lập và xoá
bởi phần mềm để xác định kiểu ngắt theo sườn hay mức thấp
IE0 ( TCON.1) Cờ ngắt ngoài kích theo sườn ; được CPU
thiết lập khi phát hiền có sườn xuống ngắt ngoài và đựơc CPU
xoá khi ngắt được xư lý
IT0 ( TCON.0) bit Đk kiểu ngắt INT0 được thiết lập và xoá
bởi phần mềm để xác định kiểu ngắt theo sườn hay mức thấp
- Bài 6: NGẮT BĐT (TIMER)
Các Bước Để Sư Dụng BĐT Như Sau
Start
Các Lệnh tiền xử lý
Hàm khởi tạo ngát
Hàm phục vụ ngát
Hàm main
- Bài 6: NGẮT BĐT (TIMER)
Nhiệm vụ của hàm Khởi tạo :
• Cho phép BĐT hoạt động bằng việc tác động vào thanh
ghi IE.
• Chọn chế độ cho BĐT cần dùng , từ đó xác định giá trị
nạp cho thanh ghi TMOD.
• Tính toán giá trị ban đầu nạp cho TH và TL từ thời gian
mong muốn.
• Khởi động BĐT.
- Bài 6: NGẮT BĐT (TIMER)
Nhiệm vụ của hàm Ngắt BĐT
:
• Dừng BĐT , xóa cờ ngắt TF tương ứng .
• Nạp lại giá trị cho TH và TL (nếu cần ) để tạo thời gian
cho lần định thời sau .
• Sử lý những công việc định trước .
• Khởi động lại BĐT
- Bài 6: NGẮT BĐT (TIMER)
Như vậy để khởi tạo dùng BĐT Timer0 ở
chế độ 8 bit ta cần làm như sau :
void Khoi_tao(void)
{
EA = 1; //cho phép ngắt toàn cục
ET0 = 1; //cho phép ngắt Timer0
TMOD = 0x02 ; //Timer0 chế độ 8 bit
TH0 = ?x?? ; // giá trị cần đưa vào
TL0 = ?x??;
TR0 = 1 ; //khởi động Timer0
}
- Bài 6: NGẮT BĐT (TIMER)
Chương trình ngắt BĐT :
Void Name (void) interrupt x ( x là số thứ thực của ngắt )
{
TRx = 0; //tắt BĐT x
TFx = 0 ; // xóa cờ ngắt
THx = 0x??;
TL0 = 0x?? ;
{
//chương trình cần sử lý
}
TRx = 1 //khởi động lại BĐT
}
- Bài 6: NGẮT BĐT (TIMER)
B1 :Dùng BĐT 0 ở chế độ 8 bit để nháy Led ,với giá trị
TH0 = 0x00 và TL0 = 0x00, vì hàm ngắt định thời sẽ
được gọi sau 256 chu kỳ nên tần số nháy Led sẽ rất lớn
ta ko thể quan sát được , vì vậy trong hàm ngắt ta se gọi
ham delay(20000) để quan tạo trễ cho quá trình nháy Led
- Bài 6: NGẮT BĐT (TIMER)
B2 :Vẫn yêu cầu như bài 1 nhưng ta sẽ ko dùng hàm
delay() nữa mà tạo thời gian trễ hoàn toàn bằng BĐT
- Bài 6: NGẮT BĐT (TIMER)
B3 :Dùng 2 BĐT 0 và 1 để nháy so le 2 Led (mỗi BĐT đk
một con )
- Bài 6: NGẮT BĐT (TIMER)
B4 :Dùng BĐT 0 or 1 để nháy Led :cứ sau đúng 1s sẽ
đảo trạng thái Led (bài toán này sẽ chỉ cho các bạn tạo
thời gian một cách chính xác)
- Bài 6: NGẮT BĐT (TIMER)
B5 :Dùng BĐT 0 và 1 viết chương trình điều khiển đèn
giao thông (phần cứng các bạn tự thiết kế theo đúng các
modul trong thực tế , bao gồm : 4 hàng Led theo 4 hướng
đường , mỗi hàng là 3 Led xanh , đỏ , vàng ; các Led 7
thanh để hiển thị thời gian chờ , nếu có thể thì thêm cả
phần nút bấm để thiết lập thời gian chờ)
- Bài 6: NGẮT BĐT (TIMER)
B6 :Kết hợp kiến thức bài 4 và bài 3 của bài Ngắt ngoài
để viết chương trình cho đồng hồ điện tử ( phần cứng
có thể dùng ngay Kit tại trung tâm)
nguon tai.lieu . vn