一个按键扫描的C程序(求助)(已解决)

[复制链接]
4565|15
 楼主| shanyanfeng909 发表于 2009-4-27 20:25 | 显示全部楼层 |阅读模式
   void main()    
{    P1=0x00;
    while(1)    
    {if(P2^7)   按键
        {delay();
            if(P2^7)  确认按键
            P1++; 计数(按键次数)
            while(P2^7);在按键没松开之前,一直停留 ,一旦松开进入下一次键盘扫描
        }

}  
}  
 楼主| shanyanfeng909 发表于 2009-4-27 20:27 | 显示全部楼层

这个程序有问题吗?

 楼主| shanyanfeng909 发表于 2009-4-27 20:33 | 显示全部楼层

while(P2^7);执行完了,会去哪?

ayb_ice 发表于 2009-4-27 20:52 | 显示全部楼层

一看就知是菜鸟

 {if(P2^7)   按键// 不是这样定义的
 楼主| shanyanfeng909 发表于 2009-4-27 21:31 | 显示全部楼层

晕,我的按键就是接在2.7上的啊

 楼主| shanyanfeng909 发表于 2009-4-27 21:39 | 显示全部楼层

我还是把整个程序都粘上吧

#include <SST89x5x4.H>

void delay(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}

void main(void)    
{   P1=0x00;
    while(1)    
    {if(P2^7)   //按键
        {delay();
            if(P2^7)  //确认按键
            P1++; //计数(按键次数)
            while(P2^7);//在按键没松开之前,一直停留 ,一旦松开进入下一次键盘扫描
        }

}  
}  
QChuang 发表于 2009-4-27 21:51 | 显示全部楼层

没明白

你的引脚定义了吗?
ayb_ice 发表于 2009-4-27 21:57 | 显示全部楼层

LZ

{if(P2^7)   //按键
你知道上面这句话的意思吗?
快乐的水手 发表于 2009-4-27 22:18 | 显示全部楼层

按键最好加上拉电阻,按下时为低电平

电脑圆圆 发表于 2009-4-27 23:37 | 显示全部楼层

先把c弄懂再问

 楼主| shanyanfeng909 发表于 2009-4-28 08:55 | 显示全部楼层

to7楼

#include <SST89x5x4.H> 不能定义引脚啊。
 楼主| shanyanfeng909 发表于 2009-4-28 09:12 | 显示全部楼层

问题出在P2^7头里没定义

头里面之定义了P2,所以P2^7不能直接操作
computer00 发表于 2009-4-28 10:00 | 显示全部楼层

^在语句里是异或操作的意思,你这样的结果就是错误的。

^用来定义位时,只能跟sbit结合才对。

sbit KEY = P2^7;


if(KEY) //按键
{
}



通常,keil自带的带X的头文件里会定义一个

sbit P2_7 = P2^7;

那么你可以直接用
if(P2_7)  //按键
{
}
gszzjf 发表于 2009-4-28 13:45 | 显示全部楼层

侃单片机

有点意思记住了 c跟c51还是有区别
glf 发表于 2009-8-21 17:18 | 显示全部楼层
还是定义一下吧,sbit key=P2^7;
etz2009 发表于 2009-8-21 20:03 | 显示全部楼层
直接用P2^7在程序里是通不过的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

16

帖子

0

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