#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則按鍵正常使用,求大佬幫看看哪里寫的有問題
|