网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月29日漏签0天
cc2530吧 关注:465贴子:1,915
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 3回复贴,共1页
<<返回cc2530吧
>0< 加载中...

zigbee基础代码汇总

  • 只看楼主
  • 收藏

  • 回复
  • KING_涅磐
  • 小吧主
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
为方便吧友查询相关知识,本帖后续会每周更新相关基础代码,请需要的吧友自行查看,知识点如有重复,请见谅!
1、GPIO输出控制实验1 操作IO口控制LED灯的亮和灭
#include <ioCC2530.h>
typedef unsigned char uchar;
typedef unsigned int uint;
#define LED1 P1_0 //定义P1.0口为LED1控制端
/****************************************************************************
* 名 称: DelayMS()
* 功 能: 以毫秒为单位延时,系统时钟不配置时默认为16M(用示波器测量相当精确)
* 入口参数: msec 延时参数,值越大,延时越久
* 出口参数: 无
****************************************************************************/
void DelayMS(uint msec)
{
uint i,j;
for (i=0; i<msec; i++)
for (j=0; j<535; j++);
}
/****************************************************************************
* 名 称: InitLed()
* 功 能: 设置LED灯相应的IO口
* 入口参数: 无
* 出口参数: 无
****************************************************************************/
void InitLed(void)
{
P1DIR |= 0x01; //P1.0定义为输出口
}
/****************************************************************************
* 程序入口函数
****************************************************************************/
void main(void)
{
InitLed(); //设置LED灯相应的IO口
while(1) //死循环
{
LED1 = 0; //点亮LED1
DelayMS(1000); //延时1秒
LED1 = 1; //LED1熄灭
DelayMS(1000); //延时1秒
}
}
————————————————————————————————————————————————
2、操作IO口控制3盏LED灯的全亮和全灭、闪烁、流水灯
#include <ioCC2530.h>
typedef unsigned char uchar;
typedef unsigned int uint;
#define LED1 P1_0 //定义P1.0口为LED1控制端
#define LED2 P1_1 //定义P1.1口为LED2控制端
#define LED3 P1_4 //定义P1.4口为LED3控制端
/****************************************************************************
* 名 称: DelayMS()
* 功 能: 以毫秒为单位延时,系统时钟不配置时默认为16M(用示波器测量相当精确)
* 入口参数: msec 延时参数,值越大,延时越久
* 出口参数: 无
****************************************************************************/
void DelayMS(uint msec)
{
uint i,j;
for (i=0; i<msec; i++)
for (j=0; j<535; j++);
}
/****************************************************************************
* 名 称: LedOnOrOff()
* 功 能: 点亮或熄灭所有LED灯
* 入口参数: mode为0时LED灯亮 mode为1时LED灯灭
* 出口参数: 无
****************************************************************************/
void LedOnOrOff(uchar mode)
{
LED1 = mode;
LED2 = mode;
LED3 = mode; //由于P1.4与仿真器共用,必须拔掉仿真器的插头才能看到LED3的变化
}
/****************************************************************************
* 名 称: InitLed()
* 功 能: 设置LED灯相应的IO口
* 入口参数: 无
* 出口参数: 无
****************************************************************************/
void InitLed(void)
{
P1DIR |= 0x13; //P1.0、P1.1、P1.4定义为输出
LedOnOrOff(1); //使所有LED灯默认为熄灭状态
}
/****************************************************************************
* 程序入口函数
****************************************************************************/
void main(void)
{
uchar i;
InitLed(); //设置LED灯相关IO口
while(1) //死循环
{
LED1 = !LED1; //流水灯,初始化时LED为熄灭执行后则点亮
DelayMS(200);
LED2 = !LED2;
DelayMS(200);
LED3 = !LED3;
DelayMS(200);
for (i=0; i<2; i++) //所有灯闪烁2次
{
LedOnOrOff(1); //关闭所有LED灯
DelayMS(200);
LedOnOrOff(0); //打开所有LED灯
DelayMS(200);
}
LedOnOrOff(1); //使所有LED灯熄灭状态
DelayMS(500);
}
}


  • KING_涅磐
  • 小吧主
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
3、两个按键分别输出不同字符
#include <ioCC2530.h>
#include <string.h>
typedef unsigned char uchar;
typedef unsigned int uint;
#define TX_SIZE 20
#define KEY1 P0_1
#define KEY2 P2_0
char TxData1[] ={"0\n"};
char TxData2[] ={"1\n"};
/****************************************************************************
* 名 称: DelayMS()
* 功 能: 以毫秒为单位延时 16M时约为535,32M时要调整,系统时钟不修改默认为16M
* 入口参数: msec 延时参数,值越大延时越久
* 出口参数: 无
****************************************************************************/
void DelayMS(uint msec)
{
uint i,j;
for (i=0; i<msec; i++)
for (j=0; j<1070; j++);
}
/****************************************************************************
* 名 称: InitUart()
* 功 能: 串口初始化函数
* 入口参数: 无
* 出口参数: 无
****************************************************************************/
void InitUart(void)
{
PERCFG = 0x00; //外设控制寄存器 USART 0的IO位置:0为P0口位置1
P0SEL = 0x0c; //P0_2,P0_3用作串口(外设功能)
P2DIR &= ~0XC0; //P0优先作为UART0
U0CSR |= 0x80; //设置为UART方式
U0GCR |= 11;
U0BAUD |= 216; //波特率设为115200
UTX0IF = 0; //UART0 TX中断标志初始置位0
}
void InitKey1(void)
{
P0SEL &= ~0x02; //设置P0.1为普通IO口
P0DIR &= ~0x02; //按键接在P0.1口上,设P0.1为输入模式
P0INP &= ~0x02; //打开P0.1上拉电阻
}
void InitKey2(void)
{
P2SEL &= ~0x01;
P2DIR &= ~0x01;
P2INP &= ~0x01;
}
uchar KeyScan1(void)
{
if (KEY1 == 0)
{
DelayMS(10);
if (KEY1 == 0)
{
while(!KEY1); //松手检测
return 1; //有按键按下
}
}
return 0; //无按键按下
}
uchar KeyScan2(void)
{
if (KEY2 == 0)
{
DelayMS(10);
if (KEY2 == 0)
{
while(!KEY2); //松手检测
return 1; //有按键按下
}
}
return 0; //无按键按下
}
/****************************************************************************
* 名 称: UartSendString()
* 功 能: 串口发送函数
* 入口参数: Data:发送缓冲区 len:发送长度
* 出口参数: 无
****************************************************************************/
void UartSendString(char *Data, int len)
{
uint i;
for(i=0; i<len; i++)
{
U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}
/****************************************************************************
* 程序入口函数
****************************************************************************/
void main(void)
{
CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振稳定为32M
CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ
InitUart(); //调置串口相关寄存器
InitKey1();
InitKey2();
while(1)
{
//延时
if(KeyScan1())
{
UartSendString(TxData1, sizeof("0\n"));
DelayMS(500); //延时
}
if(KeyScan2())
{
UartSendString(TxData2, sizeof("1\n"));
DelayMS(500); //延时
}
}
}


2025-05-29 18:43:58
广告
  • 不想好想回家
  • 中级粉丝
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
cc2530+wifi模块适合做视频监控吗


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 3回复贴,共1页
<<返回cc2530吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示