单片机的c语言:判断矩阵键盘被按下:P1=0xfe;while(P1!=0xfe){延时,判断。。。。。。。。。};。。。

我题目的程序能判断吗跟这个标准的有啥区别P3=0xfe;temp=P3;temp=temp&0xf0;while(temp!=0xf0){... 我题目的程序能判断吗

跟这个标准的有啥区别
P3=0xfe;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
展开
 我来答
lexou123
2012-05-21 · TA获得超过543个赞
知道小有建树答主
回答量:279
采纳率:100%
帮助的人:211万
展开全部
硬件没问题到可以最好加个中间变量 。
第一步先给矩阵赋值将一线拉低即:P3=0xFE; // 1111,1110
第二步再给读口即:temp=P3;
第三步取:取高4位;temp&=0xF0;
第四步:判断是否有按键,有按键按下进入按键循环,没有就退出,一般用if就行了。
第五步:延时10ms
第六步接着第一步,到第四步要使用while循环才确定真正有键按下而不是干扰引起的引脚波动。
为什么有Temp太重要了,一定要使用,中间变量在你做判断的时候不会因为改变而改变,
例如:写两句
if(P1==0xFE)
{
if(P1==0xFE)
。。。
}

temp=P1;
if(Temp==0xFE)
{
if(Temp==0xFE)
。。。
}
实际应用中不如加Temp稳定,P1口一直会因为外部影响而变的,temp不会只会跟你的运算而变,你在取高位判断或直接判断的时候回发现,虽然你赋值0xFE但是,发现第二个管脚短接了,
会P1会变成:0xFC;// 1111 1100;因此你的while(P1!=0xfe)就不如直接用temp取值后判断了,程序就会跑到你不知道的地方,这叫误判断也叫失控,对以后的查找问题会带来麻烦。
hpj4525
2012-05-20 · TA获得超过331个赞
知道小有建树答主
回答量:479
采纳率:100%
帮助的人:335万
展开全部
P1=0xfe;
while(P1!=0xfe)这里不一样 人家的是temp=temp&0xf0; 你的事P1!=0xfe
{
延时,判断。。。。。。。。。
};。。�
追问
你说的我能看出来  ,这么问你吧 ,人家为啥要用TEMP
追答
temp  这是一个中转而已 可以不要的 呵呵 人家的是P3=P3&0xf0; P3!=0xf0 而你的是P1!=0xfe
很明显是不一样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式