cc2530的第二次实验,用按键控制流水灯
按键控制流水灯
具体想要实现按一下按键,然后单片机的三个灯会以流水灯的形式都亮一遍
实验相关寄存器

实验相关电路

宏定义
#define uint unsigned int
#define uchar unsigned char
#define LED1 P1_0
#define LED2 P1_1
#define LED3 P0_4
#define KEY1 P0_1
初始化步骤
id1[设置P0_1 P1_0 P1_1 P0_4为通用接口]
id2[设置P0_1为输入接口 P1_0 P1_1 P0_4为输出接口]
id3[设置P0_1为上拉下拉电路 也就是设置P0INP]
id1-->id2-->id3
初始化代码
void InitIO(void)
{
//设置P0_1,P1_0,P1_1,P0_4,为通用接口
P0SEL&=~0x11; //P0SEL:1110 1110
P1SEL&=~0x03; //P1SEL:1111 1100
//设置P0_1为输入接口
P0DIR&=~0x02; //P0DIR:1111 1101
//设置P1_0,P1_1,P0_4为输出接口
P1DIR|=0x03; //P1DIR=0000 0011
P0DIR|=0x10; //P0SEL=0001 0000
//让三个灯先灭
LED1=1;
LED1=1;
LED1=1;
}
main函数中的步骤
id1[初始化 InitIO]
id2{是否被按下KeyScan}
id3[三个灯以流水的方式亮WaterLight]
id1-->id2
id2--按下-->id3
id2--没按下-->id2
id3-->id2
KeyScan()函数用来检测按键是否被按下
//检测按键是否被按下,如果被按下返回true,如果没被按下,返回false
uint KeyScan()
{
if(KEY1==0)
{
while(KEY1==0); //直到按键被松开
return 1;
}
return 0;
}
WaterLight()函数用实现
//让三个灯以流水灯的方式亮一次
void WaterLight()
{
LED1=!LED1;
Delay(10000);
LED2=!LED2;
Delay(10000);
LED3=!LED3;
Delay(10000);
LED1=!LED1;
Delay(10000);
LED2=!LED2;
Delay(10000);
LED3=!LED3;
Delay(10000);
}
ok接下来将这些代码块拼接一下,就得到全部的代码了
#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char //定义控制灯的端口
#define LED1 P1_0 //定义LED1 为P10 口控制
#define LED2 P1_1 //定义LED2 为P11 口控制
#define LED3 P0_4 //定义LED3 为P04 口控制
#define KEY1 P0_1 //定义KEY1 P_01
//延时 *****************************/
void Delay(uint n)
{
uint i;
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
}
//初始化IO 口程序 *****************************/
void InitIO(void)
{
//设置P0_1,P1_0,P1_1,P0_4,为通用接口
P0SEL&=~0x11; //P0SEL:1110 1110
P1SEL&=~0x03; //P1SEL:1111 1100
//设置P0_1为输入接口
P0DIR&=~0x02; //P0DIR:1111 1101
//设置P1_0,P1_1,P0_4为输出接口
P1DIR|=0x03; //P1DIR=0000 0011
P0DIR|=0x10; //P0SEL=0001 0000
//调整P0_1为上拉下拉
P0INP&=~0x02; //P0INP:1111 1101
}
//检测按键是否被按下,如果被按下返回true,如果没被按下,返回false
uint KeyScan()
{
if(KEY1==0)
{
while(KEY1==0);
return 1;
}
return 0;
}
//让三个灯以流水灯的方式亮一次
void WaterLight()
{
LED1=!LED1;
Delay(10000);
LED2=!LED2;
Delay(10000);
LED3=!LED3;
Delay(10000);
LED1=!LED1;
Delay(10000);
LED2=!LED2;
Delay(10000);
LED3=!LED3;
Delay(10000);
}
//主函数 ***************************/
void main(void)
{
InitIO();
while(1)
{
if(KeyScan())
WaterLight();
}
}
实验过程中的问题

