Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Cao đẳng - Đại học Công nghệ thông tin Tài liệu môn kỹ thuật vi điều khiển 4.ppt...

Tài liệu Tài liệu môn kỹ thuật vi điều khiển 4.ppt

.PPT
18
64
134

Mô tả:

BỘ ĐỊNH THỜI/ BỘ ĐẾM (TIMER/COUNTER) 1. Giới thiệu • Tạo ra những khoảng thời gian chính xác đến cấp chu kỳ máy, có thể thay đổi khoảng thời gian đó linh hoạt • Dùng đếm sự kiện – thường ứng dụng để đọc encoder. Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng [email protected] Vị trí của các bộ định thời trong sơ đồ khối của chip 89X51/52 Các bộ định thời Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng [email protected] VỊ TRÍ CÁC THANH GHI CỦA BỘ ĐỊNH THỜI TRONG VÙNG NHỚ ĐẶC BIỆT- SFR Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng [email protected] 2. Hoạt động XTAL oscillator TH ÷12 C/T = 0 TF bật lên 1 khi FFFF → 0 TR TH0 D15 D14 D13 D12 D11 D14 D13 D12 D11 Cờ tràn (Overflow Flag) TL0 D10 D9 D8 D7 D6 D5 TH1 D15 TF TL D4 D3 D2 D1 D0 D2 D1 D0 TL1 D10 D9 D8 D7 Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng D6 D5 D4 D3 [email protected] Minh họa hoạt động của timer FFF2 TF=0 FFF3 FFF4 FFFF 0000 TF=0 TF=0 TF=0 TF=1 Timer là bộ đếm lên, khi xảy ra trạng thái FFFF  0000 thì cờ TF bật 1 Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng [email protected] 3. Các thanh ghi 1. Các thanh ghi của bộ định thời - Timer 0: TH0, TL0 - Timer 1: TH1, TL1 2. 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ế độ Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng [email protected] Thanh ghi TCON – Timer/Counter Control Register TCON D7 D6 TF1 D5 D3 TF0 TR1 Cờ ngắt của Timer1 D4 IE1 TR0 Cờ ngắt của Timer0 D2 D1 IE0 IT1 Cờ ngắt ngoài 1 Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng D0 IT0 Cờ ngắt ngoài 0 [email protected] Thanh ghi TMOD: Timer Mode Chọn chế độ hoạt động TMOD D7 D6 D5 GATE M1 C/T D4 D3 D2 GATE M0 Chọn chế độ hoạt động cho TIMER1 Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng D1 D0 M1 C/T M0 Chọn chế độ hoạt động cho TIMER0 [email protected] 4. Chế độ hoạt động của Timer Mỗi bộ định thời có thể hoạt động ở 4 chế độ: - Chế độ 0: Chế độ định thời 13 bit - Chế độ 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ế độ 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ế độ 3: Chế độ định thời chia xẻ Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng [email protected] Thanh ghi TMOD: Timer Mode Chọn chế độ hoạt động TMOD D7 D6 D5 GATE M1 C/T D4 D3 D2 GATE M0 Chọn chế độ hoạt động cho TIMER1 Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng D1 D0 M1 C/T M0 Chọn chế độ hoạt động cho TIMER0 [email protected] Bit M0, M1 – của thanh ghi TMOD TMOD GATE C/T M1 M0 M1 M0 Chế độ 0 0 1 1 0 1 0 1 0 1 2 3 GATE C/T M1 M0 Mô tả Chế độ định thời 13 bit Chế độ định thời 16 bit Chế độ tự động nạp lại 8-bit Chế độ định thời chia xẻ To slide 10 Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng [email protected] Ví dụ: Ví dụ 1: Xác định xem các timer làm việc ở chế độ nào sau đây. (a) MOV TMOD, #01H (b) MOV TMOD, #20H (c) MOV TMOD, #12H Giải: Đổi từ hexa sang nhị phân, dựa vào bảng chế động hoạt động của timer ta có. (a) TMOD = 00000001, mode 1 of timer 0 is selected. (b) TMOD = 00100000, mode 2 of timer 1 is selected. (c) TMOD = 00010010, mode 2 of timer 0, and mode 1 of timer 1 are selected. Ví dụ 2: Tính tần số và chy kỳ của chip 8051 khi sử dụng thạch anh 11.0592Mhz khi bit C/T của thanh ghi TMOD bằng 0. Giải: XTAL ÷12 oscillator 1/12 × 11.0529 MHz = 921.6 MHz; T = 1/921.6 kHz = 1.085 us Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng [email protected] Lập trình cho bộ định thời Timer 0 • Ví dụ 3: 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). TMOD GATE C/T M1 M0 Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng GATE C/T M1 M0 [email protected] Chương trình hoàn chỉnh ví dụ 3 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 Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng 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; [email protected] Lập trình cho bộ định thời Timer 0 – (tiếp) • Ví dụ 4: lập trình cho bộ định thời 0 hoạt động ở chế độ 2, 8-bit tự nạp lại, 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 cho các thanh ghi TH0, TL0 Ở chế độ 2, thanh ghi TH0 sẽ giữ giá trị nạp lại, vậy TH0 = 256 - 200; // MOV TH0, #56 TL0 = 256 - 200; // MOV TL0, #56 - 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: 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. Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng [email protected] Chương trình hoàn chỉnh ví dụ 4 ASM MOV TMOD, #00000010B MOV TH0, #56 MOV TL0, #56 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 Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng C TMOD = 0x02; TH0 = 56; TL0 = 56; 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); // Dừng bộ định thời TR0 = 0; ... // Khởi động bộ định thời TR0 = 1; [email protected] Tạo trễ sử dụng Timer MAIN: MOV MOV MOV AGAIN: CPL CALL JMP TMOD, #00000010B TH0, #56 TL0, #56 P1.0 DELAY 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 Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng void main() { TMOD = 0x02; while(1) { P1_0 = !P1_0; delay(56); } 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); ; Dừng bộ định thời TR0 = 0; } [email protected]
- Xem thêm -

Tài liệu liên quan