Zigbee物联网应用与开发复习汇总(附某高校期末真题试卷)_zigbee网络地址 考试

本文介绍了基于CC2530的Zigbee物联网通信技术,包括串口初始化、数据接收与发送、中断处理以及LED控制。通过实例展示了如何在嵌入式系统中实现串口通信,同时提供了串口接收中断服务程序的代码。
摘要由CSDN通过智能技术生成
U0GCR |= 11;				
U0BAUD |= 216;				//波特率设为115200
UTX0IF = 1;                                 //UART0 TX中断标志初始置位1 
U0CSR |= 0X40;				//允许接收
IEN0 |= 0x84;				//开总中断,接收中断

}

/****************************************************************
主函数
****************************************************************/
void main(void)
{
LED_Init();
initUART0();
while(1)
{
if(RXTXflag == 1) //接收状态
{
if(temp!=0)
{
LED2=!LED2;
UartTX_Send_String(Recdata,10);
UartTX_Send_String(“\n”,1);
RXTXflag = 3; //进入发送状态
}

          temp  = 0;
      }
      if(RXTXflag == 3)			//发送状态
      {          

        U0CSR &= ~0x40;			//不能收数
        U0CSR |= 0x40;			//允许接收
        RXTXflag = 1;		        //恢复到接收状态

      }
}

}
/****************************************************************
串口接收一个字符:一旦有数据从串口传至CC2530,则进入中断,将接收到的数据赋值给变量temp.
****************************************************************/
#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
{
URX0IF = 0; //清中断标志
temp = U0DBUF;
}



#include <iocc2530.h>
#include <string.h>
#define uint unsigned int
#define uchar unsigned char

//定义控制灯的端口
#define LED1 P1_0
#define LED2 P2_0

void LED_Init();
void initUART0(void);
void InitialAD(void);
void UartTX_Send_String(uchar *Data,int len);
void delay(void);

uchar Recdata1[10]=“Hello\n”;
uchar Recdata[10]=“Welcome\n”;
uchar RXTXflag = 1;
uchar temp=0;
uint datanumber = 0;
uint stringlen;
int counter=0;
/****************************************************************
串口发送字符串函数
****************************************************************/
void UartTX_Send_String(uchar *Data,int len)
{
int j;
for(j=0;j<len;j++)
{
U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}

void TIM1_Init()
{
CLKCONCMD&=~0X7f; //晶振设置为32MHz
while(CLKCONSTA & 0x40); //等待晶振稳定

EA=1; //开总中断
T1IE=1; //开T1溢出中断
T1CTL=0x09; //0000 1001启动设32分频,设自由模式
}

void LED_Init()
{
P0SEL &=~0X01;
P0DIR |=0X01;
P2SEL &=~0X01;
P2DIR |=0X01;
LED1=1;
LED2=1;
}
void delay(void)
{
int i = 0,j = 0;
for(i = 0;i < 1000;i++)
for(j = 0;j < 500;j++);
}

/****************************************************************
初始化串口0函数
****************************************************************/
void initUART0(void)
{
CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振稳定
CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ

PERCFG = 0x00;				//位置1 P0口
P0SEL = 0x3c;				//P0用作串口
P2DIR &= ~0XC0;                             //P0优先作为UART0 
U0CSR |= 0x80;				//串口设置为UART方式
U0GCR |= 11;				
U0BAUD |= 216;				//波特率设为115200
UTX0IF = 1;                                 //UART0 TX中断标志初始置位1 
U0CSR |= 0X40;				//允许接收
IEN0 |= 0x84;				//开总中断,接收中断

}

/****************************************************************
主函数
****************************************************************/
void main(void)
{
LED_Init();
initUART0();
TIM1_Init();
while(1)
{
}
}
/****************************************************************
串口接收一个字符:一旦有数据从串口传至CC2530,则进入中断,将接收到的数据赋值给变量temp.
****************************************************************/
#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
{
URX0IF = 0; //清中断标志
temp = U0DBUF;
}

#pragma vecto

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值