按键查询

即硬件上电后,程序开始运行,当检测到按键按下,触发按键语句,执行按键触发的事件;

玩单片机需要清楚两件东西,第一个是单片机的电路图,另一个则是单片机的寄存器;

CC2530是51的升级版,我们的寄存器在网上也有很多,直接百度查就有了;

电路图

寄存器

本实验用到的相关寄存器:

P0DIRP1DIR相同):设置各个I/O的方向,0为输入,1为输出

D7

D6

D5

D4

D3

D2

D1

D0

P0_7方向

P0_6方向

P0_5方向

P0_4方向

P0_3方向

P0_2方向

P0_1方向

P0_0方向

程序

下面来两个程序实例,看看效果吧

 //*********************************************
/*使用按键控制LED1的闪烁效果
/*①系统复位后LED熄灭
/*②按下一次SW1按键后,LED开始闪烁
/*③再按下一次SW1按键后,LED停止闪烁并熄灭
/*
/*
//********************************************/ #include "ioCC2530.h"
#define D3 P1_0
#define D4 P1_1
#define D5 P1_3
#define D6 P1_4
#define SW1 P1_2//宏定义需要用到的硬件 typedef unsigned char uint8;
typedef unsigned int uint16; uint8 flag=; void delay(uint16 time)//延时函数
{
uint16 i;
while(time--)
{
for(i=;i<;i++);
}
} void port()//初始化LED和按键
{
P1DIR = 0x1b;//0001 1011 LED灯设置为输出
P1 &=~ 0x1b;//给LED等赋予低电平,初始化为灭
P1DIR &=~ 0x04;//按键口为0,设置为输入
} void Key()//按键查询函数
{
if(SW1==)
{
if(SW1==)
{
while(!SW1);
flag=!flag;
}
}
} void LED_Blink()//按键闪烁
{
P1 = 0x1b;
delay();
P1 &=~ 0x1b;
delay();
} main()
{
port();
while()
{
Key();//调用按键查询函数
if(flag==)
{
LED_Blink();
}
else
{
P1 &=~ 0x1b;
}
}
}
 //****************************************
/*使用按键控制LED灯流水效果
/*①系统复位后,LED开始以流水灯的方式进行
/*②当按下按键时,流水灯停止运行,LED保持按键按下时的状态
/*③当按键松开后,流水灯继续之前的运行
/*
/********************************************/ #include"ioCC2530.h"
#define D3 P1_0
#define D4 P1_1
#define D5 P1_3
#define D6 P1_4
#define SW1 P1_2 typedef unsigned char uchar;
typedef unsigned int uint;
uchar flag=; void delay(uint time)
{
uint i;
while(time--)
{
for(i=;i<;i++);
if(SW1==)
{
while(!SW1);
}
}
} void port()
{
P1DIR = 0x1b;
P1 &=~ 0x1b;
P1DIR &=~0x04;
} main()
{
port();
while()
{
if(flag==)
{
D4=;D3=;D6=;D5=;
delay();
flag++;
}
if(flag==)
{
D4=;D3=;D6=;D5=;
delay();
flag++;
}
if(flag==)
{
D4=;D3=;D6=;D5=;
delay();
flag++;
}
if(flag==)
{
D4=;D3=;D6=;D5=;
delay();
flag=;
}
}
}

