📄 ch8-1.c
字号:
#include <reg52.h>
unsigned char key,key_h,kpush;
unsigned int key_i;
//按键连接到P1.0、P1.1、P1.2、P1.3、P1.4
void int_t0 (void) interrupt 1
{
TL0=0x00;TH0=0x40;//教材中此处未填写具体数值
if(P1&0x1f==0x1f) //识别有无按键
{
if (key_i>30&&key_i<800&&key_h>30)//释放按键,如果之前按键时间少于1s,读入键值
key=kpush;
if(++key_h>200) key_h=200;
key_i=0;
if(key>=0x80) key=0; //如果之前按键时间为长按1s,键值清0
}
else
{
kpush=P1&0x1f;
key_i++;
if (key_i>800&&key_h>30)
{
key=kpush|0x80; //按键时间超过1s,键值加0x80作为长按标志
key_h=0;
key_i=0;
}
}
}
void main(void)
{
TMOD=0x01; //设置定时器0工作于方式1
TH0=0x40;TL0=0x00 ;//定时 ms,设置时间常数
TR0=1;ET0=1;EA=1;
while(1)
{
while(!key) ;
switch(key)
{
case 1: break;
case 2: break;
default: break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -