键盘扫描程序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
{
...
}
......
......
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
your first job is to define those ports / pins onto a logic notation and go from there. That way, if you ever need to change it in the future, you can simply change the logic notation and recompile.
键盘扫描程序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
{
...
}
......
......
}
一周热门 更多>