16
1 Electrical Engineering ̣ định thi và ngt TS NguynHng Quang Electrical Engineering 2 Bộ định thi 8051 8051 có 2 bộ định thi 16 bit T0, T1, 8052 có thêm bộ định thi 16 bit, T2 • Xác định mt khong thi gian Đếmskin •Totc độ baud trong truyn thông ni tiếp

Ktvxl 7a timer

Embed Size (px)

Citation preview

Page 1: Ktvxl 7a timer

1

1Electrical Engineering

Bô định thời va ngắt

TS Nguyễn Hồng Quang

Electrical Engineering2

Bộ định thời 8051• 8051 có 2 bộ định thời 16 bit T0, T1,8052 có thêm bộ định thời 16 bit, T2• 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ốitiếp

Page 2: Ktvxl 7a timer

2

Electrical Engineering3

Ý nghĩa

• Bô định thời cho phép tạo thời gian trễchính xác tuyệt đối

• Bô định thời và ngắt kết hợp có thê coi là lõi (kernel) hoạt động song song va độc lậpvới chương trình chính (PC)

Electrical Engineering4

Cách đếm của bộ định thời(timer/counter)

• 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ầnmềm

• Khi bộ định thời đếm hết thì chương trìnhsẽ bật cờ tràn, dấu hiệu cho phép thực hiệnchương trình tiếp theo

Page 3: Ktvxl 7a timer

3

Electrical Engineering5

Các thanh ghi định thờiSFR Name Mô ta Địa chỉ

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 Engineering6

Ví dụ giá trị

• Timer bắt đầu đếm từ 1000 • MOV TH0,#03 • MOV TL0, #232d

– 3 X 256 + 232 = 1000

Page 4: Ktvxl 7a timer

4

Electrical Engineering7

Các chế độ của bộ định thời, TMOD

Electrical Engineering8

Bit GATE

• Cho phép kích hoạt va dừng bô định thời tư ngắt ngoài khi GATE =1

• Cho phép kích hoạt va dừng bô định thời tư phần mềm bên trong khi GATE =0– Ví du: “SETB TR1” và “CLR TR1”

Page 5: Ktvxl 7a timer

5

Electrical Engineering9

Chế độ làm việcTxM1 TxM0 Timer Mode Mô ta

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

Electrical Engineering10

Khởi động, dừng và điều khiển bộđịnh thời Thanh ghi TCON

Bit Name

Bit Address Explanation of Function Time

r

7 TF1 8Fh Timer 1 Overflow. Bit này sẽ bật khiTimer 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 khiTimer 0 tràn 0

4 TR0 8Ch Timer 0 Run. Khởi động và dừng Timer 0. 0

Page 6: Ktvxl 7a timer

6

Electrical Engineering11

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 Engineering12

Mode 1, 16 bit định thời

• Bộ đếm sẽ đếm tư gia trị khởi động – chotới 65536 (0 – FFFFh)

• Giá trị lớn nhất TL0 – 255• Giá trị lớn nhất TH0 – 255• Không tự động nạp lại

Page 7: Ktvxl 7a timer

7

Electrical Engineering13

Phương pháp làm việc với Mode1• Nạp thanh ghi TL và TH giá trị khởi tạo sau đo khởi động

Timer “SETB TR0” đối với Timer 0 và “SETB TR1” đốivới Timer1

• Bô định thời đềm tới FFFFH va bật bít cờ TF(Timer Flag, cơ tràn) TF0 hoặc TF1

• Muốn lặp lại việc đếm các thanh ghi TH và TL phải đượcnạp lại với giá trị ban đầu và TF phải được xóa vê 0

Electrical Engineering14

Các bước làm việc Timer

• Nạp giá trị TMOD (Timer0 hay Timer1) đượcsử dụng và chế độ nào được chọn.

• Nạp các thanh ghi TL và TH với các giá trị đếmban đầu.

• Khởi động bộ định thời.• Chơ cơ TF “JNB TFx, đích”• Dừng bộ định thời.• Xoá cờ TF cho vòng kế tiếp.• Quay trở lại bước 2 để nạp lại TL và TH.

Page 8: Ktvxl 7a timer

8

Electrical Engineering15

Ví du• Tạo ra một xung vuông với chu ky 50% trên chân

P1.5. Bộ định thời Timer0

Electrical Engineering16

Thời gian trê• Hay nói cách khác, bộ Timer0 đếm tăng sau

1,085μs để tạo ra bộ trễ bằng số đếm ×1,085μs.• Số đếm bằng FFFFH - FFF2H = ODH (13 theo số

thập phân). • Cộng 1 + 13 vì cần thêm một nhịp đồng hồ để nó

