关于c语言的问题(方波检测)

[复制链接]
6247|19
 楼主| YJA 发表于 2008-8-6 15:39 | 显示全部楼层 |阅读模式
要用c语言检测输入方波的每一个跳变

     -------      -------       ------
                                       
-----       ------       ------
     1      2     3      4     5

如图的方波,输入到i/o口,要求能检测出方波的每一个跳变,如图要能得到5个计数。
用汇编挺好实现的,用c语言我想了很多方法,好像都不怎么好,大家有没有简单的方法啊



xwj 发表于 2008-8-6 15:44 | 显示全部楼层

一样的啊,汇编怎么实现C也就怎么实现啦

先说说你的汇编实现方法看
 楼主| YJA 发表于 2008-8-6 16:02 | 显示全部楼层

回复

汇编里面我就等啊

t_inti=t_signal; 先记录初始状态
while(t_signal!=t_inti)
   {
       count++;
       t_inti=t_signal;   

   }

这样好吗?好像会漏掉跳变!
ayb_ice 发表于 2008-8-6 16:23 | 显示全部楼层

很多ic都可以邊沿觸發中斷

查詢只適合頻率不高的場合.
 楼主| YJA 发表于 2008-8-6 16:40 | 显示全部楼层

不需要用中断了

频率不高,一个0.5mS左右跳变一次。
martial 发表于 2008-8-6 17:12 | 显示全部楼层

不用中断的话:如果有的函数执行超过0.5ms就会漏掉吧

mohanwei 发表于 2008-8-6 19:16 | 显示全部楼层

汇编都写出来了,C怎么会写不出呢……

5880527 发表于 2008-8-6 19:23 | 显示全部楼层

2K的信号随便都能扫到它,主循环不行就开个定时器

太阳之母 发表于 2008-8-6 20:48 | 显示全部楼层

嘿嘿

结合硬件,用外部中断。
给这个信号接个反向器,反向之前的信号接INT0,反向之后的信号接INT1。外部中断0和1都用边沿触发方式,只要中断响应函数的执行时间比高(低)电平的持续时间短一些,保证一个边沿也不会丢失的。
用普通IO接这个信号,理论上说,不能保证一个边沿也不丢。
janying 发表于 2008-8-6 20:55 | 显示全部楼层

不用中断

不用就可以
太阳之母 发表于 2008-8-6 21:05 | 显示全部楼层

嘿嘿

也许很可能99.9999%可以,
但是如果不允许出现0.0001%的差错,就不可以了。
computer00 发表于 2008-8-6 22:15 | 显示全部楼层

死等的办法用C语言也很简单了……

while(1)
{
 OldValue=INPUT;
 while(OldValue==INPUT);
 Count++;
}
 楼主| YJA 发表于 2008-8-7 08:43 | 显示全部楼层

感谢

感谢大家的帮助,我在计数的同时还要向串口发送出去,应该不会是这里漏掉了吧
emailli 发表于 2008-8-7 09:20 | 显示全部楼层

LZ程序架构有严重问题

和汇编,C语言无关。

请先到LS各位大侠的博客上仔细看看 关于 前后台系统的程序该如何设计以后,修改程序架构。

对于死等,是肯定不行的。
computer00 发表于 2008-8-7 10:09 | 显示全部楼层

一边死等一边发也是可以的,只要你的串口数据能在一个计

while(1)
{
OldValue=INPUT;
while(OldValue==INPUT);
Count++;
SBUF=Count;
}


如果每次都发,串口忙不过来的话,可以几次才发,例如每8次发一个:

while(1)
{
OldValue=INPUT;
while(OldValue==INPUT);
Count++;
if((Count&0x07)==0)
{
 SBUF=Count;
}
}

或者串口忙就不发,等下才发……
if(TI==1)
{
 SBUF=Count;
 TI=0;
}

但是死等的方式并终归不好....如果你的程序就实现这么点功能,那也倒无所谓了…………
5880527 发表于 2008-8-7 10:12 | 显示全部楼层

2K,所以常用的9600不可能实时发送出去了

gyt 发表于 2008-8-7 12:02 | 显示全部楼层

这样做肯定要漏了

 楼主| YJA 发表于 2008-8-7 12:06 | 显示全部楼层

我写的是检测程序

主要先用来检测一个周期脉冲数的,还不是拿来直接用的,正式程序当然不能死等
dream2010 发表于 2008-8-7 14:23 | 显示全部楼层

小失误

函数执行超过0.5ms就会漏掉
您需要登录后才可以回帖 登录 | 注册

本版积分规则

YJA

5

主题

14

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部