//*f=6MHZ,定时器0以工作方式2(自动重装8位定时器模式)、查询方式产生100us定时, //并在P0.0输出周期为2s的连续方波r控制LED灯,即亮1s灭1s*// #include<reg52.h> sbit d1=P0^0; void timer(); unsigned int num,tt; void main() { TMOD=0X02; //调置工作方式// TH0= 0Xce; //设初值 TL0=0Xce; IE=0X00; //关中断 TR0=1; //定时器启动 while(1) //大循环 { if(num==10000) //必须加此大循环,否则程序从头开始,所有变量均复位, //d1的值保持不变,因为始终num到此都为0 // d1=!d1; // 也可将此三句放到定时程序后,这样,定时程序过后,num值为10000, //即达到要求定时时,(并没有复位,因为程序没执行完)// num=0; // 之后再输出d1就会按要求变化// while(num<10000)//100us定时程序 { if(TF0)//查询100us定时是否到?// timer(); } } } void timer() { TF0=0; //查询方式必须软件清零,否则TF一直溢出为1,计时只在第一次准确// num++; }