📄 rf24e1.lst
字号:
C51 COMPILER V8.02 RF24E1 10/05/2006 09:38:17 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE RF24E1
OBJECT MODULE PLACED IN .\output\RF24E1.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE RF24E1.c OMF2 BROWSE MODDP2 DEBUG OBJECT(.\output\RF24E1.obj)
line level source
1 //========================================================
2 //深圳奥特迅电力设备有限公司
3 //电池监控系统用无线传输模块
4 //文件名:RF24E1.C
5 //描述:无线收发模块处理,无线子系统的初始化配置;spi操作;
6 //无线收发操作;子系统工作在shockburst接收模式下
7 //收到无线数据,LED指示
8 //喂狗操作
9 //By:Andylee 2006-6-13
10 //anssett@163.com
11 //程序编译时,必须设置好XRAM的起始地址和大小,否则有可能程序不可运行!!!
12 //2006-6-26开始
13 //2006-8-14修改完善
14 //=========================================================
15 #include "Main.h"
16 #include "Setting.h"
17 #include "crc.h"
18
19 #include <BATTERY.H>
20
21 extern bit jz_req;
22 extern bit jz_over;
23 extern bit adc_monitor;
24 extern bit addrSet;
25 extern bit addrEcho;
26
27 extern unsigned char idata inCnt;
28 extern unsigned char xdata inBuf[17];
29
30
31
32 //#define addr_jz 0xf0; //保存校正参数的首地址0xff0
33 //#define addrRfaddr 0xe7; //保存无线通讯地址的e2rom地址(fe7~fea:本机地址;feb~fee:主站地址)
34 //unsigned int OneSCnt; //每个通道采样16次,做平滑均值滤波处理
35 /*unsigned int xdata ADC_LIST[4][32]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
36 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
37 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
38 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};*/
39 unsigned int xdata ch1_v[50];
40 unsigned int xdata ch2_v[50];
41 unsigned long idata ADC_SUM[4]={0,0,0,0}; //四个通道的16次采样值的累加和
42
43 unsigned int idata adcResult_list[4]={0,0,0,0};//保存最终采样值
44 unsigned int idata adc_temp[4]={0,0,0,0};
45 unsigned int idata rFtxBuf[4]={0,0,0,0};
46 unsigned int idata Vcc;
47 unsigned long idata Vcc_Sum;
48 unsigned int idata Y_pre1,Y_pre2;//通道1、2的上一次有效采样值
49 unsigned char idata Y1_plus,Y2_plus,Y1_minus,Y2_minus;//本次采样值超调、欠调计数器。
50 //unsigned int data Vcc_list[32];
51 sbit P04=P0^4; //备用
52 sbit WP=P0^3;
53 sbit Clr_Dog=P0^5; //喂狗用
54 sbit Led_Show=P0^6; //LED点灯
55 sbit e2rom_cs=P0^0; //外部e2rom的偏选
C51 COMPILER V8.02 RF24E1 10/05/2006 09:38:17 PAGE 2
56 Set idata Setting;
57 /*unsigned char code RxTxConfig[] = {
58 RF_DATA_LENGTH * 8, RF_DATA_LENGTH * 8, //信道2和1的数据长(单位为位)
59 0x00, 0x00, 0x00, 0x00, 0x00, //信道2的地址(如没有5字节长,则较低的位为有效位,下同)
60 0xaa, 0xbb, 0x12, 0x34, 0x83, //信道1的地址
61 //地址的位数(B0100_00xx),
62 //CRC位数(16位Bxxxx_xx1x,8位Bxxxx_xx0x,CRC允许(Bxxxx_xxx0,0禁止,1允许)
63 B1000_0001,//--------------------------------------------------------------------------------------------
-----------------
64
65 //位7,RX2_EN,为0只有信道1接收,为1允许2个信道同时接收
66 //位6,CM,通讯方式,0:direct mode,1:ShockBurst mode,24e1只能为1
67 //位5,RF DATA RATE,0:250Kbps,1:1Mbps,250Kbps时可提高接收灵敏度10dbm,1Mbps时要求16M晶体
68 //位4,3,2,晶体频率,为该值+1再*4,如为2,则为12M晶体,3 ,16M
69 //位1,0:发射功率:00:-20, 01:-10 10:-5 11:0dbm
70 B0100_1111,//--------------------------------------------------------------------------------------------
-----------------
71 //B0110_1111,1信道接收,shockBurst方式 ,1Mbps,16Mhz,0 DBm
72 //B1111_111x,表示频率, 实际频率为2400+(B1111_111x >> 1)
73 //位0,RX_EN,为0发送,为1接收
74 B0000_0100, //2402Mhz,接收方式 (最后一位 RX_EN 为1表接收方式)
75 }; //这里设定为发射模式
76 */
77 struct RFConfig
78 {
79 unsigned char n;
80 unsigned char buf[15];
81 };
82
83 typedef struct RFConfig RFConfig;
84
85 #define ADDR_INDEX 8 // Index to address bytes in RFConfig.buf
86 #define ADDR_COUNT 4 // Number of address bytes
87
88 RFConfig idata tconf = //定义在xram是因为buf[15]中的地址段可能要动态修改。
89 {
90 15,
91 8, 8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92 0xaa, 0xbb, 0x12, 0x34, 0x81, 0x4f, 0x04
93 };
94
95 RFConfig idata rconf = //定义在xram是因为buf[15]中的地址段可能要动态修改。
96 {
97 15,
98 8, 8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99 0xaa, 0xbb, 0x12, 0x34, 0x81, 0x4f, 0x05
100 };
101
102 //================================================================
103 //函数功能:100us软件延时程序
104 //filename:Delay100us()
105 //input:
106 //output:none
107 //================================================================
108 void Delay100us(unsigned char n)
109 {
110 1 unsigned char i;
111 1 while(n--)
112 1 for(i=0;i<35;i++)
113 1 ;
114 1 }
115 //================================================================
C51 COMPILER V8.02 RF24E1 10/05/2006 09:38:17 PAGE 3
116 //函数功能:毫秒软件延时程序
117 //filename:Delay100us()
118 //input:
119 //output:none
120 //================================================================
121 /*
122 void Delayms(unsigned char n)
123 {
124 unsigned char j;
125 while(n--)
126 for(j=0;j<10;j++)
127 Delay100us(10);
128
129 }*/
130 //================================================================
131 //函数功能:片内SPI接口操作
132 //filename:fSpiRdWr()
133 //input:char 读操作,输入参数0
134 //output:none
135 //================================================================
136 uchar SpiReadWrite(uchar dat){
137 1 EXIF &= ~0x20; // Clear SPI interrupt
138 1 SPI_DATA = dat; // Move byte to send to SPI data register
139 1 while((EXIF & 0x20) == 0x00); // Wait until SPI hs finished transmitting
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -