Lập trình ứng dụng sử dụng bộ định thời

Một phần của tài liệu Dtcn gt lap rap lap trinh vi xu ly docx 9587 (Trang 38 - 43)

BÀI 3: SỬ DỤNG BỘ ĐỊNH THỜI TIMER

3.2. Lập trình ứng dụng sử dụng bộ định thời

- Các lệnh của timer – counter trong CCS + Lệnh setup_timer_0(mode)

Cú pháp:

setup_timer_0(mode)

Thông số: mode có thể là 1 hoặc 2 hằng số định nghĩa trong filedevice.h.

Các thông số gồm:

-RTCC_INTERNAL, RTCC_EXT_H_TO_LRTCC_EXT_L_TO_H - RTCC_DIV_2,

- RTCC_DIV_4, - RTCC_DIV_8, - RTCC_DIV_16,

- RTCC_DIV_32, - RTCC_DIV_64, - RTCC_DIV_128, - RTCC_DIV_256.

Các hằng số từ nhiều nhóm khác nhau thì có thể or với nhau.

Chức năng: Định cấu hình cho TIMER0.

Có hiệu lực: cho tất cả các vi điều khiển PIC.

+ Lệnh set_timerx(value) Cú pháp:

set_timerX(value) ;// x là 0, 1, 2

Thông số: value là hằng số nguyên 8 hoặc 16 bit dùng để thiết lập giá trị mới cho timer.

Chức năng: thiết lập giá trị bắt đầu cho TIMER.

Có hiệu lực: cho tất cả các vi điều khiển PIC có timer.

+ Lệnh get_timerx() Cú pháp:

value = get_timerX() ; //x là 0, 1, 2 Thông số: không có.

Chức năng: đọc giá trị của TIMER/COUNTER.

Có hiệu lực: cho tất cả các vi điều khiển PIC có timer.

3.2.2. Các bước tiến hành

Yêu cầu kỹ thuật: Dùng Timer0 để viết hàm tạo trễ cho hệ thống.để tạo khoản thời gian trễ là 500ms

- Bước 1:Viết lưu đồ giải thuật

- Bước 2:Viết chương trình hàm tạo trễ dựa vào lưu đồ giải thuật - Bước 3:Kiểm tra và nạp chương trình qua PICKIT2

- Bước 4:Vận hành, quan sát và chỉnh sửa 3.2.3. Thực hành:

Người học thực hiện viết chương trình hiển thị theo yêu cầu kỹ thuật như trên, nạp vào vi điều khiển PIC 18F4550.

Thiết bị thực hành:

- Máy vi tính PC;

- Mạch nạp PIC KIT 2;

- Mô đun thực hành PICKIT Training.

3.2.4. Câu hỏi ôn tập:

Câu 1: IC PIC 18F4550 có bao nhiêu bộ Timer/Counter?

Câu 2: Giải thích chế độ Watch dog timer có trong PIC.

3.3. Bài tập thực hành:

Viết chương trình đếm từ 00 lên 99 hiển thị trên led 7 đoạn, sử dụng Timer 0 để tạo thời gian trễ 1s giữa mỗi lần đếm tăng lên

3.3.1. Lý thuyết liên quan Đọc mục 2.5.1.

3.3.2. Các bước tiến hành

- Bước 1:Viết lưu đồ giải thuật

- Bước 2:Viết chương trình

#include<18F4550.h>

#fuses NOWDT,PUT,HS,NOPROTECT

#use delay(clock=20000000) //---KICH LED --- void led_A0()

