1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

18 56 0

Đ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 18
Dung lượng 1,04 MB

Nội dung

BỘ ĐỊNH THỜI/ BỘ ĐẾM (TIMER/COUNTER) Giới thiệu • Tạo khoảng thời gian xác đến cấp chu kỳ máy, thay đổi khoảng thời gian linh hoạt • Dùng đếm 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 caonam@gmail.com Vị trí định thời sơ đồ khối chip 89X51/52 Các định thời Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Cơng nghệ Đà Nẵng caonam@gmail.com 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 caonam@gmail.com Hoạt động XTAL oscillator TH ÷12 C/T = TF bật lên FFFF → 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 caonam@gmail.com Minh họa hoạt động timer FFF2 TF=0 FFF3 FFF4 FFFF 0000 TF=0 TF=0 TF=0 TF=1 Timer đếm lên, xảy trạng thái FFFF  0000 cờ TF bật Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Các ghi Các ghi định thời - Timer 0: TH0, TL0 - Timer 1: TH1, TL1 Các ghi trạng thái cài đặt chế độ hoạt động cho đị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 caonam@gmail.com Thanh ghi TCON – Timer/Counter Control Register TCON D7 D6 TF1 D5 D3 TF0 TR1 Cờ ngắt Timer1 D4 IE1 TR0 Cờ ngắt Timer0 D2 D1 IE0 IT1 Cờ ngắt Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng D0 IT0 Cờ ngắt caonam@gmail.com 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 caonam@gmail.com Chế độ hoạt động Timer Mỗi định thời hoạt động chế độ: - Chế độ 0: Chế độ định thời 13 bit - Chế độ 1: Chế độ định thời 16 bit - THx, TLx chứa giá trị đếm định thời - Chế độ 2: Chế độ tự nạp lại 8-bit - Byte thấp giữ giá trị đếm - 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 caonam@gmail.com 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 caonam@gmail.com Bit M0, M1 – ghi TMOD TMOD GATE C/T M1 M0 M1 M0 Chế độ 0 1 1 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 caonam@gmail.com Ví dụ: Ví dụ 1: Xác định xem timer làm việc chế độ sau (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 timer ta có (a) TMOD = 00000001, mode of timer is selected (b) TMOD = 00100000, mode of timer is selected (c) TMOD = 00010010, mode of timer 0, and mode of timer are selected Ví dụ 2: Tính tần số chy kỳ chip 8051 sử dụng thạch anh 11.0592Mhz bit C/T ghi TMOD 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 caonam@gmail.com Lập trình cho định thời Timer • Ví dụ 3: lập trình cho định thời hoạt động chế độ 1, 16 bit, có thời gian tràn 500us (sử dụng thạch 12Mhz) • Bước 1: Chọn chế độ hoạt động cho Timer TMOD = 00000001B (0x01) • Bước 2: Nạp giá trị tràn cho ghi TH0, TL0 Vì định thời đếm lên đơn vị sau chu kỳ máy nên định thời tràn sau 500 chu kỳ máy nạp vào TH0, TL0 giá trị 65536 – 500 = 65036 tương đương 0FE0Ch TH0 = 0xFE; // MOV TH0, #0FEh TL0 = 0X0C; // MOV TL0, #0Ch - Bước 3: Khởi động định thời T0 TF0 = 0; // (CLR TF0) Xóa cờ tràn TR0 = 1; // (SETB TR0) Khởi động định thời - Bước 4: Chờ định thời tràn while(!TF0) continue; // JNB TF0, $ - Bước 5: Nếu tiếp tục muốn sử dụng định thời: Dừng đị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 caonam@gmail.com Chương trình hồn chỉnh ví dụ ASM MOV TMOD, #00000001B MOV TH0, #0FEh MOV TL0, #0Ch CLR TF0; Xóa cờ tràn ;Khởi động định thời SETB TR1 ; Chờ cờ tràn bật JNB TF0, $ ; Dừng định thời CLR TR0 ; Nạp lại giá trị MOV TH0, #0FEh; MOV TL0, #0Ch; // Khởi động đị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 định thời TR0 = 1; // Chờ cờ tràn bật while(!TF0) continue; // Dừng định thời TR0 = 0; // Nạp lại giá trị TH0 = 0xFE; TL0 = 0x0C; // Khởi động định thời TR0 = 1; caonam@gmail.com Lập trình cho định thời Timer – (tiếp) • Ví dụ 4: lập trình cho định thời hoạt động chế độ 2, 8-bit tự nạp lại, lại có thời gian tràn 200us (sử dụng thạch 12Mhz) • Bước 1: Chọn chế độ hoạt động cho Timer TMOD = 00000010B (0x02) • Bước 2: Nạp giá trị tràn cho ghi TH0, TL0 Ở chế độ 2, ghi TH0 giữ giá trị nạp lại, TH0 = 256 - 200; // MOV TH0, #56 TL0 = 256 - 200; // MOV TL0, #56 - Bước 3: Khởi động định thời T0 + TF0 = 0; // (CLR TF0) Xóa cờ tràn + TR0 = 1; // (SETB TR0) Khởi động định thời - Bước 4: Chờ đị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 ghi TL0 tự động nạp lại Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Chương trình hồn chỉnh ví dụ ASM MOV TMOD, #00000010B MOV TH0, #56 MOV TL0, #56 CLR TF0; Xóa cờ tràn ;Khởi động định thời SETB TR1 ; Chờ cờ tràn bật JNB TF0, $ ; Dừng định thời CLR TR0 // Khởi động đị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 định thời TR0 = 1; // Chờ cờ tràn bật while(!TF0); // Dừng định thời TR0 = 0; // Khởi động định thời TR0 = 1; caonam@gmail.com 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 định thời SETB TR1 ; Chờ cờ tràn bật JNB TF0, $ ; Dừng đị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 = ; Xóa cờ tràn ;Khởi động định thời TR1 = 1; ; Chờ cờ tràn bật while(!TF0); ; Dừng định thời TR0 = 0; } caonam@gmail.com ... oscillator TH ÷12 C/T = TF bật lên FFFF → TR TH0 D15 D 14 D13 D12 D11 D 14 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 caonam@gmail.com Minh họa hoạt động timer FFF2 TF=0 FFF3 FFF4 FFFF 0000 TF=0 TF=0 TF=0 TF=1 Timer đếm lên, xảy trạng thái FFFF... TH0, TL0 - Timer 1: TH1, TL1 Các ghi trạng thái cài đặt chế độ hoạt động cho đị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

Ngày đăng: 27/05/2020, 05:58