51单片机4 x 4矩阵键盘的检测中P3=0xfe,temp=P3;看解释ms第二步是把按下去的键P3赋给temp 但p3不是被 5

oxfe赋值了吗?????为什么还可以保留所按键啊/*********第一行键盘的检测**********/P3=0xfe;//设置P3口的电平为11111110,也就是... oxfe赋值了吗?????为什么还可以保留所按键啊
/*********第一行键盘的检测**********/
P3=0xfe; //设置P3口的电平为11111110,也就是让P3.0口为低电平,其他的口为高电平
temp=P3; //读取p3口的电平
temp=temp&0xf0; //p3口的电平跟11110000做与操作
while(temp!=0xf0) //检测到第一行上有键盘按下去了
{
delay(5); //延时5ms用来消除按键的抖动
temp=P3; //再次读取P3口的电平
temp=temp&0xf0; //p3口的电平跟11110000做与操作
while(temp!=0xf0) //延时后确实有人按下了第一行的键盘(不是别的干扰导致的)
{
temp=P3; //因为已经确定按下了键,这时就读取P3口的电平
switch(temp)
展开
 我来答
Yuzai菌
2015-10-01
知道答主
回答量:1
采纳率:0%
帮助的人:1194
展开全部
这个问题是这样的,首先单片机的c语言和电脑的编译器不是一样的,你要考虑硬件,下面步入正题:

P3=0xfe; //P3等于0xfe
temp=P3; //temp等于P3等于0xfe
temp=temp&0xf0; //到这里,如果你按下矩阵键盘的第一个键,那么temp等于0xee
temp=0xee&0xf0=0xe0
while(temp!=0xf0) //你这里打错了,不是while语句是if语句,现在temp的值是0xe0
0xe0不等于0xf0,所以进入语句内部
{
delay(5); //去抖动
temp=P3; //现在赋值,这是你还在按着第一个键,那么P3=0xee,所以temp等于0xee
temp=temp&0xf0; //temp=0xee&0xf0=0xe0,“看这里,这是temp=0xe0”
while(temp!=0xf0) //这里还是写错了,是if语句,0xe0不等于0xf0再次进入语句内部
{
temp=P3;//在没执行这一步的时候,temp的值是0xe0,如果不把P3的值赋予temp
那么当进入switch语句后就没有相应的case,这是你还在按键,那么
P3=0xee,所以temp也等于0xee,然后进入switch语句判断,进入
相应的case
switch(temp)
杨幕芷
2013-12-15
知道答主
回答量:15
采纳率:0%
帮助的人:1.4万
展开全部
按键的中断级比较高,你赋值后,如果按键了,他会先处理按键,硬件采用与或非的的逻辑,最终会把该按键的值在你按下的时候赋值进去。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
景中背影
2015-01-24
知道答主
回答量:1
采纳率:0%
帮助的人:1281
展开全部
P3在等号左边是赋值,在等号右边是读入
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7b5adf027
2012-03-30
知道答主
回答量:32
采纳率:0%
帮助的人:25.6万
展开全部
没看明白,程序没错啊!~先赋值,然后读取,判断
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lfengxinmin
2012-03-18
知道答主
回答量:14
采纳率:0%
帮助的人:2.3万
展开全部
唉,何必这么复杂呢;用我这程序吧
sbit k0=P3^0;
sbit k1=P3^1;
sbit k2=P3^2;
sbit k3=P3^3;
sbit k4=P3^4;
sbit k5=P3^5;
sbit k6=P3^6;
sbit k7=P3^7;
P3=0xff;
k0=0;
if(!k4){}
if(!k5){}
if(!k6){}
if(!k7){}
P3=0xff;
k1=0;
if(!k4){}
if(!k5){}
if(!k6){}
if(!k7){}
P3=0xff;
k2=0;
if(!k4){}
if(!k5){}
if(!k6){}
if(!k7){}
P3=0xff;
k3=0;
if(!k4){}
if(!k5){}
if(!k6){}
if(!k7){}
中间加适当的按键去抖就行
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式