找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5265|回复: 5
打印 上一主题 下一主题
收起左侧

[求助]stc12c5410ad的PWM波形输出

[复制链接]
跳转到指定楼层
楼主
ID:27455 发表于 2010-12-21 21:01 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

最近在使用stc12c5410ad的PWM模块功能,输出固定频率可调占空比的PWM波,下面是我写的程序,产生25%和50%占空比的PWM波:


 /******************************************************************************
  功能:固定频率39kHz的可调脉宽的PWM
  系统时钟 :20MH


 ********************************************************************************/
 #include <stc12c5410ad.h>
 #define uchar unsigned char
 #define uint unsigned int


 uchar code table[]={0xc0,0x80};  //占空比 分别为 25%,50%
 uchar i;


 void main()
 {
  CCON=0;     //初始化PCA寄存器
 CL=0;
 CH=0;
 CMOD=0x02;   //PCA时钟源来自系统时钟 f/2
 CCAPM0=0x42;  //PCA工作在PWM模式
 CR=1;         //开启PCA timer
 while(1)
 {
  for(i=0;i<2;i++)
  {
   CCAP0H=CCAP0L=table;
   while(CL!=0xff);
  }
 }


 }


 

我想得到波形输出顺序:25%,50%,25%,50%,25%,50%……循环下去;(百分比为PWM的占空比,代表一个波形,波形就不画了)


可是我用示波器观察输出结果,波形输出顺序:25%,50%,25%,50%,50%,50%,25%,50%,25%,50%,50%,50%,25%……。多出了两个占空比50%的脉冲信号,请高手帮我看看程序是不是有什么问题,感觉问题出现在PWM占空比的赋值上,但又不知道具体是什么。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

6#
ID:632424 发表于 2021-8-25 17:57 | 只看该作者
10年了,楼主对自己提出的这个问题是否有新的见解
回复

使用道具 举报

5#
ID:639106 发表于 2021-8-19 09:40 | 只看该作者
CCAP0H=CCAP0L=table[i];
回复

使用道具 举报

地板
ID:79874 发表于 2021-8-10 18:34 | 只看该作者
还有定时器的初始啊化
回复

使用道具 举报

板凳
ID:56563 发表于 2013-11-7 15:15 | 只看该作者
ccapoh=ccapol=table[i];
回复

使用道具 举报

沙发
ID:21628 发表于 2010-12-23 09:49 | 只看该作者

程序很简单,应该没错。我建议你加个led灯来判断一下 执行的步骤问题。

 

我怀疑你的STC芯片自己复位了。我遇到过自己复位的情况。 你在while(1) 上面加一个开机LED的闪烁 看看啥情况。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表