打印

用按键控制LED

[复制链接]
楼主: zhaoxqi
手机看帖
扫描二维码
随时随地手机跟帖
21
touser| | 2018-5-16 22:54 | 只看该作者 回帖奖励 |倒序浏览
直接一个比较指令就搞定

使用特权

评论回复
22
myiclife| | 2018-5-16 22:55 | 只看该作者
构造4位串入并出移位寄存器

使用特权

评论回复
23
uytyu| | 2018-5-16 22:55 | 只看该作者
用C语言编写吗?

使用特权

评论回复
24
iyoum| | 2018-5-16 22:56 | 只看该作者
编写就是i++就判断。

使用特权

评论回复
25
wwppd| | 2018-5-16 22:56 | 只看该作者
看不到你的硬件电路,帮不了你。

使用特权

评论回复
26
htmlme| | 2018-5-16 22:56 | 只看该作者
具体要使用的是什么芯片,要多大的驱动

使用特权

评论回复
27
yujielun| | 2018-5-16 22:56 | 只看该作者
最简单的就是外部中断处理。

使用特权

评论回复
28
typeof| | 2018-5-16 22:56 | 只看该作者
计数到2就点亮另外一个LED。

使用特权

评论回复
29
usysm| | 2018-5-16 22:56 | 只看该作者
如果是连续按压的就是需要定时器处理了。

使用特权

评论回复
30
uytyu| | 2018-5-16 22:56 | 只看该作者
最简单的就是你提供一下电路吧

使用特权

评论回复
31
myiclife| | 2018-5-16 22:56 | 只看该作者
串入端保持1电平,按一次开关,就是输入一个时钟脉冲信号

使用特权

评论回复
32
touser| | 2018-5-16 22:56 | 只看该作者
就是计数然后取余计算。

使用特权

评论回复
33
pklong| | 2018-5-16 22:57 | 只看该作者
还是在实物开发板上实现?

使用特权

评论回复
34
wwppd| | 2018-5-16 22:57 | 只看该作者
可以在proteus做个仿真,程序网上有的。

使用特权

评论回复
35
iyoum| | 2018-5-16 22:57 | 只看该作者
楼主在中断处理i++,对i奇数偶数进行判断。

使用特权

评论回复
36
wuhany| | 2018-5-17 11:14 | 只看该作者
*************************************************/
// Timer A0 interrupt service routine
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)  

   { //TACCTL0&=~ CCIE; //关中断
     static  unsigned char KEY_State=0; //按键的状态变量
     static  unsigned char i,j=0;   //计数,用于处理时间
   switch(KEY_State)            //处理按键状态
   {case NOKEY:   //未按键时进行按键处理
    if ((P1IN&BIT3)==0)
     {KEY_State=PUSH_KEY;  //按下按键后,进入短按状态
      }
      break;  //必须要,需要退出循环
   case PUSH_KEY:   //短按状态时进行按键处理
     if((P1IN&BIT3)!=0)   //释放按键,认为是一次短按,加以处理
     {  KEY=1;  //按键赋值
     KEY_State=NOKEY;  //回到未按状态
     }
      else
      {
       if (i<100)
       { //KEY=0;  //KEY返回0,接收下一次数据
            i++;              //计数,以实现长按键,约2秒
        }
         else
         {
          i=0;
          KEY=2;  //输出长按初始状态
          KEY_State=LONG_KEY;  //长按状态
         }
      }
     break;
     
    case LONG_KEY:   //长按状态时进行按键处理
     if((P1IN&BIT3)!=0)   //释放按键,退出
     {  KEY=0;  //按键赋值
     KEY_State=NOKEY;  //回到未按状态
     }
     else
     {
      if (j<5)
       {
            j++;              //计数,以实现长按键状态计时,约0.1秒
        }
         else
         {j=0;   //重新计数
          KEY=3;  //长按状态的处理
         }
      }
     break;
  
    }
    TACCTL0|= CCIE;  //开中断
   }

使用特权

评论回复
37
jlyuan| | 2018-5-17 11:18 | 只看该作者
单片机常用输入键盘的设计、LED 静态显示

使用特权

评论回复
38
jlyuan| | 2018-5-17 11:19 | 只看该作者
单片机常用输入键盘的设计、LED 静态显示

使用特权

评论回复
39
zhaoxqi|  楼主 | 2018-5-17 11:25 | 只看该作者

哦,那我就知道怎么回事了,多谢大家,结贴了哈

使用特权

评论回复
40
CaLipton| | 2018-5-19 11:10 | 只看该作者
用定时器,约定读取键盘状态的时间
然后用状态机
15楼的可以参考一下

使用特权

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

本版积分规则