📄 key_numnew.c
字号:
//xiaoyudz@tom.com
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar key_times=0;
sbit led=P2^0;
uint key_oldnum=0,key_num,t200;
uchar day_last=28;
uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/////////////display start//////////////////////////////////
disp()
{
uchar i,sbuffer[4];
SCON=0;
sbuffer[0]=key_num%10;
sbuffer[1]=(key_num/10)%10;
sbuffer[2]=(key_num/100)%10;
sbuffer[3]=key_num/1000;
for (i=0;i<4;i++)
{
SBUF= tab[sbuffer[i]];
while (!TI);
TI=0;
}
}
/*
//////////display end///////////////////////////////////
key()
{
uchar clmn_pat,old,new,push,rel,temp;
for(clmn_pat=0xef;clmn_pat!=0xf0;clmn_pat=clmn_pat<<1)
{
P1=P1&clmn_pat;//high 4 bit one zero
P1=P1|0x0f;///low 4 bit setb
new=P1&0x0f;
}
if((temp=new^old)>0)
{
push=temp&new;
rel=temp&old;
old=new;
}
key_num=new;
}*/
uchar key()
{ char num=0,num_tem,num_rl,left=3;
uchar scode;
P1=0xf0;
if((P1&0xf0)!=0xf0)
{scode=0xfe;
while((scode&0x10)!=0)
{ P1=scode;
if((P1&0xf0)!=0xf0)
{ num_rl=(~P1)>>4;
num_tem=num_rl<<3;
num_tem=num_tem>>3;
while(num_tem)
{ num++;
left--;
num_tem=num_rl<<left;
num_tem=num_tem>>3;
}
left=3;
key_oldnum=key_oldnum*10;
key_oldnum=key_oldnum+num;
key_times++;
if(key_times>=5){key_times=0;key_oldnum=0;}
return(num);
}
else
{ scode=(scode<<1)|0x01;
num=num+4;}
}
}
return(key_oldnum);
}
main()
{
uint j;
t200=20;
key_num=0;
disp();
while (1)
{
key_num=key();
if(key_num!=key_oldnum){key_num=key_oldnum; disp();}
if(key_num==1234)led=0;
if(key_num==16)
{
key_oldnum=0;
led=1;
}
for(j=0;j<50000;j++);
//key_num++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -