⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 具备跳号跳频和跳址的nrf905的c51演示程序 (ourdev_cn 我们的电子开发社区).htm

📁 以NRF905芯片为核心的PTR8000模块的AVR驱动.驱动芯片为AVR mega16或者AVR mega32.内部详尽的操作流程和时序.包括CRC16校验.主从机通讯.
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      </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>&nbsp;&nbsp;&nbsp;&nbsp;具备跳号跳频和跳址的nrf905的C51演示程序 
      <BR>HotPower@126.com&nbsp;&nbsp;&nbsp;2006.6.6&nbsp;&nbsp;于大雁塔村队部 
      <BR>----------------------------------------------------------*/ 
      <BR>//#pragma&nbsp;src <BR>#include <BR>#include <BR>#include <BR>#include 
      <BR>/*---------------------*/ <BR>#include <BR>#include&nbsp;"hotins.h" 
      <BR>/*---------------------*/ <BR>#pragma&nbsp;NOAREGS 
      <BR><BR>void&nbsp;MainInit(void);//系统初始化 
      <BR>void&nbsp;SystemInit(void);//系统初始化 
      <BR>void&nbsp;SystemSetup(void);//系统设置 
      <BR>void&nbsp;SystemIoInit(void);//系统接口初始化 
      <BR>void&nbsp;TimeInit(void);//定时器定时参数设置 
      <BR>void&nbsp;UserSetup(void);//用户运行环境设置 <BR>void&nbsp;ClrWdt(void);//喂狗 
      <BR>void&nbsp;BeepSetup(unsigned&nbsp;char&nbsp;mode);//蜂鸣器发声模式设置 
      <BR>void&nbsp;Beep(void);//蜂鸣器发声驱动 <BR>void&nbsp;KeyInit(void);//键盘初始化 
      <BR>void&nbsp;KeyCommandExec(unsigned&nbsp;char&nbsp;commgroup,&nbsp;unsigned&nbsp;char&nbsp;commnum);//执行键盘命令 
      <BR><BR>void&nbsp;Key00(void);//压键事件 <BR>void&nbsp;Key01(void); 
      <BR>void&nbsp;Key02(void); <BR>void&nbsp;Key03(void); 
      <BR><BR>void&nbsp;Key10(void);//放键事件 <BR>void&nbsp;Key11(void); 
      <BR>void&nbsp;Key12(void); <BR>void&nbsp;Key13(void); 
      <BR><BR>void&nbsp;Key20(void);//长键事件 <BR>void&nbsp;Key21(void); 
      <BR>void&nbsp;Key22(void); <BR>void&nbsp;Key23(void); 
      <BR><BR>/*----------------------------------------------- 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nrf905库函数定义 
      <BR>------------------------------------------------*/ 
      <BR>unsigned&nbsp;char&nbsp;SpiReadWrite(unsigned&nbsp;char); 
      <BR>void&nbsp;WriteTXBuffer(const&nbsp;unsigned&nbsp;char[]); 
      <BR>unsigned&nbsp;char&nbsp;ReadStatus(void); 
      <BR>void&nbsp;nRFPowerUP(void); <BR>void&nbsp;nRFInit(void);//无线模块初始化 
      <BR>unsigned&nbsp;char&nbsp;VerifynRFConfig(void);//校验配置nRF905 
      <BR>void&nbsp;WritenRFConfig(unsigned&nbsp;char[]);//写配置nRF905 
      <BR>void&nbsp;ReadnRFConfig(unsigned&nbsp;char[]);//读配置nRF905 
      <BR>void&nbsp;FastWritenRFConfig(unsigned&nbsp;char);//快速配置nRF905 
      <BR>void&nbsp;SetTxMode(void);//设置发送模式 
      <BR>void&nbsp;SetRxMode(void);//设置接收模式 <BR>void&nbsp;StartTx(void);//开始发送 
      <BR>void&nbsp;nRFReadWrite(void);//无线收发模块 
      <BR><BR><BR>data&nbsp;SystemData&nbsp;SystemBuffers;//申请系统数据结构 
      <BR>idata&nbsp;SioData&nbsp;SioBuffers;//申请系统数据结构 
      <BR><BR>/*------------------------------------------------ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPI读写一体化函数SpiReadWrite() 
      <BR>入口参数: 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val&nbsp;&nbsp;写入命令或数据 
      <BR>出口参数: 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R7&nbsp;&nbsp;&nbsp;读出数据 
      <BR>------------------------------------------------*/ 
      <BR>unsigned&nbsp;char&nbsp;SpiReadWrite(unsigned&nbsp;char&nbsp;val)&nbsp;using&nbsp;0 
      <BR>{ <BR>unsigned&nbsp;char&nbsp;i; <BR>&nbsp;&nbsp;ACC&nbsp;=&nbsp;val; 
      <BR>&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;8;&nbsp;i&nbsp;&gt;&nbsp;0;&nbsp;i&nbsp;--) 
      <BR>&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;CY&nbsp;=&nbsp;MISO;//取数据SO 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;_rlca_();//存数据ACC.0读数据ACC.7同时进行,acc循环左移,acc.7移入cy(出),cy(入)移到acc.0 
      <BR>&nbsp;MOSI&nbsp;=&nbsp;CY;//送数据SI 
      <BR>&nbsp;SCK&nbsp;=&nbsp;1;//上升沿打入数据 <BR>&nbsp;&nbsp;&nbsp;&nbsp;_nop_(); 
      <BR>&nbsp;SCK&nbsp;&nbsp;=&nbsp;0;//下降沿读入数据(首次为假动作) <BR>&nbsp;&nbsp;} 
      <BR>&nbsp;&nbsp;return&nbsp;ACC; <BR>} 
      <BR><BR>/*------------------------------------------------ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;写入nRF905发送数据函数WriteTXBuffer() 
      <BR>入口参数: 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer&nbsp;发送数据包 
      <BR>出口参数: <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无 
      <BR>------------------------------------------------*/ 
      <BR>void&nbsp;WriteTXBuffer(const&nbsp;unsigned&nbsp;char&nbsp;buffer[])&nbsp;using&nbsp;0 
      <BR>{ <BR>unsigned&nbsp;char&nbsp;i; 
      <BR>&nbsp;&nbsp;TRX_CE&nbsp;=&nbsp;0;//设置nRF905为待机方式 
      <BR>&nbsp;&nbsp;_nop_(); <BR>&nbsp;&nbsp;CSN="0";//打开SPI&nbsp; 
      <BR>&nbsp;&nbsp;SpiReadWrite(WTA);//写发送地址 
      <BR>&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;4;&nbsp;i++) 
      <BR>&nbsp;&nbsp;{ 
      <BR>&nbsp;SpiReadWrite(buffer[i]);&nbsp;&nbsp;//&nbsp;Write&nbsp;32&nbsp;bytes&nbsp;Tx&nbsp;data 
      <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp;CSN="1";//关闭SPI <BR>&nbsp;&nbsp;_nop_(); 
      <BR>&nbsp;&nbsp;CSN="0";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Spi&nbsp;enable&nbsp;for&nbsp;write&nbsp;a&nbsp;spi&nbsp;command&nbsp; 
      <BR>&nbsp;&nbsp;SpiReadWrite(WTP);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Write&nbsp;payload&nbsp;command 
      <BR>&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;32;&nbsp;i++) 
      <BR>&nbsp;&nbsp;{ 
      <BR>&nbsp;SpiReadWrite(buffer[i]);&nbsp;&nbsp;//&nbsp;Write&nbsp;32&nbsp;bytes&nbsp;Tx&nbsp;data 
      <BR>&nbsp;&nbsp;} 
      <BR>&nbsp;&nbsp;CSN="1";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Spi&nbsp;disable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;TRX_CE&nbsp;=&nbsp;!TX_EN;// <BR>} 
      <BR><BR>void&nbsp;FastWritenRFConfig(unsigned&nbsp;char&nbsp;low_ch_no)&nbsp;using&nbsp;0 
      <BR>{ <BR>&nbsp;&nbsp;TRX_CE&nbsp;=&nbsp;0;//设置nRF905为待机方式 
      <BR>&nbsp;&nbsp;_nop_(); <BR>&nbsp;&nbsp;CSN="0";//打开SPI&nbsp; 
      <BR>&nbsp;&nbsp;SpiReadWrite(CC&nbsp;|&nbsp;PA_PWR_10dBm&nbsp;|&nbsp;HFREQ_PLL_433MHz&nbsp;|&nbsp;CH_NO_BIT8); 
      <BR>&nbsp;&nbsp;SpiReadWrite(low_ch_no);//CH_NO 
      <BR>&nbsp;&nbsp;CSN="1";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Spi&nbsp;disable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;TRX_CE&nbsp;=&nbsp;!TX_EN;// <BR>} 
      <BR><BR>void&nbsp;StartTx(void)&nbsp;using&nbsp;0 <BR>{ 
      <BR>&nbsp;&nbsp;_nop_(); <BR>&nbsp;&nbsp;_nop_(); <BR>&nbsp;&nbsp;_nop_(); 
      <BR>&nbsp;&nbsp;TRX_CE=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Set&nbsp;TRX_CE&nbsp;high,start&nbsp;Tx&nbsp;data&nbsp;transmission 
      <BR>&nbsp;&nbsp;_nop_(); <BR>&nbsp;&nbsp;_nop_(); <BR>&nbsp;&nbsp;_nop_(); 
      <BR>&nbsp;&nbsp;_nop_(); <BR>&nbsp;&nbsp;_nop_(); <BR>&nbsp;&nbsp;_nop_(); 
      <BR>&nbsp;&nbsp;_nop_(); <BR>&nbsp;&nbsp;_nop_(); <BR>&nbsp;&nbsp;_nop_(); 
      <BR>&nbsp;&nbsp;_nop_(); 
      <BR>&nbsp;&nbsp;TRX_CE=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Set&nbsp;TRX_CE&nbsp;low 
      <BR>} <BR><BR>/*------------------------------------------------ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;读入nRF905状态函数ReadStatus() 
      <BR>入口参数: <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无 <BR>出口参数: 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nRF905状态字 
      <BR>------------------------------------------------*/ 
      <BR>unsigned&nbsp;char&nbsp;ReadStatus(void)&nbsp;using&nbsp;0 <BR>{ 
      <BR>unsigned&nbsp;char&nbsp;val; <BR>&nbsp;&nbsp;CSN&nbsp;=&nbsp;0;//打开SPI 
      <BR>&nbsp;&nbsp;val&nbsp;=&nbsp;SpiReadWrite(RC);//读状态 
      <BR>&nbsp;&nbsp;CSN&nbsp;=&nbsp;1;//关闭SPI 
      <BR>&nbsp;&nbsp;return&nbsp;val;//返回nRF905状态字 <BR>} 
      <BR><BR>void&nbsp;nRFPowerUP(void)&nbsp;using&nbsp;0 <BR>{ 
      <BR>&nbsp;&nbsp;CSN&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1;//关闭SPI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;SCK&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;//拉低时钟 
      <BR>&nbsp;&nbsp;DR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1;//设置DR为输入方式 
      <BR>&nbsp;&nbsp;AM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1;//设置AM为输入方式 
      <BR>&nbsp;&nbsp;PWR_UP&nbsp;=&nbsp;1;//&nbsp;nRF905上电 
      <BR>&nbsp;&nbsp;TRX_CE&nbsp;=&nbsp;0;//设置nRF905为待机方式 
      <BR>&nbsp;&nbsp;TX_EN&nbsp;&nbsp;=&nbsp;0;//设置接收方式&nbsp; <BR>} 
      <BR><BR><BR>void&nbsp;main(void) <BR>{ 
      <BR>//&nbsp;&nbsp;ReadnRFConfig(SystemBuffers.nRFTxBuff); 
      <BR><BR>&nbsp;&nbsp;MainInit();//系统初始化 
      <BR>&nbsp;&nbsp;while&nbsp;(1)&nbsp;{//主循环 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;IE&nbsp;&nbsp;&nbsp;|=&nbsp;0xb2;//保证中断可靠EA,ET2,ES,ET0 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;TCON&nbsp;|=&nbsp;0x55;//保证定时器开 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;PCON&nbsp;|=&nbsp;SMOD_&nbsp;+&nbsp;GF0_&nbsp;+&nbsp;IDL_;//进入空闲状态并喂软件狗 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;_nop_(); <BR>&nbsp;&nbsp;&nbsp;&nbsp;_nop_(); 
      <BR>&nbsp;&nbsp;} <BR>} 
      <BR><BR>void&nbsp;MainInit(void)&nbsp;using&nbsp;0//系统初始化 <BR>{ 
      <BR>&nbsp;&nbsp;_start_(); <BR>&nbsp;&nbsp;ClrWdt();//清除看门狗计数器 
      <BR>&nbsp;&nbsp;SystemIoInit();//系统接口初始化 
      <BR>&nbsp;&nbsp;SystemInit();//系统上电初始化 
      <BR>&nbsp;&nbsp;SystemSetup();//系统运行环境设置 
      <BR>&nbsp;&nbsp;UserSetup();//用户运行环境设置 <BR>} 
      <BR><BR>void&nbsp;SystemInit(void)&nbsp;using&nbsp;0//系统初始化 <BR>{ 
      <BR>unsigned&nbsp;char&nbsp;i; 
      <BR>&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;32;&nbsp;i&nbsp;++)&nbsp;{ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;SioBuffers.SioTxBuff[i]&nbsp;=&nbsp;0; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;SioBuffers.SioRxBuff[i]&nbsp;=&nbsp;0; 
      <BR>&nbsp;&nbsp;} 
      <BR>&nbsp;&nbsp;if&nbsp;(SystemBuffers.RamTest&nbsp;!=&nbsp;0x55aa)&nbsp;{//内存初始化 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;32;&nbsp;i&nbsp;++)&nbsp;{ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SystemBuffers.nRFTxBuff[i]&nbsp;=&nbsp;0; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SystemBuffers.nRFRxBuff[i]&nbsp;=&nbsp;0; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;} 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;SystemBuffers.nRFRxBuff[0]&nbsp;=&nbsp;RX_ADDRESS_0;//本机地址 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;SystemBuffers.nRFRxBuff[1]&nbsp;=&nbsp;RX_ADDRESS_1; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -