📄 key.c
字号:
#include<reg51.h>
#include <intrins.h>
sbit SDA=P1^0;
sbit CLK=P1^1;
sbit kd_key=P1^2;
sbit LEDP1=P1^6;
sbit LEDP2=P1^5;
sbit LEDP3=P1^4;
sbit LEDP4=P1^3;
unsigned char dbuffer1,dbuffer2,dbuffer3,dbuffer4,dbuffer;
unsigned char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char counter,n;
int minter,second;
void send(unsigned char a)
{
data unsigned char i;
for(i=0;i<8;i++)
{
if(_crol_(a,i)&0x80)
SDA=1;
else
SDA=0;
CLK=1;
CLK=0;
}
}
void display(int minter,int second)
{
unsigned char i;
unsigned char a[4];
a[0]=minter/10;
a[1]=minter%10;
a[2]=second/10;
a[3]=second%10;
for(i=0;i<4;i++)
{
send(table[a[i]]);
LEDP1=0;
for(i=0;i<200;i++)
LEDP1=1;
}
}
void time_add(int minter,int second)
{
second++;
if(second==60)
{
minter++;
second=0;
if(minter==60)
{
minter=0;
}
}
}
void time_adds(int second)
{
second++;
if(second==60)
{
second=0;
}
}
void time_addm(int minter)
{
minter++;
if(minter==60)
{
minter=0;
}
}
main()
{
int flag,j;
unsigned char i,jkey;
TMOD=0x01;
TH0=0x3B;
TL0=0xC0;
EA=1;
ET0=1;
TR0=1;
LEDP1=1;
LEDP2=1;
LEDP3=1;
LEDP4=1;
while(1)
{
jkey=0xfe;
flag=0;
for(i=0;i<8;i++)
{
send(jkey);
if (!kd_key)
{
for(j=0;j<200;j++)
send(jkey);
if (!kd_key)
{
flag=1;break;
}
else
jkey=_crol_(jkey,1);
}
}
if(flag==1)
{
switch(i)
{
case 0 :time_adds(second);display(minter,second);break;
case 1 :time_addm(minter);display(minter,second);break;
case 2 :display(minter,second);break;
case 3 :display(minter,second);break;
case 4 :display(minter,second);break;
case 5 :display(minter,second);break;
case 6 :display(minter,second);break;
case 7 :display(minter,second);break;
}
}
}
}
void timer0_int(void) interrupt 1
{
TR0=0;
TH0=0x3B;
TL0=0xC0;
if(!(counter--))
{
counter=0x16;
time_add(minter,second);
}
TR0=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -