zigbee学习之路(二):点亮LED

一.前言

今天,我来教大家如何点亮led,这也是学习开发板最基础的步骤了。

二.原理分析

cc2530芯片跟虽然是51的内核,但是它跟51单片机还是有区别的,51单片机不需要对IO口进行配置,而cc2530芯片却需要对IO口进行配置,才能对它进行赋值,需要配置的寄存器有PXSEL,PXDIR,PXINP,x可以代表任意IO口,如P1SEL。

下面介绍PXSEL的功能:

下面介绍PXDIR的功能:

下面介绍PXINP的功能:

通过配置以上寄存器的,就可以控制IO口德输入输出状态,是否做为普通IO口。

三.程序

#include <ioCC2530.h>

#define uint unsigned int #define uchar unsigned char

#define LED1 P1_0    //定义P1_0口为LED1控制端 #define LED2 P1_1    //定义P1_1口为LED2控制端

#define LED3 P1_4    //定义P1_4口为LED3控制端

/* 函 数 名  : IO_Init  功能描述  : LED_IO初始化函数  输入参数  :

NONE   输出参数  : NONE  返 回 值  : NONE */

void IO_Init(void)

{     P1DIR |= 0xff;       //P1端口定义为输出

LED1 = 0;            //点亮LED1

LED2 = 0;            //点亮LED2

LED3 = 0;            //点亮LED3 }

/* 函 数 名  : Delayms  功能描述  : 毫秒延时  输入参数  : xms:延时时间,如 i=xms 即延时i毫秒  输出参数  : none  返 回 值  : none */

void Delayms(uint xms) {

uint i,j;

for(i=xms;i>0;i--)

for(j=587;j>0;j--); }

/* 函 数 名  : main  功能描述  : LED测试(通用IO的输出使用)  输入参数  : NONE   输出参数  : NONE  返 回 值  : NONE */

void main ( void )

{   IO_Init ();       //调用初始化程序

Delayms ( 2000 );   //延时2s

while ( 1 )   {

LED1 = ~ LED1;

LED2 = ~ LED2;

LED3 = ~ LED3;

Delayms ( 500 );   //延时0.5s           }   }

四.总结与分析

主函数中先执行初始化程序,配置IO口相关的寄存器,其他两个寄存器的默认值满足我们的要求,我们只要配置P0DIR即可,是P1口做为输出口,然后通过延时函数,实现灯闪烁的效果。

时间: 2024-12-20 00:28:51

zigbee学习之路(二):点亮LED的相关文章

java痛苦学习之路[二] ---JSONObject使用

一.Strut2必须引入的包 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging.jar 5.ezmorph.jar 6.json-lib-2.2.2-jdk15.jar 当然除了这些包,strut2基础包也得引入 struts2-core-2.1.6.jar freemarker-2.

zigbee学习之路(十一):看门狗

一.前言 今天,我们要通过实验学习和认识一下看门狗的使用,看门狗是为了防止防止程序跑飞的,通过不断的喂狗,使看门狗能持续监管程序的运行状态,当程序跑飞时,能及时把程序拽回来. 二.原理与分析 在CPU 可能受到一个软件颠覆的情况下,看门狗定时器(WDT)用作一个恢复的方法.当软件在选定时间间隔内不能清除WDT 时,WDT 必须就复位系统.看门狗可用于受到电气噪音.电源故障.静电放电等影响的应用,或需要高可靠性的环境.如果一个应用不需要看门狗功能,可以配置看门狗定时器为一个间隔定时器,这样可以用于

zigbee学习之路(十五):基于协议栈的按键实验

一.前言 经过上次的学习,相信大家已经初步学会使用zigbee协议进行发送和接受数据了.今天,我们要进行的实验是按键的实验,学会如何在协议栈里实现按键中断. 二.实验功能 在协议栈上实现按键中断,BUT1 按下,LED1 闪烁两次. 三.代码讲解 大家还记得,前面做过的按键实验是怎么配置的吗,其实基于zigbee的协议栈原理是差不多的,我们要对按键的接口和状态是差不多,TI已经为我们建立了专用的按键配置的代码文件,我们只要在此基础上修改就行了.先打开hel_key.c进行修改,下面是代码 #de

zigbee学习之路(一):zigbee介绍

一.前言 大家好,我是一名在校的大学生,最近对zigbee非常感兴趣,于是自己从网上买了一款秉火cc2530的zigbee开发板,想通过这个平台来和大家分享自己学习和研究的经历,下面就来简单的介绍下zigbee 二.zigbee定义 ZigBee是基于IEEE802.15.4标准的低功耗局域网协议.根据国际标准规定,ZigBee技术是一种短距离.低功耗的无线通信技术.这一名称(又称紫蜂协议)来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和"嗡嗡"(zig)地抖动翅膀的"舞蹈&

我的ZigBee学习之路

每个人总要有自己的一技之长,来体现自己的价值.每个都应该培养自己的以及之长,来实现自己的价值.这个世界是残酷的,同时也是公平的,“天道酬勤”,相信付出总会有所回报.时间,是个神奇的东西,它带走了一切,同时也带来了一切.它是我们生命中唯一可以把握的事物.假如我们能够活到90岁,每年365天,每天24小时,我们总共会有8760个小时,525600分钟.我们每个月有672小时,每周有168小时,在这168个小时里,人与人之间的差异是巨大的,说到底,点滴的积累成就了那个伟大的自己. 下面就来回顾一下自己

Android开发学习之路-二维码学习

这个月装逼有点少了,为什么呢,因为去考软件射鸡师了,快到儿童节了,赶紧写篇博纪念一下逝去的青春,唔,请忽略这句话. 二维码其实有很多种,但是我们常见的微信使用的是一种叫做QRCode的二维码,像下面这样的,可以放心的扫,这只是我的博客主页链接啦: 关于QR码编码的二维码,我们要知道几个特点: 1. 扫描时可以从各个角度去扫,也就是旋转多少度都没关系,不信吗?下次去肯德基买单试试咯. 2. 二维码有容错率,容错率越大,生成的二维码也就越复杂,但是越不容易出错,并且,当二维码被遮挡的时候也越容易扫描

Python学习之路二

今天主要学习了列表,python的列表真的事太强大了,由于内容比较多,今天就先简单的介绍一下新学的几个成员函数吧. 首先我们要了解list是一种序列类型,其构造方式有四种形式: (1)空列表 [] (2)直接添加元素 [a] [a,b,c] (3)使用列表解析 [x for x in iterable] (4)使用构造函数 list() or list(iterable) 成员函数: append() 在末尾添加一个元素 extend() 以列表的形式在末尾添加 insert() 两个参数,第一

react.js学习之路二

看react.js对我来说真的不是难不难的问题,问题是我的思路太难转变了,真是坑死我了,react里面的坑也很多.算了,这些抱怨没啥用,记录一下今天学习的内容. 今天看了to-do-list经典示例 总结起来可以概括为 1.首先划分组件:父组件--子组件 2.显示数据:创建初始数据,并将数据显示到页面上 3.创建函数:①:添加函数,输入框中输入数据,显示到页面上 ②:删除函数,点击删除按钮,将该条数据删除 代码有很多,一会给一个链接,自己看就行,没必要我重新复制 其中踩过的坑: 1. 首先就是版

嵌入式Linux驱动学习之路(二十六)DM9000C网卡驱动程序

基于DM9000C的原厂代码修改dm9000c的驱动程序. 首先确认内存的基地址 iobase. 确定中断号码. 打开模块的初始化函数定义. 配置内存控制器的相应时序(结合DM9000C.C的手册). 程序代码: /* dm9ks.c: Version 2.08 2007/02/12 A Davicom DM9000/DM9010 ISA NIC fast Ethernet driver for Linux. This program is free software; you can redi