专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
51单片机
STC12C5A60S2的PCA捕获功能问题
2019-07-15 17:17
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
15601
11
1550
这几天正在学习STC12C5A60S2的PCA捕获功能,我按着
芯片
资料的例程写的捕获程序,但是呢,没反应,进入不了PCA中断,而且捕获输入口P1.3一直为高电平,不止为何,求帮助。
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
xinghuayu
2019-07-15 23:55
本帖最后由 xinghuayu 于 2015-5-7 08:46 编辑
Aidaohuakai 发表于 2015-5-6 23:00
把程序贴出来看看
这个是PCA初始化的程序
void pca_init() //捕获模块初始化
{
CCON=0;
CMOD = 0x00; //初始化PCA模式寄存器,晶振12分频 为2MHZ
CCAPM0=0x11; //CCAPM0下降沿捕获, 允许中断
CL=0; //清空PCA基本计数器
CH=0;
CR=1; //启动PCA
}
复制代码
这个是中断程序只用到一个模块
void PCA_interrupt (void) interrupt 7 //检测输入脉冲频率中断
{
if(CCF0==1)
{
CCF0=0;
if(start_check==0) //如果是开机检测
{
CL=0; //清空PCA基本计数器
CH=0;
start_fre_num=start_fre_num+1; //脉冲计数标志位加1;
}
else //正常运行
{
in_f_H=CCAP0H;
in_f_L=CCAP0L;
}
}
if(CCF1==1)
{
CCF1=0;
}
if(CF==1) //计数溢出的话,清除标志位
{
CF = 0;
}
}
复制代码
这个是主程序使用PCA的部分
pca_init(); //开始捕获输入脉冲
//IT1=1;
//EX1=1;
Delay_1ms(5000); //等待采集输入脉冲数
if(start_fre_num>3) //收到的脉冲数大于3,开机正常
{
start_check=1; //开始正常运行
f_led=0; //输入脉冲指示灯亮
//EX1=0;
}
else //采集脉冲数不够3个
{
f_led=1; //脉冲输入指示灯不亮
TR0=0; //停止输出脉冲(与PCA无关)
}
复制代码
有个指示灯,亮的话表示采集到的脉冲数大于3,没亮的话采集到的数小于3,用外部中断采集是了,可行的,但是这个PCA捕获不好使,求指点。
加载中...
查看其它11个回答
一周热门
更多
>
相关问题
【东软载波ESF0654 PDS开发板活动】开箱
1 个回答
东软载波ESF0654 PDS开发板外部中断
1 个回答
东软载波ESF0654 PDS开发板高级控制定时器AD16C4T
1 个回答
用串口调试助手为什么只能在hex模式接收发送而在文本模式不行
9 个回答
触摸芯片SC02B/SC04B在地砖灯的设计方案
1 个回答
相关文章
51单片机与蓝牙模块连接
0个评论
51单片机的硬件结构
0个评论
基于51单片机的无线遥控器制作
0个评论
51单片机 AD转换
0个评论
51单片机数码管递增显示
0个评论
如何实现对单片机寄存器的访问
0个评论
基于51单片机的指纹密码锁
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
51单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
这个是PCA初始化的程序
- void pca_init() //捕获模块初始化
- {
- CCON=0;
- CMOD = 0x00; //初始化PCA模式寄存器,晶振12分频 为2MHZ
- CCAPM0=0x11; //CCAPM0下降沿捕获, 允许中断
- CL=0; //清空PCA基本计数器
- CH=0;
- CR=1; //启动PCA
- }
复制代码这个是中断程序只用到一个模块
- void PCA_interrupt (void) interrupt 7 //检测输入脉冲频率中断
- {
- if(CCF0==1)
- {
- CCF0=0;
- if(start_check==0) //如果是开机检测
- {
- CL=0; //清空PCA基本计数器
- CH=0;
- start_fre_num=start_fre_num+1; //脉冲计数标志位加1;
- }
- else //正常运行
- {
- in_f_H=CCAP0H;
- in_f_L=CCAP0L;
- }
- }
- if(CCF1==1)
- {
- CCF1=0;
- }
- if(CF==1) //计数溢出的话,清除标志位
- {
- CF = 0;
- }
- }
复制代码这个是主程序使用PCA的部分
- pca_init(); //开始捕获输入脉冲
- //IT1=1;
- //EX1=1;
- Delay_1ms(5000); //等待采集输入脉冲数
- if(start_fre_num>3) //收到的脉冲数大于3,开机正常
- {
- start_check=1; //开始正常运行
- f_led=0; //输入脉冲指示灯亮
- //EX1=0;
- }
- else //采集脉冲数不够3个
- {
- f_led=1; //脉冲输入指示灯不亮
- TR0=0; //停止输出脉冲(与PCA无关)
- }
复制代码有个指示灯,亮的话表示采集到的脉冲数大于3,没亮的话采集到的数小于3,用外部中断采集是了,可行的,但是这个PCA捕获不好使,求指点。
一周热门 更多>