zoukankan      html  css  js  c++  java
  • zigbee学习之路(三):按键的控制

    一.前言

        通过前一次的实验,相信大家都已经对cc2530程序的编写有了一定的认识,这次我们来操作和实验的是cc2530上的按键模块。

    二.原理分析

       我们先来看一下按键的原理图:

    根据原理图我们可以得出,按键不按下的时候值为0,因为接地,所以,按键要被按下的时候,BUT1和BUT2输入值为1,当检测到它们为1时,按键就为按下的状态,因为P0DIR默认的状态是输入,所以不需要配置IO寄存器,当按键按下时,改变led的状态,来验证实验。

    三.程序

    #define LED1 P1_0      //LED1为P1_0端口控制

    #define LED2 P1_1      //LED2为P1_1端口控制

    #define LED3 P1_4      //LED3为P1_4端口控制

    #define KEY1 P0_4      //KEY1为P0_4端口控制

    /*****************  函 数 名  : Delayms  功能描述  : 毫秒延时  输入参数  : xms:延时时间,如 i=xms 即延时i毫秒  输出参数  : none  返 回 值  : none *********************/

    void Delayms(uint xms)   {     uint i,j;     for(i=xms;i>0;i--)     for(j=587;j>0;j--); }

    / 函 数 名  : InitLed  功能描述  : LED IO初始化  输入参数  : none  输出参数  : none  返 回 值  : none *************/

    void InitLed(void)

    {     P1DIR |= 0xff;   //P1端口定义为输出    

    LED1 = 1;        //LED1灯熄灭    

    LED2 = 1;    

    LED3 = 1;    }

    /********************  函 数 名  : KeyScan  功能描述  : 按键检测函数  输入参数  : none  输出参数  : none  返 回 值  : 0:无按键按下  1:按键按下 ***********************/

    uchar KeyScan(void)

    {    

    if(KEY1==0)    

    {         Delayms(2);     //延时去抖        

    if(KEY1==0)        

    {             while(!KEY1);  //松手检测,如果一直按着按键,将一直停在这条语句      

           return 1;      //有按键按下         }   

      }     return 0;           //无按键按下 }

    /*************************  函 数 名  : main  功能描述  : KEY测试(通用IO的输入/输出使用)  输入参数  : NONE   输出参数  : NONE  返 回 值  : NONE **************************/

    void main(void) {     InitLed();  //调用初始化函数    

    while(1)    

    {         if(KeyScan())       

      {             LED1=~LED1;       //按键改变LED状态            

    LED2=~LED2;            

    LED3=~LED3;         }   

    } }

     四.总结

         通过本次实验,我们学习了如何使用按键来控制cc2530的外设,用键盘扫描函数来检测按键状态的改变,函数中有调用延时函数,用于延时去抖,增加系统的稳定性,可是不断检测会造成占用cpu的工作时间,下一讲介绍一种更好的方式。

       

  • 相关阅读:
    thinkphp5分页
    thinkphp 获取器、修改器
    Thinkphp中对数据库的基础操作
    MYSQL 数据库内容的分页展示
    单例模式连接数据库
    简单的通过ajax ‘POST’ 方法实现与后台数据交互
    PHP中 .= 的意思
    mysqli 简单的php注册登录功能
    4.4
    梦断代码阅读笔记1
  • 原文地址:https://www.cnblogs.com/sjsxk/p/5291572.html
Copyright © 2011-2022 走看看