📄 rf24e1.lst
字号:
189 //We can be so lazy!!
190 //filename:SetRxMode()
191 //input:none
192 //output:none
193 //================================================================
194 /*static void SetRxMode(void)
195 {
196 CE = 0;
197 CS = 1;
198 Delay100us(0);
199 SpiReadWrite(rconf.buf[14]);
200 CS = 0;
201 }*/
202 //================================================================
203 //函数功能:将无线子系统设置为发射模式
204 //filename:SetRxMode()
205 //input:none
206 //output:none
207 //================================================================
208 /*
209 static void SetTxMode(void)
210 {
211 CE = 0;
212 CS = 1;
213 Delay100us(0);
214 SpiReadWrite(tconf.buf[14]);
215 CS = 0;
216 }*/
217 //================================================================
218 //函数功能:将无线子系统初始化
219 //filename:SetRxMode()
220 //input:none
221 //output:none
222 //================================================================
223 void fRfInit(void){
224 1 uchar b;
225 1
226 1 PWR_UP = 1; // Turn on Radio
227 1 Delay100us(30); // Wait > 3ms
228 1 SPICLK = 0; // Max SPI clock (XTAL/8)
229 1 SPI_CTRL = 0x02; // Connect internal SPI controller to Radio
230 1 CS = 1; // RF SPI CS = 1,进行配置
231 1 Delay100us(0);
232 1 for(b=0;b<rconf.n;b++) //初始化接收状态
233 1 {
234 2 SpiReadWrite(rconf.buf[b]);
235 2 }
236 1 CS = 0; //退出配置状态
237 1 Delay100us(0);
238 1 CE = 1; //启动接收
239 1
C51 COMPILER V8.02 RF24E1 10/05/2006 10:18:20 PAGE 5
240 1 }
241 void SysInit(void)
242 {
243 1 //void IO_Init(void)
244 1
245 1 P0_ALT = 0x06; // Select alternate functions on pins P0.1 and P0.2, TXD RXD
246 1 P0_DIR = 0x00; // P0 work as output
247 1 P0 = 0xff; // all hight
248 1 P1_DIR = 0x00;
249 1
250 1
251 1
252 1 //void InitSerial(void)
253 1
254 1 TH1 = 0x98; // 2400@16MHz (when T1M=1 and SMOD=1)
255 1 CKCON |= 0x10; // T1M=1 (/4 timer clock)
256 1 PCON = 0x80; // SMOD=1 (double baud rate)
257 1 SCON = 0x52; // Serial mode1, enable receiver
258 1 TMOD = 0x20; // Timer1 8bit auto reload
259 1 TR1 = 1; // Start timer1
260 1
261 1 ES = 1;
262 1 //void Timer0_Init(void)
263 1
264 1
265 1 TMOD &= ~0x03;
266 1 TMOD |= 0x01; // mode 1
267 1 //CKCON |= 0x08; // T0M = 1 (/4 timer clock)
268 1 // Clear any pending Timer0 interrupts
269 1 TH0=0xcb;
270 1 TL0=0xea; //10ms
271 1 ET0 = 1; // Enable Timer0 interrupt
272 1 TR0 = 1; // Start Timer0
273 1 // EA=1;
274 1 // EA=1;
275 1
276 1 }
277 void InitADC(void)
278 {
279 1 ADCCON = 0x20; // NPD=1,内部参考电压
280 1 ADCSTATIC &= 0x1c;
281 1 ADCSTATIC |= 0x03; // 12位ADC
282 1 }
283
284
285 //================================================================
286 //函数功能:发射一个对查询命令('f')
287 //filename:TransmitCMD()
288 //input:节点地址的最低字节 2006-8-18该的
289 //output:none
290 //================================================================
291 /*
292 void TransmitCMD(unsigned char nda)
293 {
294 unsigned char i;
295 CE = 1;
296 Delay100us(0);
297 tconf.buf[ADDR_INDEX+ADDR_COUNT-1]=nda;
298 for(i=0;i<ADDR_COUNT;i++)
299 {
300 SpiReadWrite(tconf.buf[ADDR_INDEX+i]); //写目标地址
301 }
C51 COMPILER V8.02 RF24E1 10/05/2006 10:18:20 PAGE 6
302
303 SpiReadWrite('f'); //写数据(8字节)
304 CE = 0;
305 Delay100us(3); // Wait ~300us
306 }
307 */
308 /*****************************************************************************************
309 //函数名:RxPacket()
310 //输入:none
311 //输出:无
312 //功能描述:接收一组数据包
313 /*****************************************************************************************/
314 /*unsigned char RxPack(void)
315 {
316 unsigned char b,jj=0;
317 CE = 1;
318 while(!DR1)
319 {
320
321 if(ReqTimeout>15)//50ms超时
322 {
323
324 ReqTimeout=0xff;
325 return 0;
326 }
327 }
328 while(DR1)
329 {
330 b = SpiReadWrite(0);
331 adcResult_list[jj][0]=b;
332 b=SpiReadWrite(0);
333 adcResult_list[jj++][1]=b;
334 }
335 CE = 0;
336 return jj;
337 ReqTimeout=0;
338 }*/
339
340
341
342
343 /*****************************************************************************************
344 //函数名:ReadShowADC()
345 //输入:通道选择,0~7,8为电源电压;
346 //输出:the value of the certain chanel
347 //功能描述:显示相关通道的采样值
348 /*****************************************************************************************/
349 unsigned int ReadShowADC(unsigned char chindex)
350 { unsigned long xdata long_temp;
351 1 unsigned int xdata result;
352 1
353 1 ADCCON |= chindex;
354 1 ADCCON &= ~0x80; //
355 1 ADCCON |= 0x80; // 开始转换 //
356 1 while((EXIF & 0x10) == 0) // 转换完成
357 1 ;
358 1 EXIF &= ~0x10; // 清除标致
359 1 result = (ADCDATAH<<8) + (ADCDATAL);// 读ADC值12位
360 1 result >>= 4;
361 1 long_temp=(unsigned long)(result)*1220;
362 1 result=long_temp/0xfff;//实际值的1000倍
363 1 //注:这里采样地是通道地原始值,系数在M128方处理了。
C51 COMPILER V8.02 RF24E1 10/05/2006 10:18:20 PAGE 7
364 1
365 1 return result;
366 1 }
367
368 //================================================================
369 //函数功能:校验和
370 //filename:CheckSum()
371 //input:
372 //output:
373 //================================================================
374 void CheckSum(unsigned char xdata *ptr)
375 {
376 1 // unsigned char da;
377 1 unsigned char i;
378 1 // CrcTemp.iWord = 0xffff;
379 1 CheckSumTemp.iWord = 0;
380 1 // SBUF=*ptr;
381 1 for( i=0; i<count; i++ )
382 1 {
383 2 // da=CrcTemp.iData.cHigh >> 4; /* 暂存CRC的高四位 */
384 2
385 2 // CrcTemp.iWord <<= 4; /* CRC右移4位,相当于取CRC的低12位)*/
386 2
387 2 // CrcTemp.iWord ^= crc_ta[da^(*ptr/16)]; /* CRC的高4位和本字节的前半字节相加后查表计算CRC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -