STC89C52单片机 DAY5 定时器计数器

定时器控制LED闪烁

#include<reg52.h>
sbit led=P2^0;
void Timer0Init()
{
	TMOD=TMOD|0x01;
	TH0=0xFC;    //高八位  可通过软件来设置初值
	TL0=0x18;    //低八位
	ET0=1;
	EA=1;
	TR0=1}

void main()
{
	Timer0Init();
	while(1){
	
	}
}
void Time0() interrupt 1
{
	static int i;
	TH0=0xFC;    //重新装载初值
	TL0=0x18;   
	i++;
	if(i==1000)   //1s
	{
		i=0;  //i清零
		led=~led;
	} 
}

秒表

#include "reg52.h"			

typedef unsigned int u16;	  
typedef unsigned char u8;
sbit k1=P3^1;  

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
					0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//ÏÔʾ0~FµÄÖµ

u8 ssec,sec,min;
u8 DisplayData[8];

void delay(u16 i)
{
	while(i--);	
}

void Timer0Init()
{
	TMOD|=0X01;//选择为定时器0,工作方式1

	TH0=0Xd8;	//赋初值,定时10ms
	TL0=0Xf0;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器
}

void DigDisplay()
{
	u8 i;
	for(i=0;i<8;i++)
	{
		switch(i)	 //选择点亮的数码管
		{
			case(0):
				LSA=0;LSB=0;LSC=0; break;//显示第0位
			case(1):
				LSA=1;LSB=0;LSC=0; break;//显示第1位
			case(2):
				LSA=0;LSB=1;LSC=0; break;//显示第2位
			case(3):
				LSA=1;LSB=1;LSC=0; break;//显示第3位
			case(4):
				LSA=0;LSB=0;LSC=1; break;//显示第4位
			case(5):
				LSA=1;LSB=0;LSC=1; break;//显示第5位
			case(6):
				LSA=0;LSB=1;LSC=1; break;//显示第6位
			case(7):
				LSA=1;LSB=1;LSC=1; break;//显示第7位
		}
		P0=DisplayData[i];//发送段码
		delay(100); 
		P0=0x00;//消影
	}
}

void datapros()
{
	DisplayData[0]=smgduan[ssec%10];
	DisplayData[1]=smgduan[ssec/10];
	DisplayData[2]=0x40;	
	DisplayData[3]=smgduan[sec%10];
	DisplayData[4]=smgduan[sec/10];
	DisplayData[5]=0x40;
	DisplayData[6]=smgduan[min%10];
	DisplayData[7]=smgduan[min/10];
}
//按键k1按下开始计时
void keypros()
{
	if(k1==0)   
	{
		delay(1000);
		if(k1==0)
			Timer0Init();
		while(!k1);
	}
}
void main()
{	
	//keypros(); 
	while(1)
	{
		keypros(); 
		datapros();
		DigDisplay();	
	}		
}

void Timer0() interrupt 1
{
	TH0=0Xd8;	//赋初值 10ms
	TL0=0Xf0;
	ssec++;
	if(ssec>=100)  //1s
	{
		ssec=0;
		sec++;
		if(sec>=60)
		{
			sec=0;
			min++;
			if(min>=60)
			{
				min=0;
			}
		}	
	}	
}

发布了38 篇原创文章 · 获赞 53 · 访问量 7262

猜你喜欢

转载自blog.csdn.net/matafeiyanll/article/details/104080223