1.前期预备知识

1.1 新大陆ZigBee模块LED灯电路


从上两的两个电路可知

1.LED1连接在LED-LINK上,而LED-LINK是从CC2530芯片的P1.0端口引出,同样LED2连接在LED-COMM上,而LED-COMM从CC2530芯片P1.1端口引出。

2.两个LED灯正极接的是CC2530芯片,而负极通过1K电阻后接地。根据LED灯单向导电特性,所以CC2530芯片端口为高电平时LED灯便会亮.

1.2 CC2530相关寄存器


寄存器名称 寄存器作用 寄存器描述
P1 (0x90) *控制端口1的高低电平 端口1.通用I/O。可以通过SFR位寻址
P1SEL (0xF4) 端口1 8个子端口的功能选择 P1SEL的8个bit分别代表 => P1.7~P1.0的功能选择.
值为 0:代表通用I/0(GPIO)功能.
值为 1 : 代表外设功能
P1DIR (0xFE) 端口1 输入输出选择 P1DIR的bit定义同P1SEL;
值为 0:代表从外部输入信号至CC2530;
值为 1:代表从CC2530输出信号至外部
P1INP (0xF6) 端口1 输入模式选择 P1INP定义为P1.7~P1.2的I/O输入模式。其中P1.0和P1.1是没有上拉/下拉功能
值为 0:上拉/下拉。
值为 1:三态(高电平、低电平、高阻态)
注意:端口输入模式选择中的三态分别是(高电平、低电平、高阻态),其中高阻态是让端口电阻无限大,让其外部信号改变不会影响到内部总线。

1.3 寄存器操作技巧

在官方示例文档中,推荐使用 &=~ 组合赋值运算将寄存器的某一位置为 0 ;使用 |= 组合赋值运算将寄存器的某一位置为 1 。我们可以通过以下示例来了解。

例1:将P1_0设置为GPIO功能并将设置为输出模式。
/*********官方推荐************/
// 将P1_0设置为GPIO
P1SEL &=~ 0x01;
// 将P1_0设置为输出模式
P1DIR |= 0x01; /*********一般做法**********/
P1SEL = 0x00;
P1DIR = 0x01;

使用官方推荐的操作方法和使用我们一般做法有什么好处呢?其实乍一看我们发现官方推荐方式还是比较复杂,其实一般做法比较简介,好像一般做法还更好一些。我们继续看下面的例子。

例2:假设P1SEL初始值为0x31、P1DIR初始值为0xC3.请在不改变初始值的情况下将P1_0设置为GPIO功能并将设置为输出模式。
/*********官方推荐************/

    // 将P1_0设置为GPIO
P1SEL &=~ 0x01;
// 将P1_0设置为输出模式
P1DIR |= 0x01; /*********一般做法**********/ P1SEL = 0x30;
P1DIR = 0xC3;

从例2中大家就可以发现官方推荐做法的好处,如果使用官方推荐的方式,那么只需要关注需修改的那一位,不需要知道其它位到底是怎么样的。其中最重要的就是在改变某一位的值时不会影响到其它位。

1.4 CPU空转延时

单片机实现延时的方法有很多,一般是通过执行空指令来实现延时的效果。需知道单片机的晶振频率和主频。我们这里使用的是类51单片机,使用的晶振是32MHz晶振;按照文档说法,执行以下代码可以让其延时1ms.

typedef unsigned int uint;
void delay_ms(uint ms)
{
for(uint i = 0 ; i < ms ; i ++)
{
for(uint j = 0 ; j < 535 ; j++)
}
}

1.4 操作流程图

本次实验的操作流程如下。

2.程序代码

程序代码中并无特别难的地方,根据流程图和之前的分析程序一目了然。

#include <ioCC2530.h>
#define LED1 P1_0 //P1.0端口控制LED1发光二极管
#define unint unsigned int
void init_gpio()
{
// 设置 gpio
P1SEL &= ~0x01;
// 设置 输出
P1DIR |= 0x01;
// P1端口下拉
P1 = 0;
}
void delay(unint z)
{
for (unint i = 0; i < z; i++)
{
for (unint j = 0; j < 500; j++);
}
}
void main(void) {
init_gpio();
while (1)
{
LED1 = 0; // 熄灭LED1发光二极管
delay(1000);
LED1 = 1; // 点亮LED1发光二极管
delay(1000);
}
}

The End

