独立新建工程并编写、编译代码,实现按键控制灯光闪烁状态的变换,实现以下任务要求:
【1】程序开始运行:D4灯闪烁,D3、D5、D6灯熄灭。
【2】按下模块上的SW1按键松开后,实现D5、D6灯轮流闪烁。
【3】再次按下SW1按键,D5、D6灯灭。
【4】重复上述两个步骤。
此题需要定义一个灯光状态的标志位。通过按键的标志位有三个状态。
状态1:D4灯闪烁,D3、D5、D6灯熄灭。
状态2:D5、D6灯轮流闪烁。
状态3:D5、D6灯灭。

 #include "ioCC2530.h"

 #define D3  P1_0
#define D4 P1_1
#define D5 P1_3
#define D6 P1_4
#define SW1 P1_2 unsigned char stat = ; //灯光状态标志 /*=======================简单的延时函数========================*/
void Delay(unsigned int t)
{
while(t--);
}
/*=======================端口初始化函数========================*/
void Init_Port()
{
P1SEL &= ~0x1b; //将P1_0,P1_1,P1_3,P1_4设置为通用I/O端口
P1DIR |= 0x1b; //将P1_0,P1_1,P1_3,P1_4设置为输出方向
P1 &= ~0x1b; //关闭4个LED灯 P1SEL &= ~0x04; //将P1_2设置为通用I/O端口
P1DIR &= ~0x04; //将P1_2设置为输入方向
P1INP &= ~0x04; //将P1_2设置为上拉/下拉
P2INP &= ~0x40; //将P1_2设置为上拉
} /*=====================D4灯闪烁函数======================*/
void D4_Flicker()
{
D4 = ;
Delay();
D4 = ;
Delay();
} /*=====================D5D6灯闪烁函数======================*/
void D5D6_Flicker()
{
D3 = ;
D4 = ;
D5 = ;
Delay();
D5 = ;
Delay();
D6 = ;
Delay();
D6 = ;
Delay();
} /*=======================按键扫描函数=========================*/
void Scan_Keys()
{
if(SW1 == ) //发现有SW1按键信号
{
Delay(); //延时片刻,去抖动处理
if(SW1 == ) //确认为SW1按键信号
{
if(stat == )
{
stat = ;
}
else if(stat == ) //重复
{
stat = ;
}
else if(stat == )
{
stat = ;
} }
}
} /*==========================主函数============================*/
void main()
{
Init_Port(); //端口初始化
while()
{
Scan_Keys(); //按键扫描
switch(stat)
{
case : //上电状态,D4闪烁
D4_Flicker();
break;
case : //运行状态1:D5和D6闪烁
D5D6_Flicker();
break;
case : //运行状态2:D5和D6熄灭
D5 = ;
D6 = ;
break;
}
}
}

CC2530应用——按键控制灯光状态变化的更多相关文章

  1. cc2530的第二次实验,用按键控制流水灯

    按键控制流水灯 具体想要实现按一下按键,然后单片机的三个灯会以流水灯的形式都亮一遍 实验相关寄存器 实验相关电路 宏定义 #define uint unsigned int #define uchar ...

  2. zigbee学习之路(四):按键控制(中断方式)

    一.前言 通过上次的学习,我们学习了如何用按键控制led,但是在实际应用中,这种查询方式占用了cpu的时间,如果通过中断控制就可以解决这个问题,我们今天就来学习按键控制的中断方式. 二.原理分析 传统 ...

  3. 51单片机-独立按键控制led矩阵的左移和右移

    51单片机学习 独立按键 控制led灯光矩阵的左移和右移 开发板采用的是普中的A2学习开发板,具体的代码如下: typedef unsigned int u16; void delay(u16 tim ...

  4. 通过joystick遥感和按键控制机器人--11

    原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/ 1.首先安装joystick遥控器驱动: sudo apt-get install ros-indigo ...

  5. Android中通过耳机按键控制音乐播放的实现

    今天在研究Android中实现Android 4.2.2源码中的Music应用的源码,关于通过耳机按键控制音乐播放的实现,有点好奇,就仔细分析了一下源码, 主要由 MediaButtonIntentR ...

  6. 使用canvas绘制渐变色矩形和使用按键控制人物移动

    使用canvas绘制渐变色矩形和使用按键控制人物移动 1.使用canvas绘制渐变色矩形 效果演示 相关代码: <!DOCTYPE html> <html lang="en ...

  7. 51单片机 小车 L298N pwm调速 串口控制 按键控制

    难点:1.串口定时器T1,和T0定时器优先级 2.pwm频率与占空比的设置 按键控制 按键1——前进 按键2——后退 按键3——加速 按键4——减速 (板子上只有四个按键) 串口控制 ‘1’——前进 ...

  8. delphi2010:按键 控制键 组合键的判断 响应

    procedure TForm7.FormShortCut(var Msg: TWMKey; var Handled: Boolean); var   aKey: TShortCut;   aShif ...

  9. CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)

    目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. ...

随机推荐

  1. 1324E - Sleeping Schedule

    题目大意:一天有h个小时,一个人喜欢睡觉,一共睡n次,每次都睡h个小时,开始时间为0,间隔a[i]或a[i]-1个小时开始睡第i次觉,每天都有一个最好时间区间,问这n次觉,最多有多少次是在最好时间内睡 ...

  2. linux CVE-2019-14287 Sudo提权漏洞

    CVE-2019-14287 sudo介绍 sudo,也就是以超级管理员身份运行(superuser do)的意思.sudo 是 Linux 中最常使用的重要实用程序之一,它功能十分强大,几乎安装在每 ...

  3. [javascript]各种页面定时跳转(倒计时跳转)代码总结

    (1)使用setTimeout函数实现定时跳转(如下代码要写在body区域内) <script type="text/javascript"> //3秒钟之后跳转到指定 ...

  4. SpringCloud(一)学习笔记之项目搭建

    [springcloud项目名称不支持下划线] 一.创建父项目 File---new---project: 填写项目信息: 默认即可,点击finish创建完成: 由于父项目只用到pom文件 所以把sr ...

  5. Say goodbye

    Since September 28th 2015 Scriptogram officially closed. We considered every option before making th ...

  6. react typescript jest config (一)

    1. initialize project create a folder project Now we'll turn this folder into an npm package. npm in ...

  7. pytorch seq2seq闲聊机器人

    cut_sentence.py """ 实现句子的分词 注意点: 1. 实现单个字分词 2. 实现按照词语分词 2.1 加载词典 3. 使用停用词 "" ...

  8. ubuntu17.10安装lnmp安装包的核心问题-gcc版本、g++版本

    大致碰到的问题都是这样,不是php安装失败,就是MySQL安装失败,或者Nginx也安装失败 基本上是花式报错.后来在军哥的论坛中找到了这个帖子:https://bbs.vpser.net/viewt ...

  9. Configure Visual Studio with UNIX end of lines

    As OP states "File > Advanced Save Options", select Unix Line Endings. https://stackove ...

  10. Python爬虫之记录一次下载验证码的尝试

      好久没有写过爬虫的文章了,今天在尝试着做验证码相关的研究时,遇到了验证码的收集问题.   一般,验证码的加载都有着比较复杂的算法和加密在里边,但是笔者今天碰到的验证码却比较幸运,有迹可循.在此,给 ...