|
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];
- }
復制代碼
所有資料請下載附件:
|
評分
-
查看全部評分
|