注册 登录
编程论坛 单片机编程

为什么要重复?

ljl223559772 发布于 2013-08-30 20:40, 4105 次点击
void matrixkeyscan()
{
    uchar temp,key;
    P3=0xfe;
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
    {
        delayms(10);
        temp=P3;
        temp=temp&0xf0;
        if(temp!=0xf0)
        {
            temp=P3;                                     //这个不明白
            switch(temp)
            {
                case 0xee:
                key=0;
                break;
                case 0xde:
                key=1;
                break;
                case 0xbe:
                key=2;
                break;
                case 0x7e:
                key=3;
                break;
            }
            while(temp!=0xf0)              //等待按键释放
            {
                temp=P3;
                temp=temp&0xf0;
            }
            display(key);                    //显示
        }            
    }

请问那个地方为什么还要加一个temp=P3;???
1 回复
#2
小xiong2013-09-01 09:54
,嗯,我只讲为什么,
temp=temp&0xf0;//若直接取这个temp,那么下面case 就不是0xee,而是0xe0
     if(temp!=0xf0)
     {
         delayms(10);
 if(temp!=0xf0)//
         {
             temp=P3;                                     //
             switch(temp)
             {
                 case 0xee://因为这个值是直接取p3,p3初值为0xfe,第一个键按下为0xee
                 key=0;
                 break;
                 case 0xde:
1