ch8-1.c
来自「单片机接口技术(C51版)例程源代码」· C语言 代码 · 共 45 行
C
45 行
#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 + =
减小字号Ctrl + -
显示快捷键?