当前位置:首页 > 单片机 > 单片机
[导读] ********************************************/*工作频率:内部8M**编译器:ICCAVR6.31A* *输出:PD4输出PWMB,PD5输出PWMA**产生的PWM频率为8M/65536约122Hz***************************************

********************************************/
*工作频率:内部8M*
*编译器:ICCAVR6.31A*

*输出:PD4输出PWMB,PD5输出PWMA*
*产生的PWM频率为8M/65536约122Hz*
********************************************/
#include
#include

//延时函数:入口time需延时的MS数
voiddelay_ms(unsignedinttime)
{
unsignedcharc;
for(;time;time--)
{
for(c=220;c;c--)
{
;
}
}
}

//端口初始化
voidport_init(void)
{
PORTA=0xFF;
DDRA=0x00;
PORTB=0xFF;
DDRB=0xFF;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x30;
}

//TC1初始化
voidtimer1_init(void)
{
TCCR1A=0xA2;//两路PWM,匹配清零
TCCR1B=0x19;//快速PWM模式,位数可调,预分频1
ICR1=0xFFFF;//计数上限值,此数为16位PWM
}

//器件初始化
voidinit_devices(void)
{
port_init();//端口初始化
timer1_init();//TC1初始化

MCUCR=0x00;
GICR=0x00;
}

//主函数
voidmain(void)
{
unsignedinta=32768,b=32768;
init_devices();//器件初始化

OCR1A=a;//匹配初值
OCR1B=b;

while(1)
{
a-=10;//两个值向不同方向变化
b+=10;//PWMA宽度减小,PWMB宽度增加
if(a<=20)//上下限
{
a=65530;
b=5;
}
OCR1A=a;
OCR1B=b;
delay_ms(20);
}
}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