• CC2540开发板学习笔记(二)——按键


    一、实验内容

        用按键S1控制LED1的亮和灭

    二、实验过程

    1、电路原理:

    image

          可以看出,当S按下P0.0和P0.1接地,反之则接高电压。

    2、寄存器使用:

    依旧应该首先进行3个基本寄存器的设定,对LED和按键S都要进行设定、

    3、代码实现(IAR环境下)

    #include<ioCC2540.h>
    
    #define LED1 P1_0    //定义LED1,方便查阅代码
    #define KEY1 P0_0    //定义按键S1
    
    //函数声明
    void Delayms(unsigned int t);    //延时函数,当我们按下S1的时候,开发板会检测到无数个触发沿,对此,在不用中断
                           //的条件下,只能使用延时,过滤掉多余的不必要的触发沿。
    void Init();//初始化函数
    
    unsigned char KeyScan();  //按键扫描函数
    
    void Delayms(unsigned int t)   //控制t被的延时周长
    {
      unsigned int i,j;
      for(i=t;i>0;i--)
      {
        for(j=1;j<500;j++);
      }
    }
    
    void Init()//初始化函数
    {
      P1SEL = 0X00;    //实现LED的初始化
      P1DIR = 0X01;
      P1INP = 0X00;
      LED1 = 0;
      
      P0SEL = 0X00;    //按键S1的初始化
      P0DIR = 0X00;
      P0INP = 0X00;
    }
    
    unsigned char KeyScan()  //按键扫描函数
    {
      if(KEY1==0)
      {
        Delayms(10);
        if(KEY1==0)
        {
          while(!KEY1);   //检验是否松手
          return 1;      //松手使之为1
        }
      }
      return 0;
    }
    
    
    void main(void)
    {
      Init();
      while(1)
      {
        if(KeyScan()==1)    //只有检测到按过按键之后,再进行LED1状态的切换
        {
          LED1=~LED1;
        }
      }
    }

    三、实验成果展示:

    image

  • 相关阅读:
    python pycurl属性
    HTTP报文-->MVC
    国际化信息-->MVC
    计算机网络入门概念理解
    TCP/IP基础概念及通信过程举例
    一道面试题:说说进程和线程的区别
    【转载】我眼中的Oracle性能优化
    【转载】数据库范式那些事
    【转载】详解CreateProcess调用内核创建进程的过程
    数据结构和算法(一):hash散列容器
  • 原文地址:https://www.cnblogs.com/BlueMountain-HaggenDazs/p/4295441.html
Copyright © 2020-2023  润新知