打印

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

[复制链接]
2925|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)   按键// 不是这样定义的

使用特权

评论回复
5
shanyanfeng909|  楼主 | 2009-4-27 21:31 | 只看该作者

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

使用特权

评论回复
6
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);//在按键没松开之前,一直停留 ,一旦松开进入下一次键盘扫描
        }

}  
}  

使用特权

评论回复
7
QChuang| | 2009-4-27 21:51 | 只看该作者

没明白

你的引脚定义了吗?

使用特权

评论回复
8
ayb_ice| | 2009-4-27 21:57 | 只看该作者

LZ

{if(P2^7)   //按键
你知道上面这句话的意思吗?

使用特权

评论回复
9
快乐的水手| | 2009-4-27 22:18 | 只看该作者

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

使用特权

评论回复
10
电脑圆圆| | 2009-4-27 23:37 | 只看该作者

先把c弄懂再问

使用特权

评论回复
11
shanyanfeng909|  楼主 | 2009-4-28 08:55 | 只看该作者

to7楼

#include <SST89x5x4.H> 不能定义引脚啊。

使用特权

评论回复
12
shanyanfeng909|  楼主 | 2009-4-28 09:12 | 只看该作者

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

头里面之定义了P2,所以P2^7不能直接操作

使用特权

评论回复
13
computer00| | 2009-4-28 10:00 | 只看该作者

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

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

sbit KEY = P2^7;


if(KEY) //按键
{
}



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

sbit P2_7 = P2^7;

那么你可以直接用
if(P2_7)  //按键
{
}

使用特权

评论回复
14
gszzjf| | 2009-4-28 13:45 | 只看该作者

侃单片机

有点意思记住了 c跟c51还是有区别

使用特权

评论回复
15
glf| | 2009-8-21 17:18 | 只看该作者
还是定义一下吧,sbit key=P2^7;

使用特权

评论回复
16
etz2009| | 2009-8-21 20:03 | 只看该作者
直接用P2^7在程序里是通不过的

使用特权

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

本版积分规则

1

主题

16

帖子

0

粉丝