📄 nrf2401.lst
字号:
196 1 IOA|=BIT(CE);
197 1 }
198 /*************************************CE_High END *******************************/
199 /*************************************TXEN_LOW START ******************************
200 void CE_Low()
201 {
202 CE=0;
203 }
204 *************************************CE_Low END ********************************/
205 /*************************************nRF2401_ON START******************************/
206 void nRF2401_ON()
207 {
208 1 IOA|=BIT(PWR_UP);
209 1 }
210 /*************************************nRF2401_ON END *******************************/
211 /*************************************nRF2401_OFF START*****************************/
212 //void nRF2401_OFF()
213 //{
214 // PWR_UP=0; // Set Power_Up low
215 //}
216 /*************************************nRF2401_OFF END ******************************/
217 /*************************************RXEN_HIGH START ******************************/
218 void RXEN_HIGH()
219 {
220 1 //Set CE LOW
221 1 IOA&=NBIT(CE);
222 1 IOA|=BIT(CS);
223 1 IOA|=BIT(DATA);
224 1 //Set CS HIGH--confige mode
225 1 //Set Data HIGH
226 1 DoSPIClock(); //Make one SPIClock cycle
227 1 //Set CS LOW
228 1 //Set CE HIGH--active mode
229 1 IOA&=NBIT(CS);
230 1 IOA|=BIT(CE);
231 1 }
232 /*************************************RXEN_HIGH END *******************************/
233 /*************************************TXEN_LOW START ******************************/
234 void TXEN_LOW()
235 {
236 1 //Set CE LOW
237 1 IOA&=NBIT(CE);
C51 COMPILER V7.50 NRF2401 08/05/2008 21:19:03 PAGE 5
238 1 IOA|=BIT(CS);
239 1 IOA&=NBIT(DATA);
240 1 //Set CS HIGH--confige mode
241 1 //Set Data LOW
242 1 DoSPIClock(); //Make one SPIClock cycle
243 1 //Set CS LOW
244 1 //Set CE HIGH--active mode
245 1 IOA&=NBIT(CS);
246 1 IOA|=BIT(CE);
247 1 }
248
249 /*************************************TXEN_LOW END *******************************/
250 /*************************************delay10 START ******************************/
251 void Delay10()
252 {
253 1 uchar x;
254 1 uchar y;
255 1 for(x=0;x<10;x++)
256 1 {
257 2 for(y=0;y<100;y++)
258 2 _nop_();
259 2 _nop_();
260 2 _nop_();
261 2 }
262 1 }
263 /*************************************delay10 END *******************************/
264 /*************************************delay100 START *****************************/
265 void delay100()
266 {
267 1 uchar x;
268 1 uchar y;
269 1 for(x=0;x<100;x++)
270 1 {
271 2 for(y=0;y<100;y++)
272 2 _nop_();
273 2 _nop_();
274 2 _nop_();
275 2 }
276 1 }
277 /*************************************delay100 END *******************************/
278 /*************************************ShockBurst START *****************************/
279 void BuildShockWord()
280 {
281 1 int i;
282 1
283 1 TXData[0]=0xcc; //MSB ;RX receiver 1 address High byte
284 1 TXData[1]=0xcc; //MSB-1 ;RX receiver 1 address High byte
285 1 TXData[2]=0xcc; //MSB-2 ;RX receiver 1 address Low byte
286 1 TXData[3]=0xcc; //MSB-3 ;RX receiver 1 address Low byte
287 1 TXData[4]=Data1; //MSB-4 ;Data byte 9
288 1 for(i=5;i<30;i++)
289 1 TXData[i]=i-3;
290 1 }
291 /************************************* BuildShockWord END *******************************/
292 /************************************* ShockBurst START *******************************/
293 void ShockBurst()
294 {
295 1 //Pull CS low
296 1 IOA&=NBIT(CS);
297 1 IOA|=BIT(CE); //Enable CE active mode
298 1 for (ByteCnt=0;ByteCnt<30;ByteCnt++)
299 1 {
C51 COMPILER V7.50 NRF2401 08/05/2008 21:19:03 PAGE 6
300 2 tempi=TXData[ByteCnt];
301 2 for (BitCnt=0;BitCnt<8;BitCnt++)
302 2 {
303 3 if (bflag==1) //Check if first bit is HIGH
304 3 //Set Data high
305 3 IOA|=BIT(DATA);
306 3 else
307 3 IOA&=NBIT(DATA); //Set Data low
308 3 tempi=tempi<<1; //Left Shift to get next bit
309 3 DoSPIClock();
310 3 //SendData(); //Call SendData
311 3 }
312 2 }
313 1 //Disable CE (TX Starts!)--standby mode
314 1 IOA&=NBIT(CE);
315 1 //Set Data low
316 1 IOA&=NBIT(DATA);
317 1 }
318 /************************************* ShockBurst END ***********************************/
319 /************************************* SendData START *******************************
320
321 void SendData()
322 {
323 for (BitCnt=0;BitCnt<8;BitCnt++)
324 {
325 if (bflag==1) //Check if first bit is HIGH
326 Data=1; //Set Data high
327 else
328 Data=0; //Set Data low
329 tempi=tempi<<1; //Left Shift to get next bit
330 DoSPIClock(); //Call "DoClock" to generate a clock pulse
331 }
332 }
333
334 ************************************** SendData END *************************************/
335
336 /************************************* ReceiveShock START *******************************/
337 void ReceiveShock()
338 {
339 1 //Set Data tri state
340 1 IOA|=BIT(DATA);
341 1 OEA&=NBIT(DATA);
342 1 Temp=0;
343 1 for (ByteCnt=0;ByteCnt<26;ByteCnt++)
344 1 {
345 2 for(BitCnt=0;BitCnt<8;BitCnt++)
346 2 {
347 3 Temp=Temp<<1; //shift left to receive next bit
348 3 //set clock high
349 3 IOA|=BIT(CLK1);
350 3 _nop_();
351 3 _nop_(); //wait one clk cycle
352 3 _nop_();
353 3 _nop_();
354 3 _nop_();
355 3 _nop_();
356 3 IOA|=BIT(DATA);
357 3 if(IOA&BIT(DATA)) //check if Data=high
358 3 Temp|=0x01; //yes - set bit high
359 3 //set clock low
360 3 IOA&=NBIT(CLK1);
361 3 _nop_(); //wait one clk cycle
C51 COMPILER V7.50 NRF2401 08/05/2008 21:19:03 PAGE 7
362 3 _nop_();
363 3 _nop_();
364 3 _nop_();
365 3 _nop_();
366 3 }
367 2 _nop_();
368 2 _nop_();
369 2 _nop_();
370 2 RXData[ByteCnt]=Temp;
371 2 // SBUF=Temp;
372 2 TI=0;
373 2 IOA|=BIT(DR1);
374 2 if((IOA&BIT(DR1))==0) //check if DR1 is not still high
375 2 {
376 3 _nop_();
377 3 _nop_();
378 3 _nop_();
379 3 write_leds(RXData[0]);
380 3 delay100();
381 3 write_leds(0xff);
382 3 }
383 2 }
384 1
385 1 OEA|=BIT(DATA);
386 1
387 1 }
388
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 504 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 51 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -