📄 具备跳号跳频和跳址的nrf905的c51演示程序 (ourdev_cn 我们的电子开发社区).htm
字号:
</SPAN></TD></TR></TBODY></TABLE>
<TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellSpacing=0
cellPadding=6 width="100%" border=0>
<TBODY>
<TR>
<TD class=f03
style="BORDER-RIGHT: #ffffff 0.5pt solid; BORDER-TOP: #ffffff 0.5pt solid; BORDER-LEFT: #bbbbbb 0.5pt solid; BORDER-BOTTOM: #ffffff 0.5pt solid"
vAlign=top align=left width="19%" bgColor=#d1d9e2 rowSpan=2>【楼主位】 <FONT
color=#000000>zhliangxi 喜哥</FONT><BR>积分:<FONT
color=#000000>81</FONT><BR>派别:<FONT color=#000000></FONT><BR>等级:<FONT
color=#000000>------</FONT><BR>来自:<FONT color=#000000></FONT><BR></TD>
<TD class=f03
style="BORDER-RIGHT: #bbbbbb 0.5pt solid; BORDER-TOP: #ffffff 0.5pt solid; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none"
vAlign=top width="81%" bgColor=#d1d9e2><FONT
color=#000000>*----------------------------------------------------------
<BR> 具备跳号跳频和跳址的nrf905的C51演示程序
<BR>HotPower@126.com 2006.6.6 于大雁塔村队部
<BR>----------------------------------------------------------*/
<BR>//#pragma src <BR>#include <BR>#include <BR>#include <BR>#include
<BR>/*---------------------*/ <BR>#include <BR>#include "hotins.h"
<BR>/*---------------------*/ <BR>#pragma NOAREGS
<BR><BR>void MainInit(void);//系统初始化
<BR>void SystemInit(void);//系统初始化
<BR>void SystemSetup(void);//系统设置
<BR>void SystemIoInit(void);//系统接口初始化
<BR>void TimeInit(void);//定时器定时参数设置
<BR>void UserSetup(void);//用户运行环境设置 <BR>void ClrWdt(void);//喂狗
<BR>void BeepSetup(unsigned char mode);//蜂鸣器发声模式设置
<BR>void Beep(void);//蜂鸣器发声驱动 <BR>void KeyInit(void);//键盘初始化
<BR>void KeyCommandExec(unsigned char commgroup, unsigned char commnum);//执行键盘命令
<BR><BR>void Key00(void);//压键事件 <BR>void Key01(void);
<BR>void Key02(void); <BR>void Key03(void);
<BR><BR>void Key10(void);//放键事件 <BR>void Key11(void);
<BR>void Key12(void); <BR>void Key13(void);
<BR><BR>void Key20(void);//长键事件 <BR>void Key21(void);
<BR>void Key22(void); <BR>void Key23(void);
<BR><BR>/*-----------------------------------------------
<BR> nrf905库函数定义
<BR>------------------------------------------------*/
<BR>unsigned char SpiReadWrite(unsigned char);
<BR>void WriteTXBuffer(const unsigned char[]);
<BR>unsigned char ReadStatus(void);
<BR>void nRFPowerUP(void); <BR>void nRFInit(void);//无线模块初始化
<BR>unsigned char VerifynRFConfig(void);//校验配置nRF905
<BR>void WritenRFConfig(unsigned char[]);//写配置nRF905
<BR>void ReadnRFConfig(unsigned char[]);//读配置nRF905
<BR>void FastWritenRFConfig(unsigned char);//快速配置nRF905
<BR>void SetTxMode(void);//设置发送模式
<BR>void SetRxMode(void);//设置接收模式 <BR>void StartTx(void);//开始发送
<BR>void nRFReadWrite(void);//无线收发模块
<BR><BR><BR>data SystemData SystemBuffers;//申请系统数据结构
<BR>idata SioData SioBuffers;//申请系统数据结构
<BR><BR>/*------------------------------------------------
<BR> SPI读写一体化函数SpiReadWrite()
<BR>入口参数:
<BR> val 写入命令或数据
<BR>出口参数:
<BR> R7 读出数据
<BR>------------------------------------------------*/
<BR>unsigned char SpiReadWrite(unsigned char val) using 0
<BR>{ <BR>unsigned char i; <BR> ACC = val;
<BR> for (i = 8; i > 0; i --)
<BR> { <BR> CY = MISO;//取数据SO
<BR> _rlca_();//存数据ACC.0读数据ACC.7同时进行,acc循环左移,acc.7移入cy(出),cy(入)移到acc.0
<BR> MOSI = CY;//送数据SI
<BR> SCK = 1;//上升沿打入数据 <BR> _nop_();
<BR> SCK = 0;//下降沿读入数据(首次为假动作) <BR> }
<BR> return ACC; <BR>}
<BR><BR>/*------------------------------------------------
<BR> 写入nRF905发送数据函数WriteTXBuffer()
<BR>入口参数:
<BR> buffer 发送数据包
<BR>出口参数: <BR> 无
<BR>------------------------------------------------*/
<BR>void WriteTXBuffer(const unsigned char buffer[]) using 0
<BR>{ <BR>unsigned char i;
<BR> TRX_CE = 0;//设置nRF905为待机方式
<BR> _nop_(); <BR> CSN="0";//打开SPI
<BR> SpiReadWrite(WTA);//写发送地址
<BR> for (i = 0; i < 4; i++)
<BR> {
<BR> SpiReadWrite(buffer[i]); // Write 32 bytes Tx data
<BR> } <BR> CSN="1";//关闭SPI <BR> _nop_();
<BR> CSN="0"; // Spi enable for write a spi command
<BR> SpiReadWrite(WTP); // Write payload command
<BR> for (i = 0; i < 32; i++)
<BR> {
<BR> SpiReadWrite(buffer[i]); // Write 32 bytes Tx data
<BR> }
<BR> CSN="1"; // Spi disable
<BR> TRX_CE = !TX_EN;// <BR>}
<BR><BR>void FastWritenRFConfig(unsigned char low_ch_no) using 0
<BR>{ <BR> TRX_CE = 0;//设置nRF905为待机方式
<BR> _nop_(); <BR> CSN="0";//打开SPI
<BR> SpiReadWrite(CC | PA_PWR_10dBm | HFREQ_PLL_433MHz | CH_NO_BIT8);
<BR> SpiReadWrite(low_ch_no);//CH_NO
<BR> CSN="1"; // Spi disable
<BR> TRX_CE = !TX_EN;// <BR>}
<BR><BR>void StartTx(void) using 0 <BR>{
<BR> _nop_(); <BR> _nop_(); <BR> _nop_();
<BR> TRX_CE=1; // Set TRX_CE high,start Tx data transmission
<BR> _nop_(); <BR> _nop_(); <BR> _nop_();
<BR> _nop_(); <BR> _nop_(); <BR> _nop_();
<BR> _nop_(); <BR> _nop_(); <BR> _nop_();
<BR> _nop_();
<BR> TRX_CE=0; // Set TRX_CE low
<BR>} <BR><BR>/*------------------------------------------------
<BR> 读入nRF905状态函数ReadStatus()
<BR>入口参数: <BR> 无 <BR>出口参数:
<BR> nRF905状态字
<BR>------------------------------------------------*/
<BR>unsigned char ReadStatus(void) using 0 <BR>{
<BR>unsigned char val; <BR> CSN = 0;//打开SPI
<BR> val = SpiReadWrite(RC);//读状态
<BR> CSN = 1;//关闭SPI
<BR> return val;//返回nRF905状态字 <BR>}
<BR><BR>void nRFPowerUP(void) using 0 <BR>{
<BR> CSN = 1;//关闭SPI
<BR> SCK = 0;//拉低时钟
<BR> DR = 1;//设置DR为输入方式
<BR> AM = 1;//设置AM为输入方式
<BR> PWR_UP = 1;// nRF905上电
<BR> TRX_CE = 0;//设置nRF905为待机方式
<BR> TX_EN = 0;//设置接收方式 <BR>}
<BR><BR><BR>void main(void) <BR>{
<BR>// ReadnRFConfig(SystemBuffers.nRFTxBuff);
<BR><BR> MainInit();//系统初始化
<BR> while (1) {//主循环
<BR> IE |= 0xb2;//保证中断可靠EA,ET2,ES,ET0
<BR> TCON |= 0x55;//保证定时器开
<BR> PCON |= SMOD_ + GF0_ + IDL_;//进入空闲状态并喂软件狗
<BR> _nop_(); <BR> _nop_();
<BR> } <BR>}
<BR><BR>void MainInit(void) using 0//系统初始化 <BR>{
<BR> _start_(); <BR> ClrWdt();//清除看门狗计数器
<BR> SystemIoInit();//系统接口初始化
<BR> SystemInit();//系统上电初始化
<BR> SystemSetup();//系统运行环境设置
<BR> UserSetup();//用户运行环境设置 <BR>}
<BR><BR>void SystemInit(void) using 0//系统初始化 <BR>{
<BR>unsigned char i;
<BR> for (i = 0; i < 32; i ++) {
<BR> SioBuffers.SioTxBuff[i] = 0;
<BR> SioBuffers.SioRxBuff[i] = 0;
<BR> }
<BR> if (SystemBuffers.RamTest != 0x55aa) {//内存初始化
<BR> for (i = 0; i < 32; i ++) {
<BR> SystemBuffers.nRFTxBuff[i] = 0;
<BR> SystemBuffers.nRFRxBuff[i] = 0;
<BR> }
<BR> SystemBuffers.nRFRxBuff[0] = RX_ADDRESS_0;//本机地址
<BR> SystemBuffers.nRFRxBuff[1] = RX_ADDRESS_1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -