//1MHZ
#include<iom128v.h>
#include<macros.h>
#define DUO_Left 0x04
#define DUO_Straight 0x0c
#define DUO_Right 0x14
//0.5ms--0°3.9 1.5ms--90°12 2.5ms--180°19.5
//ms延时函数
void delay_ms(unsigned int i)
{
while(i--)
{
unsigned j;
for(j=1;j<=1332;j++)
;
}
}
void PWM_init()
{
DDRB|=(1<<5);//将OC1A管脚设置为输出
TCCR1A|=(1<<COM1A1);//相位修正PWM模式 升序匹配清零 降序匹配置位
TCCR1B|=(1<<WGM13)|(1<<CS11)|(1<<CS10); //64分频
ICR1H=0X00;
ICR1L=0X9D;
OCR1AH=0X00;//初始占空比
OCR1AL=0x04;
}
void PWM_vary(unsigned int PWM_s)
{ OCR1AH=0X00;
OCR1AL=PWM_s;
}
void main(void)
{
PWM_init();
delay_ms(5);
PWM_vary(DUO_Right); //用proteus仿真时,占空比还是初始化的情形,哪里有问题
}
在初始化程序中修改OCR的值,可以得到不同的占空比,但在主程序中却无法修改占空比,这是为什么? |