Chê đoơ 3: (M1,M0 = 1,1) Là chê đoơ định thời chia sẽ Chê đoơ này chư dùng cho Timer0, ở chê

Một phần của tài liệu TÀI LIỆU HƯỚNG DẪN SỬ DỤNG PHẦN MỀM KEIL C51 TRONG LẬP TRÌNH VI ĐIỀU KHIỂN (Trang 32)

đoơ này Timer0 được chia làm 2 boơ định thời 8 bit hốt đoơng rieđng lẽ TL0 và TH0 cờ tràn tương ứng là TF0 và TF1.

;****************************************************************************** ;******************************************************************************

Code mău timer1 chê đoơ 16bit (chê đoơ 1): <chê đoơ 0 làm tương tự với M0, M1 =0,0>

#include <REG8253.H> ORG 0000H LJMP MAIN ORG 001BH LJMP NGAT_T1 ORG 0030H MAIN:

MOV TMOD,#00010000B ; TIMER1 C/Đoơ 16BIT

MOV IE,#10001000B ;Cho phép ngaĩt trong timer 1

MOV TH1,#HIGH(-65536) ;đưa giá trị vào boơ đêm TH1 và TL1

MOV TL1,#LOW(-65536)

SETB TR1 ;CHO TIMER1 CHÁY

SJMP $ NGAT_T1: NGAT_T1:

CLR TR1 ;TAĨT TIMER1

MOV TH1,#HIGH(-65536) ;náp lái giá trị vào boơ đêm TH1 và TL1

MOV TL1,#LOW(-65536)

CPL P2.0 ;ĐẠO TRÁNG THÁI TREĐN CHAĐN P2.0

SETB TR1 RETI RETI END

;****************************************************************************** ;******************************************************************************

Code mău timer1 chê đoơ 8bit tự náp lái (chê đoơ 2):

#include <REG8253.H>

ORG 0000H LJMP MAIN LJMP MAIN ORG 001BH LJMP NGAT_T1

Created by ELECTRONIC FACULTY Page 33 ORG 0030H ORG 0030H

MAIN:

MOV TMOD,#00100000B ; TIMER1 C/D 8BIT AUTO RELOAD

MOV IE,#10001000B

MOV TH1,#HIGH(-255) ;GIÁ TRỊ SẼ NÁP CHO TL KHI TRAØN BOƠ ĐỊNH THỜI

MOV TL1,#LOW(-255) ;NÁP TRƯỚC GIÁ TRỊ CHO TL

SETB TR1 SJMP $ SJMP $ NGAT_T1: CPL P2.0 RETI END ;****************************************************************************** ;******************************************************************************

Code mău timer0 chê đoơ boơ định thời chia sẽ (chê đoơ 3):

#include <REG8253.H> ORG 0000H LJMP MAIN ORG 000BH LJMP NGAT_T0 ORG 001BH LJMP NGAT_T1 ORG 0030H MAIN:

MOV TMOD,#01010011B ;TIMER1 c/đ COUNTER 16BIT

MOV IE,#10001010B

MOV TH0,#HIGH(-255) ;náp cho TH0, TL0 giá trị 0

MOV TL0,#LOW(-255)

SETB TR0 ;baơt timer1 cháy

SETB TR1 SJMP $ SJMP $ NGAT_T1: CPL p3.1 RETI NGAT_T0: CPL p3.0 RETI END ;****************************************************************************** ;******************************************************************************

Code mău COUNTER chê đoơ 16bit đêm sự kieơn:

#include <REG8253.H>

LJMP MAIN ORG 0030H ORG 0030H MAIN:

MOV TMOD,#01010000B ;TIMER1 c/đ COUNTER 16BIT

MOV TH1,#HIGH(-65536) ;náp cho TH1, TL1 giá trị 0

MOV TL1,#LOW(-65536)

SETB TR1 ;baơt timer1 cháy

SJMP $ END END

Bađy giờ cháy mođ phỏng và mở timer1 leđn

B. TIMER2 VAØ COUNTER2:

- Cũng có chức naíng Timer và Counter tương tự timer0 và timer1 Thanh ghi chĩn chê đoơ định thời 2:

T2MOD: Timer2 Mode Register

Bit7 – Bit2 : Khođng sử dúng (bit dự trữ dùng trong tương lai cho các phieđn bạn 8051 sau)

T2OE (Bit1): Bit cho phép timer2 xuât tín hieơu tređn chađn T2

DCEN (Bit0): Bit đieău khieơn đêm leđn / xuông (1: up / 0: down) Thanh ghi đieău khieơn chê đoơ định thời 2:

T2CON: Timer2 Control Register

TF2 (Bit7): Cờ tràn cụa timer2. Được set leđn 1 khi boơ đêm TL2 và TH2 tràn và phại được xóa baỉng phaăn meăm. TF2 sẽ khođng được set khi RCLK hoaịc TCLK = 1.

EXF2 (Bit6): Cờ ngaĩt ngoài timer2. Được set khi có xung ađm (logic1->logic0) tređn chađn T2EX, và bit cho phép ngaĩt ngoài timer2 là EXEN2 = 1. Khi EXF2 được set moơt ngaĩt ngoài được yeđu caău, EXF2 được xóa baỉng phaăn meăm.

RCLK (Bit5): Clock thu. Khi ở mức cao port nôi tiêp sử dúng các xung tràn cụa boơ định thời 2 làm clock thu ở chê đoơ 1 và 3.

TCLK (Bit4): Clock phát. Khi ở mức cao port nôi tiêp sử dúng các xung tràn cụa boơ định thời 2 làm clock thu ở chê đoơ 1 và 3.

EXEN2 (Bit3): bit3 = 1 cho phép ngaĩt ngoài timer2, bit3 = 0 khođng phép.

TR2 (Bit2): Bit cho phép khởi đoơng boơ định thời2 (logic 1 baơt; logic 0 taĩt) Click vào đađy hoaịc P3.5,

boơ đêm TL1 sẽ taíng moêi khi có 1 xung (từ mức 1 xuông 0) tređn chađn T1. Khi TL1 tràn TH1 sẽ taíng 1 đơn vị.

Created by ELECTRONIC FACULTY Page 35 C/T2 (Bit1): Bit chĩn chức naíng bit1 = 0:timer2 đêm thời gian / bit1 = 1:counter đêm C/T2 (Bit1): Bit chĩn chức naíng bit1 = 0:timer2 đêm thời gian / bit1 = 1:counter đêm sự kieơn.

CP/RL2 (Bit0): Bit0 = 0: tự náp lái khi boơ định thời2 tràn, khi RCLK hoaịc TCLK = 1 bit này bị bỏ qua và boơ định thời sẽ phại tự náp lái. Bit0 = 1 cho phép thu nhaơn tređn chađn T2EX nêu EXEN2 = 1.

;****************************************************************************** ;******************************************************************************

Code mău Timer2 chê đoơ tự náp lái:

#include <REG8253.H> ORG 0000H LJMP MAIN ORG 002BH LJMP NGAT_T2 ORG 0030H MAIN:

MOV T2MOD,#00000001B ;Khai báo T2MOD,T2CON

MOV T2CON,#00000000B

MOV RCAP2L,#LOW(-5000) ;Nhaơn byte thâp, byte cao giá trị náp lái boơ đêm timer2

MOV RCAP2H,#HIGH(-5000)

MOV TH2,#HIGH(-10) ;Náp giá trị ban đaău cho boơ đêm byte thâp và cao cụa Timer 2

MOV TL2,#LOW(-10) MOV IE,#10101010B MOV IE,#10101010B

MOV R2,#100 ;giá trị trì hoãn phúc vú timer 2

SETB TR2 ;Khởi đoơng timer 2

SJMP $ NGAT_T2: NGAT_T2: CLR TF2 DJNZ R2,EXIT_T2 MOV R2,#100 CPL P3.0 EXIT_T2: SETB TR2 RETI END ;****************************************************************************** ;******************************************************************************

Code mău Counter2 chê đoơ đêm sự kieơn #include <REG8253.H> ORG 000H LJMP BEGIN ORG 0030 BEGIN: MOV T2CON,#00000010B MOV TH2,#HIGH(-255)

MOV TL2,#LOW(-255) SETB TR2 SETB TR2 JMP $ END ;****************************************************************************** ;******************************************************************************

Code mău Counter2 chê đoơ táo xung clock tređn chađn T2 :

Fout = Fperiph / (2*(65536-RCAP2)).

#include <REG8253.H>

ORG 000H LJMP BEGIN LJMP BEGIN ORG 0030H BEGIN:

CLR T2CON.1 ;chĩn chê đoơ counter

MOV T2MOD,#00000010B ;cho phép xuât dữ lieơu ở T2

MOV TH2,#255 MOV TL2,#255 SETB TR2

JMP $

End

Một phần của tài liệu TÀI LIỆU HƯỚNG DẪN SỬ DỤNG PHẦN MỀM KEIL C51 TRONG LẬP TRÌNH VI ĐIỀU KHIỂN (Trang 32)

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

(39 trang)