quay từ FFFFH về 0 và bật cờ TF. Do vậy, ta có14 × 1,085μs = 15,19μs cho nửa chu kỳ và cả chukỳ là T = 2 × 15,19μs = 30, 38μs là thời gian trễđược tạo ra bởi bộ định thời.

Page 9: Ktvxl 7a timer

9

Electrical Engineering17

Ví dụ tạo xung

• Giả sử tần số XTAL là 11,0592MHz hãyviết chương trình tạo ra một sóng vuông tầnsố 2kHz trên chân P1.5

Electrical Engineering18

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, sau đó cờ tràn TFx đượcđặt lên, VXL sẽ tự động copy giá trị chứatrong thanh TH vào TL

• Người sử dụng phải tự xóa cờ TFx• Ưng dụng tạo xung PWM và dùng trong

cổng nối tiếp

Page 10: Ktvxl 7a timer

10

Electrical Engineering19

Các bước lập trình• Nạp thanh ghi giá trị TMOD để báo bộ định thời gian

nào (Timer0 hay Timer1) được sử dụng và chế độ làmviệc nào của chúng được chọn.

• Nạp lại các thanh ghi TH với giá trị đếm ban đầu.• Khởi động bộ định thời.• Sử dụng lệnh “JNB TFx, đích” để đợi cờ TFx lên 1.

Thoát vòng lặp khi TF lên cao.• Xoá cờ TF.• Quay trở lại bước 4 vì chế độ 2 là chế độ tự nạp lại.

Electrical Engineering20

Ví dụ

Giả sử tần số XTAL = 11.0592MHz. Hãy tìma) tần số của sóng vuông được tạo ra trênchân P1.0 trong chương trình saub) tần số nhỏ nhất có thể có được bằngchương trình này

Page 11: Ktvxl 7a timer

11

Electrical Engineering21

Chương trình

Electrical Engineering22

Lưu ý về hợp ngữ

• Vì bộ định thời là 8 bít trong chế độ 2 nên tacó thể để cho hợp ngữ tính giá trị cho TH.

• Ví dụ, trong lệnh “MOV TH0, # - 100” thìtrình hợp ngữ sẽ tính toán FF– 100 = 9C vàgán TH = 9CH

Page 12: Ktvxl 7a timer

12

Electrical Engineering23

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 với

Timer 0 với TL0, Timer 1 với TH0• Bộ định thời 1 có thể dùng bất cứ chế độ

nào tuy vậy bạn không thể khởi động vàdừng timer (luôn luôn chạy)

• Chỉ sử dụng khi cần 2 timer 8 bit và 1 timer tạo xung cho cổng nối tiếp

Electrical Engineering24

Đếm sự kiện• Tạo ra bộ đếm khi dùng C/T = 1• Xung nhịp của bộ đếm do tín hiệu T0, T1 từ

ngoài (không liên quan tới thạch anh)• Các chế độ của đếm cũng giống như chế độ

bộ định thời

Page 13: Ktvxl 7a timer

13

Electrical Engineering25

Ví dụ ứng dụngGiả sử bộ đếm gửi tới chân T1, hãy viết chương trình

cho bộ đếm 1 ở chế độ 2 để đếm các xung và hiểnthị trạng thái của số đếm TL1 trên cổng P2

Electrical Engineering26

Nói thêm về bit GATE• Dùng điều khiển Timer từ chân INT0 hoặc 1 bên ngoài• Timer 0 phải được bật tắt bởi TR0

Page 14: Ktvxl 7a timer

14

Electrical Engineering27

8052 timer thứ 3

Electrical Engineering28

Chế độ làm việc Timer 2

Page 15: Ktvxl 7a timer

15

Electrical Engineering29

Các chức năng Timer 2

• Timer 2 ở chế độ tạo xung cho cổng nối tiếp (baud-rate generator)

• Timer 2 ở chế độ tự động nạp lại (auto-reload)– TH2 nạp bởi RCAP2H, TL2 nạp bởi RCAP2L– Timer 2 tràn từ FFFFh về 0000h

Electrical Engineering30

Capture mode

• TH2 và TL2 sẽ copy vào RCAP2H and RCAP2L

• Chuyên dùng để tính tần số sự kiện đưa vào chân T2EX (P1.1) vì Timer 2 luôn chạy vàngắt xảy ra khi cờ tràn TF2 được đặt lên

Page 16: Ktvxl 7a timer

16

Electrical Engineering31

Bài tập

• 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