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 + -
显示快捷键?