代码利用例程修改的:void main()
{ int ch1,m;
unsigned char n;
/************************************系统初始化****************************************/
WDTCCR = 0x00; //关闭看门狗
//本例程为方便测试关闭看门狗,实际使用中,建议客户打开看门狗,详见WDT复位例程
CLKSWR = 0x51; //选择内部高频RC为系统时钟,内部高频RC 2分频,Fosc=16MHz
CLKDIV = 0x01; //Fosc 1分频得到Fcpu,Fcpu=16MHz
/************************************PWM3初始化****************************************/
P2M1 = P2M1&0xF0|0x08; //P22设置为推挽输出
PWM3_MAP = 0x22; //PWM3映射P22口
//周期计算 = 0xFF / (Fosc / PWM分频系数) (Fosc见系统时钟配置的部分)
// = 0xFF /(16000000 / 4)
// = 255 /4000000
// = 63.75us 即15.69KHZ
PWM3P = 0xFF; //PWM周期为0xFF
//有效电平时间计算(即占空比)
// = 0x55 / (Fosc / PWM分频系数) (Fosc见系统时钟配置的部分)
// = 0x55 /(16000000 / 4)
// = 85 /4000000
// = 21.25us 占空比为 21.25 / 63.75 = 34%
PWM3D = 0x55; //PWM占空比设置
PWM3C = 0x92; //使能PWM3,关闭中断,允许输出,时钟4分频
while(1)
{for(m=0;m<5000;m++)
;
PWM3D = n;
n++;
}
}
|