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

📄 main_new_5_test.c

📁 低频电子脉冲治疗仪MCU程序。单片机通过io口发出一定频率的脉冲
💻 C
📖 第 1 页 / 共 3 页
字号:
		//	   }
		   
          }
		  if(func ==1)
		  {
           OUT1 =1;
           while(--i);                           
		   OUT1 = 0;
		   }
		   else if(func ==2)
		   {
		   OUT2 =1;
           while(--i);                           
		   OUT2 = 0;
		   }

		}

		if((COUNT[type] <=high)&&(COUNT[type] >high/2))      //脉冲后半段
	      {
			if(COUNT[type]%temp == 0)     
              {
                //if(intense<10)
                //   i = intense;
		        //else
		       //   {
		        //   i=(intense -(intense/5)*(COUNT[type]/temp));
                //  }
		 
			    }
		   if(func ==1)
		  {
           OUT1 =1;
           while(--i);                           
		   OUT1 = 0;
		   }
		   else if(func ==2)
		   {
		   OUT2 =1;
           while(--i);                           
		   OUT2 = 0;
		   }
		  }
        
        if((COUNT[type] <=t)&&(COUNT[type] >high))    // 低电平
		  {
           if(func ==1)
		      OUT1 = 0;
		   else if(func ==2)
               OUT2 = 0;
		   }
          
}
*/
/***************************************************************************************
                            定时器1中断处理
							作用:每20ms发生一次中断,在中断中输出各种波形
****************************************************************************************/
void Timer1Interrupt() interrupt 3
{
 unchar i,j,k;
// unint  k;
 EA = 0;
 ET1 = 0;
 TH1 = (65536-20000)/256;    //20ms中断一次(38hz)
 TL1 = (65536-20000)%256;
 //COUNT1 ++;
 if((DISP_INTENSE_1 != 0)&&SET_MINUTE)
{
   //强度调整
   INTENSE_1 =(DISP_INTENSE_1*3)/4+1;

   switch(WAVE_TYPE_1)                //第一路输出
     {
	   

//**********************************************************************************************************
// 波形1_1
// 间隔脉冲,间隔一秒,然后是2s的脉冲,脉冲的频率是38hz,脉冲宽度可调
//**********************************************************************************************************
      case 1:                       
 	     //强度调整
		//INTENSE_1 =(DISP_INTENSE_1*3)/4+1;

	   	COUNT1++;
		COUNT1= COUNT1%150;
		i =INTENSE_1;
        if(COUNT1 <100)               //2s的脉冲
          {
           OUT1 =1;
		   while(--i);                //宽度可调的高电平
		   OUT1 =0;
		  }

	    if((COUNT1 >=100)&&(COUNT1 <=150))     //1s 的低电平
		  {
		   OUT1 = 0;
		  }
	   break;

//**********************************************************************************************************
// 波形1_2
//间隔脉冲,间隔40ms,输出20ms的脉冲,最大脉冲频率是3.6khz,脉冲频率可调
//**********************************************************************************************************
	   case 2:                   
	    //强度调整
		//INTENSE_1 =(DISP_INTENSE_1*3)/4+1;

        COUNT2++;
        COUNT2 = COUNT2 %5;
        //TH1 = (65536-12000)/256;    //26ms中断一次(38hz)
        //TL1 = (65536-12000)%256;
        if(COUNT2 != 0)                //12ms低电平
          {
           FLAG2 = 0;
          }
        if(COUNT2 == 0)                //24ms脉冲
          {
           FLAG2 = 1;
          }
		 if(FLAG2 ==0)
		 OUT1 = 0;
		 if(FLAG2 ==1)
		   {
			i = INTENSE_1;
			OUT1 =1;
			 while(--i);
			 OUT1 =0;

		   }
		  break ;
//**********************************************************************************************************
// 波形1_3
//间隔脉冲,间隔2s,输出3秒的脉冲,在3秒内,输出脉冲的频率为38hz,在一个输出脉冲周期内,
//脉冲的宽度先逐渐增加到最宽,然后减小到最小
//**********************************************************************************************************
	
            
 /*		
		COUNT3++;
		COUNT3=COUNT3%250;                   //5秒为一周期
		//i =INTENSE_1;
        //TH1 = (65536-25000)/256;           //25ms中断一次(38hz)
        //TL1 = (65536-25000)%256;
       
		if(COUNT3 < 75)  					 //前1.5s,波形渐宽:分为5段,每段250ms
		{
         if(COUNT3%15 == 0)     
          {
           if(INTENSE_1<5)
              INTENSE_1 = 5;
		   else
		      {
		       i = (INTENSE_1/5)*(COUNT3/15)*2;
			   
               }
          }
           OUT1 =1;
           while(--i);                           
		   OUT1 = 0;
		}

		if((COUNT3 < 150)&&(COUNT3 >75))      //后1.5s,波形渐窄:分为5段,每段250ms
	      {
			if(COUNT3%15 == 0)    
          	  {
               if(INTENSE_1<5)
                 INTENSE_1 = 5;
		       else
		         i=(INTENSE_1 - (INTENSE_1/5)*(COUNT3/15))*2;
              }
		   OUT1 =1;
           while(--i);                           //宽度可调的高电平
		   OUT1 = 0;
		  }

        if((COUNT3 < 250)&&(COUNT3 >150))    // 后2s低电平
		  {
           OUT1 = 0;
          }
	   break; 
 */
  case 3:
      //强度调整
		//INTENSE_1 =(DISP_INTENSE_1*3)/4+1;
       COUNT1_3++;
       COUNT1_3 %=200;
	   if(COUNT1_3 == 25)
	   {
	    GATE1 = !GATE1;
      if(GATE1 == 1)
	     GATE2 = 0;
	  else
	   GATE2 = 1;
	   }

       //INTENSE_2 = INTENSE_2 +3;
	   //i=20;
		if(COUNT1_3<100)
		{
	    	//if(COUNT2_5%2)  			  //脉冲前半段		 
		    //  {
			    if(INTENSE_1==1)
			     j = 1;
				//else
				
			     
                 else 
				// j = 0;
				// TEMP2_5=j++;
				 j =( COUNT1_3 %INTENSE_1) + 4;

				// else 
				// j = COUNT2_5-INTENSE_2 ;
				
                
          //if(intense<10)
         //     i = intense;
		 //  else
		 //     {
		 //      i = (intense/5)*(COUNT[type]/temp);
		//	   }
		   
		    
		   OUT1 =1;
           while(--j);                           
		   OUT1= 0;
          
	//	 }
		 
		}

	
        
        if((COUNT1_3>150)&&(COUNT1_3<199))    // 低电平
		  {
           OUT1 = 0;
		   }

  break;
//**********************************************************************************************************
// 波形1_4
//间隔脉冲,整个波形周期9s,前8s是间隔1s的,强度增加,脉宽增加
//**********************************************************************************************************       
       case 4:
        //TH1 = (65536-40000)/256;    //40ms中断一次
        //TL1 = (65536-40000)%256;
		//强度调整
		//INTENSE_1 =(DISP_INTENSE_1*3)/4+1;

	   	COUNT4 ++;
		COUNT4= COUNT4 % 450;
		i = INTENSE_1;
		if(COUNT4 <400)
		{
         if(COUNT4 % 50 ==0)               //1S为一段
            FLAG4 = !FLAG4;
		 if(FLAG4 ==1 )
		    OUT1 = 0;
		 else if(FLAG4 ==0)
		   {
		    OUT1 =1;
		    while(--i);                   //宽度可调的高电平
		    OUT1 = 0;
		   }
		}
		if((COUNT4 >=400)&&(COUNT4 <450))
		   OUT1 = 0;
        break;
//**********************************************************************************************************
// 波形1_5
//间隔脉冲,间隔20ms,输出20ms的脉冲,最大脉冲频率是3.6khz,脉冲频率可调
//**********************************************************************************************************
	   case 5:                   
	    
        //TH1 = (65536-12000)/256;       //12ms中断一次
       // TL1 = (65536-12000)%256;
        //FLAG5 = !FLAG5;
	  //强度调整
     // INTENSE_1 =(DISP_INTENSE_1*3)/4+1;
	  COUNT1_5 ++;
	  //if( COUNT2_9 % (12 - INTENSE_2/10)==0)
       if( COUNT1_5 % 8==0)
	    { 
		  for(i=0;i<INTENSE_1/3+1;i++)
          {
		   k = INTENSE_1;
	       OUT1 =1;
		   while(--k);
           OUT1 = 0;
		   k = INTENSE_1*2;
	       while(--k);
		   k = INTENSE_1*2;
	       while(--k);
		   k = INTENSE_1*2;
	       while(--k);
		   k = INTENSE_1*2;
	       while(--k);
		  }
		
		}
        break; 
//**********************************************************************************************************
// 波形1_6
//类似波形3,但是脉冲是连续输出,脉冲的宽度先逐渐增加到最宽,然后减小到最小。

//**********************************************************************************************************
		
        case 6:                    
 		//强度调整
	//	INTENSE_1 =(DISP_INTENSE_1*3)/4+1;

		COUNT3++;
        i =  COUNT3;
		//i =INTENSE_1;
        //TH1 = (65536-50000)/256;             //50ms中断一次(38hz)
       // TL1 = (65536-50000)%256;
        if((i<=INTENSE_1)&&(i!=0))
		  {
		   OUT1 =1;
           while(--i);                           
		   OUT1 = 0;
		  }
       else
	      {
		   i = (INTENSE_1 - i%(INTENSE_1))+1;
		   OUT1 =1;
           while(--i);                           //宽度可调的高电平
		   OUT1 = 0;
		  }
       break; 
  	
     }
}

//第二路输出
 if((DISP_INTENSE_2 != 0)&&SET_MINUTE)
 {
  //强度调整
   INTENSE_2 =(DISP_INTENSE_2*3)/4+1;
 switch(WAVE_TYPE_2)            //
 {
   
  //**********************************************************************************************************
 // 波形2_1
 // T=5s。前4秒为连续脉冲,脉冲频率为38HZ,
 //脉冲的宽度随强度的增加而增加,最后1秒为低电平。脉冲宽度与强度之间的关系如下表格:
//**********************************************************************************************************
      case 1: 
          // GATE1 = 1;
          // GATE2 = 1;     
 	       wave2_1();  
	   	
      break;
 //**********************************************************************************************************
 // 波形2_9
 // T=5s。前4秒为连续脉冲,脉冲频率为38HZ,
 //脉冲的宽度随强度的增加而增加,最后1秒为低电平。脉冲宽度与强度之间的关系如下表格:
//**********************************************************************************************************

    case 9:  

   //强度调整
   //INTENSE_2 =(DISP_INTENSE_2*3)/4+1;
    i = INTENSE_2+3;
	  COUNT2_4++;
	  COUNT2_4 = COUNT2_4%100;
     if(COUNT2_4 <50)
	 {
	  GATE1 = !GATE1;
      if(GATE1 == 1)
	    { 
		 GATE2 = 0;
		}
	  else
	    {
	     GATE2 = 1;
        }
 	      OUT2 =1;
          while(--i);                          
          OUT2 = 0;
		}

	 
	  if((COUNT2_4>=50)&&(COUNT2_4 <100))
	  {
	                             
       OUT2=0;
      }
 
 	      
	   	
      break;

 //**********************************************************************************************************
 // 波形2_7
 // T=5s。前4秒为连续脉冲,脉冲频率为38HZ,
 //脉冲的宽度随强度的增加而增加,最后1秒为低电平。脉冲宽度与强度之间的关系如下表格:
//**********************************************************************************************************
      case 7: 
          // GATE1 = 1;
          // GATE2 = 0;     
 	       wave2_1();  
	   	
      break;

//**********************************************************************************************************
 // 波形2_4
 // 连续脉冲,脉冲频率38HZ,脉冲宽度随强度增加而增加。
//**********************************************************************************************************
      case 4: 

      //强度调整
  // INTENSE_2 =(DISP_INTENSE_2*3)/4+1;

  	  i = INTENSE_2+3;
	  COUNT2_4++;
	  COUNT2_4 = COUNT2_4%100;
     if(COUNT2_4 <50)
	 {
	  GATE1 = !GATE1;
      if(GATE1 == 1)
	    { 
		 GATE2 = 0;
		}
	  else
	    {
	     GATE2 = 1;
        }
 	      OUT2 =1;
          while(--i);                          
          OUT2 = 0;
		}

	 
	  if((COUNT2_4>=50)&&(COUNT2_4 <100))
	  {
	                             
       OUT2=0;
      }

	  break;   

//**********************************************************************************************************
 // 波形2_5
 // T=6s。 前4秒,脉冲宽度先增加然后再逐渐减小,
 //后两妙为低电平。脉冲频率为60HZ。
//**********************************************************************************************************
      case 5:    //放在循环中外执行
	    //强度调整
   //INTENSE_2 =(DISP_INTENSE_2*3)/4+1;
	    COUNT2_5++;
        COUNT2_5 %=200;
       // if(INTENSE_2<4)
	  // INTENSE_2 = INTENSE_2 +3;
	   //i=20;
		if(COUNT2_5<100)
		{
	    	//if(COUNT2_5%2)  			  //脉冲前半段		 
		    //  {
                 
			    if(INTENSE_2==1)
			     j = 1;
				//else
				
			     
                 else 
				// j = 0;
				// TEMP2_5=j++;
				 j =( COUNT2_5 %INTENSE_2) + 4;

				// else 
				// j = COUNT2_5-INTENSE_2 ;
				
                
          //if(intense<10)
         //     i = intense;
		 //  else
		 //     {
		 //      i = (intense/5)*(COUNT[type]/temp);
		//	   }
		   
		    
		   OUT2 =1;
           while(--j);                           
		   OUT2 = 0;
          
	//	 }

⌨️ 快捷键说明

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