求助大神STC15F100单片机如何输出PWM方波,datasheet看不懂啊

51单片机输出方波可以用定时器和IO口输出高低电平模拟,这个该怎么来得到比如1KHz的方波

STC15F100没有用过,只用过STC12C5A60S2系列的,以下是基于STC12C5A60S2的PWM方波输出的一个例程,仅供参考。STC的单片机应该是大同小异的。

//文件包含
#include "stc12c5a60s2.h"

//函数声明
void PCA_Init(void);

//主方法
void main(void)
{
PCA_Init(); //PCA计数器初始化
while(1)
{
}
}

/***********************************************
函数名称:PCA_Init
功 能:PCA计数器初始化函数
入口参数:无
返 回 值:无
备 注:PWM频率=PCA时钟源/256,占空比=(CCAP0L/256)*100%
************************************************/
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计数器
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-10
这个的你可以参考楼上的老兄的代码,这个就不用模拟了。15有3路pwm的,你直接用硬件就好了
第2个回答  2014-03-06

这是 一个 仿真实例 可以参考一下,试试。

相似回答