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

📄 scorecounter.c

📁 yong 89s52 zhizuo de lanqiu jifenpai,yong KEIL he PROTUES da kai.
💻 C
字号:
#include <rtx51tny.h>                 /* RTX-51 tiny functions & defines      */
#include <reg52.h>

//定义各任务
#define INIT             0
#define CLOCK_RUN        1	   
#define SCORE_DISPLAY	 2
#define KEY_SCAN         3
#define KEY_DEAL         4
#define CLOCK_ALARM      5



//定义各个键值
#define TEAMCHOSE        0
#define SCOREADD1        1
#define SCOREADD2        2
#define SCOREADD3        3
#define BREAKKEY         4
#define TIMESET          5
#define SCORECLR    	 6
#define SCOREDEL         7  
#define TIMEMODE         8
#define TIMEUP           9
#define TIMEDOWN         10
#define NUMCOUNT         11


#define uchar unsigned char 
#define uint unsigned int 

 
uchar keyvalue;
uchar numcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
uchar buf[12];
uchar timesta; 
/*
    timesta = 0--Clock Run 
    timesta = 1--Change Clock.second
    timesta = 2--Change Clock.minute

*/
uchar teamsta; 
/*
    teamsta = 0--Score Display 
    teamsta = 1--Change Score.hscore
	teamsta = 2--Change Score.rscore

*/
uchar pausesta;
/*
	pausesta = 0--Clock Break
	pausesta = 1--Clock Run
*/
uchar beepsta;
/*
	beepsta = 0--Beep Off
	beepsta = 1--Beep On
*/

uchar numsta;
/*
	numsta = 0--Score Display
	numsta = 1--Score.hscore count
	numsta = 2--Score.rscore count
*/


sbit  DA       = P0^4; 
sbit  BEEP     = P2^0;
sbit  MINLIGHT = P2^1;
sbit  SECLIGHT = P2^2;
sbit  HLIGHT   = P2^3;
sbit  RLIGHT   = P2^4;


struct  Clock_Struc 
{
   uchar  minute;
   uchar  second;
}  Clock;

struct  Score_Struc
{
	uchar  hscore;
	uchar  rscore;
}  Score;


void job0 (void) _task_ INIT 
 {                  
      Clock.minute = 00;
      Clock.second = 18;
	  
	  Score.hscore = 000;
	  Score.rscore = 000;

	  BEEP     = 1;
	  MINLIGHT = 1;
	  SECLIGHT = 1;
	  HLIGHT   = 1;
	  RLIGHT   = 1;
	  pausesta = 1;
	  teamsta  = 0;
	  timesta  = 0;
	  keyvalue = 15;
	  beepsta  = 0;
	  numsta   = 0;
      
      os_create_task (CLOCK_RUN);      
      os_create_task (SCORE_DISPLAY);              
      os_create_task (KEY_SCAN);
      os_create_task (KEY_DEAL);
      os_create_task (CLOCK_ALARM);  
	  os_delete_task (INIT);
 }


void job1 (void) _task_ CLOCK_RUN
{   
             
    while(1)
    {
		 if(pausesta==1)
		 {	
    	 	os_wait (K_IVL,92,0);
 
		 	 Clock.second -- ;    	 
	     	if(Clock.second==0xff)
	     	{
	            Clock.second = 59 ;
	            Clock.minute --;
				if(Clock.minute==0xff)
				   Clock.minute=99;
			 }
			if((Clock.second<=10)&&(Clock.minute==00))
				beepsta = 1;
			else 
				beepsta = 0;
		 }
		 else 
		    os_wait(K_IVL,20,0);
	 }
}



 void job2 (void) _task_  SCORE_DISPLAY
{                  
  uchar i,j;
  while(1)
     {
    	   buf[0] = 0xf4; 	    		 
    	   buf[1] = numcode[Score.hscore/100];
	       buf[2] = numcode[(Score.hscore%100)/10];
		   buf[3] = numcode[(Score.hscore%100)%10];
	       buf[4] = 0xb1;
    	   buf[5] = numcode[Score.rscore/100];
	       buf[6] = numcode[(Score.rscore%100)/10];
		   buf[7] = numcode[(Score.rscore%100)%10];

		   buf[8] = numcode[Clock.minute/10];
	       buf[9] = numcode[Clock.minute%10]+0x80;
	       
	       buf[10] = numcode[Clock.second/10];
	       buf[11] = numcode[Clock.second%10];


		   for(i=0;i<=11;i++)
	         {
			 		P1 = buf[i];
		  		    P3 = i;
		  		    for(j=0;j<20;j++)
		  		            ;
		  		    P1 = 0x00;

			 }  
     }
}   

 void job3 (void) _task_  KEY_SCAN

{	   
	while(1)
	 {
	     os_wait (K_IVL,10,0);
	     if(DA==1)
		 {
	       	 keyvalue = P0&0x0f ;
			 os_send_signal(KEY_DEAL);
		 }
      }	      	         	      
}   	      	   	