{ output_low(PIN_E0);//E0=0 output_low(PIN_E1);//E1=0 }

void led_A1()

{ output_high(PIN_E0);//E0=1 output_low(PIN_E1);//E1=0 }

void led_A2()

{

output_low(PIN_E0);//E0=0 output_high(PIN_E1);//E1=1 }

void led_A3()

{ output_high(PIN_E0);//E0=1 output_high(PIN_E1);//E1=1 }

//--- // ---MA LED---

void maso_0()

{ output_low(PIN_E2);//A0=0 output_low(PIN_C0);//A1=0 output_low(PIN_C1);//A2=0 output_low(PIN_A4);//A3=0

}

void maso_1()

{ output_high(PIN_E2);//A0=1 output_low(PIN_C0);//A1=0 output_low(PIN_C1);//A2=0 output_low(PIN_A4); }//A3=0

void maso_2()

{ output_low(PIN_E2);//A0 output_high(PIN_C0);//A1 output_low(PIN_C1);//A2 output_low(PIN_A4);//A3 }

void maso_3()

{ output_high(PIN_E2);//A0 output_high(PIN_C0);//A1 output_low(PIN_C1);//A2 output_low(PIN_A4);//A3 }

void maso_4()

{ output_low(PIN_E2);//A0 output_low(PIN_C0);//A1 output_high(PIN_C1);//A2 output_low(PIN_A4);//A3 }

void maso_5()

{ output_high(PIN_E2);//A0 output_low(PIN_C0);//A1 output_high(PIN_C1);//A2 output_low(PIN_A4);//A3

}

void maso_6()

{ output_low(PIN_E2);//A0 output_high(PIN_C0);//A1 output_high(PIN_C1);//A2 output_low(PIN_A4);//A3 }

void maso_7()

{ output_high(PIN_E2);//A0 output_high(PIN_C0);//A1 output_high(PIN_C1);//A2 output_low(PIN_A4);//A3 }

void maso_8()

{ output_low(PIN_E2);//A0 output_low(PIN_C0);//A1 output_low(PIN_C1);//A2 output_high(PIN_A4);//A3 }

void maso_9()

{ output_high(PIN_E2);//A0 output_low(PIN_C0);//A1 output_low(PIN_C1);//A2 output_high(PIN_A4);}//A3 void chon_ma(int16 maled)

{ switch(maled)

{case 0 :output_low (PIN_E2) ;output_low (PIN_C0) ; output_low (PIN_C1) ; output_low (PIN_A4);delay_ms(1);break;

case 1 :output_high(PIN_E2) ;output_low (PIN_C0) ; output_low (PIN_C1) ; output_low (PIN_A4);delay_ms(1);break;

case 2 :output_low (PIN_E2) ;output_high(PIN_C0) ; output_low (PIN_C1) ; output_low (PIN_A4);delay_ms(1);break;

case 3 :output_high(PIN_E2) ;output_high(PIN_C0) ; output_low (PIN_C1) ; output_low (PIN_A4);delay_ms(1);break;

case 4 :output_low (PIN_E2) ;output_low (PIN_C0) ; output_high(PIN_C1) ; output_low (PIN_A4);delay_ms(1);break;

case 5 :output_high(PIN_E2) ;output_low (PIN_C0) ; output_high(PIN_C1) ; output_low (PIN_A4);delay_ms(1);break;

case 6 :output_low (PIN_E2) ;output_high(PIN_C0) ; output_high(PIN_C1) ; output_low (PIN_A4);delay_ms(1);break;

case 7 :output_high(PIN_E2) ;output_high(PIN_C0) ; output_high(PIN_C1) ; output_low (PIN_A4);delay_ms(1);break;

case 8 :output_low (PIN_E2) ;output_low (PIN_C0) ; output_low (PIN_C1) ; output_high(PIN_A4);delay_ms(1);break;

case 9 :output_high(PIN_E2) ;output_low (PIN_C0) ; output_low (PIN_C1) ; output_high(PIN_A4);delay_ms(1);break;}

}

//--- void ham_dem()

{ int16 dv,chuc;

int16 so,i;

// ---HIEN THI 2 SO RA LED { for(so=0;so<=99;so++)

{

chuc=so/10;

dv=so%10;

for(i=0;i<=50;i++) { led_A0();

chon_ma(dv);

led_A1();

chon_ma(chuc); } }

}

//---CHUONG TRINH CHINH--- void main()

{ while(true) {ham_dem();}

}

- Bước 3:Kiểm tra và nạp chương trình qua PICKIT2 - Bước 4:Vận hành, quan sát và chỉnh sửa

3.3.3. Thực hành:

Người học thực hiện viết chương trình, nạp vào vi điều khiển PIC 18F4550.

Thiết bị thực hành:

- Máy vi tính;

- Mạch nạp PIC KIT 2

- Môn đun thực hành PIC Traning KIT 3.3.4. Câu hỏi ôn tập

Câu 1: Câu lệnh thiết lập chế độ Timer cho bộ định thời là gì?

Một phần của tài liệu Dtcn gt lap rap lap trinh vi xu ly docx 9587 (Trang 38 - 43)

Tải bản đầy đủ (PDF)

(66 trang)