资源简介
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
相关资源
- 51单片机PWM程序,占空比、周期可调整
- SG3525频率PWM控制均可调模块
- 基于ARM7 PWM定时器的图像传感器时序信
- 电力电子技术(第4版)_王兆安_带目
- 基于FAN6754A的PWM反激式开关电源的设计
- 采用双闭环控制提高PWM的电源纹波抑
- FPGA实现单极性SPWM调制
- LCL滤波器在三相PWM整流器中的应用
- CPS―SPWM调制方法在H桥多电平变流器中
- 基于FPGA的多电平载波移相SPWM方法实现
- 正弦波逆变器正弦波逆变器的工作原
- 基于DSP的SVPWM变频调速系统
- 采用单片机SPWM的控制应急电源逆变电
- PWM脉宽调制的原理
- 说说PWM脉宽调制原理
- 以单片机AT89S52、光电脉宽调制器芯片
- STM32F103系列PWM输出应用之纸短情长音
- 基于FPGA的SVPWM实现方法
- pwm控制驱动直流电机 可调速 可调转的
- 可控硅调光,PWM调光,0-10V调光哪个更
- 一种基于SG3525A的PWM型开关稳压电源设
- 基于PIC单片机产生SPWM信号控制逆变桥
- 三相PWM整流器电压环H_∞鲁棒控制
- SVPWM的原理及法则推导和控制算法详解
- 132kW双PWM变频器电力电缆选型设计
- 32F103 8路PWM输出实验
- Keil5下的STM32F407程序
- PWM控制电机
- 基于STM32-Mini的多路PWM
- 基于两个红外传感器的寻迹小车程序
评论
共有 条评论