发新帖我要提问
12
返回列表
打印
[51单片机]

如何用单片机对脉冲信号进行测量

[复制链接]
楼主: 笑红尘
手机看帖
扫描二维码
随时随地手机跟帖
21
排山倒海| | 2014-7-28 12:38 | 只看该作者 回帖奖励 |倒序浏览
本帖最后由 排山倒海 于 2014-7-28 18:04 编辑
笑红尘 发表于 2014-7-28 09:08
#include
#define uint unsigned int
#define uchar unsigned char


从这个程序看,你“没”搞清楚信号测量的初始化(什么时候什么情况下要清零计数)和读取信号脉宽时间条件(什么时候是该读取时间?)。

使用特权

评论回复
22
笑红尘|  楼主 | 2014-7-28 20:51 | 只看该作者
排山倒海 发表于 2014-7-28 12:38
从这个程序看,你“没”搞清楚信号测量的初始化(什么时候什么情况下要清零计数)和读取信号脉宽时间条件 ...

我关于信号测量的初始化不清楚。应该从什么时候开始读取脉宽时间?
用两个定时器,一个计数,一个定时,假设高电平开始计数,那么程序设计该从什么时候开始计数,又得记多久??

使用特权

评论回复
23
排山倒海| | 2014-7-28 22:10 | 只看该作者
本帖最后由 排山倒海 于 2014-7-28 22:20 编辑

程序设计要自己想清楚算法,思想是很难表达清楚的,你现在用两个外中断是分开上升沿和下降沿中断吗?硬件是什么样?
如果两个外中断是用同样的上升沿中断检测脉冲信息,将会出现定时器T0被外中断0开启了又马上被外中断1停止,如何对脉冲信号计时呢?而且这里应该是分别启动停止定时器1才对啊。
smgdisplay中用软件死循环方式是大忌,可以参考我回复帖子“从单片机初学者迈向单片机工程师(1)----学会释放CPU ”附件的相关说明。

使用特权

评论回复
24
lu50211| | 2014-7-29 09:17 | 只看该作者
笑红尘 发表于 2014-7-28 09:08
#include
#define uint unsigned int
#define uchar unsigned char

void EXint0() interrupt 0                //外部中断0
{
        ET0=1;
}
void EXint1() interrupt 2                //外部中断1
{
        ET0=0;
        prd=0;        
}
你用定时器1作计数,为什么开定时器0呢。

使用特权

评论回复
25
moyue| | 2014-7-29 17:25 | 只看该作者
使用CCP模块即可,简单直接

使用特权

评论回复
26
笑红尘|  楼主 | 2014-7-29 18:18 | 只看该作者
moyue 发表于 2014-7-29 17:25
使用CCP模块即可,简单直接

目前已经解决,谢谢

使用特权

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

本版积分规则