ZigBee按键查询实践的更多相关文章

  1. C++中unordered_map几种按键查询比较

    unorder_map有3种常见按键查值方法. 使用头文件<unordered_map>和<iostream>,以及命名空间std. 第一种是按键访问.如果键存在,则返回键对应 ...

  2. 【ARM】2410裸机系列-按键查询式控制led

    开发环境   硬件平台:FS2410 主机:Ubuntu 12.04 LTS LED灯原理图 按键原理图 按键的接线资源 KSCAN0 -> GPE11    KSCAN1 -> GPG6 ...

  3. mysql多对一、多对多查询实践

    最近做的功能涉及这方面,算是练了一下. 首先多对一部分较简单.多的那一方表,多设置一个字段是少的那一方的id(主键). 具体查询时候关联查询即可. 可设置外键进行级联操作. 具体以后做到这个功能再更新 ...

  4. 基于Redis、Storm的实时数据查询实践

    通过算法小组给出的聚合文件,我们需要实现一种业务场景,通过用户的消费地点的商户ID与posId,查询出他所在的商圈,并通过商圈地点查询出与该区域的做活动的商户,并与之进行消息匹配,推送相应活动信息到用 ...

  5. node.js下LDAP查询实践

    目标: 从一个LDAP Server获取uid=kxh的用户数据 LDAP地址为:ldap://10.233.21.116:389 在工程根目录中,先npm一个LDAP的访问库ldpajs npm i ...

  6. ElasticSearch改造研报查询实践

    背景: 1,系统简介:通过人工解读研报然后获取并录入研报分类及摘要等信息,系统通过摘要等信息来获得该研报的URI 2,现有实现:老系统使用MSSQL存储摘要等信息,并将不同的关键字分解为不同字段来提供 ...

  7. Elasticsearch+Mongo亿级别数据导入及查询实践

    数据方案: 在Elasticsearch中通过code及time字段查询对应doc的mongo_id字段获得mongodb中的主键_id 通过获得id再进入mongodb进行查询   1,数据情况: ...

  8. MySQL慢日志查询实践

    慢日志查询作用 慢日志查询的主要功能就是,记录sql语句中超过设定的时间阈值的查询语句.例如,一条查询sql语句,我们设置的阈值为1s,当这条查询语句的执行时间超过了1s,则将被写入到慢查询配置的日志 ...

  9. mysql模糊查询实践总结

    %代表任意多个字符 _代表一个字符 在 MySQL中,SQL的模式缺省是忽略大小写的 正则模式使用REGEXP和NOT REGEXP操作符. “.”匹配任何单个的字符.一个字符类 “[...]”匹配在 ...

随机推荐

  1. c# Unity依赖注入WebService

    1.IOC与DI简介 IOC全称是Inversion Of Control(控制反转),不是一种技术,只是一种思想,一个重要的面相对象编程的法则,它能知道我们如何设计出松耦合,更优良的程序.传统应用程 ...

  2. 【C#】wpf自定义calendar日期选择控件的样式

    原文:[C#]wpf自定义calendar日期选择控件的样式 首先上图看下样式 原理 总览 ItemsControl内容的生成 实现 界面的实现 后台ViewModel的实现 首先上图,看下样式 原理 ...

  3. 【C#】简单解决PathTooLong的Exception

    原文:[C#]简单解决PathTooLong的Exception 前提 windows系统路径的最大长度限制是260个字符(听说.Net 4.6.2,取消了这个限制),而Linux或者Unix系统的好 ...

  4. 一个字体,大小,颜色可定义的自绘静态框控件-XColorStatic 类(比较好看,一共19篇自绘文章)

    翻译来源:https://www.codeproject.com/Articles/5242/XColorStatic-a-colorizing-static-control XColor Stati ...

  5. 【C#】list 去重

    原文:[C#]list 去重 Enumerable.Distinct 方法 是常用的LINQ扩展方法,属于System.Linq的Enumerable方法,可用于去除数组.集合中的重复元素,还可以自定 ...

  6. Win8 Metro(C#)数字图像处理--2.62图像对数增强

    原文:Win8 Metro(C#)数字图像处理--2.62图像对数增强  [函数名称]   对数增强      WriteableBitmap LogenhanceProcess(Writeabl ...

  7. Android 9.0 Dialog不显示

    Tester报了一个bug,大概如下: 页面:Activity1 dialog1(半透明遮罩样式) Activity2 dialog2 场景:Activity1弹出dialog1,dialog1弹出a ...

  8. GitLab一键式安装bitnami 专题

    git lab developer角色不能提交到master分支的问题 错误提示: git -c diff.mnemonicprefix=false -c core.quotepath=false p ...

  9. Unity 3d新手上路

    作为一位unity新手,初学遇到了不少坑,而且不知道怎么找,发觉网上关于unity的文档好少,还是我暂时没找到. 现在说说void OnTriggerEnter(Collider e),这个函数是我加 ...

  10. windows-qt 使用mingw编译c++boost并使用

    一.boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化.不过对比STL,boost更加实用.STL集中在算法部分,而boost包含了不少工具 ...