专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

用定时器方式控制LED灯,亮1秒灭1秒

作者:佚名   来源:本站原创   点击数:  更新时间:2012年02月15日   【字体:
//*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++;
  }
关闭窗口

相关文章