1. Trang chủ
  2. » Giáo án - Bài giảng

VDK03 timer interrupts (ThangTV)

34 208 4

Đ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

Định dạng
Số trang 34
Dung lượng 640,55 KB

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

Nội dung

 Hoạt động ngắt trong vi điều khiển xảy ra khi xuất hiện sự kiện ngắt như: tràn timer, xuất hiện mức thấp hoặc cạnh xuống tại chân RB0, PORTB thay đổi giá trị, nhận/truyền 1 byte trong

Trang 1

Bài 03

TIMERS & INTERRUPTS

Trang 2

 Hoạt động timer trong vi điều khiển: gồm một nguồn cấp xung

clock, một bộ đếm nhị phân và một bit báo trạng thái tràn bộ

Trang 3

1 Timer 0: 8 bit

Trang 5

 Các lệnh liên quan timer 0:

Trang 6

 Ví dụ 01: cho tần số thạch anh là 4 MHz, tính thời gian tràn của timer 0

Trang 7

2 Timer 1: 16 bit

Trang 9

 Các lệnh liên quan timer 1:

Trang 10

 Ví dụ 01: cho tần số thạch anh là 4 MHz, tính thời gian tràn của timer 1

Trang 11

3 Timer 2: 8 bit

Trang 13

 Các lệnh liên quan timer 2:

Setup_timer2(T2_DIV_BY_1,99,1)

Timer 2 báo tràn bô đếm sau 100 μS

Trang 14

 Hoạt động ngắt trong vi điều khiển xảy ra khi xuất hiện sự kiện ngắt như: tràn timer, xuất hiện mức thấp (hoặc cạnh xuống) tại chân RB0, PORTB thay đổi giá trị, nhận/truyền 1 byte trong USART,…

II Interrupts (ngắt):

14

Trang 15

 Hoạt động của một chương trình ứng dụng có sử dụng sự kiện ngắt

NỘI DUNG CHƯƠNG TRÌNH CHÍNH

CÓ SỬ DỤNG NGẮT (Gọi chương trình con)

Trang 16

 Hoạt động của một chương trình ứng dụng có sử dụng sự kiện ngắt

NỘI DUNG CHƯƠNG TRÌNH CHÍNH

Trang 17

 Ví dụ 01: Cho sơ đồ mạch

U2 PIC16F877A1

2 3 4 5 6 7

8 9 10

13 14

15 16 17 18

19 20 21

22 23

24 25 26

27 28 29 30

33 34 35 36 37 38 39

40

MCLR/Vpp

RA0/AN0 RA1/AN1 RA2/AN2/Vref - RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS

RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7

RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCL

RD0/PSP0 RD1/PSP1 RD2/PSP2

RD3/PSP3 RC4/SDA

RC5/SDO RC6/TX/CK RC7/RX/DT

RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7

RST

VDD

C6 33P

C2 4.7uF - 10uF

VDD

R23 270

VDD C11 33P

R21 10K

R22 10K

D2 LED

R1 10K

C3 1uF

Y 1 8M

VDD

D1 LED

R24 270 VDD

Trang 18

Dùng ngắt timer 0 kiểm tra 2 phím nhấn, sử dụng:

Trang 19

enable_interrupts(INT_RTCC);// cho phép ngắt timer 0

setup_timer_0(RTCC_DIV_4|RTCC_INTERNAL);// cấu hình timer 0

while(1);

}

Trang 20

8 9 10

11 12

13 14

15 16 17 18

19 20 21 22 23

24 25 26

27 28 29 30

33 34 35 36 37 38 39 40

MCLR/Vpp

RA0/AN0 RA1/AN1 RA2/AN2/Vref - RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS

RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7

RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RC4/SDA

RC5/SDO RC6/TX/CK RC7/RX/DT

RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7

d c

a

LED3 LED7S

7 6 4 2 1 9 10 5

3 8

a b c d e f g

Q3

A1013

LED4 LED7S

7 6 4 2 1 9 10 5

3 8

a b c d e f g

