1 #include <reg51.h>
2 #include <stdio.h>
3 #define uchar unsigned char
4 sbit led=P2^6;
5 //GATE就是门 GATE=0一关掉就会不执行 GATE=1打开门执行 定时器T1的门在P3.3(INT1) 定时器T0的门在P3.2(INT0)
6 void init ()
7 {
8 ET1=1;//允许打开定时器1分开关
9 EA=1;//打开总开关
10 TMOD=0xd0;//1101 0000 //在TMOD选择定时器1 工作方式1 TATE 计数器 即1101 0000
11 TH1=255; // TH0 TL0 是16位定时器或是计数器装载初值 即从什么数开始定时或计数
12 TL1=255; // TH0 TL0 赋值255 意思是65535 从65535开始计数或定时 超过65536 就会触发中断服务程序
13 TR1=1; //代码执行到TR1就会跳到中断服务程序 所以要TR1之前准备好初始化代码
14 }
15 void main(void)
16 {
17 init();//执行初始化
18 while(1); //在这里死循环 让程序不执行下去 响应初始化代码
19 }
20 void cgh() interrupt 3
21 {
22 led=~led;
23 TH1=255;//在工作方式1下 不能自动装载 需要手动装载
24 TL1=255; //定时器是独立的 不依赖CPU 一当触发就会一直工作定时
25 }
![]()