定时器使8个LED灯每隔1s闪烁一次

完整的电路图:

完整的代码:

#include<reg51.h>
#include<intrins.h>
#define LED_PORT  P2
#define uchar unsigned char 

uchar num;
void time_init();
/**********************************
*函数名    :time0_init
*函数功能  :定时器初始化
*函数参数  : 无
*函数返回值: 无
***********************************/
void time0_init(void){
 	 TMOD = 0x01;
	 EA = 1;
	 ET0 = 1;
	 TH0 = (65536-50000)/256; //设置50ms定时
	 TL0 = (65536-50000)%256;
	 TR0 = 1;
}

/**********************************
*函数名    :time0
*函数功能  :中断函数
*函数参数  : 无
*函数返回值: 无
***********************************/
void time0() interrupt 1 {
   	TH0  = (65536-50000)/256;
	TL0  = (65536-50000)%256;
	num ++;

}

/**********************************
*函数名    :main
*函数功能  :主函数
*函数参数  : 无
*函数返回值: 无
***********************************/
void main(void){
	   num = 0;	  	
	   LED_PORT = 0xfe;
	   time0_init();
	   while(1){
	   	  if(num==20){//设置了20*50ms=1s的定时,流水灯每隔1s闪烁			    
			 LED_PORT = _crol_(LED_PORT,1);	//该函数在intrins头文件中
			 num =0; 					 
	     }   
			
	  }
}

 最后的效果展示:

猜你喜欢

转载自blog.csdn.net/fw1035/article/details/112852244