51C语言编程的疑问!希望高手们能帮我解答

2019-07-15 23:53发布

temp  去掉,直接用P1 代替  , 这样有什么区别吗 ??


void  keyscan(void)
{  P1=0xF0;                 //高四位输入   列为高电平  行为低电平
    delay(1);
        temp=P1;                                 //延时               //读P1口
    temp=temp&0xF0;                         //屏蔽低四位
    temp=~((temp>>4)|0xF0);          
   if(temp==1)          // p1.4 被拉低
        key=1;  //第1个按键键值
    else if(temp==2)   // p1.5 被拉低
        key=2;          //第2个按键键值
    else if(temp==4)   // p1.6 被拉低
        key=3;         //第3个按键键值
    else if(temp==8)   // p1.7 被拉低
         key=4;          //第4个按键键值
        else
           key = 16;

    P1=0x0F;             //低四位输入  行为高电平 列为低电平
    delay(1);                         //延时
        temp=P1;             //读P1口      
    temp=temp&0x0F;
    temp=~(temp|0xF0);
    if(temp==2)                   //第一行  p1.1  被拉低(直接P1==2 是因为我们P1.0空的,是3*4的矩阵键盘)
        key=key+0;
    else if(temp==4)   //第二行  p1.2  被拉低
        key=key+4;
    else if(temp==8)   //第三行 p1.3  被拉低
        key=key+8;
        else
          key = 16;


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。