|
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint i;
uchar table[8]={0};
void delay(uint x)
{
uchar i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void init()
{
TMOD = 0x20; //֨ʱǷ٤طʽһ
//SCON = 0x50; //ԮࠚՊѭޓ˕˽ߝ
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1;
SM0=0;
SM1=1;
EA=1;
}
void send (uchar dat)
{
for(i=0;i<8;i++)
table[i]=dat;
if(dat==11)
{
for(i=0;i<8;i++)
{
ES=0;
SBUF = table[i];
while(!TI);
TI = 0;
}
ES=1;
}
}
/*4*4ߘֳݼƌP0ࠚìɨĨگ˽*/
void keyscan1()
{
uchar temp,num;
P3= 0xfe; //1111 1110 ֚һПˤԶһٶ֍֧ƽ
temp = P3; //temp = 1111 1110
temp = temp&0xf0; //1111 1110 & 1111 0000 = 1111 0000 =0xf0
if(temp != 0xf0) //ձԐдݼдЂìղP0ֵעʺلҤì
{
delay(10); //ғʱms
temp = P3;
temp = temp & 0xf0;
if(temp != 0xf0) //ՙՎȷɏˇرԐдݼдЂ
{
temp = P3; //ׁȡP0ࠚքֵ
//ғʱ
switch(temp) //ѐݼֵƐ
{
case 0xee:num =0; break;
case 0xde:num =1; break;
case 0xbe:num =2; break;
case 0x7e:num =3; break;
}
while(temp != 0xf0)
{
temp = P3;
temp = temp&0xf0;
}
send(num);
}
}
P3 = 0xfd; // 1111 1101 ֚ПˤԶһٶ֍֧ƽ
temp = P3;
temp = temp&0xf0;
if(temp != 0xf0)
{
delay(10);
temp = P3;
temp = temp&0xf0;
if(temp != 0xf0)
{
temp = P3;
switch(temp)
{
case 0xed:num =4; break;
case 0xdd:num =5; break;
case 0xbd:num =6; break;
case 0x7d:num =7; break;
}
while(temp != 0xf0)
{
temp = P3;
temp = temp&0xf0;
}
send(num);
}
}
P3 = 0xfb; // 1111 1011 ֚ɽПˤԶһٶ֍֧ƽ
temp = P3;
temp = temp&0xf0;
if(temp != 0xf0)
{
delay(10);
temp = P3;
temp = temp&0xf0;
if(temp != 0xf0)
{
temp = P3;
switch(temp)
{
case 0xeb:num =8; break;
case 0xdb:num =9; break;
case 0xbb:num =10; break;
case 0x7b:num =11; break;
}
while(temp != 0xf0)
{
temp = P3;
temp = temp&0xf0;
}
send(num);
}
}
}
/*گ˽*/
void main()
{
init(); //ַԃԮࠚԵʼۯگ˽
while(1)
{
keyscan1(); //ַԃߘֳݼƌɨĨگ˽
}
}
|
|