立即注册 登录
返回首页

uid:98238的个人空间

留言板

lehaiboy 2017-7-23 00:26
#include        "config.h"
#include        "delay.h"
unsigned char Trg;
unsigned char Cont;
void KeyRead( void );
void KeyProc(void);
void Func(void);
sbit KEY_MODE=P2^3;
#define KEY_MODE 0x01 // 模式按键
unsigned char cnt_plus,Mode;

/*************        功能说明        **************
本功能是一个按键短按   开和关,第二个是长按 第二io口低电平点亮灯




******************************************/

/*************        本地常量声明        **************/

/******************** IO配置函数 **************************/
void        GPIO_config(void)
{
        P5M0 = 0;                 //设置准双向口
        P5M1 = 0;
        P1M0 = 1;                 //设置准双向口
        P1M1 = 0;
        P2M0 = 0;                 //设置准双向口
        P2M1 = 0;
        P2=0x18;
}
/******************** 主函数 **************************/
void main(void)
{
        GPIO_config();
       
        while(1)
        {
               
                KeyRead();
                KeyProc();
        
        }
}


void KeyProc(void)

      {          

              if (Trg & KEY_MODE) // 如果按下的是KEY_MODE,而且你常按这按键也没有用,
       
              {                  //它是不会执行第二次的哦 , 必须先松开再按下
                          
                   Mode++;
                           if(Mode>3)
                           {Mode=0;P55 = 1;}
                                                       // 模式寄存器加1,当然,这里只是演示,你可以执行你想
                           if(Mode==1)
                            {P55 = 0;}
                                if(Mode==2)
                            {P55 = 1;}
                                if(Mode==3)
                            {P55 = 0;}
                                           // 执行的任何代码
       
              }
       
              if (Cont & KEY_PLUS) // 如果“加”按键被按着不放
       
              {
       
                      cnt_plus++; // 计时
               
                      if (cnt_plus > 100) // 20ms*100 = 2S 如果时间到
               
                      {
                                cnt_plus=0;
                              Func(); // 你需要的执行的程序
               
                      }
       
              }

      }
void Func(void)
          {
                   P17=~P17;
          }
void KeyRead( void )

      {

      unsigned char ReadData = P2^0xff; // 1

      Trg = ReadData & (ReadData ^ Cont); // 2

      Cont = ReadData; // 3

      }

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

返回顶部