永发信息网

单片机I/O口高四位和低四位的问题(不知如何表达。。)

答案:1  悬赏:30  手机版
解决时间 2021-04-07 04:20
  • 提问者网友:
  • 2021-04-06 09:46
单片机I/O口高四位和低四位的问题(不知如何表达。。)
最佳答案
  • 五星知识达人网友:雾月
  • 2021-04-06 10:32
//键盘求值程序
uncharscankey(void)
{
unchartemp,c,d;
P2=0x0f;
temp=P2;
temp=temp&0x0f;//屏蔽高四位,取列值
temp=~(temp|0xf0);//将temp中的内容与0xf0进行相加,最后求反可得到是那列按下
if(temp==1)
c=0;//P2.0位低电平
elseif(temp==2)
c=1;//P2.1位低电平
elseif(temp==4)
c=2;//P2.2位低电平
elseif(temp==8)
c=3;//P2.3位低电平
else
c=0;//否则给返回值C=0
P2=0xf0;//给P2的行为高电平,以来判断是高四为的那位为低电平
delay(1);
temp=P2;
temp=temp&0xf0;//屏蔽低四位
temp=~((temp>>4)|0xf0);//将temp中的高四位向右移动4位,与0xf0相加,最后求反可以得到是那行按下
if(temp==1)
c=c+0;//将行P2.4的值加上列的值
elseif(temp==2)
c=c+4;//将行P2.5的值加上列的值
elseif(temp==4)
c=c+8;//将行P2.6的值加上列的值
elseif(temp==8)
c=c+12;//将行P2.7的值加上列的值
else
c=0;
d=tab2[c];
return(d);//最后返回行加列的值
}
你把这个程序看懂了。估计你的问题也就解决了。希望对你有所帮助哦!!


记得采纳啊
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