微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ATMega8 PWM 功能(T/C 1)测试程序

ATMega8 PWM 功能(T/C 1)测试程序

时间:11-23 来源:互联网 点击:
#include avr/io.h>

#include

#define uchar unsigned char
#define uint unsigned int

#define FREQ 4

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

int main (void)
{
uchar direction=1;
uchar pwm=0;

// 8位相位修正PWM模式
// OC1A 向上计数过程中比较匹配时清零
// 向下计数过程中比较匹配时置位
// 时钟源:4MHz/64 PWM频率:4MHz/(64*256)=122Hz
TCCR1A=_BV(COM1A1)|_BV(WGM10);
TCCR1B=_BV(CS11)|_BV(CS10);


TCNT1=0;
DDRB|=_BV(PB1);//OC1A pwm输出引脚允许

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

OCR1A=pwm;
//OCR1B=pwm;
DelayMs(10);
}

return 0;
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top