21ic电子技术开发论坛 综合技术交流 新手园地 我用MSP430F6638做独立按键扫描
发新帖我要提问
返回列表
打印

我用MSP430F6638做独立按键扫描

[复制链接]
1341|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ljq13035330935|  楼主 | 2013-12-10 19:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <msp430f6638.h>
char keyscan();
void delay(unsigned char z);
void main(void)
{
         char K=0;
         WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT
         P4DIR&=~(BIT4+BIT3+BIT2+BIT1+BIT0);
         P4OUT|=BIT4+BIT3+BIT2+BIT1+BIT0;
         P4REN =BIT4+BIT3+BIT2+BIT1+BIT0;
         P4DIR|=BIT5+BIT6+BIT7;
         P5DIR|=BIT7;
         P8DIR|=BIT0;
         while(1)
         {
                 K=keyscan();
                 if(K==1)
                 {
                         delay(50);
                         if(K==1)
                         {
                                while(!(P4IN&0X10));
                                P4OUT^=BIT5;
                         }
                 }
                 if(K==2)
                 {
                         delay(50);
                         if(K==2)
                         {
                                 while(!(P4IN&0X08));
                                 P4OUT^=BIT6;
                         }
                 }
                 if(K==3)
                 {
                         delay(50);
                         if(K==3)
                         {
                                 while(!(P4IN&0X04));
                                 P4OUT^=BIT7;
                         }
                 }
                 if(K==4)
                 {
                         delay(50);
                         if(K==4)
                         {
                                 while(!(P4IN&0X02));
                                 P5OUT^=BIT7;
                         }
                 }
                 if(K==5)
                 {
                         delay(50);
                         if(K==5)
                         {
                                 while(!(P4IN&0X01));
                                 P8OUT^=BIT0;
                         }
                 }
         }

}
char keyscan()
{
         if(!(P4IN&0X10))
         return 1;
         if(!(P4IN&0X08))
         return 2;
         if(!(P4IN&0X04))
         return 3;
         if(!(P4IN&0X02))
         return 4;
         if(!(P4IN&0X01))
         return 5;
         return 0;
}
void delay(unsigned char z)
{
        unsigned char x,y;
        for(x=z;x>0;x--)
                for(y=20;y>0;y--);
}
我用MSP430F6638做独立按键扫描,我把里面的if(!(P4IN&0X10))换成if(P4IN&0X08==0)无法实现按键的功能,但是两个语句的功能是一样的,很是不解,求各位大神指教!!

相关帖子

沙发
dirtwillfly| | 2013-12-10 22:13 | 只看该作者
你的电路是什么样的?和程序配套吗?

使用特权

评论回复
板凳
黄小俊| | 2013-12-11 12:46 | 只看该作者
电路图有没问题?键盘扫描为啥要这么写?

使用特权

评论回复
地板
gcxzhz| | 2013-12-11 19:46 | 只看该作者
!(P4IN&0X10)  P4IN&0X08==0 一个是检测p4.7的一个是检测p4.3的能一样吗

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝
关闭 热门推荐
快速回复 在线客服 返回列表 返回顶部