定时器中断程序控制led闪烁

时间:2022-01-28 23:32:22
定时器中断程序控制led闪烁定时器中断程序控制led闪烁
 1 #include <reg52.h>
 2 typedef unsigned char u8;
 3 typedef unsigned int u16;
 4 sbit led = P1^0;
 5 //中断配置
 6 void main(void)
 7 {
 8 TMOD =0x01; 
 9 TH0 = (65535-50000) /256;
10 TL0 = (65535-50000) %256;
11 EA = 1;
12 
13 ET0 = 114 TR0 = 1; 
15 while(1);
16 }
17 //intterupt handle
18 void timer0_service (void) interrupt 1
19 {
20 typedef unsigned char u8;
21 typedef unsigned int u16;
22 timer++;    
23 if(timer == 20)
24 {
25     timer = 0;                   //led flash program
26     led = ~led;    
27 }
28 }
View Code

TMOD 工作方式控制寄存器

TCON D7 D6 D5 D4 D3 D2 D1 D0 88H
GATE C/T` M1 M0 GATE C/T` M1 M0

 

 

(1)GATE门控。0 :TR0/1 控制。 1:INT0` INT1`与TRx共同控制。

(2)M1、M0  工作方式选择。00 13位CT,01 16位CT,10 8位自动重载CT,11 仅适用T0,此时T0分成2个8位计数器,T1停止计数 

TCON CT控制寄存器

TCON可位寻址

TCON D7 D6 D5 D4 D3 D2 D1 D0 88H
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

 

 

TF1、TF0 计数溢出标志位。溢出置1。

TR1、TR0 计数运行控制位。TR1(或TR0) = 1,启动CT的必要条件。TR1 = 0,停止CT计数。