⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shizhong.c

📁 非常之经典的MCS51程序,非常适合初学者
💻 C
字号:
//硬件平台:XD5101(unaided.21ic.org)
//程序功能:计时器。两位led显示秒种,另两位显示分钟,用小数点隔开。
//最大量程1小时。按键一下开始计时,第二下停止计时,第三下清零。
#include<reg52.h>
#define uchar unsigned char
sbit s1 = P2^0;
sbit s2 = P2^1;
sbit s3 = P2^2;
sbit s4 = P2^3;
sbit en = P2^5;

sbit Key1= P3^2;//对应学习板S1按键

uchar second,minute,clock,number;
//数码管显示
uchar dis[10]={	0x84,  // 0
		        0xBD,  // 1
		        0xE0,  // 2
		        0xB0,  // 3
		        0x99,  // 4
		        0x92,  // 5
		        0x82,  // 6
		        0xBC,  // 7
		        0x80,  // 8
		        0x90  // 9
				};

void timer0_init()
{
	EA=1;
	ET0=1;
	TMOD=0x01;//工作方式1
	//定时50ms
	TL0=0x00;
	TH0=0x4C;
	TR0=0;
}

void timer0() interrupt 1
{
	TF0=0;
	TL0=0x00;
	TH0=0x4C;
	++clock;
}

void Delay(int m)
{
	while(--m);
}

void display()
{
	s1=0;
	P0=dis[minute/10];
	Delay(100);
	s1=1;
	s2=0;
	P0=(dis[minute%10]&0x7F);//显示小数点,以区分分钟和秒钟
	Delay(100);
	s2=1;
	s3=0;
	P0=dis[second/10];
	Delay(100);
	s3=1;
	s4=0;
	P0=dis[second%10];
	Delay(100);
	s4=1;
}

void main()
{
	second=0;
	minute=0;
	clock=0;
	number=0;
	Key1=1;
	timer0_init();
	en=0;
	while(1)
	{
		if(!Key1)
		{
			++number;
		   	if(1==number)
				TR0=1;
			if(2==number)
			    TR0=0;
			while(!Key1);
		}
		if(20==clock)//到一秒
		{
			clock=0;
			++second;		
		}
		if(60==second)//到一分
		{
			second=0;
			++minute;
		}
		if((60==minute)||(number>=3))//超出量程或者清零命令
		{
			second=0;
			minute=0;
			clock=0;
			number=0;
		}
		display();
	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -