📄 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/06/2008 16:10:36 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/06/2008 16:10:36 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 //Set Data tri state
340 IOA|=BIT(DATA);
341 OEA&=NBIT(DATA);
342 Temp=0;
343 for (ByteCnt=0;ByteCnt<26;ByteCnt++)
344 {
345 for(BitCnt=0;BitCnt<8;BitCnt++)
346 {
347 Temp=Temp<<1; //shift left to receive next bit
348 //set clock high
349 IOA|=BIT(CLK1);
350 _nop_();
351 _nop_(); //wait one clk cycle
352 _nop_();
353 _nop_();
354 _nop_();
355 _nop_();
356 IOA|=BIT(DATA);
357 if(IOA&BIT(DATA)) //check if Data=high
358 Temp|=0x01; //yes - set bit high
359 //set clock low
360 IOA&=NBIT(CLK1);
361 _nop_(); //wait one clk cycle
C51 COMPILER V7.50 NRF2401 08/06/2008 16:10:36 PAGE 7
362 _nop_();
363 _nop_();
364 _nop_();
365 _nop_();
366 }
367 _nop_();
368 _nop_();
369 _nop_();
370 RXData[ByteCnt]=Temp;
371 // SBUF=Temp;
372 TI=0;
373 IOA|=BIT(DR1);
374 if((IOA&BIT(DR1))==0) //check if DR1 is not still high
375 {
376 _nop_();
377 _nop_();
378 _nop_();
379 write_leds(RXData[0]);
380 delay100();
381 write_leds(0xff);
382 }
383 }
384
385 OEA|=BIT(DATA);
386 }
387 ************************************* ReceiveShock END *******************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 400 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 76 ----
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 + -