#include<reg51.h>
unsigned char table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
void delay10ms(int n);
void main()
{
unsigned char i,j,t;
while(1)
{
P2=table[0];
P3=0x0F;
t=P3;
P3=t;
while(P3==0x0F);
delay10ms(1);
if(P3!=0x0F)
{
switch(P3)
{
case 0x07:i=4;;break;
case 0x0B:i=3;break;
case 0x0D:i=2;break;
case 0x0E:i=1;break;
default:i=0;break;
}
P3=0xEF;
t=P3;
P3=t;
if(P3!=0xEF) j=1;
P3=0xDF;
t=P3;
P3=t;
if(P3!=0xDF) j=2;
P3=0xBF;
t=P3;
P3=t;
if(P3!=0xBF) j=3;
P3=0x7F;
t=P3;
P3=t;
if(P3!=0x7F) j=4 ;
P2=table[5*i-6+j];
}
}
}
void delay10ms(int n)
{
int i,j;
while(n--)
{
for(i=11;i>0;i--)
for(j=108;j>0;j--);
}
}
这个是4*4矩阵键盘的源程序 ,我在KEIL和PROTEUS中联调一直单步运行能显示最后结果(要按下的那个键在PROTEUS电路中我连接起来让它短路,说明是这个键按下了),但是为什么在KEIL中生成.HEX文件 加载到PROTEUS中运行时,按下按键又没反应了,是不是上面的程序有问题,希望懂的高手能解答!!
[ 本帖最后由 cs350203 于 2011-1-1 20:13 编辑 ]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>