打印

请问 如何判断任何一个IO口上升下降边沿?

[复制链接]
942|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
林维东|  楼主 | 2016-3-27 09:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
wangjiahao88| | 2016-3-27 09:23 | 只看该作者
状态机吧!

要实现的IO口多吗?

使用特权

评论回复
板凳
姜长乐| | 2016-3-27 09:25 | 只看该作者
TACCTL1 = CM_3 + CCIS_0 + SCS + CAP + CCIE;
#pragma vector = TIMERA1_VECTOR
    __interrupt void TIMER_A (void)
    {
     switch(TAIV)
      {
      case 2:
              if(TACCTL1&SCCI)                 //就是这里判断这样写对么                     
                              {  //上升沿处理函输}
              else            
                             {//下降沿处理函数}
                      break;
      case 4 : break;
      case 10: break;     
      }
    }

使用特权

评论回复
地板
姜长乐| | 2016-3-27 09:27 | 只看该作者
void main(void)
{
    P1MDIN = 0XFF;                                                        //端口1输入方式配置寄存器,全部不配置为模拟输入
    P1MDOUT = 0X00;                                                        //端口1输出方式配置寄存器,全部配置为漏极开路输出
    P1 = 0XFF;
    XBR0 = 0X00;                                                        //端口I/O 交叉开关控制0,外设不连接引脚
    XBR1 = 0X40;                                                        //端口I/O 交叉开关控制1,交叉开关使能,弱上拉使能
while(1)

    {
    if (P1^3 = 0)                                                //检查P1.3下降沿
        {
        //这里放入你要执行的程序

        while(!P1^3)                                        //等待上升沿
        }
    }
}

使用特权

评论回复
5
姜长乐| | 2016-3-27 09:32 | 只看该作者
是不是需要同时检测 或者不允许while 等待的那种检测?

使用特权

评论回复
6
姜长乐| | 2016-3-27 11:09 | 只看该作者
似乎不好实现啊!

最好是选择一款ARM 有IO口可以配置中断的MCU。

使用特权

评论回复
7
gaoxiansheng| | 2016-3-29 09:56 | 只看该作者
看芯片了,选择带有IO中断的芯片,就可以检测到。

使用特权

评论回复
8
wangjiahao88| | 2016-4-4 21:07 | 只看该作者
嗯@

谢谢了!

另外 在进入中断以后 判断一下IO口的状态  就知道是上升还是下降了!

终于搞定了!

使用特权

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

本版积分规则

6

主题

45

帖子

1

粉丝