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

📄 stopwatch.c

📁 本文件是用keil编程的电子表的设计
💻 C
字号:
#include<reg51.h>
#include<intrins.h>

sbit dat=P1^0;
sbit clk=P1^1;
sbit isKeyPress=P1^2;
sbit sege1=P1^6;
sbit sege2=P1^5;
sbit sege3=P1^4;
sbit sege4=P1^3;

unsigned char SEGCODE[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char KEYCHECKCODE[8] = {1,2,4,8,16,32,64,128};
unsigned int counter=0x10,dbuffer=0,min=0;


void initial(void)
{
	TMOD=0x01;
	TH0=0x00;
	TL0=0x00;
	IE=0x82;
	TR0=1;
}

void	send(unsigned char a)
{
	data unsigned char i;
	for(i=0;i<8;i++)
	{
		if(_crol_(a,i)&0x80)
			dat=1;
		else
			dat=0;
		clk=1;
		clk=0;
	}
}

void delay(unsigned int k)
{
	unsigned int i,j; 
	for(i=0;i<k;i++)
		for(j=0;j<121;j++);
}	


unsigned char key_scan(void)
{
	unsigned char data keyNum,i,keyValue;	
	
	keyNum=0xff;			
	send(0x00);
	while(!isKeyPress)
	{	
		//keyNum=0xff;		
		//display_bit=0xfe;
		for(i = 0;i < 8; i++)	
		{	
			send(~KEYCHECKCODE[i]);
			if(!isKeyPress)
			{
				keyValue = i;
				break;
			}
			/*
			send(display_bit);	
			if(!isKeyPress)
			{	
				keyNum=display_bit;	
				break;	
			}	
			display_bit=_crol_(display_bit,1); 
			*/
		}
		delay(200);
		return		keyValue;
	}	
	return keyNum;
}		



int main(void)
{
	initial();
	
	while(1)
	{
		unsigned char keyValue = 8;
		unsigned char i;
		send(0x00);
		while(!isKeyPress)
		{	
			for(i = 0;i < 8; i++)	
			{	
				send(~KEYCHECKCODE[i]);
				if(!isKeyPress)
				{
					keyValue = i;
					break;
				}
			}
		}

		if(keyValue==0)
		{
			min++;
			if(min > 59)
			{
				min = 0;
			}
		}

		if(keyValue==1)
		{
			min--;
			if(min < 0)
			{
				min = 59;
			}
		}

		send(SEGCODE[dbuffer%10]);
		sege4=0;
		delay(1);
		sege4=1;
		send(SEGCODE[dbuffer/10]);
		sege3=0;
		delay(1);
		sege3=1;
		send(SEGCODE[min%10]);
		sege2=0;
		delay(1);
		sege2=1;
		send(SEGCODE[min/10]);
		sege1=0;
		delay(1);
		sege1=1;
	}
}

void	timer0_int(void) interrupt	1
{
	TH0=0x00;
	TL0=0x00;
	TR0=0;
	
	if(!(counter--))
	{
		counter=0x10;
		if(dbuffer!=59)
			dbuffer++;
		else if(min<59)
		{ 
			dbuffer=0;
			min++;
		}
		else 
			min=0;
	}
	TR0=1;
}



⌨️ 快捷键说明

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