|
2.4G无线模块收发程序,包含PCB SCH文件及c8051f330单片机代码
无线收发原理图
无线收发pcb板
- /*********************************************************************************
- *说明:本文件为数据机密文件,具体加密方法在下面有介绍。
- *版本:V1.1.1
- *编写:谢金波 西安电子科技大学
- *建立日期:2014.12.6
- *修订日期:无
- *修订内容:无
- *********************************************************************************/
- /*数据加密算法为:源数据加上序号->奇偶位分体->序奇先1、序偶先2->字节四位调换
- *数据解密算法为:字节四位调换->序奇先1、序偶先2->奇偶位分体->数据减去序号->信息数据*/
- #include "password.h"
- #define OrderNumber 1
- #define DataFirst 2
- #define DataSecond 3
- unsigned int SendDataArray[4];
- unsigned int ReceiveDataArray[4];
- unsigned char TxBuf[6]={0,0,0,0,0,0};
- unsigned char RxBuf[6]={0,0,0,0,0,0};
- /*调用前将数据放在最后一字节,前三字节为组号,第四字节为序号*/
- /****************************************************************************
- * 名 称:Timer1_ISR()
- * 功 能:用于电机驱动的定时器1中断函数,用于输出pwm波形
- * 入口参数:无
- * 出口参数:无
- * 说 明: 中断时间为文件开头的定义值(初始化为4*100ms)
- ****************************************************************************/
- void DataEncrypt( void )//加密算法
- {
- unsigned int TempData;
- SendDataArray[OrderNumber]=RxBuf[3];
- SendDataArray[DataSecond]=RxBuf[5];
- SendDataArray[DataSecond] += SendDataArray[OrderNumber];//源数据加上序列号
- SendDataArray[DataFirst] = (SendDataArray[DataSecond] & 0xAA);
- SendDataArray[DataSecond] = (SendDataArray[DataSecond] & 0x55);//奇偶分体
- if(SendDataArray[OrderNumber]%2==0)//序号为偶数,先2后1,即数据两个字节调换位置
- {
- TempData = SendDataArray[DataFirst];
- SendDataArray[DataFirst] = SendDataArray[DataSecond];
- SendDataArray[DataSecond] = TempData;
- }
- TempData = SendDataArray[DataFirst];
- SendDataArray[DataFirst] = ((TempData & 0x0F) + (SendDataArray[DataSecond] & 0xF0));//两字节四位混合,即第一字节后四位与第二字节前四位组成第一字节
- SendDataArray[DataSecond] = ((TempData & 0xF0) + (SendDataArray[DataSecond] & 0x0F));//两字节四位混合,即第一字节前四位与第二字节后四位组成第二字节
- RxBuf[4]=SendDataArray[DataFirst];
- RxBuf[5]=SendDataArray[DataSecond];
- }
- /****************************************************************************
- * 名 称:Timer1_ISR()
- * 功 能:用于电机驱动的定时器1中断函数,用于输出pwm波形
- * 入口参数:无
- * 出口参数:无
- * 说 明: 中断时间为文件开头的定义值(初始化为4*100ms)
- ****************************************************************************/
- void DataDecrypt( void )//解密算法
- {
- unsigned int TempData;
- SendDataArray[OrderNumber]=RxBuf[3];
- SendDataArray[DataFirst]=RxBuf[4];
- SendDataArray[DataSecond]=RxBuf[5];
- TempData = ReceiveDataArray[DataFirst];
- ReceiveDataArray[DataFirst] = ((TempData & 0x0F)+(ReceiveDataArray[DataSecond] & 0xF0));//混合第一字节重组
- ReceiveDataArray[DataSecond] = ((TempData & 0xF0)+(ReceiveDataArray[DataSecond] & 0x0F));//混合第二字节重组
- if(ReceiveDataArray[OrderNumber]%2==0)//序号为偶数,先2后1,即数据两个字节调换位置
- {
- TempData = ReceiveDataArray[DataFirst];
- ReceiveDataArray[DataFirst] = ReceiveDataArray[DataSecond];
- ReceiveDataArray[DataSecond] = TempData;
- }
- ReceiveDataArray[DataSecond] = (ReceiveDataArray[DataFirst] & 0xAA) + (ReceiveDataArray[DataSecond] & 0x55);//奇偶体合二为一
- ReceiveDataArray[DataSecond] -= ReceiveDataArray[OrderNumber];//减去序号,得到实际数据
- RxBuf[5]=SendDataArray[DataSecond];
- }
复制代码
所有资料请下载附件:
|
评分
-
查看全部评分
|