感觉这个寄存器的设置没什么用啊,因为无论为0或者是为1,实验现象都是一样的,下周上课需要问一下老师。
实验心得
通过这个实验,知道了按键相应的接口
cc2530的第二次实验,用按键控制流水灯的更多相关文章
- CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)
目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. ...
- cc2530的第三次实验,按键中断控制流水灯
cc2530的第三次实验:按键中断控制流水灯 效果为按一次按键,流水灯亮一次 实验相关电路图: 实验相关寄存器: 初始化函数 //初始化LED灯 //设置P1SEL,通用为0,外设为1 1111110 ...
- STM32嵌入式开发学习笔记(三):使用按键控制小灯
按键和小灯一样,也是通过GPIO外设与主板连接,也是通过GPIO_InitStruct类型结构体控制其工作. 查阅技术手册,按钮连接GPIOA控制下的管脚0. 但与之不同的是,按键是一种输入设备,输入 ...
- 硬件——nrf51822第三篇,按键控制小灯
现象是按键按下,小灯亮,按键抬起,小灯灭. 从这一节我们细致剖析gpio口的设置: nrf51822片上一共有32个数字引脚,分为4个port,如下: port 0 pin 0-7 port 1 pi ...
- 按键控制LED灯-ESP32中断处理
#include <driver/gpio.h> #include <esp_task_wdt.h> #include <freertos/FreeRTOS.h> ...
- 独立按键控制led灯
#include "regx51.h"typedef unsigned int u16; void delay_us(u16 time){ while(time--){} }voi ...
- 17.3.15---关于GPIO控制流水灯的信息
添加一个网址: http://rmingwang.com/gpio-control-flow-lamp-code-archive.html 还有一个 http://www.openedv.com/po ...
- ARM实验4—按键轮询实验
key_poll按键轮询实验 实验内容: 通过FS_4412开发板上的按键控制LED灯并打印信息. 实验目的: 熟悉开发环境的使用. 掌握猎户座4412处理器的GPIO接口, 实验平台: FS4412 ...
- cc2530单片机的第一次实验,流水灯
第一个实验:控制流水灯 P1_0,P1_1,P0_4都连接在发光二极管的负极,所以,当这三个引脚为低电平,也就是0的时候,相应的发光二极管才会亮. 其实这里可以稍微的关注一下寄存器的地址,然后,编程的 ...
随机推荐
- Gridview中的编辑模板与项模板的用法
<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server&q ...
- Java 8 ArrayList 详解
GitHub Page: http://blog.cloudli.top/posts/Java-ArrayList/ ArrayList 继承于 AbstractList ,实现了 List.Rand ...
- Visual C++ 2010 SP1 x86&x64
Microsoft Visual C++ 2010 SP1 Redistributable Package (x86) https://www.microsoft.com/en-us/download ...
- C# Newtonsoft.Json 你必须知道的一些用法
最近在做接口开发,对方团队开发了一个Web API 的接口,传输数据的格式是 JSON.当时看到这个东西,感觉很简单,也没想什么,没用多久就完成了我的功能,我完成的功能很简单,就是获取数据,然后把数据 ...
- ECMA6新增语法(待续...)
块级作用域: ES6允许你使用块级作用域,不过目前大多数的ES6语法只允许在严格模式下使用("use strict” ). 1 let关键字 作用:声明变量,一个花括号就是一个作用域(每个 ...
- 从零开始react实战:云书签(总览)
一个合格的全栈开发怎么能不会 react 呢?所以从现在开始系统的学习 react 开发.目标:完成完成一个云书签,包含前后台. 基于create-react-app进行开发,选择这个框架有以下两个原 ...
- 2. vue基础-vue-cli(vue脚手架)
1. 作用 快速创建一个基于webpack模板的项目 2. 安装工具 安装webpack:使用npm全局安装webpack,打开命令行工具,输入 npm install webpack -g,安装 ...
- Android Handler类 发送消息-post()和postDelay(), Looper讲解
https://blog.csdn.net/weixin_41101173/article/details/79701832 首先,post和postDelay都是Handler的方法,用以在子线程中 ...
- Spring源码阅读总结(Ing)
一.Spring源码架构 Spring源码地址 二.Spring中的设计模式 1.工厂模式 BeanFactory 2.模板模式 模板的使用者只需设计一个具体的类,集成模板类,然后定制那些具体方法,这 ...
- ML-凸优化初识
ML问题 = 模型 + 优化 类似于, 程序 = 数据结构 + 算法 模型(objective): DL, LR, SCV, Tree, XGBoost..... 优化(train): GD/SGD, ...