您现在的位置: 主页 > MCU > 单片机技术应用 > avr单片机 TC1的16位PWM输出程序 -
本文所属标签:
为本文创立个标签吧:

avr单片机 TC1的16位PWM输出程序 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]
********************************************/*工作频率:内部8M**编译器:ICCAVR6.31A* *输出:PD4输出PWMB,PD5输出PWMA**产生的PWM频率为8M/65536约122Hz***************************************

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

本文引用地址: http://www.21ic.com/app/mcu/201807/765335.htm

*输出: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);
}
}




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > avr单片机 TC1的16位PWM输出程序 -
 

"avr单片机 TC1的16位PWM输出程序 -"的相关文章

网站地图

围观()