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

📄 chendp.c

📁 工控计数器ICCAVR的MAGE8程序LED数码显示+4键
💻 C
📖 第 1 页 / 共 2 页
字号:
													                }
													             else   goto  menu2;
													             case   set3s:
							                                     return ;
												                 }
															  }
										                 break;
						                                 case    down:
										                 if(fbit==2)
										                   {
							                                if(intm_m==0)  intm_m++;
							                                else              intm_m=0;
										                   }
						                                 break;
							                            case    up:
										                if(fbit==2)
										                  {
							                              if(in_m<2)       in_m++;
							                              else               in_m=0;
										                  }
						                                break;
										                case    left:
										                fbit=2;
										                break;
										                case   set3s:
							                            return ;
							                            }
												     }
												   }
												}					
						                break;
										case   up:
										if(fbit==2)
										  {    if(cbit!=3)   {   if(p[cbit]<9) p[cbit]++;
													                  else              p[cbit]=0;  }
												else            { if(p[cbit]==0) p[cbit]=1;
														                 else             p[cbit]=0;}
										  }
										break;
										case    down:
										if(fbit==2)         
										 {   if(cbit!=3)     {   if(p[cbit]>0)   p[cbit]--;
													                  else              p[cbit]=9;  }
											 else               { if(p[cbit]==0) p[cbit]=1;
														              else              p[cbit]=0;  }
										  }
									    break;
										case    left:
										fbit=2;
										if(cbit<3) cbit++;
										else          cbit=0;
										if(p[cbit]==10)            p[cbit]=0;
										break;
										case   set3s:
										goto   menu2;
									    } 
							         }	
								  }  
							   }   
		                      else {if(tdbit<2) tdbit++;
							          else       tdbit=0;}		  
							}	
							break;
						    case    up:
							if(fbit==2)
							{     if(cbit==1)    p[cbit]-=25;   
							      if(p[cbit]<9) p[cbit]++;
							      else               p[cbit]=0;
							      if(cbit==1)    p[cbit]+=25; }
							break;
							case    down:
							if(fbit==2)
							{      if(cbit==1)    p[cbit]-=25; 
							        if(p[cbit]>0) p[cbit]--;
							        else               p[cbit]=9;
							        if(cbit==1)    p[cbit]+=25; }
							break;
							case    left:
							fbit=2;
							if(cbit<1) cbit++;
							else          cbit=0;
							break;
							case   set3s:
							return ;
					        }
					 }//----------------------------------------2-2-2-2--
		        }
			 else {if(tdbit<2) tdbit++;
		              else          tdbit=0;}
			}
			break;
			case    up:
			if(fbit==2)
			{      if(p[cbit]<9) p[cbit]++;
			        else             p[cbit]=0;}
			break;
			case    down:
			if(fbit==2)
			{        if(p[cbit]>0) p[cbit]--;
			          else            p[cbit]=9;}
			break;
			case    left:
			fbit=2;
			if(cbit<5) cbit++;
			else          cbit=0;
			break;
			}
	 }
	break;
	case   down:
    int_clr();
	break;
}  
menu_end:        return;                                                                            
}                 
//--------------------------------------------------------------------------------------------------------------------------------------------------
void   sanddata_display(long  i,  long  j, unsigned char k )
{                     // ---------------------------------------------               
	   unsigned char      v=0;
	   unsigned char    m=0;
	   if(k==0) m=1; v=1;
	   if(k==1) m=1; 
	   if(k==2)   v=1;
	   process(j,p,m);
	   process(i,o,v);
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------		  
void   sandcnd_display(unsigned  char  *q,  long  j, unsigned char y )
{
  process(j,p,y);
  o=q;
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
void   sandchar_display(unsigned  char  *q,  unsigned char  *w)
{
o=q;
p=w;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------   
char   display_flash (unsigned char  ed,unsigned char  g, unsigned char  c)
{
      unsigned char  a,b,d,keydata=0;
      unsigned char   *x,*f;
	  x=p;
	  f=o;
	  b=p[g];
	  for (d=0;d<2;d++) 
		     {
			      ed=~ed;
			      switch (ed)
			      {
			       case   2:      p[g]=10;              break;
				   case   3:      p=v; o=v;             break;
				  }
				  for (a=0;a<c;a++) 
				  {
				   display();
		           if((PINB&0XF0)!=0xf0) goto  end_d;
			      }
				 p[g]=b;	
		         p=x;
                 o=f;	 
			 }				
end_d:  keydata=GetKey() ;  
                 p[g]=b;	
                 p=dhitemp;
                 o=dlotemp; 
	       
        return keydata;
}
 //------------------------------------------------------------------------------------------------------------
 void cntplay(void)
 {
 long  posstep;
 posstep=Contdata;
 posstep*= scldata[0];
 tempcnt= posstep/scldata[1];
 if( tempcnt>=1000000)   {tempcnt=0;  Contdata=0;}
 if( tempcnt<=-100000)    { tempcnt=0;  Contdata=0;}
  process(tempcnt,o,1);
  process(timeset[tbit],p,0);
  display();
  }
  
//-------------------------------------------------------------------------------------------------------------
void display (void)  //--------------------------------------------------------------------
{   
    unsigned  char  oda,pda,bda,cx,cz,bi,bitda=0x01;
	for(bi=0;bi<3;bi++)
	{ 
	 if(kt[bi]==1){
	                    if(ticnt>=ti[bi])  {if( (ticnt-ti[bi])/10>=trdata_x[bi] )                   { PORTC&=~BIT(bi);  kt[bi]=3;}}	
						else                    {if( (60000+ticnt-ti[bi])/100>=trdata_x[bi] )  { PORTC&=~BIT(bi);  kt[bi]=3;}}
						  }	
	     if(trdata_x[bi]==0)          kt[bi]=1;					  
	}					  					
	 if( resettemp==2)            { if(kt[0]*kt[1]*kt[2]==1)             Contdata=0;}
	 for(bi=0;bi<3;bi++)
	  {
	  if(trdata_x[bi]==0)            kt[bi]=3;
      }
     if( resettemp>=1) 		      { if((kt[0]+kt[1]+kt[2])==9)           int_clr();}		
	 PORTC&=~BIT(cp);
	 for(cz=0;cz<7;cz++)
	 {
	   
	   oda=table[p[cz]];
	   pda=table[o[cz]]; 
	   bda=bitda; 	
	   for(cx=0;cx<24;cx++)
	   {
	   delay_nus(1);
	   PORTC&=~BIT(sh_cp);
       if(cx<8){
                if( oda&0x80)    PORTC|= BIT(ds);
                else             PORTC&=~BIT(ds);
		        oda<<=1;
				}
	   else    {
	            if(cx<16)
				  {
	              if( pda&0x80)    PORTC|= BIT(ds);
                  else             PORTC&=~BIT(ds);
		          pda<<=1;
				  }
				else
				  {
				  if( bda&0x80)    PORTC|= BIT(ds);
                  else             PORTC&=~BIT(ds);
		          bda<<=1;
				  }    
				}
	   PORTC|= BIT(sh_cp);
       }
	   delay_nus(1);   
	   PORTC|=BIT(cp);
	   delay_nus(1);
	   PORTC&=~BIT(cp);
	   bitda<<=1;
	   WDR(); 
	   delay_nus(500);
	   
	 } 
}
//----------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------
char GetKey(void)     //-------------------------------------------------------------                                  
{         
    unsigned char c,e,f,u = 0;
	c=0;  f=0;
    if((PINB&0XF0)!=0xf0)
          {
		  e = (PINB&0XF0);
		  display();
   	      if(e==(PINB&0XF0) )  
		                                       { 
						   loopkey:     display();
						                        c++;
											   if(c>10) 
											                      {
																   if(c==100)   {
																                            e = (PINB&0XF0);
																                            e++; 
														s3loop: 					 display();
														                                    u++;
														                                    if (u>20)  
																							{
																							   for(u=0;u<80;u++)
																							                                  {
																															     p=so_1;
																							                                    display();
																																}   
																							   p=dhitemp;                      
																							   return e;  
																							 }                                             
																							if((PINB&0XF0)==0xf0 )   return e;
																							else                               goto  s3loop;
																							}
																   if ((PINB&0XF0)==set) goto loopkey;
																   if ((PINB&0XF0)==left) goto loopkey;
																   if ((PINB&0XF0)==0xa0) goto loopkey;
																   if ((PINB&0XF0)==0x60) goto loopkey;
											                       return e;
																   }
										       if((PINB&0XF0)==0xf0 )   return e;
											   else                             	goto loopkey;
											   }											     
          }    
return f;
}
//----------------------------------------------------------------------------------------------------------------
void process(long i,unsigned char *p,unsigned char z)//---------------------------------
{  
     long    j=100000;
     long   x;
     unsigned char cv,s=5;
	 if(i<0)  { i*=-1;        cv=1;}
	 else                 cv=0;
     x=i;
repro:	
    if(s!=0)
    {
	p[s]=i/j;
	if(x<j)   {if(cv==0) p[s]=10;
	                else     {  if(s>pontdata) p[s]=12; } }
	i%=j;     j/=10;     s--;
	WDR(); 
	goto repro;
	}
	else p[s]=i;
	if(z==1)
	{//----------------------
	 if(p[pontdata] != 10 )  { if(pontdata!=0)  p[pontdata]+=25;}
	 else
	     {
		   if(pontdata>0)
		      { 
		         s=pontdata;
possreb:   if(p[s]==10)
		            {
		               p[s]=0;    s--;
			           if(s!=0)   goto possreb;
	                }
				 p[pontdata]+=25;
			  }
		 }
	 if(pontdata==5) {if(cv!=0) p[5]=55 ;} 	 
    }
}
//-------------------------------------------------------------------------------------------------------------------
long  process_add(void)
{
long               timeposs=0;
 if(p[5]<10)   timeposs+= (p[5]*100000);
if(p[4]<10)   timeposs+= (p[4]*100000/10);
if(p[3]<10)   timeposs+= (p[3]*1000);
if(p[2]<10)   timeposs+= (p[2]*100);
if(p[1]<10)   timeposs+= (p[1]*10);
if(p[0]<10)   timeposs+= p[0];
return           timeposs;
}
											 
			
										
															  
							

⌨️ 快捷键说明

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