void job4 (void) _task_  KEY_DEAL
{
	uchar rscorekeep,hscorekeep,aa,ab,ac,ba,bb,bc,dat;
	dat = 0;
	hscorekeep = 0;
	rscorekeep = 0;
	aa = 0;
	ab = 0;
	ac = 0;
	ba = 0;
	bb = 0;
	bc = 0;
   while(1)
   {	   
   			os_wait(K_IVL,10,0);
	        os_wait(K_SIG,0,0);

		if(keyvalue==TEAMCHOSE)
		  {
		   teamsta++;
		   if(teamsta>=3)
		      {
			     teamsta = 0;
			     HLIGHT = 1;
				 RLIGHT = 1;
				 keyvalue = 15;
			  }
		   }
		   
         switch(teamsta)
		   {case 1:	HLIGHT = 0;
		   			RLIGHT = 1;
		   			if(keyvalue==SCOREADD1)
		   			  {
					  		Score.hscore++;
							aa++;
							dat = 1;
							if(Score.hscore>=999)
							  Score.hscore = 000; 
					  }
					if(keyvalue==SCOREADD2)
		   			  {
					  		Score.hscore = Score.hscore+2;
							ab++;
							dat = 2;
							if(Score.hscore>=999)
							  Score.hscore = 000; 
					  }
					if(keyvalue==SCOREADD3)
		   			  {
					  		Score.hscore = Score.hscore+3;
							ac++;
							dat = 3;
							if(Score.hscore>=999)
							  Score.hscore = 000; 
					  }
					if(keyvalue==SCOREDEL)
		   			  {
					  		Score.hscore = Score.hscore-dat;
							if(dat==1)
								aa--;
							if(dat==2)
								ab--;
							if(dat==3)
								ac--;
							dat = 0;
							if(Score.hscore==0xff)
							  Score.hscore = 000; 
					  }
					break;
			  case 2:RLIGHT = 0;
			  		 HLIGHT = 1;
			        if(keyvalue==SCOREADD1)
		   			  {
					  		Score.rscore++;
							ba++;
							dat = 1;
							if(Score.rscore>=999)
							  Score.rscore = 000; 
					  }
					if(keyvalue==SCOREADD2)
		   			  {
					  		Score.rscore = Score.rscore+2;
							bb++;
							dat = 2;
							if(Score.rscore>=999)
							  Score.rscore = 000; 
					  }
					if(keyvalue==SCOREADD3)
		   			  {
					  		Score.rscore = Score.rscore+3;
							bc++;
							dat = 3;
							if(Score.rscore>=999)
							  Score.rscore = 000; 
					  }
					if(keyvalue==SCOREDEL)
		   			  {
					  		Score.rscore=Score.rscore-dat;
							if(dat==1)
								ba--;
							if(dat==2)
								bb--;
							if(dat==3)
								bc--;
							dat = 0;
							if(Score.rscore==0xff)
							  Score.rscore = 000; 
					  }
					break;
		   }
		  

		 if(keyvalue==BREAKKEY)
		    {
                pausesta=~pausesta;	
			}

		 if(keyvalue==TIMEMODE)
		  {
		  		timesta++;
		        if(timesta>=3)
		      	{	
					timesta  = 0;
					pausesta = 1;
					MINLIGHT = 1;
					SECLIGHT = 1;
					keyvalue = 15;
				}
		   }
		   
          switch(timesta)
				{case 1: MINLIGHT = 1;
					     SECLIGHT = 0;
						 pausesta = 0;
						if(keyvalue==TIMEUP)
						   {
						   		Clock.second++;
								if(Clock.second>=60)
									Clock.second=0;
							}
						if(keyvalue==TIMEDOWN)
							{
								Clock.second--;
								if(Clock.second==0xFF)
								Clock.second=59;
							}
						break;
						   
				  case 2:MINLIGHT = 0;
						 SECLIGHT = 1;
						 pausesta = 0;
				  		 if(keyvalue==TIMEUP)
						   {
						   		Clock.minute++;
								if(Clock.minute>=100)
									Clock.minute=0;
							}
						 if(keyvalue==TIMEDOWN)
							{
								Clock.minute--;
								if(Clock.minute==0xFF)
								Clock.minute=99;
							}
					     break;
				}
		  if(keyvalue==NUMCOUNT)
		  {
		  
		    numsta++;
		    if(numsta==1)
		     {
		   		hscorekeep = Score.hscore;
				rscorekeep = Score.rscore;
		     }
		    if(numsta>=3)
		      {
			     numsta = 0;
			     HLIGHT = 1;
				 RLIGHT = 1;
				 keyvalue = 15;
				 Score.hscore = hscorekeep;
				 Score.rscore = rscorekeep;
			  }
		   
		  }
		  switch(numsta)
		  {case 1:HLIGHT = 0;
		  		  RLIGHT = 1;
				  if(keyvalue==SCOREADD1)
				  {
				  	  Score.hscore = aa;
				  }
				  if(keyvalue==SCOREADD2)
				  {
				  	  Score.hscore = ab;
				  }
				  if(keyvalue==SCOREADD3)
				  {
				  	  Score.hscore = ac;
				  }
				  break;
		   case 2:HLIGHT = 1;
		  		  RLIGHT = 0;
				  if(keyvalue==SCOREADD1)
				  {
				  	  Score.rscore = ba;
				  }
				  if(keyvalue==SCOREADD2)
				  {
				  	  Score.rscore = bb;
				  }
				  if(keyvalue==SCOREADD3)
				  {
				  	  Score.rscore = bc;
				  }
				  break;
		  }
		 if(keyvalue==SCORECLR)
		 {
		 	Score.hscore = 000;
			Score.rscore = 000;
		 }
		 if(keyvalue==TIMESET)
		  {
		  	Clock.minute = 48;
			Clock.second = 00;
		  }
     }
}  	     


void job5 (void) _task_	CLOCK_ALARM
{

	while(1)
	{
		os_wait (K_IVL,10,0);
		while(beepsta == 1)
		{
			BEEP = 0;
			os_wait (K_IVL,100,0);
			BEEP = 1;
			os_wait (K_IVL,100,0);
		 }
	}	   
}

⌨️ 快捷键说明

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