********************************************/
* 工作频率:内部8M *
* 编 译 器:ICCAVR 6.31A *
* 输 出:PD4输出PWMB,PD5输出PWMA *
* 产生的PWM频率为8M/65536约122Hz *
********************************************/
#include
#include
//延时函数:入口time 需延时的MS数
void delay_ms(unsigned int time)
{
unsigned char c;
for(;time;time--)
{
for(c=220;c;c--)
{
;
}
}
}
//端口初始化
void port_init(void)
{
PORTA = 0xFF;
DDRA = 0x00;
PORTB = 0xFF;
DDRB = 0xFF;
PORTC = 0x00;
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0x30;
}
//TC1初始化
void timer1_init(void)
{
TCCR1A = 0xA2; //两路PWM,匹配清零
TCCR1B = 0x19; //快速PWM模式,位数可调,预分频1
ICR1 = 0xFFFF; //计数上限值,此数为16位PWM
}
//器件初始化
void init_devices(void)
{
port_init(); //端口初始化
timer1_init(); //TC1初始化
MCUCR = 0x00;
GICR = 0x00;
}
//主函数
void main(void)
{
unsigned int a=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);
}
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』