键盘扫描程序3*4,因为端口资源不够,想改动一个端口,程序怎么改

2020-02-09 09:26发布

键盘扫描程序3*4,因为端口资源不够,想改动一个端口,程序怎么改

如下代码是键盘扫描程序3*4   (横向端口是RC0,RC1,RC2,RC3,纵向端口是RC4,RC5,RC6 )
我想将键盘 RC1端口改用RC7口 (横向端口是RC0,RC7,RC2,RC3,纵向端口是RC4,RC5,RC6 ),   程序怎么改, 请大侠帮忙


void scan()
{
        uchar key_tem;
        PORTC=0x7f;
        key_num=PORTC;
        key_num=key_num&0x0f;
        if(key_num!=0x0f)
        {
                delay(10);
                key_num=PORTC;
                key_num=key_num&0x0f;
                if(key_num!=0x0f)
                {
                        key_tem=key_num;
                        while(key_tem!=0x0f)  
                        {
                                key_tem=PORTC;
                                key_tem=key_tem&0x0f;
                        }       
                        key_num=key_num|0x70;
                }
        }
        else
        {
                PORTC=0xBf;
                key_num=PORTC;
                key_num=key_num&0x0f;  
                if(key_num!=0x0f)
                {
                        delay(10);
                        key_num=PORTC;
                        key_num=key_num&0x0f;
                        if(key_num!=0x0f)
                        {
                                key_tem=key_num;
                                while(key_tem!=0x0f)
                                {
                                        key_tem=PORTC;
                                        key_tem=key_tem&0x0f;
                                }       
                                key_num=key_num|0xb0;
                        }
                }
                else
                {
                        PORTC=0xdf;//1101 1111
                        key_num=PORTC;
                        key_num=key_num&0x0f;
                        if(key_num!=0x0f)
                        {
                                delay(10);
                                key_num=PORTC;
                                key_num=key_num&0x0f;
                                if(key_num!=0x0f)
                                {
                                        key_tem=key_num;
                                        while(key_tem!=0x0f)
                                        {
                                                key_tem=PORTC;
                                                key_tem=key_tem&0x0f;
                                        }       
                                        key_num=key_num|0xd0;
                                }
                        }
                        else
                        {
                                PORTC=0xef;
                                key_num=PORTC;
                                key_num=key_num&0x0f;
                                if(key_num!=0x0f)
                                {
                                        delay(10);
                                        key_num=PORTC;
                                        key_num=key_num&0x0f;
                                        if(key_num!=0x0f)
                                        {
                                                key_tem=key_num;
                                                while(key_tem!=0x0f)
                                                {
                                                        key_tem=PORTC;
                                                        key_tem=key_tem&0x0f;
                                                }       
                                                key_num=key_num|0xe0;
                                        }
                                }
                        }       
                }               
        }
}



void main()
...
...
while(1)

{
...
scan();
...

   if(key_num==0xde) //按键1
        {
        ...
        }
   if(key_num==0xbe) //按键2
        {
        ...
        }
   if(key_num==0xdd) //按键3
        {
        ...
        }
   if(key_num==0xed) //按键4
        {
        ...
        }
   if(key_num==0xdb) //按键5
        {
        ...
        }
   if(key_num==0xeb) //按键6
        {
        ...
        }
   if(key_num==0xbd) //按键7
        {
        ...
        }
   if(key_num==0xd7) //按键8
        {
        ...
        }
   if(key_num==0xe7) //按键9
        {
        ...
        }
   if(key_num==0xee) //按键10
        {
        ...
        }
  ......
  ......

}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
zhouboy
2020-02-09 19:21
粘贴上去的空格怎么会变没有了呢
键盘扫描程序3*4,因为端口资源不够,想改动一个端口,程序怎么改

如下代码是键盘扫描程序3*4   (横向端口是RC0,RC1,RC2,RC3,纵向端口是RC4,RC5,RC6 )
我想将键盘 RC1端口改用RC7口 (横向端口是RC0,RC7,RC2,RC3,纵向端口是RC4,RC5,RC6 ),   程序怎么改, 请大侠帮忙


void scan()
{
        uchar key_tem;
        PORTC=0x7f;
        key_num=PORTC;
        key_num=key_num&0x0f;
        if(key_num!=0x0f)
        {
                delay(10);
                key_num=PORTC;
                key_num=key_num&0x0f;
                if(key_num!=0x0f)
                {
                        key_tem=key_num;
                        while(key_tem!=0x0f)  
                        {
                                key_tem=PORTC;
                                key_tem=key_tem&0x0f;
                        }       
                        key_num=key_num|0x70;
                }
        }
        else
        {
                PORTC=0xBf;
                key_num=PORTC;
                key_num=key_num&0x0f;  
                if(key_num!=0x0f)
                {
                        delay(10);
                        key_num=PORTC;
                        key_num=key_num&0x0f;
                        if(key_num!=0x0f)
                        {
                                key_tem=key_num;
                                while(key_tem!=0x0f)
                                {
                                        key_tem=PORTC;
                                        key_tem=key_tem&0x0f;
                                }       
                                key_num=key_num|0xb0;
                        }
                }
                else
                {
                        PORTC=0xdf;//1101 1111
                        key_num=PORTC;
                        key_num=key_num&0x0f;
                        if(key_num!=0x0f)
                        {
                                delay(10);
                                key_num=PORTC;
                                key_num=key_num&0x0f;
                                if(key_num!=0x0f)
                                {
                                        key_tem=key_num;
                                        while(key_tem!=0x0f)
                                        {
                                                key_tem=PORTC;
                                                key_tem=key_tem&0x0f;
                                        }       
                                        key_num=key_num|0xd0;
                                }
                        }
                        else
                        {
                                PORTC=0xef;
                                key_num=PORTC;
                                key_num=key_num&0x0f;
                                if(key_num!=0x0f)
                                {
                                        delay(10);
                                        key_num=PORTC;
                                        key_num=key_num&0x0f;
                                        if(key_num!=0x0f)
                                        {
                                                key_tem=key_num;
                                                while(key_tem!=0x0f)
                                                {
                                                        key_tem=PORTC;
                                                        key_tem=key_tem&0x0f;
                                                }       
                                                key_num=key_num|0xe0;
                                        }
                                }
                        }       
                }               
        }
}



void main()
...
...
while(1)

{
...
scan();
...

   if(key_num==0xde) //按键1
        {
        ...
        }
   if(key_num==0xbe) //按键2
        {
        ...
        }
   if(key_num==0xdd) //按键3
        {
        ...
        }
   if(key_num==0xed) //按键4
        {
        ...
        }
   if(key_num==0xdb) //按键5
        {
        ...
        }
   if(key_num==0xeb) //按键6
        {
        ...
        }
   if(key_num==0xbd) //按键7
        {
        ...
        }
   if(key_num==0xd7) //按键8
        {
        ...
        }
   if(key_num==0xe7) //按键9
        {
        ...
        }
   if(key_num==0xee) //按键10
        {
        ...
        }
  ......
  ......

}

一周热门 更多>