#include <C8051F120.H>
#include <intrins.h>
#include "stdlib.h"
#include "main.h"
//////////////////////////////////////////////////////////////////////////
//名称:WTDDisable()
//功能:关闭看门狗
//入口参数:无
//出口参数:无
//////////////////////////////////////////////////////////////////////////
void WTDDisable(void){
GLOBAL_ISR_DISABLE(); //writing to 0xDE and 0xAD must be finished in 4 clock cycles
WDTCN = 0xDE;
WDTCN = 0xAD;
GLOBAL_ISR_ENABLE();
}
//////////////////////////////////////////////////////////////////////////
//名称:SystemClkInit()
//功能:系统时钟初始化
//入口参数:无
//出口参数:无
//////////////////////////////////////////////////////////////////////////
void SystemClkInit(void){
WORD EXT_DATA tmp;
SFRPAGE = CONFIG_PAGE;
OSCXCN = 0x67; // enable ext osc 10-30MHz range
for (tmp=24500; tmp!=0; tmp--) // Wait 1ms for initialization
{
;
}
while ((OSCXCN & 0x80) == 0)
{
;
}
OSCICN = 0x83; // Enable 24.5 MHz internal osc
for (tmp=24500; tmp!=0; tmp--) // Wait 1ms for initialization
{
;
}
while ((OSCICN & 0x40) == 0)
{
;
}
CLKSEL = 0x00; // Select internal clock source
}
//////////////////////////////////////////////////////////////////////////
//名称:SfrAutoSwithDis()
//功能:SFR自动页切换关闭
//入口参数:无
//出口参数:无
//////////////////////////////////////////////////////////////////////////
void SfrAutoSwitchDis(void){
SFRPAGE = CONFIG_PAGE;
SFRPGCN = 0x00;
}
//////////////////////////////////////////////////////////////////////////
//名称:PortInit()
//功能:端口初始化
//入口参数:无
//出口参数:无
//////////////////////////////////////////////////////////////////////////
void PortInit(void){
SFRPAGE = CONFIG_PAGE; // SFR page switching
XBR0 |= 0x04; // enable UART
P0MDOUT |= 0x01; // enable TX as a push-pull output
XBR0 |= 0x02; // Enable SPI
P0MDOUT |= 0x34; // SCK,MOSI,NSS push-pull output
XBR0 |= 0x01; // enable smbus (skip 2 pins)
XBR0 |= 0x10; // enable CEX0 = P1.0,CEX1 = P1.1
XBR1 |= 0x04; // enable /int0 = P1.2
P1MDOUT |= 0xC0; // RESET VRGEN push-pull output
XBR2 |= 0x40; // Enable Crossbar
}
//////////////////////////////////////////////////////////////////////////
//名称:Uart0Init()
//功能:UART0初始化
//入口参数:优先级
//出口参数:无
//////////////////////////////////////////////////////////////////////////
void Uart0Init(BOOL pri){
ES0 = 1;
if(pri){
IP |= 0x10;
}
else{
IP &= 0xEF;
}
SFRPAGE = UART0_PAGE; //Config UART0 register
SCON0 = 0x50; //Mode1(8 bit data),No check stop bit,Enable receive
SSTA0 = 0x10; //Baud rate doubler enable,T1溢出率为TX和RX的时钟源
SFRPAGE = TIMER01_PAGE; //Config timer1 register
TCON = 0x00;
TMOD = 0x20; //T1 timer mode uses 8 bit overload
CKCON = 0x10; //T1 timer is used for system clock
TR1 = 0;
}
//////////////////////////////////////////////////////////////////////////
//名称:Uart0TimeOutTimerInit()
//功能:This function initializes the UART timer (Timer0).
//入口参数:优先级
//出口参数:无
//////////////////////////////////////////////////////////////////////////
void Uart0TimeOutTimerInit(BOOL pri){
PT0 = pri; //定时器0中断优先级控制
SFRPAGE = TIMER01_PAGE;
TMOD |= 0x01; //16 bit
TF0 = 0;
TR0 = 0; //Turn off timer0
}
void Uart0TimeOutTimerTurnOff(void){
BYTE saveSfr = SFRPAGE;
SFRPAGE = TIMER01_PAGE;
TR0 = 0; // stop timer count
TF0 = 0; // clear isr flag
ET0 = 0; // Turn off isr
TH0 = 0; //
TL0 = 0;
SFRPAGE = saveSfr;
}
//////////////////////////////////////////////////////////////////////////
//名称:Spi0Init()
//功能:SPI设置
//入口参数:无
//出口参数:无
//////////////////////////////////////////////////////////////////////////
void Spi0Init(void){
SFRPAGE = SPI0_PAGE; // SFR page switching
SPI0CFG = 0x40; // master mode, + clock, 1st edge
SPI0CN = 0x0C; // 4 wire NSS high
SPI0CKR = SPI0CKR_VALUE; // init SPI clock
SPI0CN |= 0x01; // enable SPI
SFRPAGE = 0x0F; // disable spi interrupt
EIE1 &=0xF6;
}
//////////////////////////////////////////////////////////////////////////
//名称:ExternalISRInit()
//功能:外部中断设置
//入口参数:无
//出口参数:无
//////////////////////////////////////////////////////////////////////////
void ExternalISRInit(BOOL pri){
SFRPAGE = TIMER01_PAGE;
TCON |= 0x01; // low level triggered
TCON &= ~0x02; // clear IE0 flag
IE |= 0x01; // Enable INT0
if(pri){
IP |= 0x01;
}
else{
IP &= 0xFE;
}
}
//////////////////////////////////////////////////////////////////////////
//名称:Uart0SetBaudrate()
//功能:UART0波特率设置
//入口参数:波特率
//出口参数:无
//////////////////////////////////////////////////////////////////////////
void Uart0SetBaudrate(BYTE baudrate){
SFRPAGE = TIMER01_PAGE;
TR1 = 0; //Turn off T1
TH1 = baudrate;
TL1 = baudrate;
TR1 = 1; //Turn on T1
}
//////////////////////////////////////////////////////////////////////////
//名称:XdataMemset()
//功能:This function sets the first length bytes in buffer to value
//入口参数:
// p: buffer point to set.
// value: byte value to set
// len: buffer length to set
//出口参数:无
//////////////////////////////////////////////////////////////////////////
void XdataMemset(void EXT_DATA *p, BYTE value, WORD EXT_DATA len) reentrant{
BYTE EXT_DATA *byteP;
if(len == 0){
return;
}
byteP = (BYTE EXT_DATA *)p;
while(len--){
*byteP++ = value;
}
}
//////////////////////////////////////////////////////////////////////////
//名称:UartTRxManaMsgInit()
//功能:Initialize Uart0 trx data control structure
//入口参数:无
//出口参数:无
//////////////////////////////////////////////////////////////////////////
void UartTRxManaMsgInit(void){
XdataMemset(&gUartTRxManaMsg, 0, sizeof(gUartTRxManaMsg));
gUartTRxManaMsg.TxDataFirstAddr = NULL;
gUartTRxManaMsg.RxDataFirstAddr = NULL;
}
//////////////////////////////////////////////////////////////////////////
//名称:BufBetweenAppAndMacInit()
//功能:This function initialize the buffer information between App and Mac
//入口参数:无
//出口参数:无
//////////////////////////////////////////////////////////////////////////
void BufBetweenAppAndMacInit(void){
XdataMemset(&gAppToMacBuf, 0, sizeof(gAppToMacBuf));
XdataMemset(&gAppToMacSonBufDataLen, 0, sizeof(gAppToMacSonBufDataLen));
XdataMemset(&gMacToAppBuf, 0, sizeof(gMacToAppBuf));
XdataMemset(&gMacToAppSonBufDataLen, 0, sizeof(gMacToAppSonBufDataLen));
gAppToMacBufMana.Buf = &gAppToMacBuf[0][0];
gAppToMacBufMana.Len = gAppToMacSonBufDataLen;
gAppToMacBufMana.MaxSize = APP_TO_MAC_BUF_MAX_SIZE;
gAppToMacBufMana.MaxNum = APP_TO_MAC_BUF_MAX_NUM;
gAppToMacBufMana.WriteIndex = 0;
gAppToMacBufMana.ReadIndex = 0;
gAppToMacBufMana.Status = BUF_EMPTY;
gMacTo
在无线传感器网络或物联网(IoT)中,通信协议的可靠性和效率至关重要。CC2420是一款由Chipcon(现已被Texas Instruments收购)设计的2.4GHz IEEE 802.15.4兼容无线微控制器,常用于Zigbee、6LoWPAN等低功耗网络。在这些网络中,应答(Acknowledgement, ACK)帧的使用是确保数据正确传输的关键机制。本实验“CC2420应答ACK帧实验”将深入探讨如何利用CC2420的内置功能来实现自动应答机制。 CC2420芯片内部集成了一个高效的射频收发器和微控制器,它支持多种操作模式,包括发送、接收、能量检测以及信道空闲检测等。在数据传输过程中, AUTOACK 功能允许硬件自动发送ACK帧,显著提高了通信的可靠性。当接收到有效的数据帧后,CC2420会根据配置自动发送一个ACK响应,无需主机微控制器的干预。这样,不仅简化了软件设计,还减少了处理时间,降低了功耗。 要启用AUTOACK功能,首先需要在CC2420的配置寄存器中设置适当的位。例如,通过设置`CFG2`寄存器的`LQI_EN`位,我们可以开启基于Link Quality Indicator (LQI)的自动ACK。LQI是评估接收到信号质量的一个指标,基于此发送ACK可以帮助改善通信的稳定性。 在C8051F系列微控制器与CC2420协同工作时,通常需要编写适当的固件来控制CC2420的初始化、数据传输以及错误处理。固件应该包含设置CC2420寄存器的代码,以及处理中断的函数,这些中断可能由CC2420在接收到数据帧或发送ACK帧后触发。在实验中,我们可能会使用如`Testcase15`这样的测试程序来验证AUTOACK功能是否正常工作。 测试程序可能包括以下步骤: 1. 初始化CC2420:配置寄存器以启用AUTOACK,设置频道、发射功率等参数。 2. 设置中断服务程序(ISR):当接收到数据帧或发送ACK帧后,ISR会被调用,用于处理相关事件。 3. 发送数据:从C8051F向CC2420发送数据帧,并期待接收到ACK响应。 4. 检查ACK接收:在ISR中检查是否成功接收到ACK帧,如果没有,可能需要重新发送数据或进行错误恢复。 5. 数据传输:如果接收到ACK,确认数据传输成功,并继续进行下一次通信。 实验中,我们可以通过监控无线通信的物理层特性,如信号强度、误码率等,来评估AUTOACK功能的效果。此外,还可以通过改变距离、干扰源等因素,观察AUTOACK在不同环境下的表现,以更好地理解其工作原理和限制。 “CC2420应答ACK帧实验”是一个深入了解无线通信协议和硬件交互的实践性任务。通过实验,我们可以学习到如何利用CC2420的AUTOACK功能提高通信的可靠性和效率,这对于构建稳定、高效的无线网络系统至关重要。
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-shockwave-flash](https://img-home.csdnimg.cn/images/20250102104920.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![tgz](https://img-home.csdnimg.cn/images/20250102104920.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
- 1
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
- #完美解决问题
- #运行顺畅
- #内容详尽
- #全网独家
- #注释完整
- yanwei1232013-11-09终于找到应答帧的例子了 谢谢了啊
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 3
- 资源: 43
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- 一个使用C-C++基于epoll实现的高性能的stackfull协程库,通过HOOK阻塞的系统调用,.zip
- 2014西邮汇编比赛---多任务管理系统.zip
- 计算机系统综合设计课程要求的一个MIPS汇编器。An MIPS Assembler..zip
- 学习操作系统相关笔记,包含计算机组成原理,汇编语言等.zip
- some assembly code for embedded OS in SYSU(中山大学嵌入式.zip
- x86汇编学习以及操作系统的制作.zip
- "探讨异构混合阶多智能体系统的协同一致性:以UGV和UAV为例的仿真验证与结果分析","异构混合阶多智能体系统一致性研究:以UGV和UAV为例的14共识验证与仿真结果展示",14-Consensus
- 北工大硬件类课设仓库(数字逻辑、汇编、计算机组成原理、计算机体系结构、操作系统).zip
- 西门子S7-200PLC与组态王三层电梯控制系统详解,西门子S7-200PLC与组态王联合构建的三层电梯控制系统设计与实践,西门子S7-200PLC和组态王三层电梯3层电梯控制系统
- electronics-gitbook
- 功能强大的跨平台文本编辑器CudaText及全部插件
- 西门子S7-200PLC与组态王协同控制的四传送带物料传送带装置智能控制系统,西门子S7-200PLC与组态王联合控制四传送带物料传送系统,西门子S7-200PLC和组态王组态物料传送带装置4传送带四
- 参考《三十天自制操作系统》,使用二进制、汇编、C语言,制作属于我的操作系统!.zip
- 基于PLC的S7-1200智能交通灯控制系统:博途编程与Wincc组态仿真及报告研究,基于PLC的S7-1200智能交通灯控制系统:博途编程与Wincc组态仿真及报告详解,基于plc的城市智能交通系统
- 学习C & C++ & python&汇编语言 LLVM编译器 数据结构 算法 操作系统 单片机 .zip
- "基于Matlab Simulink的非奇异快速终端滑模控制:三自由度水面艇轨迹跟踪控制的OE期刊实践与控制科学与工程硕士生的研究探索","非奇异快速终端滑模控制NFTSMC在三自由度水面艇轨迹跟踪控
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)