Lập trình điều khiển Timer

Một phần của tài liệu GIÁO TRÌNH VI ĐIỀU KHIỂN 8051 (Trang 53)

Để tạo ra một độ trễ thời gian dùng chế độ 1 của bộ định thời thì cần phải thực hiện các bước dưới đây:

1. Nạp giá trị TMOD cho thanh ghi báo độ định thời nào (Timer0 hay Timer1) được sử dụng và chế độ nào được chọn.

2. Nạp các thanh ghi TL và TH với các giáa trị đếm ban đầu. 3. Khởi động bộ định thời.

4. Kiểm tra cờ bộ định thời TF bằng lệnh “JNB TFx, đích” để xem nó được bật không. Thoát vòng lặp khi TFx =1.

5. Dừng bộ định thời.

6. Xoá cờ TFx cho vòng kế tiếp.

7. Quay trở lại bước 2 để nạp lại TL và TH.

Để tính toàn thời gian trễ chính xác và tần số sóng vuông được tạo ra trên chân P1.5 thì ta cần biết tần số XTAL.

Ví dụ : Trong chương trình dưới đây ta tạo ra một sóng vuông với độ đầy xung 50% (cùng

tỷ lệ giữa phần cao và phần thấp) trên chân P1.5. Bộ định thời Timer0 được dùng để tạo độ trễ thời gian. Hãy phân tích chương trình này.

ORG 0000H

MOV TMOD, #01 ; Sử dụng Timer0 và chế độ 1(16 bít) HERE: MOV TL0, #0F2H ; TL0 = F2H, byte thấp MOV TH0, #0FFH ; TH0 = FFH, byte cao

CPL P1.5 ; Sử dụnG chân P1.5

ACALL DELAY

SJMP HERE ; Nạp lại TH, TL

; Chương trình tạo trễ sử dụng timer 0 DELAY:

SETB TR0 ; Khởi động bộ định thời Timer0 AGAIN:

JNB TF0, AGAIN ; Hiển thị cờ bộ định thời cho đến khi nó vượt FFFFH.

CLR TR0 ; Dừng bộ Timer

CLR TF0 ; Xoá cờ bộ định thời 0

RET

END

Lời giải:

Trong chương trình trên chú ý các bước sau: 1. TMOD được nạp.

2. giá trị FFF2H được nạp và TH0 - TL0

4. Chương trình con DELAY dùng bộ định thời được gọi.

5. Trong chương trình con DELAY bộ định thời Timer0 được khởi động bởi lệnh “SETB TR0”

6. Bộ Timer0 đếm lên với mỗi xung đồng hồ được cấp bởi máy phát thạch anh. Khi bộ định thời đếm tăng qua các trạng thái FFF3, FFF4 ... cho đến khi đạt giá trị FFFFH. Và một xung nữa là nó quay về không và bật cờ bộ định thời TF0 = 1. Tại thời điểm này thì lệnh JNB hạn xuống.

7. Bộ Timer0 được dùng bởi lệnh “CLR TR0”. Chương trình con DELAY kết thúc và quá trình được lặp lại.

Lưu ý rằng để lặp lại quá trình trên ta phải nạp lại các thanh ghi TH và TL và khởi động lại bộ định thời với giả thiết tần số XTAL = 11, 0592MHz.

4.3.4. Nội dung thực hành (adsbygoogle = window.adsbygoogle || []).push({});

a. Lựa chọn linh kiện

Keywords Category Sub-category Results Value

8951 MCS8051 All AT89C51

b.Thiết lập sơ đồ mô phỏng

Hình 4-15. Mô phỏng mạch tạo xung dung Timer

c. Chương trình mô phỏng

// Chuong trinh tao xung 1kHz o chan P0.0 // va xung 10kHz o chan P0.4

// va xung 5kHz tai chan P0.7 co phan cao 30% phan thap 70% ORG 0H

JMP MAIN ORG 100H MAIN:

MOV TH0,#0 MOV TL0,#0 SETB TR0 LAP: ACALL DELAY ACALL TAOXUNG SJMP LAP DELAY: MOV TMOD,#01 MOV TH0,#0FFH MOV TL0,#9CH SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 INC 30H RET TAOXUNG: CPL P0.4 MOV A,30H CJNE A,#3,TIEP1 clr P0.7 RET TIEP1: CJNE A,#10,TIEP SETB p0.7 CPL P0.0 MOV 30H,#0 RET TIEP: RET END 4.3.5. Báo cáo thực hành 1. Tên bài. 2. Sơ đồ mạch.

3. Chương trình điều khiển 4. Bảng kết quả thực hành.

Thời gian tạo trễ Giá trị nạp cho TH Giá trị nạp cho TL

5. Nhận xét và kết luận.

4.3.6. Câu hỏi kiểm tra.

1. Viết chương trình điều khiển động đèn giao thông tại ngã 4.

4.4. LẬP TRÌNH ĐẾM SẢN PHẨM4.4.1. Mục đích, yêu cầu 4.4.1. Mục đích, yêu cầu

a.Mục đích

- Hướng dẫn học sinh lập trình các ngắt trong 89C51.

- Làm rõ vai trò của ngắt trong điều khiển 89C51.

b.Yêu cầu

- Thiết kế và mô phỏng được mạch điện.

- Viết được chương trình điều khiển sử dụng ngắt.

- Vận hành mạch an toàn, đủ tính năng.

4.4.2. Công việc chuẩn bị

a. Dụng cụ tháo lắp và đo kiểm

- Kẹp chíp, kìm điện, mỏ hàn.

- Đồng hồ vạn năng.

b. Thiết bị, vật tư

- Mạch nạp chíp, mô hình, máy tính.

- Giắc cắm kết nối, thiếc, nhựa thông, keo. (adsbygoogle = window.adsbygoogle || []).push({});

4.4.3. Những kiến thức chuyên môn

Một phần của tài liệu GIÁO TRÌNH VI ĐIỀU KHIỂN 8051 (Trang 53)