嵌入式 > 技术百科 > 详情

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

发布时间:2020-06-03 发布时间:
|
// 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;
 }
}


 

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

热门文章 更多
灾难本可避免?美媒:波音偷改737Max防失速系统 少装一个传