Kĩ thuật điện tử - 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

pdf13 trang | Chia sẻ: Mr Hưng | Lượt xem: 857 | Lượt tải: 0download
Nội dung tài liệu Kĩ thuật điện tử - Bộ định thời 8051, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1Electrical 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 2Electrical 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 3Electrical 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 4Electrical 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 5Electrical 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 6Electrical 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 7Electrical 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 8Electrical 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 9Electrical Engineering 17 Ví dụ về tính hiệu quả ngắt 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ự kiện xảy ra ngắt • Timer 0 tràn • Timer 1 tràn • Truyền và nhận tín hiệu nối tiếp • Sự kiện ngoài 0 • Sự kiện ngoài 0 10 Electrical Engineering 19 Bảng Vector ngắt 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 Khởi động ngắt Bit Name Bit Address Explanation of Function 7 EA AFh Cho phép ngắt toàn cục Interrupt Enable/Disable 6 - AEh Undefined 5 - ADh Undefined 4 ES ACh Cho phép ngắt nối tiếp 3 ET1 ABh Cho phép ngắt Timer 1 2 EX1 AAh Cho phép ngắt External 1 1 ET0 A9h Cho phép ngắt nối tiếp Timer 0 0 EX0 A8h Cho phép ngắt 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

Các file đính kèm theo tài liệu này:

  • pdfvxl7_6129.pdf