📄 nrf2401.lst
字号:
185 /*************************************nRF2401_OFF START*****************************/
186 //void nRF2401_OFF()
187 //{
188 // PWR_UP=0; // Set Power_Up low
189 //}
190 /*************************************nRF2401_OFF END ******************************/
191 /*************************************RXEN_HIGH START ******************************/
192 void RXEN_HIGH()
193 {
194 1 CE=0; //Set CE LOW
195 1 CS=1; //Set CS HIGH--confige mode
196 1 Data=1; //Set Data HIGH
197 1 DoSPIClock(); //Make one SPIClock cycle
198 1 CS=0; //Set CS LOW
199 1 CE=1; //Set CE HIGH--active mode
200 1 }
201 /*************************************RXEN_HIGH END *******************************/
202 /*************************************TXEN_LOW START ******************************/
203 void TXEN_LOW()
204 {
205 1 CE=0; //Set CE LOW
206 1 CS=1; //Set CS HIGH--confige mode
207 1 Data=0; //Set Data LOW
208 1 DoSPIClock(); //Make one SPIClock cycle
209 1 CS=0; //Set CS LOW
210 1 CE=1; //Set CE HIGH--active mode
211 1 }
212
213 /*************************************TXEN_LOW END *******************************/
214 /*************************************delay10 START ******************************/
215 void Delay10()
216 {
217 1 uchar x;
218 1 uchar y;
219 1 for(x=0;x<10;x++)
220 1 {
221 2 for(y=0;y<100;y++)
222 2 _nop_();
223 2 }
224 1 }
225 /*************************************delay10 END *******************************/
226 /*************************************delay100 START *****************************/
227 void delay100()
228 {
229 1 uchar x;
230 1 uchar y;
231 1 for(x=0;x<100;x++)
232 1 {
233 2 for(y=0;y<100;y++)
234 2 _nop_();
235 2 }
236 1 }
237 /*************************************delay100 END *******************************/
C51 COMPILER V7.06 NRF2401 03/15/2008 09:15:11 PAGE 5
238 /*************************************ShockBurst START *****************************/
239 void BuildShockWord()
240 {
241 1 TXData[0]=0xcc; //MSB ;RX receiver 1 address High byte
242 1 TXData[1]=0xcc; //MSB-1 ;RX receiver 1 address High byte
243 1 TXData[2]=0xcc; //MSB-2 ;RX receiver 1 address Low byte
244 1 TXData[3]=0xcc; //MSB-3 ;RX receiver 1 address Low byte
245 1 TXData[4]=Data1; //MSB-4 ;Data byte 9
246 1 TXData[5]=0x02; //MSB-5 ;Data byte 8
247 1 TXData[6]=0x03; //MSB-6 ;Data byte 7
248 1 TXData[7]=0x04; //MSB-7 ;Data byte 6
249 1 TXData[8]=0x05; //MSB-8 ;Data byte 5
250 1 TXData[9]=0x06; //MSB-9 ;Data byte 4
251 1 TXData[10]=0x07; //MSB-10 ;Data byte 3
252 1 TXData[11]=0x08; //MSB-11 ;Data byte 2
253 1 TXData[12]=0x09; //MSB-12 ;Data byte 1
254 1 TXData[13]=0x10; //MSB-13 ;Data byte 0
255 1 }
256 /************************************* BuildShockWord END *******************************/
257 /************************************* ShockBurst START *******************************/
258 void ShockBurst()
259 {
260 1 CS=0; //Pull CS low
261 1 CE=1; //Enable CE active mode
262 1 for (ByteCnt=0;ByteCnt<14;ByteCnt++)
263 1 {
264 2 tempi=TXData[ByteCnt];
265 2 for (BitCnt=0;BitCnt<8;BitCnt++)
266 2 {
267 3 if (bflag==1) //Check if first bit is HIGH
268 3 Data=1; //Set Data high
269 3 else
270 3 Data=0; //Set Data low
271 3 tempi=tempi<<1; //Left Shift to get next bit
272 3 DoSPIClock();
273 3 //SendData(); //Call SendData
274 3 }
275 2 }
276 1 CE=0; //Disable CE (TX Starts!)--standby mode
277 1 Data=0; //Set Data low
278 1 }
279 /************************************* ShockBurst END ***********************************/
280 /************************************* SendData START *******************************
281
282 void SendData()
283 {
284 for (BitCnt=0;BitCnt<8;BitCnt++)
285 {
286 if (bflag==1) //Check if first bit is HIGH
287 Data=1; //Set Data high
288 else
289 Data=0; //Set Data low
290 tempi=tempi<<1; //Left Shift to get next bit
291 DoSPIClock(); //Call "DoClock" to generate a clock pulse
292 }
293 }
294
295 ************************************** SendData END *************************************/
296 /************************************* CheckButtons START *******************************/
297 void CheckButtons()
298 {
299 1 P0=0xff;
C51 COMPILER V7.06 NRF2401 03/15/2008 09:15:11 PAGE 6
300 1 Temp=P0&0x0f; //read key value from port P0
301 1 if (Temp!=0x0f)
302 1 {
303 2 Temp=Temp<<4;
304 2 Data1=Temp; //put the button Data in dada package
305 2 P0=Data1; //Turn On the LED
306 2 TXEN_LOW(); //set TX mode
307 2 BuildShockWord();
308 2 ShockBurst();
309 2 delay100(); //delay for LED light
310 2 RXEN_HIGH();
311 2 P0=0xff; //close LED display
312 2
313 2 }
314 1 }
315 /************************************* CheckButtons END *********************************/
316 /************************************* ReceiveShock START *******************************/
317 void ReceiveShock()
318 {
319 1 Data=1; //Set Data tri state
320 1 Temp=0;
321 1 for (ByteCnt=0;ByteCnt<10;ByteCnt++)
322 1 {
323 2 for(BitCnt=0;BitCnt<8;BitCnt++)
324 2 {
325 3 Temp=Temp<<1; //shift left to receive next bit
326 3 CLK1=1; //set clock high
327 3 _nop_();
328 3 _nop_(); //wait one clk cycle
329 3 Data=1;
330 3 if(Data==1) //check if Data=high
331 3 Temp|=0x01; //yes - set bit high
332 3 CLK1=0; //set clock low
333 3 _nop_(); //wait one clk cycle
334 3 }
335 2 _nop_();
336 2 RXData[ByteCnt]=Temp;
337 2 DR1=1;
338 2 if(DR1!=1) //check if DR1 is not still high
339 2 {
340 3 _nop_();
341 3 P0=RXData[0]; //Turn On the LED
342 3 delay100();
343 3 P0=0xff;
344 3 }
345 2 }
346 1 }
347
348 /************************************* ReceiveShock END *********************************/
349 void Serialport()
350 {
351 1 TMOD=0X20;
352 1 SCON=0X50;
353 1 TCON=0X40;
354 1 TH1=0XE8;
355 1 TL1=0XE8;
356 1 //TI=1;
357 1 TR1=1;
358 1 for(j=0;j<40;j++)
359 1 {for(i=0;i<14;i++)
360 2 {
361 3 SBUF=TXData[i];
C51 COMPILER V7.06 NRF2401 03/15/2008 09:15:11 PAGE 7
362 3 while(TI==0);
363 3 TI=0;
364 3 }
365 2 }
366 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 605 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 52 ----
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 + -