📄 keyled.c
字号:
#include < AT89X52.H >
#include " define.h "
bit keyflag = 1 ;
bit keystatu = 1 ;
void ledvalue (void)
{
unsigned char i ;
unsigned int div=1000 ;
unsigned int fre ;
fre = frequency ;
for (i=0;i<4;i++)
{
unsigned char a;
a=fre/div;
leddat[i]=a;
fre%=div;
div/=10;
}
}
//功能:检查按键
void keypress ( void )
{
if ( keyflag == 1 )
{
KADD = 1 ; KMIN = 1 ;
if (KMIN == 0 || KADD == 0 )
keyflag = 0;
}
else
{
KADD = 1 ; KMIN = 1 ;
if ( KADD == 0 )
{
frequency += 10 ;
keystatu = 0 ;
keyflag = 1 ;
if( frequency == 410 ) frequency = 10;
thl=5000000/(frequency*109);
ledvalue();
}
else if ( KMIN == 0 )
{
frequency -= 10 ;
thl=5000000/(frequency*109);
ledvalue();
if( frequency == 10 ) frequency = 410;
keystatu = 0 ;
keyflag = 1 ;
}
}
}
//功能:检查松键
void keyfree (void)
{
if ( keyflag == 1 )
{
KADD = 1 ; KMIN = 1 ;
if ( (KADD == 1)&& (KMIN == 1))
keyflag = 0 ;
}
else
{
KADD = 1 ; KMIN = 1 ;
if ( (KADD == 1)&& (KMIN == 1))
{
keystatu = 1 ;
keyflag = 1 ;
}
}
}
void kbhit ( void )
{
if ( keystatu == 1 ) keypress();
if ( keystatu == 0 ) keyfree ();
}
//功能:LED显示控制程序
void ledwork ( void )
{
static unsigned char t = 0; //static表示静态变量,指变量的赋值只在第一次定义的时候赋
P2 |= 0x0f ;
P0 = ledcode[ leddat[t] ] ;
switch( t ) //选择数据送到哪个管子
{
case 0: S1 = 0 ; break;
case 1: S2 = 0 ; break;
case 2: S3 = 0 ; break;
case 3: S4 = 0 ; break;
}
if (++t>=4) t = 0; //判断四位数是否都已经送完
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -