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

📄 复件 computer2.c

📁 AT89S52串口多字节接收,可以接收任意字节.
💻 C
📖 第 1 页 / 共 3 页
字号:
 {         
	  Max192(0, 23, 5);
      if (send_kpa) { send_kpa = 0; TXD_pc(0); }
	  if (Adend > 900) continue;
	  if (Adend < 120) {if (Speed_V != 1) {TXD_c(5); Speed_V = 1;} goto ZL1; } 
	  if (Adend < 260) {if (Speed_V != 2) {TXD_c(6); Speed_V = 2;} goto ZL1; }
	  	    else 
			{ 
			       DJ_run = 0; TR0 = 0; ET0 = 0; TXD_c(3); P_max = Adend;
                   TXD_pc(0);
		  	       do
				   { 
				         i = RXD_c();
                         if (i==5 || i==7) TXD_pc(i);
		                 if (RS_input) 
                         {
						       RS_input = 0; 
			                   if  (RS_buf[0] == 5) break;
							   if  (RS_buf[0] == 7) goto ZL4;
			             }		    
	               }while(1); 
			       over = 0; TXD_c(14);       /*手动处理*/
                   sa_v = V_ml;
              ZL3:   
			       do
				   { 
                          if (i == 3) 
					      {
					              if (DJ_run == 0) { TXD_c(2); DJ_run = 1; } 
								  TR0 = 1; ET0 = 1;
				                  Max192(0, 21, 5);
								  if (C_run)
							      {  
								            TXD_pc(0x0a); C_run = 0;
											Disp_2(Adend / 3);
											Display(21, 7, 3, 5, V_ml, 1);
								  }
								  if (V_ml >= 100) 
								  {         
								            TXD_c(3); TXD_c(13);
								            for (i=0; i<0xff; i++) RXD_c();
								            DJ_run = 0; TR0 = 0; 
											ET0 = 0; over = 1;
                                            goto ZL4;
								  }
                                 
						  }
					      i = RXD_c();
                   	      if (RS_input)
						  {
						          RS_input = 0;
					              if (RS_buf[0] == 7) i = 7;
						  }
                          if (i == 7) { over = 1; TXD_c(13); break; }
                   } while (i == 5);
                   TR0 = 0; ET0 = 0;
				   if (DJ_run) { TXD_c(3); DJ_run = 0; }
                   if (over)
				   {
				          V_ml=sa_v;
				          for (i=0; i<0xff; i++) { _nop_();_nop_();RXD_c(); }
						  goto ZL4;
				   }
                    goto ZL3;
			}

ZL1:  
      if (P_max < Adend) P_max = Adend;  
      if (C_run) 
	  {
	         C_run=0;
			 TXD_pc(0x0a);
	         Disp_2(Adend/3);
			 if (over==0) Display(23,7,3,5,V_ml,1);
	         if (V_ml>=100) 
			 {
			       DJ_run = 0; TR0 = 0; 
				   ET0 = 0; TXD_c(3);
			       over = 1;
                   goto ZL4;
             }
      }
      if (RS_input) 
      {
	         RS_input = 0; 
			 switch (RS_buf[0]) 
			 {
			           case 5: break;
					   case 6:
					   {
					           if (DJ_run) { DJ_run = 0; TR0 = 0; ET0 = 0; TXD_c(3); continue; }
	                           DJ_run = 1;TR0 = 1; ET0 = 1; 
							   TXD_c(2);
					   } break;
					   case 7:  goto ZL5;
					   default: break;
			 }
       }
       if (DJ_run) 
	   {    
		       if (Paus == 0) 
			   { 
			       if (pause == 0) {pause = 1;TR0 = 0;ET0 = 0;TXD_c(3);}
               }
                   else 
				   {   
				        if (pause) {pause = 0;TR0 = 1;ET0 = 1;TXD_c(2);}
				   }
	   }
       i = RXD_c();
       if (i==6 ||i ==7) TXD_pc(i);

 } while (1);
ZL5:
      TXD_c(3); DJ_run = 0; TR0 = 0; ET0 = 0;
	  do
	  { 
	         i=RXD_c();
             if (i==5 || i==7) TXD_pc(i);
		     if (RS_input) 
             { 
			        RS_input = 0; 
			        switch (RS_buf[0])
				    {
			             case 5: goto ZL4;
					     case 7: 
						 { 
						         TXD_c(2); DJ_run = 1; 
								 TR0 = 1; ET0 = 1;
							     goto ZL1; 
						 }break;
				    }
             }		    
	  } while(1); 
ZL4:   
   	  do 
	  {  
	          i = RXD_c();
              if (i == 5) TXD_pc(i);
	  } while (!RS_input);
	  RS_input = 0;
      if (RS_buf[0] != 5) goto ZL4;
}
/**************************************/
/**************测量宫容****************/
/**************************************/
void GL()
{ 
      uchar i;
      uchar *p;   
      bit over, pause = 0;

      zs=0; over = 0;
	  Link(15, 220, 300, 0);
	  Link(15, 60, 160, 1);
      DOT_s(16, 12, 94, 32, 0);
	  p = &DRAG_1[menu][0];
	  p = TXT1;
	  CW_PR(1, 6, p);
	  Display(4, 5, 0, 4, 260, 1);
	  Display(4, 7, 1, 5, 150, 1);
 do
 { 
	  Max192(0, 23, 5);
	  if (Adend > 900) continue;
	  if (Adend < 120) { if (Speed_V != 1) { TXD_c(5); Speed_V=1; } goto GL1; } 
	  if (Adend < 260) { if (Speed_V != 2) { TXD_c(6); Speed_V=2; } goto GL1; }
	         else { P_max = Adend; goto GL2; }

GL1:  if (P_max < Adend) P_max=Adend;  
      if (C_run) 
	  {
	          C_run = 0;
	          Disp_2(Adend / 3);
			  if (over == 0) Display(23, 7, 3, 5, V_ml, 1);
              if (V_ml >= 150)
			  {
			   GL2:   DJ_run = 0; TR0 = 0; ET0 = 0; 
			          TXD_c(3); over = 1;
				      p = &string5[0][0];
                      Display(29, 3, 4, 5, V_ml, 1);
                      do { i = RXD_c(); } while (i == 0);
                      goto GL4;
			  }
	  }
      if (DJ_run) 
	  {    
		       if (Paus == 0) 
			   { 
			       if (pause == 0) {pause = 1;TR0 = 0;ET0 = 0;TXD_c(3);}
               }
                   else 
				   {   
				        if (pause) {pause = 0;TR0 = 1;ET0 = 1;TXD_c(2);}
				   }
	  }
      i = RXD_c();
      if (i == 4) 
	  {
	        if (DJ_run == 1)
		    { 
			     DJ_run = 0; TR0 = 0; 
				 ET0 = 0; TXD_c(3); 
				 continue; 
			}
	        DJ_run = 1; TR0 = 1; ET0 = 1; TXD_c(2);
	  }
 } while (i != 5);

      TXD_c(3); DJ_run = 0; TR0 = 0; ET0 = 0;
	  do
	  {    
	       i = RXD_c();
           if (i == 5) { TXD_c(2); DJ_run=1; TR0=1; ET0=1; goto GL1; }
		   if (i == 3) break;		  
				    
	  } while (1); 
GL4:    
	  do { i = RXD_c(); } while (!(i==3 || i==5));
	  if (i == 3) 
	  { 
	   		 do { i = RXD_c(); }while (i == 0);
      }
}
/*********************************/
/*************扩宫****************/
/*********************************/
void KG()
{   
      uchar i, b;
      uchar *p;   
      bit over, pause = 0;
    
      P_max = 450; b = 0;
      zs = 0; over = 0;
	  Link(15, 220, 300, 0);
	  Link(15, 60, 160, 1);
      DOT_s(16, 12, 94, 32, 0);
	  p = &DRAG_1[menu][0];
	  p = TXT1;
	  CW_PR(1, 6, p);
	  Display(4, 5, 0, 4, P_max, 1);
	  Display(4, 7, 1, 5, 150, 1);
	  DJ_back = 0;
      do
      { 
             Display(4, 5, 0, 4, P_max, 1);  
             Max192(0, 23, 5);
	         if (Adend > 900) continue;
  	         if (Adend < P_max) 
	         { 
	                   if (Speed_V != 2) { TXD_c(6); Speed_V = 2; } 
	         }
	             else            /* 压力大了,电机后退 */
	         { 
		               if ( DJ_back==False ) 
				       {
					           if (V_ml < 1) goto KG4;
					           DJ_back = 1; TXD_c(1);
                       }
             }
KG1:  
             if (C_run)
	         {
	                   C_run = 0;
	                   if (DJ_back == 1) 
		               { 
		                      if (b >= 10) {DJ_back=0;TXD_c(2);b++;} else b++;
				              if (V_ml == 0) {DJ_back=0;TXD_c(2);b++;}
		               }
                             else
					   {  
					          if (b>0) b--; 
					   }

	                  if (DJ_back==0 && b==0) Disp_2(Adend / 3);
	                  if (over == 0) Display(23, 7, 3, 5, V_ml, 1);
                      if (V_ml >= 150) 
		              {
			                  DJ_run=0; TR0=0; ET0=0; TXD_c(3); over=1;
				              do { i=RXD_c(); }while (i == 0);
                              goto KG4;
		              }
	         }
             if (DJ_run) 
	         {    
		            if (Paus == 0) 
			        { 
			               if (pause == 0) {pause = 1;TR0 = 0;ET0 = 0;TXD_c(3);}
                    }
                        else 
				    {   
				           if (pause) {pause = 0;TR0 = 1;ET0 = 1;TXD_c(2);}
				    }
	         }
             i = RXD_c();
             if (i == 4) 
	         {
	               if (DJ_run == 1) { DJ_run=0; TR0=0; ET0=0; TXD_c(3); continue; }
	               DJ_run=1; TR0=1; ET0=1; TXD_c(2);
	         }
             if (i == 1) { if (P_max < 500) P_max += 10; }
	         if (i == 2) { if (P_max > 260) P_max -= 10; }
      }while( i != 5);
      TXD_c(3); DJ_run = 0; TR0 = 0; ET0 = 0;
	  do
	  {    
	        i = RXD_c();
            if (i == 5) { TXD_c(2);DJ_run=1;TR0=1;ET0=1;goto KG1; }
		    if (i == 3) break;		  
				    
	  }while (1); 
KG4:     
	  do { i = RXD_c(); }while (!(i==3 || i==5));
	  if (i == 3) 
	  {
		     do { i=RXD_c(); }while (i == 0);
	  }
}
/***************************************/
/**************画压力曲线***************/
/***************************************/
void Disp_2(uchar ad)
{ 
       uchar i,j,save_x;
       uchar *p;
       uchar xdata *mem;
                  j = 219-ad;
				  i = V_ml; i--;
	              mem = &M8155;
                  mem = mem + i;
				  *mem = ad;
                  save_x = 15 + V_ml;
                  if (V_ml == 1) save_y = j;
	              if (save_y > j)           /* 画上线 */
                  {      
				         for (i=0; i<=save_y-j; i++) W_DOT(save_x, save_y-i);
				  }
				  if (save_y < j)          /* 画下线 */
                  {
				         for (i=0; i<=j-save_y; i++) W_DOT(save_x, save_y+i);
			      }
				  
	              W_DOT(save_x, j);
				  save_y = j;
	              p = &string5[zs][0];
				  if (zs >= 4) zs = 0;  else zs++;
}
/****************************************************/
/********************输液量显示**********************/
/****************************************************/
void Display(uchar o_x,uchar o_y,uchar id,uchar id1,uint x,bit open)
{ 
  uchar *p;
  uchar i;
      p = M_D.list;
	  if (id==4 || id==5) i = 3; else i = 8;
	  strcpy(p, str_3[id]);
	  p = &M_D.list[i-3];
	  sprintf(p, "%u", x);
      if (x <= 9) 
	  {
	          M_D.list[i] = M_D.list[i-3];
			  M_D.list[i-1] = 0x2e;
			  M_D.list[i-2] = 0x30;
			  M_D.list[i-3] = 0x30;
			  goto Disp_1;
	  }
      if (x <= 99)
	  {
	          M_D.list[i] = M_D.list[i-2];
			  M_D.list[i-1] = 0x2e;
			  M_D.list[i-2] = M_D.list[i-3];
			  M_D.list[i-3] = 0x30;
			  goto Disp_1;
	  }
         else  { M_D.list[i] = M_D.list[i-1]; M_D.list[i-1] = 0x2e; }
Disp_1:
      p = &M_D.list[i+1]; strcpy(p, str_3[id1]);
	  M_D.list[i+4] = 0xff;
      p = M_D.list;
	  if (open) CW_PR(o_x, o_y, p);
}

/***************MAX192********************/
void Max192(uchar i,uchar o_x,uchar o_y)
{
    uchar j,k;
  
      k = i;
      for (j=0; j<=3; j++)
      {    
	        AD = k;
            io_clock = 0;
            data_in = 0;
            io_cs = 0;
            AD <<= 4;
            AD |= 0x8e;
            for (i=0; i<8;i++)
			{
			     data_in = AD_7;_nop_();_nop_();_nop_();
                 io_clock = 1;  _nop_();_nop_();_nop_();
	             io_clock = 0;  _nop_();_nop_();_nop_();
                 AD <<= 1;
			}
            _nop_(); _nop_(); io_cs = 1;
            AD = 0;
            for (i=0; i<=32; i++) {;};

⌨️ 快捷键说明

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