51单片机定时器应用+proteus仿真

例程:用单片机内部定时器中断方式计时,实现每一秒钟P1.0输出状态发生一次反转,实现LED闪烁。
流程图:51单片机定时器应用+proteus仿真_第1张图片仿真原理图:51单片机定时器应用+proteus仿真_第2张图片

/************************************************************************************
*		                定时器中断	
*实验现象LED闪烁																  
************************************************************************************/

#include "reg52.h"			 
sbit led=P1^0;
char a=0;

/*******************************************************************************
*函数名        :init
*函数作用	   : 定时器初始化50ms溢出一次
*******************************************************************************/
void init()
{
	TMOD=0X01;
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	EA=1;
	ET0=1;
	TR0=1;
}


/*******************************************************************************
* 函数名      : main

*******************************************************************************/
void main()
{

 	init();
	while(1)
	{	
		while(a==20)    //50ms*20=1s
		{ 
            led=~led;
			a=0;
		 }		
	}		
}


void time0() interrupt 1        //中断服务子程序
{
	TH0=(65536-50000)/256;      //重装初值
	TL0=(65536-50000)%256;
	a++;
		
}

定时器T0工作在方式1,16位定时计数器

你可能感兴趣的:(单片机)