基于嵌入式Linux和ZigBee技术的智能家居系统 - 图文(10)

2019-08-01 23:23

山 东 省 应 用 物 联 网 设 计 大 赛

//关闭LED3 LED3=1; //关闭LED4 LED4=1; }

/*********************** *串口初始化 *返回参数 无

***********************/ void initUARTtest(void) {

//晶振

CLKCONCMD &= ~0x40; //等待晶振稳定

while(!(SLEEPSTA & 0x40)); //TICHSPD128分频,CLKSPD不分频 CLKCONCMD &= ~0x47; //关闭不用的RC振荡器 SLEEPCMD |= 0x04;

//位置1 P0口 PERCFG = 0x00;

//P0用作串口 P0SEL = 0x3c;

//UART方式 U0CSR |= 0x80;

//baud_e U0GCR |= 10;

42

山 东 省 应 用 物 联 网 设 计 大 赛

//波特率设为57600 U0BAUD |= 216;

// UTX0IF = 1;

UTX0IF = 0; //UART0 TX中断标志初始置位0

//允许接收 U0CSR |= 0X40; //开总中断,接收中断 IEN0 |= 0x84; }

/**************************************************************** *函数功能 :串口接收一个字符 *入口参数 : 无 *返 回 值 :无

*说 明 :接收完成后打开接收

****************************************************************/

//串口中断,串口接收一个字符 #pragma vector = URX0_VECTOR __interrupt void UART0_ISR(void) {

//清中断标志

URX1IF = 0;

temp = U0DBUF;

Recdata[0]=temp; }

43

山 东 省 应 用 物 联 网 设 计 大 赛

/*************************************************/

//向串口发送数据

void UartTX_Send_String(unsigned char *Data,int len) { int j;

for(j=0;j

U0DBUF = *Data++; while(UTX0IF == 0); UTX0IF = 0; } }

void rf_init() {

//硬件CRC以及AUTO_ACK使能

FRMCTRL0 |= (0x20 | 0x40); /* AUTO_ACK | AUTO_CRC */

//设置TX抗混叠过滤器以获得合适的带宽

TXFILTCFG = 0x09;

//调整AGC目标值

AGCCTRL1 = 0x15;

//获得最佳的EVM

FSCAL1 = 0x00;

// RXPKTDONE 中断位使能 RFIRQM0 |= (1<<6);

44

山 东 省 应 用 物 联 网 设 计 大 赛

// RF 中断使能 IEN2 |= (1<<0);

//开中断 EA = 1;

//信道选择,选择11信道

FREQCTRL = 0x0d;

//目标地址过滤期间使用的短地址

SHORT_ADDR0 = 0x05; SHORT_ADDR1 = 0x00;

//目标地址过滤期间使用的PANID

PAN_ID0 = 0x22; PAN_ID1 = 0x00;

//清除RXFIFO缓冲区并复位解调器

RFST = 0xed;

//为RX使能并校准频率合成器

RFST = 0xe3;

//禁止帧过滤 FRMFILT0 &= ~(1<<0); }

#pragma vector=RF_VECTOR __interrupt void rf_isr(void) {

unsigned char i;

//关中断

EA = 0;

45

山 东 省 应 用 物 联 网 设 计 大 赛

//接收帧结束 if (RFIRQF0 & (1<<6)) { //接收帧长度

//将接收的数据写入buf中

for (i = 0; i < len; i++)

len = RFD; len &= 0x7f;

{

buf[i] = RFD;

Delay(200);

}

// 清RF中断

S1CON = 0;

//清 RXPKTDONE中断

RFIRQF0 &= ~(1<<6);

//LED2等状态改变 LED2 = ~LED2;

// UartTX_Send_String(buf,len-3); //Uart0SendString(buf);

}

//Delay(200);

EA = 1;

if((buf[0]+buf[1]+buf[2]==buf[3]) && (buf[1]==mac[1] && buf[2]==mac[2])) //如果校验正确且密钥对 {

46


基于嵌入式Linux和ZigBee技术的智能家居系统 - 图文(10).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:重庆市化工园区物流项目压矿正文 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: