打印

STC单片机PCA做高速脉冲输出的问题

[复制链接]
11220|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chen3bing|  楼主 | 2011-10-28 19:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我看STC12C5A60S2的数据手册,有一个用PCA做高速脉冲输出的汇编示例程序,
我用那个示例程序,下载到单片机以后,在第6脚上有脉冲输出。
我用C程序改写了以后,就不行了。我实在找不到原因,请高手指教,谢谢!
源程序如下:
#include<stc12c5a60s2.h>
#define uint unsigned int
#define uchar unsigned char
#define CCAPnL_VALUE      0x17       //;17H=23,11.0592MHZ,高速脉冲输出=125KHZ
///////////////////////////////////////////////
//;--------------------------------------------------------
void PCA_init()    //;PCA初始化程序
{
CMOD=2;     //;PCA计数器在空闲模式下继续工作,PCA计数器计数脉冲来源
       //;fosc/2,禁止PCA计数器计数溢出中断
CCON=0;       //;清除PCA计数器(CH,CL)计数溢出中断标志
       //;停止PCA计数器计数,
       //;清除模块1,0中断标志
CH=0;
CL=0;
CCAPM1=0X4D;   //;设置PCA模块1为16位高速脉冲输出模式,允许触发中断
//;设置模块1为高速脉冲输出模式,脉冲在第 6 脚输出
CCAP1L=CCAPnL_VALUE;
CCAP1H=0;
//;其他中断服务可能会使模块1高速输出的某个某个周期变得很大,因此必须将
//;PCA中断的优先级设为唯一的最高优先级,
IPH=0X80;
IP=0X80;
EA=1;
CR=1;         //;将PCA计数器打开
}
void main()
{
PCA_init();
while(1)
{
}
}
void PCA_Routine() interrupt 7
{
uchar temp;
CCF1=0;      //;清PCA模块1中断标志  1
temp=CCAP1L;
CCAP1L+=CCAPnL_VALUE;
if(CCAP1L<temp)
   CCAP1H+=1;               


}

相关帖子

沙发
chen3bing|  楼主 | 2011-10-28 22:02 | 只看该作者
高手支招啊!

使用特权

评论回复
板凳
coody| | 2011-10-28 22:37 | 只看该作者
这样试试:
void PCA_Routine() interrupt 7
{
      CCF1=0;      //;清PCA模块1中断标志  1
      CCAP1L += CCAPnL_VALUE;
      if(CY)
      CCAP1H ++;               
}

使用特权

评论回复
地板
chen3bing|  楼主 | 2011-10-28 22:58 | 只看该作者
还是不行啊!郁闷死了!

使用特权

评论回复
5
chen3bing|  楼主 | 2011-10-29 08:50 | 只看该作者
没人知道吗?

使用特权

评论回复
6
chen3bing|  楼主 | 2011-10-29 10:32 | 只看该作者
高手快现身啊!

使用特权

评论回复
7
chen3bing|  楼主 | 2011-10-29 12:38 | 只看该作者
看来没人会了,结贴。

使用特权

评论回复
8
songzhige| | 2012-12-6 08:30 | 只看该作者
没有看懂,,手册上怎么说的

使用特权

评论回复
9
myshlin| | 2014-10-23 10:44 | 只看该作者
在PCA模块中有个写置位电路,当写入新的CCAP1L时,CCAPM1.6被自动置零,所以程序就自动退出高速输出方式.所以要这么改:
void PCA_Routine() interrupt 7
{
uchar temp;
CCF1=0;      //;清PCA模块1中断标志  1
temp=CCAP1L;
CCAP1L+=CCAPnL_VALUE;
if(CCAP1L<temp)
   CCAP1H+=1;   
ccAP1H=CCAP1H;            


}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

438

主题

2519

帖子

2

粉丝