51单片机中如何检测一个数字量输入的上升沿或者下降沿信号? 点击:16488 | 回复:15



關羽

    
  • [版主]
  • 精华:5帖
  • 求助:21帖
  • 帖子:728帖 | 5626回
  • 年度积分:78
  • 历史总积分:82244
  • 注册:2004年5月28日
发表于:2011-07-04 09:15:32
楼主
51单片机中如何检测一个数字量输入的上升沿或者下降沿信号?
比如我把P2.0作为一个数字量输入,接一个按钮!怎么检测这个按钮的上升沿或者下降沿呢?



關羽

  • [版主]
  • 精华:5帖
  • 求助:21帖
  • 帖子:728帖 | 5626回
  • 年度积分:78
  • 历史总积分:82244
  • 注册:2004年5月28日
发表于:2011-07-04 09:38:29
1楼
备注一下,不使用中断!!希望能用简单的语句来实现即可!!

mycwm

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 31回
  • 年度积分:0
  • 历史总积分:178
  • 注册:2010年9月20日
发表于:2011-07-05 22:40:38
2楼
用两个变量记录过去状态和现读取状态,比较一下即可,然后将读取状态送入过去状态以便于下一次比较.

關羽

  • [版主]
  • 精华:5帖
  • 求助:21帖
  • 帖子:728帖 | 5626回
  • 年度积分:78
  • 历史总积分:82244
  • 注册:2004年5月28日
发表于:2011-07-06 10:48:30
3楼
能说的再明白点吗?给个简单的实例也好!

mycwm

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 31回
  • 年度积分:0
  • 历史总积分:178
  • 注册:2010年9月20日
发表于:2011-07-06 16:27:04
4楼

读p2.0 存在A

再读P2.0存在B

A>B?

是,下降沿

A<B

是,上升沿

然后B存入A,进行下一次判断。

如A=B

就无上升或下降

注意是位操作

用汇编不难。

 

建议删除该帖

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 580回
  • 年度积分:0
  • 历史总积分:2884
  • 注册:2010年9月08日
发表于:2011-07-06 16:47:17
5楼

              SETB     X0BIT

             SETB      X0BITL

LOOP:

              MOV       C,P2.0

              MOV       X0BIT,C

             JB            X0BIT,LR1

             JNB         X0BITL,LR1

             NOP                                   ;下降沿来了

LR1:     MOV       C,X0BIT

              MOV      X0BITL,C            ;保存本次状态供下次使用

             LJMP       LOOP

乔工

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 530回
  • 年度积分:0
  • 历史总积分:6371
  • 注册:2006年9月26日
发表于:2011-07-07 07:37:16
6楼
引用mycwm 的回复内容:

读p2.0 存在A

再读P2.0存在B

A>B?

是,下降沿

A<B

是,上升沿

然后B存入A,进行下一次判断。

如A=B

就无上升或下降

注意是位操作

用汇编不难。

 




 
正解

關羽

  • [版主]
  • 精华:5帖
  • 求助:21帖
  • 帖子:728帖 | 5626回
  • 年度积分:78
  • 历史总积分:82244
  • 注册:2004年5月28日
发表于:2011-08-28 18:01:22
7楼
了解了!基本也都是这些办法了!!明白!!

junhui

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 58回
  • 年度积分:0
  • 历史总积分:173
  • 注册:2005年9月06日
发表于:2011-08-28 20:01:44
8楼
讲得很明白。

girl killer

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 192回
  • 年度积分:0
  • 历史总积分:405
  • 注册:2006年7月30日
发表于:2011-10-01 18:35:52
9楼

用C语言要怎么写啊,!!!

關羽

  • [版主]
  • 精华:5帖
  • 求助:21帖
  • 帖子:728帖 | 5626回
  • 年度积分:78
  • 历史总积分:82244
  • 注册:2004年5月28日
发表于:2011-11-10 18:01:50
10楼
引用 girl killer 的回复内容:用C语言要怎么写啊,!!!

  if(m3_0==1)
      m30=1;
    if((m3_0==0)&&(m30==1))
  {
  send=1;
  m30=0;
  }

闲来灌灌

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:17
  • 注册:2005年2月06日
发表于:2011-12-09 10:54:38
11楼

谢谢,很实用。完全理解了。

CINLI

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 89回
  • 年度积分:0
  • 历史总积分:848
  • 注册:2011年12月08日
发表于:2011-12-12 13:53:53
12楼

有专门的芯片FM3104系列的,还有实时时钟

關羽

  • [版主]
  • 精华:5帖
  • 求助:21帖
  • 帖子:728帖 | 5626回
  • 年度积分:78
  • 历史总积分:82244
  • 注册:2004年5月28日
发表于:2011-12-25 11:45:53
13楼
引用 闲来灌灌 的回复内容:谢谢,很实用。完全理解了。

确实很实用啊!!

不懂工控

  • 精华:0帖
  • 求助:0帖
  • 帖子:32帖 | 647回
  • 年度积分:0
  • 历史总积分:583
  • 注册:2004年9月23日
发表于:2011-12-29 14:02:30
14楼
如果用FB功能块怎样做呢?

關羽

  • [版主]
  • 精华:5帖
  • 求助:21帖
  • 帖子:728帖 | 5626回
  • 年度积分:78
  • 历史总积分:82244
  • 注册:2004年5月28日
发表于:2011-12-31 15:06:35
15楼
引用 不懂工控 的回复内容:如果用FB功能块怎样做呢?

没搞过啊!


热门招聘
相关主题

官方公众号

智造工程师