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

📄 3.c

📁 Lap Proteus use simuretion
💻 C
字号:
#include<reg51.h>	        
sbit c1 = P2^3;           
sbit c2 = P2^2;	
sbit c3 = P2^1;		
sbit r1 = P2^4;		
sbit r2 = P2^5;	
sbit r3 = P2^6;		
sbit r4 = P2^7;
void Enter (void);
void SUM_ (void);
int i,ii,a;
int w,x,y,z,A1,A2,w1,x1,y1,z1;
unsigned int L,L1,L2,L3,L4,L5,L6;
unsigned int Sum,O,V,Q,R,S,T;
void  show( void);
void Shift (void);
unsigned char Patturn [] = {0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90,0xf0};
unsigned char Buffer1[4];
unsigned char Buffer2[4];
unsigned char key;
bit PP,PP1;	  
void delay_db(int time)
{
	do		
	{
	 time--;                
	}while(time>0);     
}

unsigned char scankey(void) 
{
  	unsigned char ret = 0xFF;		
	c1 = 0;                   	 	
	if(r1==0)	
  	{ 
      		delay_db(30000);        	          
		ret = 0x01;           	
	}                    
	if(r2==0)			
	{
		delay_db(30000);
		ret = 0x04;		
	}					
	if(r3==0)			
	{							
		delay_db(30000); 
		ret = 0x07;		
	} 
	if(r4==0)			
	{							
		delay_db(30000); 
		ret = 0x11;  //*+++++		
	} 	
	
	 c1 = 1;

 //------------------------------------------------//
   	                    
	c2 = 0;				
	if(r1==0)			
	{
		delay_db(30000);   								
		ret = 0x02;		
	}							
	if(r2==0)			
	{
		delay_db(30000);  
		ret = 0x05;		
	}							
	if(r3==0)			
	{
		delay_db(30000);  	
		ret = 0x08;             
	}							
	if(r4==0)		
	{
		delay_db(30000);  		  	
  		ret = 0x00;	
	}
	c2 = 1;
			
//----------------------------------------//						
	c3 = 0;				
	if(r1==0)			
	{
		delay_db(30000);   	
		ret = 0x03;          		
	}							
	if(r2==0)			
	{
		delay_db(30000);   	
		ret = 0x06;	
	}					
	if(r3==0)			
	{
		delay_db(30000);   	
		ret = 0x09;		
	}
	if(r4==0)			
	{
		delay_db(30000);   	
		ret = 0x12;	 //#======	
	}
									
	c3 = 1;			
  	return(ret);			
}

/*************************** Main loop **************************/

void main(void)     
{ 	
	Buffer1[4]=0;
	Buffer1[3]=0;
	Buffer1[2]=0;
	Buffer1[1]=0;
     		
	while(1) 
	{
  	 
			key = scankey();		
		 	if( key != 0xff)
		{	 
			if( key != 0x11&&key!=0x12&&PP==0)
		   {
			i++;
		    
			//if(i<=4)
			//Buffer1[i]=key;

			if (i>=1) 
			{	
			//i=4;
			Shift ();	 
			Buffer1[1]=key;	 	
			}
		   }
			if( key == 0x11)	//*+
			{
		   	  SUM_();
			  PP=1;
			  
			} 
			
		 
		    if( key == 0x12)	//#==
			{
		  	Enter();
			}	
//------------------------------------		
			if( key != 0x11&&key!=0x12&&PP==1)  //Prees again	No * ,NO #
			{	
				 if(PP1==1)
				 {
					Buffer1[4]=0;
					Buffer1[3]=0;
					Buffer1[2]=0;
					Buffer1[1]=0;
					
				 }
				 
				 
			   {
				 
				PP1=0;
			   	ii++;
		    
			//if(ii<=4)
			
			//Buffer1[ii]=key;
			 
			if (ii>=1) 
			{	
			//ii=4;
			Shift ();	 
			Buffer1[1]=key;	 	
			}
		
			   }
		   }
		}  
			   
		 show ();
	  }
		  
 	}
 

 
/***********************************************************************************************************************/
void Enter (void)	//#==
 {
			
		
			w1 = Buffer1[4];
			x1 = Buffer1[3];
			y1 = Buffer1[2];
			z1 = Buffer1[1];
		
			w1=w1*1000;
			x1=x1*100;
			y1=y1*10;
			z1=z1*1;
		
			A2=(w1+x1+y1+z1);

			Sum=(A1*A2);
			if (Sum >= 10000)
			  {
			  
			  	L=Sum/1000;	// 21.338 	
				L1=L%10;		//2.1
				L2=Sum%1000;	//338
				L3=L2/100;		 //3.38
				L4=L2%100;		 //38
				L5=L4/10;		 //3.8
			  	L6=L4%10;  	     //8
				
		
				Buffer1[4]=L1;
				Buffer1[3]=L3;
				Buffer1[2]=L5;
				Buffer1[1]=L6;


			  }
			if (Sum <= 9999)
			{
			O=Sum/1000;	   //1234/1000=1			 0
			V=Sum%1000;	   //1234/1000=234			  018
			Q=V/100;	   //234/100=2				  0
			R=V%100;	   //234/100=34				   18
			S=R/10;		   //34/10=3				   1
			T=R%10;			//34/10=4					8
			




			Buffer1[4]=O;
			Buffer1[3]=Q;
			Buffer1[2]=S;
			Buffer1[1]=T;
			
			}
	}  
void SUM_ (void) 	  //*++
{		
		
		w = Buffer1[4];
		x = Buffer1[3];
		y = Buffer1[2];
		z = Buffer1[1];
		w=w*1000;
		x=x*100;
		y=y*10;
		z=z*1;
		A1=(w+x+y+z);
		PP1=1;
					
}
void Shift (void)
{
  	

		 Buffer2[1]= Buffer1[1];
		 Buffer2[2]= Buffer1[2];
		 Buffer2[3]= Buffer1[3];
		 Buffer2[4]= Buffer1[4];
	   //--------------------

		 Buffer1[2]= Buffer2[1];
		 Buffer1[3]= Buffer2[2];
		 Buffer1[4]= Buffer2[3];

}  

void  show( void)
{		
		 
		
		P0 = Patturn[Buffer1 [1]]|0x0E;
		delay_db(25); 		
		P0 = Patturn[Buffer1 [2]]|0x0d;
		delay_db(25);	
		P0 = Patturn[Buffer1 [3]]|0x0b;
		delay_db(25); 		
		P0 = Patturn[Buffer1 [4]]|0x07;
		delay_db(25);
		

}



⌨️ 快捷键说明

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