📄 key.c
字号:
//连线方式:按键依次接P1.0~P1.3 ;P3.0接静态显示的DATA,P3.1接静态显示的CLK
//实现功能:初始化时显示0000,每按下set键从右到左依次闪,当按下inc时,该位加一,当按下dec时,该位减一。当按下reset时,显示0000
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit inc=P1^0;
sbit dec=P1^1;
sbit set=P1^2;
sbit reset=P1^3;
uchar data table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
uint c,d;
uchar led[4];
uchar min,hour,a;
uchar key;
//---------延时8us子程序-----//
void delay8(uint t)
{
while(--t);
}
//--------延时50ms子程序-----//
void delay50ms(uint t)
{
uint j;
for(;t>0;t--)
for(j=6245;j>0;j--);
}
//---------显示程序------//
void display(void)
{
uchar j;
for(j=0;j<4;j++)
{
SBUF=led[j];
while(TI==0);
TI=0;
}
}
//-------更新程序-----//
void update(void)
{
led[0]=table[min%10];
led[1]=table[min/10];
led[2]=table[hour%10];
led[3]=table[hour/10];
}
//--------初始化显示程序-----//
void initdis(void)
{
min=0;
hour=0;
update(); //初始化显示0000
display();
}
//----------定时器与串口初始化程序-------//
void init(void)
{
SCON=0x00; //串口方式0,允许发送
TMOD=0x01; //定时器0,方式1
TH0=0x3c; //定时50ms
TL0=0xaf;
EA=1; //开中断允许位
ET0=1; //开定时器T0中断允许位
TF0=0; //定时器0中断标志位清零
TR0=1; // 定时器开始计数
}
//-----按键扫描子程序-------//
uchar scankey(void)
{
uchar k;
k=P1&0x0f;
if(k==0x0f) return (0); //如果没有按键按下则返回 0
else
{
delay8(2000); //延时去抖
if(k==0x0f) return(0);
else if(k==0x0e) return (1); //
else if(k==0x0d) return (2);
else if(k==0x0b) return (3);
else if(k==0x07) return (4);
}
}
//--------按键处理程序-----//
void keyprocess(void)
{
if(key==3)
{
led[d%4]=0x00;
// switch(key)
//{
// case 1:
// case 2:
// default:
// }
}
else if(key==4)
{
initdis();
}
}
//--------主函数------------//
void main(void)
{
a=0;
c=0;
d=0;
min=0;
hour=0;
init();
update();
display();
while(1)
{
key=scankey();
keyprocess();
}
//display();
}
//---------中断服务程序-------//
void time0(void) interrupt 1
{
TH0=0x3c;
TL0=0xaf;
TR0=1;
a++;
c++;
if(a==10)
{
a=0;
led[2]=led[2]^0x01;
display();
}
if(c==20)
{
c=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==12)
{
hour=0;
}
}
update();
display();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -