📄 按健连加子程序.c
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar teme=180;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_7=P2^7;
sbit P2_4=P2^4;
sbit P1_2=P1^2;
sbit k1=P1^7; //按键
bit ok;
bit okok;
uchar flar;
void dispy();
void delay5ms();
void key();
uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x40,0x7c,0x39,0x5e,0x79,0x71,0x3f,0x73,0x79,0x37,0x39,0x38,0x3f,0x79};
uchar show[4]={0,0,0,0}; /*显示缓冲区*/
void tim0() interrupt 1 using 1
{
TL0=0x00;
TH0=0xdc;
flar++;
if(flar==200)
flar=0;
}
void main()
{
TMOD=0x01;
TL0=0x05;
TH0=0xdc;
EA=1;
ET0=1;
P2_4=0;
while(1)
{
key();
dispy();
}
}
void dispy()
{
P2_7=0;
P0=tab[show[0]%10];
P2_7=1;
P2_3=1;
P2_7=0;
delay5ms();
P0=tab[show[0]/10];
P2_7=1;
P2_3=0;
P2_2=1;
P2_7=0;
delay5ms();
P0=tab[show[1]/10];
P2_7=1;
P2_2=0;
P2_1=1;
P2_7=0;
delay5ms();
P0=tab[show[1]%10];
P2_7=1;
P2_1=0;
P2_0=1;
P2_7=0;
delay5ms();
P2_0=0;
}
void key()
{
if(k1)
{ok=0; //清除连加连减的标志
okok=0;
flar=0;
TR0=0;
return; //没有按健按下时,就马上退出子程序。
}
if(ok) //是第一次
{
TR0=1;
if(flar==65)
{okok=1;flar=0;}
if(okok) //长按健标志
{
if(flar==45) //每到45次健值自动加1
{
flar=0;
show[0]++;
if(show[0]==60)
{show[0]=0;}
}
}
else {return;}
}
else
{
dispy();
if(!k1)
{
ok=1;
show[0]++;
if(show[0]==60)
{show[0]=0;}
}
}
}
void delay5ms()
{
unsigned int i,j;
for (i=0;i<5;i++)
for (j=0;j<10;j++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -