文章
博客 网店

 ATMega8 Timer1 PWM功能测试程序


main.c文件:

/********************************
  ATMega8 T/C1 PWM功能测试程序 
  文件名:main.c
  编译:WinAVR-20070122

  硬件环境:CA-M8X   打开的开关如下
            S6(1,2)   - 外部4MHz晶振
            S1(7)    - PB1接红LED
  
  芯艺设计室 2004-2007  版权所有 
  转载请保留本注释在内的全部内容
  WEB: http://www.chipart.cn
  Email: changfutong@sina.com
*******************************/

#include 
#include 

//延时
void DelayMs(uint16_t ms)
{
  uint16_t i;
  for(i=0;i     _delay_loop_2(4 * 250);
}                        

int main (void)
{
  uint8_t direction=1;
  uint8_t pwm=0;
  
  //  8位相位修正PWM模式
  //  OC1A 向上计数过程中比较匹配时清零
  //  向下计数过程中比较匹配时置位
  //  时钟源:4MHz/64  PWM频率:4MHz/(64*256)=122Hz
  TCCR1A=_BV(COM1A1)/*|_BV(COM1B1)*/|_BV(WGM10);
  TCCR1B=_BV(CS11)|_BV(CS10);
  
  TCNT1=0;
  DDRB|=_BV(PB1)/*|_BV(PB2)*/;//OC1A pwm输出引脚允许

  //循环改变PWM输出脉宽,使接在OC1A引脚上的发光管亮度发生变化
  while(1)
  {
    if(direction)
    {
      if(++pwm==254)
        direction=0;
    }
    else
    {
      if(--pwm==0)
        direction=1;
    }

    OCR1A=pwm;

    DelayMs(10);
  }
    
  return 0;
}
\
执行效果:红色发光管亮灭间逐渐变化。
芯艺工作室    蒙ICP备06005492号
Copyright© 2004-2023 ChipArt Studio All Rights Reserved