发布网友 发布时间:2022-05-15 18:22
共1个回答
热心网友 时间:2023-08-10 07:53
<p>//键盘求值程序</p> <p>uncharscankey(void)</p> <p>{</p> <p>unchartemp,c,d;</p> <p> P2=0x0f;</p> <p> temp=P2;</p> <p>temp=temp&0x0f;//屏蔽高四位,取列值</p> <p>temp=~(temp|0xf0);//将temp中的内容与0xf0进行相加,最后求反可得到是那列按下</p> <p>if(temp==1)</p> <p>c=0;//P2.0位低电平</p> <p>elseif(temp==2)</p> <p>c=1;//P2.1位低电平</p> <p>elseif(temp==4)</p> <p>c=2;//P2.2位低电平</p> <p>elseif(temp==8)</p> <p>c=3;//P2.3位低电平</p> <p>else</p> <p>c=0;//否则给返回值C=0</p> <p>P2=0xf0;//给P2的行为高电平,以来判断是高四为的那位为低电平</p> <p>delay(1);</p> <p>temp=P2;</p> <p>temp=temp&0xf0;//屏蔽低四位</p> <p>temp=~((temp>>4)|0xf0);//将temp中的高四位向右移动4位,与0xf0相加,最后求反可以得到是那行按下</p> <p>if(temp==1)</p> <p>c=c+0;//将行P2.4的值加上列的值</p> <p>elseif(temp==2)</p> <p>c=c+4;//将行P2.5的值加上列的值</p> <p>elseif(temp==4)</p> <p>c=c+8;//将行P2.6的值加上列的值</p> <p>elseif(temp==8)</p> <p>c=c+12;//将行P2.7的值加上列的值</p> <p>else</p> <p>c=0;</p> <p> d=tab2[c];</p> <p>return(d);//最后返回行加列的值</p> <p>}</p> <p>你把这个程序看懂了。估计你的问题也就解决了。希望对你有所帮助哦!!</p> <p></p>