#include <REGX52.H>
sbit key1 = P2^4;
sbit key2 = P2^5;
sbit key3 = P2^6;
sbit key4 = P2^7;
unsigned char sz[]={0x10,0x00,0x78,0x02,0x12,0x19,0x30,0x24,0x79,0x40};//数码管值
void Timer0Init(void) //1毫秒@12.000MHz
{
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x01; //设置定时器模式
TL0 = 0x30; //设置定时初值
TH0 = 0xf8; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
EA=1; //定时器总开关
ET0=1; //定时器0开关
}
bit keydq = 1;//按键当前值
bit bc = 1;//保存前一次的值
void main()
{
unsigned char i; //数值变化
P2=0xfe;//矩阵按键选择P2.0低电平
Timer0Init();
while(1)
{
if(key2==0)
{
P0=0X55;
}
if(keydq != bc) //当前值与前一次不一样
{
if(bc == 0)
{
i++;
if(i >= 9)
{
i=0;
}
}
}
P1=sz[i];
bc=keydq;
}
}
void time0() interrupt 1
{
unsigned char keybuf=0xff;
P2=0XFE;
TL0 = 0x30; //设置定时初值
TH0 = 0xf8; //设置定时初值
keybuf=(keybuf<<1) | key2;
if(keybuf==0x00)
{
keydq=0;
}
else if(keybuf==0xff)
{
keydq=1;
}
else
{}
}
程序如上在main中将keydq换成key1则按键正常使用,求大佬帮看看哪里写的有问题
|