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

📄 pwm.h

📁 采用atmel的tiny26的pll实现高速pwm
💻 H
字号:



unsigned char  p;
unsigned int base_voltage=0x80;
unsigned int result;
unsigned char data_p;
unsigned char powerstage;
unsigned char value_a;
unsigned char value_b;
unsigned int amplitude_factor;
unsigned char num=0;

void amplitude(void)
{
 result=0;
 result=base_voltage*170;
 result=result>>8;
 amplitude_factor=(result&0xff);
 amplitude_factor+=85;
 data_p=p;
 result=amplitude_factor*data_p;
 result=result>>8;
 powerstage=(result&0xff);
 powerstage+=5;
 //p++;
}
  
void value_calculate(void)
{
  value_a=powerstage+5;
  value_b=powerstage;
}
  
  void PWM_init(void)
  { 
   
  PLLCSR=0x02;  // Wait for the PLL to lock
  while ((PLLCSR & 1)==0);// Enable the 64MHz clock
  PLLCSR|=0x04;
  TCCR1B=0x42; //32M 
  TCCR1A=0xD3; 
  OCR1C = 0xFF;
  OCR1A = 0x00;
  OCR1B = 0x00; 
  TCNT1 = 0x00;

  }            
 
  void Set_Pwm(void)
  {
   amplitude();
   value_calculate();
   OCR1A = value_a;//0x80;//
   OCR1B = value_b; // 0x80;//   
  } 
 
  void wave_out(void)
  {  
     int counter = 0;//loop counter 
     ////
     p=1; 
     for(counter = 0;counter < 4;counter ++ ) 
     {
     Set_Pwm();
     }  
     ////         
     p=0;
     for(counter = 0;counter < 11;counter ++ ) 
     {
     Set_Pwm();
     }  
     ///     
     p=1; 
     for(counter = 0;counter < 3;counter ++ ) 
     {
     Set_Pwm();
     } 
     ////
     p=2; 
     for(counter = 0;counter < 2;counter ++ ) 
     {
     Set_Pwm();
     }   
     ////
     p=3; 
     for(counter = 0;counter < 2;counter ++ ) 
     {
     Set_Pwm(); 
     //p++;
     }  
    
    p=4; 
     for(counter = 0;counter < 4;counter ++ ) 
     {
     Set_Pwm();
     p++;
     }       
    /* ///
     p=5; 
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm();
     } 
     ////
     p=6; 
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm();
     } 
     ///
     p=7; 
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm();
     } */ 
     ///
     p=9; 
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm();
     }  
     ///
     p=10; 
     for(counter = 0;counter < 8;counter ++ ) 
     {
     Set_Pwm();
     p+=2;
     }  
     ///
   /*   p=12; 
     for(counter = 0;counter < 8;counter ++ ) 
     {
     Set_Pwm();
     p+=2;
     }  
     ///
    p=14; 
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm();
     } 
     ///
     p=16; 
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm();
     } 
     ////
     p=18; 
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm();
     } 
     ///
     p=20; 
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm();
     } 
     ////
     p=22; 
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm();
     }
     ////
     p=24; 
     for(counter = 0;counter < 4;counter ++ ) 
     {
     Set_Pwm(); 
     p+=3;
     }*/
     ///
    p=27; 
     for(counter = 0;counter < 5;counter ++ ) 
     {
     Set_Pwm();
     p+=3;
     }
     ////
   /*  p=30; 
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm();
     }
     ///
     p=33; 
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm();
     }*/ 
     ///
     p = 43;
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm();
     }  
     ///
     p = 46;
     for(counter = 0;counter < 8;counter ++ ) 
     {
     Set_Pwm();
     p+=4;
     } 
     ////
     p = 79;
     for(counter = 0;counter < 3;counter ++ ) 
     {
     Set_Pwm(); 
     p+=4;
     } 
     ///
     p = 94;
     for(counter = 0;counter < 4;counter ++ ) 
     {
     Set_Pwm(); 
     p+=4;
     }  
     /////
     p = 111;
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm(); 
     //p+=4;
     }
     ///
     p = 115;
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm(); 
   //  p+=4;
     } 
     
     ///
     p = 120;
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm(); 
    // p+=4;
     } 
     p = 124;
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm(); 
    // p+=4;
     } 
     p = 130;
     for(counter = 0;counter < 5;counter ++ ) 
     {
     Set_Pwm(); 
     p+=4;
     } 
     p = 150;
     for(counter = 0;counter < 5;counter ++ ) 
     {
     Set_Pwm(); 
     p+=4;
     } 
     p = 169;
     for(counter = 0;counter < 7;counter ++ ) 
     {
     Set_Pwm(); 
     p+=3;
     } 
     p = 189;
     for(counter = 0;counter < 5;counter ++ ) 
     {
     Set_Pwm(); 
     p+=2;
     } 
     p = 198;
     for(counter = 0;counter < 3;counter ++ ) 
     {
     Set_Pwm(); 
     p+=2;
     } 
     p = 203;
     for(counter = 0;counter < 3;counter ++ ) 
     {
     Set_Pwm(); 
     p++;
     }  
       p = 205;
     for(counter = 0;counter < 3;counter ++ ) 
     {
     Set_Pwm(); 
     p++;
     }
       p = 207;
     for(counter = 0;counter < 1;counter ++ ) 
     {
     Set_Pwm(); 
     //p++;
     }  
       p = 208;
     for(counter = 0;counter < 3;counter ++ ) 
     {
     Set_Pwm(); 
     //p++;
     } /*
       p = 209;
     for(counter = 0;counter < 11;counter ++ ) 
     {
     Set_Pwm(); 
     //p++;
     }
       p = 208;
     for(counter = 0;counter < 44;counter ++ ) 
     {
     Set_Pwm(); 
     //p++;
     }
       p = 209;
     for(counter = 0;counter < 9;counter ++ ) 
     {
     Set_Pwm(); 
     //p++;
     }  
       p = 208;
     for(counter = 0;counter < 3;counter ++ ) 
     {
     Set_Pwm(); 
    // p++;
     } 
       p = 207;
     for(counter = 0;counter < 2;counter ++ ) 
     {
     Set_Pwm(); 
     //p++;
     } 
       p = 206;
     for(counter = 0;counter < 2;counter ++ ) 
     {
     Set_Pwm(); 
     p--;
     }*/                                   
  }    
  

⌨️ 快捷键说明

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