7 6 4 2 1 9 10 5

3 8

a b c d e f g

f d

f

Y 1 8M

7 6 4 2 1 9 10 5

3 8

a b c d e f g

20

Trang 21

Yêu cầu 01: hiển thị chữ “HELP” trên 4 LED với thời gian delay 3 ms mỗi LED

Trang 22

Yêu cầu 02: Dùng ngắt timer 1 để quét LED, thời gian delay mỗi led 3 ms Sử dụng:

Setup_timer_1(T1_INTERNAL| T1_DIV_BY_1)

Trang 24

If (pos ==0) {output_d(0xff);Output_b(0x91); output_low(PIN_D3);}

If (pos ==1) {output_d(0xff);Output_b(0x61); output_low(PIN_D2);}

If (pos ==2) {output_d(0xff);Output_b(0xe3); output_low(PIN_D1);}

If (pos ==3) {output_d(0xff);Output_b(0x31); output_low(PIN_D0);} pos++;

Trang 25

BÀI TẬP

Cho sơ đồ mạch:

Q2 A1013

LMP

R1 10K

1

2 3 4 5 6 7

8 9 10

1 1

13 14

15 16 17 18

19 20 21 22 23

24 25 26

27 28 29 30

33 34 35 36 37 38 39 40

MCLR/Vpp

RA0/AN0 RA1/AN1 RA2/AN2/Vref - RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS

RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7

RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RC4/SDA

RC5/SDO RC6/TX/CK RC7/RX/DT

RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7

R22 10K

LMP

Trang 26

BÀI TẬP

1 Dùng ngắt timer 1 để kiểm tra phím, thời gian quét phím 200 ms Sử dụng:

Setup_timer_1(T1_INTERNAL| T1_DIV_BY_1)Viết chương trình thực hiện: hiển thị chữ “Set value:” trên dòng 1 tại (x,y) =(5,1) và hiển thị biến set_val (khởi động = 0) trên dòng 2 tại (x,y) = (8,2); và nếu:

Nội dung thay đổi của set_val được cập nhật tức thời trên dòng 2 LCDtại vị trí (x,y) = (8,2)

2 Dùng ngắt timer 0 kiểm tra 2 phím nhấn, thời gian quét phím 200 ms, sử dụng:Setup_timer_0(RTCC_DIV_4| RTCC_INTERNAL)

Viết chương trình hiển thị chữ “DONG HO” tại (5,1) và hiển thịgiờ:phút: giây (bắt đầu từ 00:00:00) tại (4,2) Dùng SW1 để chỉnh giờ (0 - 23) và

Trang 27

VDD

D3

a d

7 6 4 2 1 9 10 5

3 8

a b c d e f g

g

LED2 LED7S

7 6 4 2 1 9 10 5

3 8

a b c d e f g

D3

f p

7 6 4 2 1 9 10 5

3 8

a b c d e f g

1

2 3 4 5 6 7

8 9 10

11 12

13 14

15 16 17 18

19 20 21 22 23

24 25 26

27 28 29 30

33 34 35 36 37 38 39 40

MCLR/Vpp

RA0/AN0 RA1/AN1 RA2/AN2/Vref - RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS

RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7

RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RC4/SDA

RC5/SDO RC6/TX/CK RC7/RX/DT

RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7

7 6 4 2 1 9 10 5

3 8

a b c d e f g

g

C2 4.7uF - 10uF

Trang 28

BÀI TẬP

3 Dùng ngắt timer 0 để quét led, thời gian delay mỗi led là 2 ms Sử dụng:

Setup_timer_0(RTCC_DIV_128|RTCC_INTERNAL)Viết chương trình thực hiện: hiển thị chữ “StoP” trên 4 LED Tính thời gian ngắt timer 0

4 Dùng ngắt timer 0 để quét led, thời gian delay mỗi led là 2 ms Sử dụng:

Setup_timer_0(RTCC_DIV_64|RTCC_INTERNAL)

5 Dùng ngắt timer 1 để quét led, thời gian delay mỗi led là 3 ms Sử dụng:

