博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zigbee菜鸟笔记(四)基础实验检测按键输入
阅读量:2085 次
发布时间:2019-04-29

本文共 1799 字,大约阅读时间需要 5 分钟。

一.cc2530 IO端口

关于CC2530的IO端口介绍 我们在前面一章已经很详细的阐述了,如果还没有掌握

二.按键寄存器及其理解

按键在我们的CC2530芯片中和前面的LED灯一样也占用一个引脚,基于上节课的了解我们知道,要想控制LED灯的亮灭首先就要设置LED灯端口为普通IO口且为输出。按键与LED一样都属于简单的端口应用所以我们也需要对PXSEL和PXDIR进行操作,


在这里我们需要将按键是设置为普通IO口,且为输出。

(一)复习寄存器

寄存器PxSEL,其中x 为端口的标号0~2,用来设置端口的每个引脚为通用I/O 或者是外部设备I/O 信号。

在这里插入图片描述
在任何时候,要改变一个端口引脚的方向,就使用寄存器PxDIR 来设置每个端口引脚为输入或输出。因此只要设置PxDIR 中的指定位为1,其对应的引脚口就被设置为输出了。在这里插入图片描述
(二)按键初始化模拟

1.假设按键是处于端口1

P1SEL &= ~0x02;//0x02 = (0000 0010) 取反 (1111 1101) P1DIR &= ~0x02;//设置为输入所以也是设置为0

2.假设按键处于端口2

P1SEL &= ~0x04;P1DIR &= ~0x04;

三.实战操作按键输入监测

(一)了解端口

通过电路图可以看出 这次的LED端口 分别是P1.0 P1.1,P1.3,P1.4,和上次是不一样的,并且本次灯处于高电位点亮,低电位熄灭,所以我们在学习前期就要养成学会看电路图的习惯,
在这里插入图片描述

这是本次的按键,在图中为SW1(keyswitch),可以看到按键与P1.2相连,当按键按下时可以看到P1.2是处于低电平(这里要是看不明白,可以询问一下你们的数电或者模电老师或者发邮件到468078841@qq.com)

在这里插入图片描述
(二)实战演习
题目要求,将D3,D4,D5,D6初始时全部熄灭,当按下时LED灯全部处于点亮的状态,松手则处于熄灭,依次往复;

#include "ioCC2530.h"  //引入头文件 类似C语言 #include"stdio.h" #define LED1 P1_0     // P1_0定义为P1.0#define LED2 P1_1     // P1_1定义为P1.1#define LED3 P1_3     // P1_0定义为P1.3#define LED4 P1_4     // P1_0定义为P1.4#define SW1 P1_2      // P1_2定义为P1.2 void IO_INIT(void)  ;    //函数申明  这里建议书写规范void delay(unsigned int time);void delay(unsigned int time)  //延时函数 这里是为了让程序多执行几次for循环 让函数延时{
for(unsigned char j = 0; j < time;j++) {
for(unsigned int i = 0; i < time; i++) {
} } }void IO_INIT(void) {
P1SEL &= ~0x1F; //0001 1111 取反全部设置为0 P1DIR |= 0x1B; //0001 1011 灯全部输出 P1DIR &= ~0x02; //0000 0010 取反按键者设置为输入 P1 &= ~0x1B; //将灯的端口置0}void main(void){
IO_INIT(); //初始化 while(1) {
if(SW1 == 0) //低电平有效 {
delay(50); //检测到按键 防止抖动 if(SW1 == 0) //前面定义了 #define SW1 P1.2 {
while(!SW1) //按键按住期间,灯亮 {
P1 |= 0x1B; } P1 &= ~0x1B; } } }}

转载地址:http://bnvqf.baihongyu.com/

你可能感兴趣的文章
eclipse生成export生成jar详解
查看>>
oracle 模糊查询忽略大小写
查看>>
Java项目导出可运行的jar文件
查看>>
Java文件夹操作,判断多级路径是否存在,不存在就创建(包括windows和linux下的路径字符分析),兼容Windows和Linux
查看>>
JAVA读取PROPERTIES配置文件
查看>>
Linux中执行shell脚本的4种方法总结
查看>>
BufferedInputStream(缓冲输入流)详解
查看>>
修改linux文件权限命令:chmod
查看>>
Linux vi/vim编辑器常用命令与用法总结
查看>>
如何使用Git Bash Here,将本地项目传到github上
查看>>
eclipse git控件操作 回退到历史提交 重置 删除(撤销)历史的某次提交
查看>>
Oracle | 给表和字段添加注释
查看>>
java比较日期大小及日期与字符串的转换【SimpleDateFormat操作实例】
查看>>
Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence
查看>>
java中System.exit()方法
查看>>
在hbase shell中过滤器的简单使用
查看>>
java静态方法和实例方法
查看>>
java多线程并发去调用一个类的静态方法,会有问题吗?
查看>>
关于JAVA中的static方法、并发问题以及JAVA运行时内存模型
查看>>
Java命令学习系列(一)——Jps
查看>>