希望大神帮我看看程序啥问题?还不怎么会发帖子
/*矩阵按键通过读取按键值表来分析出按键值并送去显示*/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^0;
sbit wela=P2^1;
uchar code key_table[]={0xee,0xde,0xbe,0x7e, //按键键值表
0xed,0xdd,0xbd,0x7d,
0xeb,0xdb,0xbb,0x7d,
0xe7,0xd7,0xb7,0x77};
uchar code table[]={0x3f,0x06,0x5b,0x4f, //定义一个阴极数码管的编码表。
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delayms(uint xms) //延时子程序
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar y) //显示子程序
{
P0=table[y];
dula=1;
dula=0 ;
}
main()
{
uchar temp,key,num,x;
P0=0x00;
dula=1;
dula=0;
P0=0x00;
wela=1;
wela=0;
while(1)
{
P3=0xf0;
if(P3!=0xf0)
{
delayms(10);
if(P3!=0xf0)
{
temp=P3;
P3=0x0f;
key=temp|P3;
for(x=0;x<16;x++)
if(key==key_table[x])
{
num=x;
break;
}
display(x);
delayms(100);/*这个延时可以加,也可以不加,加上仿真,
用肉眼可以看出程序在不断扫描,不加就看不出来,
但是实际还是在扫描 */
}
}
}
} |