1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Bài 6: NGẮT BĐT (TIMER)

19 369 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài 6: Ngắt BĐT (Timer)
Thể loại Bài giảng
Định dạng
Số trang 19
Dung lượng 297 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khi bit này = 1 thì ngắt định thời 2 sẽ được cho phép và ngược lại.. 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.. IE1 TCON.3 Cờ ngắt ngoài kích theo

Trang 1

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

D15 D14 D13 D12 D11 D10 D9 D8

TH0

D7 D6 D5 D4 D3 D2 D1 D0

TL0

Trang 2

Bài 6: NGẮT BĐT (TIMER)

-Thanh ghi của bộ TIMER1:

D15 D14 D13 D12 D11 D10 D9 D8

TH1

D7 D6 D5 D4 D3 D2 D1 D0

TL1

Trang 3

Bài 6: NGẮT BĐT (TIMER)

- Thanh ghi chế độ của bộ định thời TMOD:

(MSB)

GATE C/T M1 M0

Timer1

GATE C/T M1 M0

Timer0

(MSB)

Trang 4

Bài 6: NGẮT BĐT (TIMER)

M1 M0 Chế

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

Trang 5

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 (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

Trang 6

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)

Trang 7

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)

Trang 8

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ý

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ý

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

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)

Trang 9

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

Trang 10

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.

Trang 11

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

Trang 12

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

Trang 13

Bài 6: NGẮT BĐT (TIMER)

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

Chương trình ngắt BĐT :

Trang 14

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

Trang 15

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)

Trang 16

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)

Trang 17

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)

Trang 18

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ờ)

Trang 19

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)

Bài 6: NGẮT BĐT (TIMER)

Ngày đăng: 06/11/2013, 04:15

TỪ KHÓA LIÊN QUAN

w