/*************************************PWM0初始化****************************************/
void PWM_init(void)
{
P2M1 = P2M1&0xF0|0x08; //P22设置为推挽输出
P1M0 = P1M0&0xF0|0x08; //P10设置为推挽输出
PWM0_MAP = 0x07; //PWM0通道映射P07口
PWM01_MAP = 0x10; //PWM01通道映射P10口
PWM0C = 0x01; //PWM0、PWM01高有效,时钟8分频
//独立模式下,PWM0和PWM01共用一个周期寄存器
//周期计算 = 0x03E8 / (Fosc / PWM分频系数) = 0x03E8 / (16000000 / 8) = 500us / 2kHz
PWM0PH = 0x03;
PWM0PL = 0xE8;
//占空比计算= 0x0155 / (Fosc / PWM分频系数)
// = 0x01F4 / (16000000 / 8) = 500 / 2000000 = 250us 占空比为250/500 = 50%
PWM0DH = 0x01; //PWM0高4位
PWM0DL = 0xF4; //PWM0低8位
PWM0DTH = 0x01; //PWM01高4位
PWM0DTL = 0xF4; //PWM01低8位
PWM0EN = 0x0F; //使能PWM0,工作于独立模式
}
|