Setup_timer_1(T1_INTERNAL| T1_DIV_BY_1)

50 lần đồng thời hiển thị số lần trên LED1 đến LED4 theo dạng: “Ct.XX”

28

Trang 29

7 6 4 2 1 9 10 5

3 8

a b c d e f g

7 6 4 2 1 9 10 5

3 8

a b c d e f g

8 9 10

11 12

13 14

15 16 17 18

19 20 21 22 23

24 25 26

27 28 29 30

33 34 35 36 37 38 39 40

MCLR/Vpp

RA0/AN0 RA1/AN1 RA2/AN2/Vref - RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS

RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7

RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RC4/SDA

RC5/SDO RC6/TX/CK RC7/RX/DT

RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7

7 6 4 2 1 9 10 5

3 8

a b c d e f g

g

LED2 LED7S

7 6 4 2 1 9 10 5

3 8

a b c d e f g

f

R22 10K

Trang 30

BÀI TẬP

6 Dùng ngắt timer 0 để quét led, thời gian delay mỗi led là 2 ms Sử dụng:

Setup_timer_0(RTCC_DIV_4|RTCC_INTERNAL)Viết chương trình thực hiện hiển thị số đếm trên 4 LED, giá trị ban đầu là 0, và:

7*

thời gian delay 400 ms

8*

tăng/giảm nhanh với thời gian delay 100 ms (bình thường phím tăng giảm với thời gian 400 ms)

30

Trang 31

BÀI TẬP

Cho sơ đồ mạch:

R3

R 0

Y1 8M

C2 4.7uF - 10uF

6

R1 10K

R5

R C

VDD

R16 10K

LED1 LED7S

7 6 4 2 1 9 10 5

3 8

a b c d e f g

1

2 3 4 5 6 7

8 9 10

11 12

13 14

15 16 17 18

19 20 21 22 23

24 25 26

27 28 29 30

33 34 35 36 37 38 39 40

MCLR/Vpp

RA0/AN0 RA1/AN1 RA2/AN2/Vref - RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS

RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7

RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RC4/SDA

RC5/SDO RC6/TX/CK RC7/RX/DT

RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7

F

Trang 32

BÀI TẬP

9 Viết chương trình đọc bàn phím HEX và hiển thị giá trị HEX trên led 7 đoạn

Trang 33

a LED1 LED7S

7 4 1 10 5

3 8

a c d f g

VDD

S2

Y 1 8M

Q1

c

R26 270

e

R1 10K

p

LED4 LED7S

7 4 1 10 5

3 8

a c d f g

R7

R

R14 10K

c

R16 10K

g

F

b

LED2 LED7S

7 4 1 10 5

3 8

a c d f g

p C C S4

6

f

1 2 4 5 7

8 10

11 12

13 14 15 17

19 21 23

25

27 28 30

33 35 37 39 40

MCLR/Vpp

RA0/AN0 RA2/AN2/Vref - RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS

RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7

RD0/PSP0 RD2/PSP2 RD3/PSP3 RC4/SDA

RC5/SDO RC6/TX/CK RC7/RX/DT

RD4/PSP4 RD6/PSP6 RD7/PSP7

d

R13 10K

7 4 1 10 5

3 8

a c d f g

p C C g

R8

100X8

R2

R S6

R6

R

S2

R27 270

p

Q4

A1013 S5

S7

5

c

D12 LED

p S8

R10 4K7

Trang 34

BÀI TẬP

10 Cho phép nhập vào các số 0000 đến 9999 từ bàn phím và hiển thị trên 4 led

7 đoạn Nếu số nhập vào > 100, led D11 sáng; số > 500: cả 2 led D11 và D12 sáng Chọn nút “F” là nút xóa (CLEAR) số nhập vào

Quét phím và led 7 đoạn dùng ngắt timer1Setup_timer_1(T1_INTERNAL| T1_DIV_BY_1)

Ngày đăng: 24/10/2020, 08:02

TỪ KHÓA LIÊN QUAN

w