×
嵌入式 > 嵌入式开发 > 详情

STC单片机PWM脉宽调制功能模块

发布时间:2020-08-24 发布时间:
|
// STC单片机PWM脉宽调制功能模块

#include

// PWM初始化
// 将PCA初始化为PWM模式,初始占空比为0
// 参数:0,1,2,3,分别表示对PWM0、PWM1、PWM2、PWM3初始化
void PWM_Init(int i)
{
CMOD = 0x02; // 设置PCA定时器频率为内部时钟fosc/2
CL = 0x00;
CH = 0x00;

switch(i)
{
case 0:
CCAPM0 = 0x42; // PWM0设置PCA工作方式为PWM方式(0100 0010)
CCAP0L = 0x00; // 设置PWM0初始值与CCAP0H相同
CCAP0H = 0x00; // PWM0初始为0
break;
case 1:
CCAPM1 = 0x42;
CCAP1L = 0x00;
CCAP1H = 0x00;
break;
case 2:
CCAPM2 = 0x42;
CCAP2L = 0x00;
CCAP2H = 0x00;
break;
case 3:
CCAPM3 = 0x42;
CCAP3L = 0x00;
CCAP3H = 0x00;
break;
default:
break;
}

CR = 1; // 启动PCA定时器
}

// PWM占空比设置
// 参数1:0,1,2,3,分别表示对PWM0、PWM1、PWM2、PWM3设置占空比
// 参数2:0x00~0xFF(或0~255),0x00时全部为低电平,0xFF时全部为高电平
void PWM_Set(int i, unsigned char c)
{
switch(i)
{
case 0:
CCAP0L = c;
CCAP0H = c;
break;
case 1:
CCAP1L = c;
CCAP1H = c;
break;
case 2:
CCAP2L = c;
CCAP2H = c;
break;
case 3:
CCAP3L = c;
CCAP3H = c;
break;
default:
break;
}
}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
mini 2440 test 的Delay函数分析