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. 【校招面试 之 剑指offer】第9-1题 用两个栈实现一个队列

    #include<iostream> #include<stack> using namespace std; template <typename T> void ...

  2. 利用python实现二分法和斐波那契序列

    利用python实现二分法:我的实现思路如下 1.判断要查找的值是否大于最大值,如果大于则直接返回False 2.判断要查找的值是否小于最小值,如果小于则直接返回False 3.如果要查找的值在最大值 ...

  3. haproxy 学习

    https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#4-option%20tcp-check https://www.hapro ...

  4. springMVC使用@RequestParam用于处理简单类型的绑定

    使用@RequestParam常用于处理简单类型的绑定. value:参数名字,即入参的请求参数名字,如value=“item_id”表示请求的参数区中的名字为item_id的参数的值将传入: req ...

  5. iOS.AddFont

    为iOS App 添加定制字体 http://www.developers-life.com/how-to-include-ttf-fonts-to-ios-app.html http://blog. ...

  6. iOS.ObjC.Basic-Knowledge

    1. ObjC的基础 2. ObjC2.0中的编译指令 3. ObjC Runtime 4. ObjC Object Model 5. ObjC的新语法 6. FQA 1. ObjC的基础 2. Ob ...

  7. 开启多个tomcat 注意

    1. 将tomcat 复制到另一个文件夹 2. 更改 tomcat 文件夹中 conf/ server.xml 文件 .共3个地方. 1.  shutdown  的port 2.  connector ...

  8. 2018.09.07 bzoj1096: [ZJOI2007]仓库建设(斜率优化dp)

    传送门 斜率优化dp经典题. 令f[i]表示i这个地方修建仓库的最优值,那么答案就是f[n]. 用dis[i]表示i到1的距离,sump[i]表示1~i所有工厂的p之和,sum[i]表示1~i所有工厂 ...

  9. 33. Pay Gap for the Brightest Female Graduatea 最聪明的大学女毕业生面临的工资差距

    33. Pay Gap for the Brightest Female Graduatea 最聪明的大学女毕业生面临的工资差距 ① When young women were found to ma ...

  10. [operator]Ubuntu server 18 设置静态IP

    root@ubuntu-MesosMaster-Marathon:~# cat /etc/netplan/-cloud-init.yaml # This file is generated from ...