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 = 1; 14 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 }
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计数。