微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于需要使用定时器的函数编写

关于需要使用定时器的函数编写

时间:10-02 整理:3721RD 点击:
最近在用8*8点阵制作贪吃蛇游戏。为了简化程序,增强程序可读性,想要把对按键的消抖程序进行封装。但是消抖需要使用定时器。下面是消抖程序,放在定时器里的。有没有大神知道怎么把需要定时器的程序进行封装?

  1. /////////////////////////////
  2.          count0++;
  3.          if(count0==5)
  4.          {
  5.               count0=0;
  6.                 keyvalue=keyscan();//获取键值
  7.                 if(status==0)
  8.                 {
  9.                  if(keyvalue!=99)   {pre_keyvalue=keyvalue;  status=1;}
  10.               }
  11.                 else if(status==1)
  12.                 {
  13.                  if(keyvalue==pre_keyvalue)  
  14.                  {status=2;   button=keyvalue; }//;
  15.               }
  16.                 else
  17.                 {
  18.                  if(keyvalue==99)  status=0;
  19.               }

  20.        
  21.    }

复制代码

  1. unsigned char keyscan(void)
  2. {
  3.     int scan=0;
  4.         P1=B11110111;  scan=(scan<<4)|(P1>>4);
  5.         P1=B11111011;  scan=(scan<<4)|(P1>>4);
  6.         P1=B11111101;  scan=(scan<<4)|(P1>>4);
  7.         P1=B11111110;  scan=(scan<<4)|(P1>>4);
  8.         scan=~scan;
  9.        

  10.                  if(scan==0x0001)  return(1);
  11.         else if(scan==0x0002)  return(2);
  12.         else if(scan==0x0004)  return(3);
  13.         //else if(scan==0x0008)  return(3);

  14.         else if(scan==0x0010)  return(4);
  15.         else if(scan==0x0020)  return(5);
  16.         else if(scan==0x0040)  return(6);
  17.         //else if(scan==0x0080)  return(7);

  18.         else if(scan==0x0100)  return(7);
  19.         else if(scan==0x0200)  return(8);
  20.         else if(scan==0x0400)  return(9);
  21.         //else if(scan==0x0800)  return(11);

  22.         else  return(99);

  23. }

复制代码


不用定时器也可以啊

延时个10ms就够了把

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top