📄 pt2262.txt
字号:
/*PT2262*/
#include<AT89X52.h>
unsigned char code dispbit[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
unsigned char code table[]={0X40,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x3f};
unsigned char data sendtemp[10]={0x0e,0,0,0,0,0,0,0,0,0x0c};
unsigned char data rectemp[8];
unsigned char keyscan(void);
void senddata(void);
signed char data keycount;
bit rec_done;
void main()
{
unsigned char getkey,i,delay;
TMOD=0x01;
EA=0;ET0=0;
TH0=0xb1;
TL0=0xe0;
TR0=0;
rec_done=0;
keycount=0;
while(1){
getkey=keyscan();
if(getkey){
switch(getkey){
case 12:{if(keycount<0) keycount=0;else {rectemp[keycount]=0;keycount--;}}break;
case 15:rec_done=1;break;
default:{if(keycount<=8) {rectemp[keycount]=getkey;keycount++;} else keycount=8;}break;
}
}
if(rec_done) senddata();
for(i=8-keycount;i<8;i++)
{
P2=table[rectemp[i]];
P0=dispbit[i];
for(delay=0;delay<200;delay++);
}
}
}
unsigned char keyscan(void)
{
unsigned char temp,i,j,key;
unsigned int overdelay;
key=0;
overdelay=1;
P3=0xff;
P3_4=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=1;
break;
case 0x0d:
key=4;
break;
case 0x0b:
key=7;
break;
case 0x07:
key=10;
break;
}
temp=P3;
temp=temp & 0x0f;
while((temp!=0x0f)&&(overdelay++))
{
temp=P3;
temp=temp & 0x0f;
}
}
}
P3=0xff;
P3_5=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=2;
break;
case 0x0d:
key=5;
break;
case 0x0b:
key=8;
break;
case 0x07:
key=0x0c;
break;
}
temp=P3;
temp=temp & 0x0f;
while((temp!=0x0f)&&(overdelay++))
{
temp=P3;
temp=temp & 0x0f;
}
}
}
P3=0xff;
P3_6=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=3;
break;
case 0x0d:
key=6;
break;
case 0x0b:
key=9;
break;
case 0x07:
key=0x0f;
break;
}
temp=P3;
temp=temp & 0x0f;
while((temp!=0x0f)&&(overdelay++))
{
temp=P3;
temp=temp & 0x0f;
}
}
}
return key;
}
void senddata(void)
{
unsigned char i;
for(i=0;i<8;i++) sendtemp[i+1]=rectemp[i];
for(i=0;i<10;i++) {
TR0=1;
P1=sendtemp[i]&0x0f;
while(!TF0){};
TF0=0;
TH0=0xb1;
TL0=0xe0;
}
TR0=0;
rec_done=0;
keycount=0;
for(i=0;i<8;i++) {sendtemp[i+1]=0;rectemp[i]=0;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -