求助大神STC15F100单片机如何输出PWM方波,datasheet看不懂啊
答案:1 悬赏:0
解决时间 2021-01-22 07:23
- 提问者网友:爱唱彩虹
- 2021-01-22 00:18
求助大神STC15F100单片机如何输出PWM方波,datasheet看不懂啊
最佳答案
- 二级知识专家网友:不想翻身的咸鱼
- 2021-01-22 01:41
STC15F100没有用过,只用过STC12C5A60S2系列的,以下是基于STC12C5A60S2的PWM方波输出的一个例程,仅供参考。STC的单片机应该是大同小异的。
//文件包含
#include "stc12c5a60s2.h"
//函数声明
void PCA_Init(void);
//主方法
void main(void)
{
PCA_Init(); //PCA计数器初始化
while(1)
{
}
}
void PCA_Init(void)
{
CCON=0; //初始化PCA控制寄存器,停止PCA计数器,清除CF标记,清除PCA各个模块中断
CL=0; //清除PCA计数器
CH=0;
CMOD=0x82; //设置PCA计数器时钟源为Fosc/2(即PWM频率=(11059200/2)/256=21600Hz=21.6KHz)
//PCA计数器空闲模式停止计数
//禁止PCA计数溢出中断
CCAP0H=CCAP0L=0x80;//PWM0端口输出50%占空比方波
//8位PWM模式最大为256,一半为128,即0x80(即占空比=(0x80/256)*100%=50%)
CCAPM0=0x42; //PCA模块0工作于8位PWM模式,允许比较器功能,允许PWM输出,禁止CCF0中断
CR=1; //运行PCA计数器
}
//文件包含
#include "stc12c5a60s2.h"
//函数声明
void PCA_Init(void);
//主方法
void main(void)
{
PCA_Init(); //PCA计数器初始化
while(1)
{
}
}
void PCA_Init(void)
{
CCON=0; //初始化PCA控制寄存器,停止PCA计数器,清除CF标记,清除PCA各个模块中断
CL=0; //清除PCA计数器
CH=0;
CMOD=0x82; //设置PCA计数器时钟源为Fosc/2(即PWM频率=(11059200/2)/256=21600Hz=21.6KHz)
//PCA计数器空闲模式停止计数
//禁止PCA计数溢出中断
CCAP0H=CCAP0L=0x80;//PWM0端口输出50%占空比方波
//8位PWM模式最大为256,一半为128,即0x80(即占空比=(0x80/256)*100%=50%)
CCAPM0=0x42; //PCA模块0工作于8位PWM模式,允许比较器功能,允许PWM输出,禁止CCF0中断
CR=1; //运行PCA计数器
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