• 大小: 21KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: 其他
  • 标签: pwm  

资源简介

stc12c5a60s2单片机输出两路pwm走了很多弯路,发现一个很简单的程序,直接可以用的。

资源截图

代码片段和文件信息

#include 
#define uchar unsigned char
#define uint unsigned int

/*********************************************************************************************
函数名:PWM初始化函数
调  用:PWM_init();
参  数:无
返回值:无
结  果:将PCA初始化为PWM模式,初始占空比为0
备  注:需要更多路PWM输出直接插入CCAPnH和CCAPnL即可
/**********************************************************************************************/
void PWM_init (void)
{
CMOD=0x02; //设置PCA定时器
  CL=0x00; 
  CH=0x00;

 CCAPM0=0x42; //PWM0设置PCA工作方式为PWM方式(0100 0010)
  CCAP0L=0x00; //设置PWM0初始值与CCAP0H相同
  CCAP0H=0x00; // PWM0初始时为0

 CCAPM1=0x42; //PWM1设置PCA工作方式为PWM方式(使用时删除//)
 CCAP1L=0x00; //设置PWM1初始值与CCAP0H相同
  CCAP1H=0x00; // PWM1初始时为0

 //CCAPM2=0x42; //PWM2设置PCA工作方式为PWM方式
 //CCAP2L=0x00; //设置PWM2初始值与CCAP0H相同
  //CCAP2H=0x00; // PWM2初始时为0

 //CCAPM3=0x42; //PWM3设置PCA工作方式为PWM方式
 //CCAP3L=0x00; //设置PWM3初始值与CCAP0H相同
  //CCAP3H=0x00; // PWM3初始时为0

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

/*********************************************************************************************
函数名:PWM0占空比设置函数
调  用:PWM0_set();
参  数:0x00~0xFF(亦可用0~255)
返回值:无
结  果:设置PWM模式占空比,为0时全部高电平,为1时全部低电平
备  注:如果需要PWM1的设置函数,只要把CCAP0L和CCAP0H中的0改为1即可
/**********************************************************************************************/
void PWM0_set (unsigned char a){
 CCAP0L= a; //设置值直接写入CCAP0L
  CCAP0H= a; //设置值直接写入CCAP0H
}
/**********************************************************************************************/

void PWM1_set (unsigned char a)
{
 CCAP1L= a; //设置值直接写入CCAP1L
  CCAP1H= a; //设置值直接写入CCAP1H
}

/*********************************************************************************************
函数名:主函数
调  用:无
参  数:无
返回值:无
结  果:程序开始处,无限循环
备  注:
/**********************************************************************************************/

void delay_1ms(unsigned int i);

void main (void)
{
while(1)
{
  PWM_init(); //PWM初始化
  while(1)
  {
  PWM0_set(0x7f);
PWM1_set(0xff);//1

delay_1ms(10000);
 
PWM0_set(0x33); //设置PWM占空比总共255除以2转换成十六进制得7F
PWM1_set(0x7f); //%50

delay_1ms(100);

PWM0_set(0x00);
PWM1_set(0x00); //%0

delay_1ms(10000);
  }                         
   }
}
/**********************************************************************************************/
/**********************************************************************************************/
/*void delay_20us()
 {  uchar bt ;
    for(bt=0;bt<60;bt++);
 }*/
/**********************************************************************************************/

void delay_1ms(unsigned int i)
{

unsigned char j;
 while(i--)
 {
 for(j=0;j<115;j++)   //1ms基准延时程序
 {
   ;
 } 
 }
  
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3224  2017-07-08 18:15  pwm灯\111

     文件       3162  2017-07-08 18:13  pwm灯\111.c

     文件        420  2017-07-08 18:15  pwm灯\111.hex

     文件         38  2017-07-08 18:15  pwm灯\111.lnp

     文件       6084  2017-07-08 18:15  pwm灯\111.LST

     文件       5405  2017-07-08 18:15  pwm灯\111.M51

     文件       3563  2017-07-08 18:15  pwm灯\111.OBJ

     文件        194  2017-07-08 18:18  pwm灯\111.plg

    .......     56160  2017-07-08 18:18  pwm灯\111.uvopt

    .......     13223  2017-07-08 16:01  pwm灯\111.uvproj

    .......     56168  2017-07-08 18:17  pwm灯\111_uvopt.bak

    .......         0  2017-07-08 15:52  pwm灯\111_uvproj.bak

     文件      17735  2017-07-08 16:01  pwm灯\stc12c5a60s2.h

     目录          0  2017-07-08 18:18  pwm灯

----------- ---------  ---------- -----  ----

               165376                    14


评论

共有 条评论