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

📄 ad_92201.c

📁 刚学时编的小程序
💻 C
字号:
                   #include <AT89X51.H>
				   #include<intrins.h>
                   #include<absacc.h>
                   #define uchar unsigned char
                   #define ulong unsigned long 
                   #define uint  unsigned int
                   unsigned char code dispcode[]={	0x3f,0x06,0x5b,0x4f,			         
													0x66,0x6d,0x7d,0x07,
													0x7f,0x6f,0x77,0x7c,
													0x39,0x5e,0x79,0x71,
													0x40,0x00,0xbf,0x86,
													0xdb,0xcf,0xe6,0xed,
													0xfd,0x87,0xff,0xf};
				  //unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};                  
                   sbit clk=P2^1;
                   sbit din=P2^0;
				   sbit k0=P2^4;
				   sbit k1=P2^5;
				   sbit k2=P2^6;
				   sbit k3=P2^7;
				   sbit ACC_7=ACC^7;
				   sbit adclk=P3^2;
				   bit  flag,k4=1;				   
			       uchar  n,h,j;
				   uint q,i,temp,sum;
				   float m;
				   uchar zhongliang[8],k;
				   uint s_dat[10];
                   uchar shijian[8]={0,0,16,0,0,16,0,0};
				   uchar lu,x,y,cuo=0,hour1,w=0,m1=0,n;                     //定义相关变量
   				   int i1;
				   uchar dis;
				   char second;
				   char minite;
				   char hour;
				   uint tcnt,tcnt2;
				   uchar ms,a=0,c;				   
                   
				   jizhong()
				   	{  
						a=1;				      					 					 
					  	for(;;)
					  	{
					    	 for(j=0;j<10;j++)
						 	{
						  		adclk=0;
						   		adclk=1;
						   		_nop_();
						   		_nop_();
						 		 // _nop_();
						   		adclk=0;
						   		P1=0xff;
						   		n=P1;                           
						   		P0=0xff;
						   		h=P0;
						   		h=_cror_(h,4);
						   		h=h&0x0f;
						  		s_dat[j]=n*16+h;
							 }
						 	for(;;)
						  	{
						    	flag=1;
						    	for(j=0;j<9;j++)                             
								{
								   if(s_dat[j]>s_dat[j+1])
							    	{ 
								 		temp=s_dat[j];
								  		s_dat[j]=s_dat[j+1];
								  		s_dat[j+1]=temp;
								  		flag=0;
							    	}
									if(_testbit_(flag))
							  		break;
								}
						 	 }
                          	for(j=1;j<9;j++)
						  	sum+=s_dat[j];
 						  	m=sum/8;
						  	m=m/4095;
						  	sum=(uint)(m*200000);                     	  						  
	                      	zhongliang[0]=16;
						  	zhongliang[1]=16;
	                      	zhongliang[2]=16; 						 
	                      	q=10000;
	                        for(i=3;i<7;i++)                         
                            { 
								zhongliang[i]=sum/q;
                               	sum%=q;
                               	q/=10;
                             }
						   	zhongliang[7]=sum;								
                        //dis();	
					/*	for(j=0;j<10;j++);
                        for(i=0;i<20000;i++);					
						for(j=0;j<8;j++)
						   { 						   
						     n=dispcode[dat[j]];
							    if(j==5) 
							      n=n+0x80;
                                 for(k=0;k<8;k++)
	                              {
							        ACC=n;
						            din=ACC_7;
								    clk=1;
								    n=_crol_(n,1);
								    clk=0;								
							   }							   
                            }
						for(i=0;i<10000;i++);*/
					  	}
					 				    
					}


					delay(int t)                                                    //延时子程序
					{
						int s,e;
						for(s=0;s<t;s++)
						for(e=0;e<100;e++);
					}

					yijian()                                                        //一键是否按下子程序
					{
						char q=0;
						if(k0==0)
						{
							delay(2);
							if(k0==0)
							{
								q=1;	
								while(1)	if(k0==1)  break;
							}
						}
						return q;
					}

erjian()                                                        //二键是否按下子程序
{
	char q=0;
	if(k1==0)
	{
		delay(2);
		if(k1==0)
		{
			q=1;
			while(1)	if(k1==1)  break;
		}
	}
	return q;
}

sanjian()                                                     //三键是否按下子程序
{
	char q=0;
	if(k2==0)
	{
		delay(2);
		if(k2==0)
		{
			q=1;
			while(1)	if(k2==1)  break;
		}
	}
	return q;
}
tiaoshi()                                                       //调时间子程序 
{	
//	if(w==1)
//	goto loop;
	k4=0;                                                          //停止计时
	for(i1=7;i1>0;i1=i1-3)                                            //对时、分、秒进行循环
	{
		while(1)
		{	
			 if(erjian()==1)                                          //二键按下,加1
			 {
				if(i1==7)                                                //调整时间部分
				{
					  hour++;                                             //小时加1
					  if(hour==24)
					  hour=0;
				}
				if(i1==4)                                                //调整分钟部分
				{
					minite++;                                             //分钟加1
					if(minite==60)
					minite=0;
				}
				if(i1==1)                                                //调整秒钟部分
				{
					second++;                                             //秒加1
					if(second==60)
					second=0;
				}
			 }
			 if(sanjian()==1)                                       //三键按下,减1
			 {
			 	if(i1==7)
				{
					 hour--;
					 if(hour<0)
					 hour=23;
				}
				if(i1==4)
				{
					minite--;
					if(minite<0)
					minite=59;
				}
				if(i1==1)
				{
					second--;
					if(second<0)
					second=59;
				}	
			 }
			if(yijian()==1)		 break;                                 //一键按下,移到下一位
		}
	   	if(yijian()==1)		 break;                                 //跳出循环,显示时间
	}
	k4=1;                                                          //开始计时
//	loop:1;
}	
	 

void main()                                                     //主程序
{
	TMOD=0x42;											                              //初始化
	TH0=0x06;
	TL0=0x06;
	TH1=7192;
	TL1=7192;								
	TR0=1;												
	ET0=1;												
	ET1=1;
	EA=1;	
	while(1)
	{	
		if(yijian()==1)						                                  //一键按下,进入改时间程序
		{
			tiaoshi();
		} 	 
		if(erjian()==1)						                                  //二键按下,进入计重程序
		{
			 jizhong();
		} 
//		if(sanjian()==1)					                                //三键按下,进入改价格程序
//		{
//			gaijia();
//		}
		
	}
} 
 

void t0(void) interrupt 1 using 1						                    //定时器0中断
{
	ms++;
	if(ms==8) 
	{
		ms=0;
		switch(a)                                                   //显示模块开关
		{	
			case 0:	    for(j=0;j<10;j++)
                        for(i=0;i<20000;i++);					
						for(j=0;j<8;j++)
						{ 						   
						    n=dispcode[shijian[j]];							   
                            for(k=0;k<8;k++)
	                        {
							 	ACC=n;
						        din=ACC_7;
								clk=1;
								n=_crol_(n,1);
								clk=0;								
							 }
                         }
                    	break;                                            //显示时间
			case 1: 
 		                for(j=0;j<10;j++)
                        for(i=0;i<20000;i++);					
						for(j=0;j<8;j++)
						{ 						   
						     n=dispcode[zhongliang[j]];
							 if(j==5) 
							 n=n+0x80;
                             for(k=0;k<8;k++)
	                         {
							     ACC=n;
						         din=ACC_7;
							     clk=1;
								 n=_crol_(n,1);
								 clk=0;								
							  }							   
                        }
						break;                //显示重量
			//default: break;
		  }

	}
    if(tcnt==4000)
    {
        tcnt=0;
		if(k4==1) 
        {
			second++;
            if(second==60)
            {
                second=0;
                minite++;
                if(minite==60)
                {
                     minite=0;
                     hour++;
                     if(hour==24)
                     {
                          hour=0;
                     }
                 }
             }
             shijian[0]=second%10;
             shijian[1]=second/10;
             shijian[3]=minite%10;
             shijian[4]=minite/10;
             shijian[6]=hour%10;
             shijian[7]=hour/10;
         }
	}

}



⌨️ 快捷键说明

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