CC2530学习路线-基础实验-GPIO 控制LED灯亮灭(1)的更多相关文章

  1. CC2530学习路线-基础实验-定时器控制LED灯亮灭(3)

    目录 1. 前期预备知识 1.1 定时器中断触发 1.2 相关寄存器 1.3 寄存器相关问题 1.4 T1.T3定时器初始化流程 2 程序及代码 THE END 1. 前期预备知识 1.1 定时器中断 ...

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

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

  3. CC2530学习路线-基础实验-串口通讯发送字符串(4 未完待续)

    目录 1. 前期预备知识 1.1 串口通讯电路图 1.2 实验相关寄存器 1.2 常用波特率设置 本章未完待续..... 原来写的文章已经丢失了,只能找到这一小部分,看什么时候有时间再补上. 1. 前 ...

  4. 树莓派 使用python来操作GPIO 控制LED灯

    一.创建python驱动和控制GPIO 先新建一个文件夹用于放置脚本 mkdir python_gpio 进入文件夹内新建一个gpio_blink.py的脚本 cd python_gpio touch ...

  5. 10-ESP8266 SDK开发基础入门篇--上位机通过串口控制ESP8266灯亮灭

    https://www.cnblogs.com/yangfengwu/p/11087618.html 其实这一节就是对上三节的综合测试 https://www.cnblogs.com/yangfeng ...

  6. 嵌入式Linux学习入门:控制LED灯

    记录自己linux学习过程,让自己能够一直坚持下去 1.原理图分析: nLED_1, nLED_2, nLED_4, 给低电平则对应LED灯亮,高电平则对应LED灯灭, S3C2440芯片GPF4-G ...

  7. 单片机与android手机通信(控制LED小灯亮灭)

    1.单片机实验板功能设计 为验证数据通信内容,让单片机板上的四个按键与android手机客户端上的四个LED灯相互控制:为达到上述基本实验要求,采用单字符传输数据即可,硬件需设计两块相同的单片机电路板 ...

  8. 树莓派GPIO控制LED彩灯

    树莓派使用GPIO接口来控制LED灯,自制五彩炫光的节日彩灯. 1.硬件准备 a. 树莓派(Raspberry Pi)一个 b. 彩色RGB二极管 c. 杜邦线 d. 5V电源引脚 以上所有零件均可在 ...

  9. arduino入门学习实现语音控制LED灯

    需要的准备的硬件arduino+PC+麦克风实现语音命令控制LED灯的亮灭. 首先需要将写好的arduino程序烧录到arduino uno主板中,下面是代码如下: int val;//定义变量val ...

随机推荐

  1. 乱序字符串anagrams

    [抄题]: 给出一个字符串数组S,找到其中所有的乱序字符串(Anagram).如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中. 对于字符串数组 ["lin ...

  2. 什么场景应该用 MongoDB(转)

    很多人比较关心 MongoDB 的适用场景,也有用户在话题里分享了自己的业务场景,比如: 案例1 用在应用服务器的日志记录,查找起来比文本灵活,导出也很方便.也是给应用练手,从外围系统开始使用Mong ...

  3. JSP页面中的EL表达式介绍

    1.什么是EL? Expression Language(表达式语言) 2.EL的功能 替代JSP页面中数据访问时的复杂编码. 3.EL的特点 自动转换类型 使用简单 4.EL表达式的语法 ${EL ...

  4. OpenGL.ProjectiveTextureMapping

    1. 简介 https://developer.nvidia.com/content/projective-texture-mapping

  5. 201621123008 《Java程序设计》第一周学习总结

    1. 本章学习总结 对于我们学计算机的学生而言,要想提高编程能力,只有多练习,把我们所学到的东西运用到实践中去,整天抱着书本冥思苦想而不动手到具体的环境中去试验是很难有所提升的.大一学C语言的时候平时 ...

  6. 删除pdf文件所有超链接

    最近在读deep learning 书Bengio那本,在Github上面下载的,下载回来全都是超链接, 超级烦,比如点一下梯度下降法,就直接跳转到数后尾的index. 我看书还喜欢老点,所以要把他们 ...

  7. 【Jsoup】Jsoup解析Html标签(Java后台解析)

    中文API网站(下载地址): http://www.open-open.com/jsoup/ 有时候编辑器传到后台的内容是带Html标签的,或者有时候需要形成一个完整的Html文档,也或者需要解析其中 ...

  8. Stacktraces java.lang.NoSuchMethodException: com.liuyang.action.UserAction.add()

    Struts Problem Report Struts has detected an unhandled exception: Messages: com.liuyang.action.UserA ...

  9. python 求第k个最大数

    #coding = utf-8 import sys def Cal_NO(a,b): nums=sorted(a,reverse=True) result=nums[b-1] return resu ...

  10. 测试-LoadRunner

    1录脚本 设置解析方式,html形式,会精炼成一个函数,此时找有用的url,写出函数:url方式,函数比较多. 参数化 两参数成对时,在脚本处选成对. 加上进程,加上返回值判断. 最后一段接口url, ...