键扫描

2019-07-16 06:26发布

希望高手们能看看这是怎么回事呀。。




#include <reg52.h>
typedef unsigned char  uchar;
sbit K1=P0^0;
sbit K2=P0^1;
sbit K3=P0^2;
sbit K4=P0^4;
sbit K5=P0^5;
uchar j_saomiao()
{
uchar jian;
jian=0x00;
jian|=K1;
jian<<=1;
jian|=K2;
jian<<=1;
jian|=K3;
jian<<=1;
jian|=K4;
return jian;
}
main()
{
uchar a;
P0=0x0f;
a=j_saomiao();
}
最近写了个键扫描接口,编译成功后进入单步调试时,当编译器读到jian<<=1;  jian|=K4;这两句时却没有作任何动作(读了指令,却不执行),这到底是怎么一回事啊???急急急。。。求大虾们说说吧。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
sailor_yan
1楼-- · 2019-07-16 07:39
单步调执行jian|=K1;后jian是什么值?
mdjsyf
2楼-- · 2019-07-16 10:05
程序没问题呀,没实验,但感觉是对的。
diangongshi
3楼-- · 2019-07-16 10:18
sailor_yan 发表于 2012-2-16 22:27
单步调执行jian|=K1;后jian是什么值?

你这个jian能读出k1=1,读不出k1=0,除非在读之前对jian清零。
感觉这样设计很糟糕,为什么不直接K1=jian,
wangshangun
4楼-- · 2019-07-16 13:23
 精彩回答 2  元偷偷看……
diangongshi
5楼-- · 2019-07-16 15:39
wangshangun 发表于 2012-2-18 20:49
uchar j_saomiao()
{
uchar jian;

呵呵,大家都是在学习中,有时间多多交流

一周热门 更多>