1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Lập trình bộ định thời (TIMER) doc

27 299 5

Đ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 27
Dung lượng 257,07 KB

Nội dung

L L ậ ậ p p tr tr ì ì nh nh b b ộ ộ đ đ ị ị nh nh th th ờ ờ i i (TIMER) (TIMER) Gi Gi ớ ớ i i thi thi ệ ệ u u b b ộ ộ đ đ ị ị nh nh th th ờ ờ i i 1. Các thanh ghi của bộ định thời - Timer 0: TH0, TL0 - Timer 1: TH1, TL1 - Các thanh ghi trạng thái và cài đặt chế độ hoạt động cho các bộ định thời: + TCON: Điều khiển + TMOD: Chọn chế độ V V ị ị tr tr í í c c ủ ủ a a c c á á c c b b ộ ộ đ đ ị ị nh nh th th ờ ờ i i trong trong sơ sơ đ đ ồ ồ kh kh ố ố i i c c ủ ủ a a chip 89X51/52 chip 89X51/52 Các bộ định thời V V Ị Ị TR TR Í Í C C Á Á C THANH GHI C C THANH GHI C Ủ Ủ A B A B Ộ Ộ Đ Đ Ị Ị NH TH NH TH Ờ Ờ I I TRONG V TRONG V Ù Ù NG NH NG NH Ớ Ớ Đ Đ Ặ Ặ C BI C BI Ệ Ệ T T - - SFR SFR Thanh Thanh ghi ghi TMOD TMOD : Timer Mode : Timer Mode Ch Ch ọ ọ n n ch ch ế ế đ đ ộ ộ ho ho ạ ạ t t đ đ ộ ộ ng ng TMOD TMOD D0 D0 D1 D1 D2 D2 D3 D3 D4 D4 D5 D5 D6 D6 D7 D7 GATE C/T M1 M0 GATE C/T M1 M0 Chọn chế độ hoạt động cho TIMER1 Chọn chế độ hoạt động cho TIMER0 Bit M0, M1 Bit M0, M1 – – c c ủ ủ a a thanh thanh ghi ghi TMOD TMOD Ch ế độ đị nh th ờ i chia x ẻ 311 Ch ế độ t ự độ ng n ạ p l ạ i 8-bit 201 Ch ế độ đị nh th ờ i 16 bit 110 Ch ế độ đị nh th ờ i 13 bit 000 Mô t ả Ch ế độ M0M1 M0 M0 M1 M1 C/T C/T GATE GATE M0 M0 M1 M1 C/T C/T GATE GATE TMOD TMOD Thanh Thanh ghi ghi TCON TCON – – Timer/Counter Timer/Counter Control Register Control Register TCON TCON D0 D0 D1 D1 D2 D2 D3 D3 D4 D4 D5 D5 D6 D6 D7 D7 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Cờ ngắt ngoài 1 Cờ ngắt của Timer0 Cờ ngắt của Timer1 Cờ ngắt ngoài 0 Ch Ch ế ế đ đ ộ ộ ho ho ạ ạ t t đ đ ộ ộ ng ng c c ủ ủ a a Timer Timer - - Ch Ch ế ế đ đ ộ ộ 0: 0: Chế độ định thời 13 bit - - Ch Ch ế ế đ đ ộ ộ 1: 1: Chế độ định thời 16 bit - THx, TLx ch ứ a giá tr ị đế m hi ệ n t ạ i c ủ a b ộ đị nh th ờ i - - Ch Ch ế ế đ đ ộ ộ 2: 2: Chế độ tự nạp lại 8-bit - Byte th ấ p gi ữ giá tr ị đế m hi ệ n t ạ i - Byte cao gi ữ giá tr ị n ạ p l ạ i - - Ch Ch ế ế đ đ ộ ộ 3: 3: Chế độ định thời chia xẻ L L ậ ậ p p tr tr ì ì nh nh cho cho b b ộ ộ đ đ ị ị nh nh th th ờ ờ i i Timer 0 Timer 0 • Ví dụ 1: lập trình cho bộ định thời 0 hoạt động ở chế độ 1, 16 bit, có thời gian tràn là 500us (sử dụng thạch 12Mhz). – Bước 1: Chọn chế độ hoạt động cho Timer 0 TMOD = 00000001B (0x01) – Bước 2: Nạp giá trị tràn cho các thanh ghi TH0, TL0 Vì bộ định thời đếm lên 1 đơn vị sau mỗi chu kỳ máy nên bộ định thời sẽ tràn sau 500 chu kỳ máy khi nạp vào TH0, TL0 giá trị bằng 65536 – 500 = 65036 tương đương 0FE0Ch TH0 = 0xFE; // MOV TH0, #0FEh TL0 = 0X0C; // MOV TL0, #0Ch - Bước 3: Khởi động bộ định thời T0 TF0 = 0; // (CLR TF0) Xóa cờ tràn TR0 = 1; // (SETB TR0) Khởi động bộ định thời - Bước 4: Chờ bộ định thời tràn while(!TF0) continue; // JNB TF0, $ - Bước 5: Nếu tiếp tục muốn sử dụng bộ định thời: Dừng bộ định thời (TR0 = 0), nạp lại giá trị cho TH0, TL0, khởi động lại (TR0 = 1). M0 M0 M1 M1 C/T C/T GATE GATE M0 M0 M1 M1 C/T C/T GATE GATE TMOD TMOD Chương Chương tr tr ì ì nh nh ho ho à à n n ch ch ỉ ỉ nh nh v v í í d d ụ ụ 1 1 C TMOD = 00000001B TH0 = 0xFE; TL0 = 0x0C; TF0 = 0; // Xóa cờ tràn // Khởi động bộ định thời TR0 = 1; // Chờ cờ tràn bật 1 while(!TF0) continue; // Dừng bộ định thời TR0 = 0; // Nạp lại giá trị TH0 = 0xFE; TL0 = 0x0C; // Khởi động bộ định thời TR0 = 1; ASM MOV TMOD, #00000001B MOV TH0, #0FEh MOV TL0, #0Ch CLR TF0; Xóa cờ tràn ;Khởi động bộ định thời SETB TR1 ; Chờ cờ tràn bật 1 JNB TF0, $ ; Dừng bộ định thời CLR TR0 ; Nạp lại giá trị MOV TH0, #0FEh; MOV TL0, #0Ch; // Khởi động bộ định thời SETB TR0 [...]... động bộ định thời TR0 = 1; // Chờ cờ tràn bật 1 while(!TF0) continue; // Dừng bộ định thời TR0 = 0; // Khởi động bộ định thời TR0 = 1; ASM MOV TMOD, #00000010B MOV TH0, #55 MOV TL0, #55 CLR TF0; Xóa cờ tràn ;Khởi động bộ định thời SETB TR1 ; Chờ cờ tràn bật 1 JNB TF0, $ ; Dừng bộ định thời CLR TR0 // Khởi động bộ định thời SETB TR0 Tạo trễ sử dụng Timer MAIN: MOV MOV MOV AGAIN: CPL CALL JMP TMOD,... Khởi động bộ định thời T0 + TF0 = 0; // (CLR TF0) Xóa cờ tràn + TR0 = 1; // (SETB TR0) Khởi động bộ định thời - Bước 4: Chờ bộ định thời tràn - while(!TF0) continue; // JNB TF0, $ - Bước 5: Xóa cờ tràn (TF0 = 0), tiếp tục đợi cờ tràn bật 1 do thanh ghi TL0 tự động được nạp lại Chương trình hoàn chỉnh ví dụ 2 C TMOD = 0x02; TH0 = 55; TL0 = 55; TF0 = 0; // Xóa cờ tràn // Khởi động bộ định thời TR0 =... continue; } void T1_ISR() interrupt 3 { TR1 = 0; // Dừng bộ định thời TH1 = 0xFC; TL1 = 0x17; // Nạp lại P1_0 = !P1_0; TR1 = 1; // Khởi động bộ định thời } 2 Lập trình ngắt ngoài IE – Interrupt Enable Register EA - ET2 ES ET1 + Lập trình cho ngắt ngoài 0 Cho phép ngắt ngoài 0 EX0 = 1; Cho phép ngắt toàn cục EA = 1; Viết chương trình phục vụ ngắt ngoài 0 + Lập trình cho ngắt ngoài 1 Cho phép ngắt ngoài 0 EX1... ngoài 0 LẬP TRÌNH NGẮT 1 Lập trình với ngắt timer – Timer 0 – Timer 1 2 Lập trình với ngắt ngoài – Ngắt ngoài 0 – Ngắt ngoài 1 – Ngắt ngoài theo sườn xuống và theo mức 0 3 Ưu tiên ngắt – Thứ tự ưu tiên thực hiện các ngắt – Lập trình theo đổi ưu tiên các ngắt 1 Lập trình ngắt timer IE – Interrupt Enable Register EA - ET2 ES ET1 EX1 ET0 EX0 • Bước 1: Chọn chế độ hoạt động của timer như ở phần lập trình. .. AGAIN DELAY: CLR TF0; Xóa cờ tràn ;Khởi động bộ định thời SETB TR1 ; Chờ cờ tràn bật 1 JNB TF0, $ ; Dừng bộ định thời CLR TR0 RET void main() { TMOD = 0x02; while(1) { P1_0 = !P1_0; delay(55); } void delay(unsigned char us){ TH0 = us; TL0 = us; TF0 = 0 ; Xóa cờ tràn ;Khởi động bộ định thời TR1 = 1; ; Chờ cờ tràn bật 1 while(!TF0) continue; ; Dừng bộ định thời TR0 = 0; } NGẮT • Giới thiệu ngắt • Các.. .Lập trình cho bộ định thời Timer 0 – (ti p) • Ví dụ 2: lập trình cho bộ định thời 0 hoạt động ở chế độ 2, 8-bit tự nạp lại, có thời gian tràn là 200us (sử dụng thạch 12Mhz) – Bước 1: Chọn chế độ hoạt động cho Timer 0 TMOD = 00000010B (0x02) – Bước 2: Nạp giá trị tràn... cấu hình ngắt • Lập trình ngắt 0000H 0003H 000BH 0013H 001BH 0023H 002BH Xử lý của CPU đối với 1 ngắt Khi một ngắt xuất hiện và được CPU chấp nhận, chương trình chính bị ngắt Các thao tác sau đây xảy ra: - Hoàn tất việc thực thi lệnh hiện hành - Cất bộ đếm chương trình (PC) vào stack - Trạng thái của ngắt hiện hành được lưu giữ lại - Bộ đếm chương trình PC sẽ nạp địa chỉ của chương trình con phục vụ... khi sử dụng bất cứ ngắt nào • Bước 3: Viết chương trình phục vụ ngắt Timer Chương trình phục vụ ngắt do timer được đặt ở các vector ngắt 000Bh (Timer 0) 001Bh (Timer 1) Các chương trình con phục vụ ngắt cũng giống như các chương trình con khác, tuy nhiên nó được kết thúc bằng lệnh RETI (Return from Interrupt) thay vì lệnh RET Ví dụ 1: Viết chương trình nháy LED nối ở chân P1.0 với chu kỳ 500us sử... P1_0 = !P1_0; } Ví dụ 2: Viết chương trình tạo xung vuông ở chân P1.0 với tần số 500Hz sử dụng ngắt timer 1 Thạch anh 12Mhz ASM ORG 0000H LJMP MAIN ORG 000BH LJMP T1_ISR ORG 0030H MAIN: MOV TMOD, #00010000B;Timer 1 chế độ 1 MOV TH1, #HIGH(-1000) MOV TL1, #LOW(-1000) CLR TF1; Xóa cờ tràn SETB ET1 SETB EA SETB TR1; Khởi động Timer 0 JMP $ T1_ISR: CLR TR1; Dừng bộ định thời MOV TH1, #HIGH(-1000); Nạp lại... Trạng thái của ngắt hiện hành được lưu giữ lại - Bộ đếm chương trình PC sẽ nạp địa chỉ của chương trình con phục vụ ngắt và đi thực hiện - Thực hiện xong sẽ quay về chương trình chính tại vị trí nó bị ngắt và thực hiện tiếp chương trình chính Thanh ghi cho phép ngắt IE (Interrupt Enable Register) IE D7 D6 D5 EA D4 ET2 ES Cho phép ngắt do Timer 2 Không sử dụng D2 ET1 Cho phép ngắt toàn cục D3 D1 ET0 . Bước 3: Khởi động bộ định thời T0 TF0 = 0; // (CLR TF0) Xóa cờ tràn TR0 = 1; // (SETB TR0) Khởi động bộ định thời - Bước 4: Chờ bộ định thời tràn while(!TF0). Bước 3: Khởi động bộ định thời T0 + TF0 = 0; // (CLR TF0) Xóa cờ tràn + TR0 = 1; // (SETB TR0) Khởi động bộ định thời - Bước 4: Chờ bộ định thời tràn - while(!TF0)

Ngày đăng: 16/02/2014, 21:20

HÌNH ẢNH LIÊN QUAN

• Các loại ngắt và bảng vector ngắt: - Tài liệu Lập trình bộ định thời (TIMER) doc
c loại ngắt và bảng vector ngắt: (Trang 14)

TỪ KHÓA LIÊN QUAN

w