ZigBee按键查询实践
按键查询
即硬件上电后,程序开始运行,当检测到按键按下,触发按键语句,执行按键触发的事件;
玩单片机需要清楚两件东西,第一个是单片机的电路图,另一个则是单片机的寄存器;
CC2530是51的升级版,我们的寄存器在网上也有很多,直接百度查就有了;
电路图



寄存器
本实验用到的相关寄存器:
P0DIR(P1DIR相同):设置各个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按键查询实践的更多相关文章
- C++中unordered_map几种按键查询比较
unorder_map有3种常见按键查值方法. 使用头文件<unordered_map>和<iostream>,以及命名空间std. 第一种是按键访问.如果键存在,则返回键对应 ...
- 【ARM】2410裸机系列-按键查询式控制led
开发环境 硬件平台:FS2410 主机:Ubuntu 12.04 LTS LED灯原理图 按键原理图 按键的接线资源 KSCAN0 -> GPE11 KSCAN1 -> GPG6 ...
- mysql多对一、多对多查询实践
最近做的功能涉及这方面,算是练了一下. 首先多对一部分较简单.多的那一方表,多设置一个字段是少的那一方的id(主键). 具体查询时候关联查询即可. 可设置外键进行级联操作. 具体以后做到这个功能再更新 ...
- 基于Redis、Storm的实时数据查询实践
通过算法小组给出的聚合文件,我们需要实现一种业务场景,通过用户的消费地点的商户ID与posId,查询出他所在的商圈,并通过商圈地点查询出与该区域的做活动的商户,并与之进行消息匹配,推送相应活动信息到用 ...
- node.js下LDAP查询实践
目标: 从一个LDAP Server获取uid=kxh的用户数据 LDAP地址为:ldap://10.233.21.116:389 在工程根目录中,先npm一个LDAP的访问库ldpajs npm i ...
- ElasticSearch改造研报查询实践
背景: 1,系统简介:通过人工解读研报然后获取并录入研报分类及摘要等信息,系统通过摘要等信息来获得该研报的URI 2,现有实现:老系统使用MSSQL存储摘要等信息,并将不同的关键字分解为不同字段来提供 ...
- Elasticsearch+Mongo亿级别数据导入及查询实践
数据方案: 在Elasticsearch中通过code及time字段查询对应doc的mongo_id字段获得mongodb中的主键_id 通过获得id再进入mongodb进行查询 1,数据情况: ...
- MySQL慢日志查询实践
慢日志查询作用 慢日志查询的主要功能就是,记录sql语句中超过设定的时间阈值的查询语句.例如,一条查询sql语句,我们设置的阈值为1s,当这条查询语句的执行时间超过了1s,则将被写入到慢查询配置的日志 ...
- mysql模糊查询实践总结
%代表任意多个字符 _代表一个字符 在 MySQL中,SQL的模式缺省是忽略大小写的 正则模式使用REGEXP和NOT REGEXP操作符. “.”匹配任何单个的字符.一个字符类 “[...]”匹配在 ...
随机推荐
- WPF MvvmLight简单实例(1) 页面导航
原文:WPF MvvmLight简单实例(1) 页面导航 实现了那些功能,先看看截图: 操作描述: 在程序运行后,点击“Load”按钮,页面会加载PageOne,点击PageOne页面中的“Next” ...
- Lambda表达式的参数捕获
以常用的Action委托为例: 有如下3个无参数的方法: public void Function() { //Do something } public void Function2() { //D ...
- String内存结构
var s: AnsiString; begin s := '1234567890'; showmessage(s); end; 变量s的内存结构为A8 03 01 00 FF FF FF FF 0A ...
- LINQ查询表达式---------into
LINQ查询表达式---------into into 上下文关键字创建一个临时标识符,以便将 group.join 或 select 子句的结果存储到新的标识符 class Program { pu ...
- Java中的逆变与协变 专题
结论先行: PECS总结: 要从泛型类取数据时,用extends: 协变 要往泛型类写数据时,用super: 逆变 既要取又要写,就不用通配符(即extends与super都不用) 不变 List&l ...
- 使用xargs同步文本中单词出现个数
#!/bin/bash # 分析一个文本文件中单词出现的频率. # 使用 'xargs' 将文本行分解为单词. # 检查命令行上输入的文件. ARGS= E_BADARGS= E_NOFILE= if ...
- 轻量级 Material Design 前端框架 MDUI (纯html,css,与css框架跟react vue不冲突)
MDUI 是一个轻量级的 Material Design 前端框架,对照着 Material Design 文档进行开发,争取 1:1 实现 Material Design 中的组件. 多主题支持 M ...
- 为什么API多用C而不是C++,为什么C++程序大多不使用异常
读Defective C++随笔 不尽知用兵之害者,则不能尽知用兵之利也 ——<孙子兵法> 1.为什么API多用C而不是C++以前就一直很奇怪,为什么API大都用C的方式提供,即使有C++ ...
- 编译 Qt 5.6(使QtWebEngine支持XP)
说明 qt 5.6的编译进行了数十遍,才得出本文的可行方案,之所以花了这么多的时间,主要是qt引入了QtWebEngine模块后,导致编译难度直线上升,而且又有一些中国特色的问题(如360安全卫士)导 ...
- Google C++测试框架系列高级篇:第二章 让GTest学习打印自定义对象
上一篇:更多关于断言的知识 原始链接:Teaching Google Test How to Print Your Values 词汇表 版本号:v_0.1 让GTest学习打印自定义对象 当一个断言 ...