📄 fasong.lst
字号:
C51 COMPILER V8.02 FASONG 08/09/2008 15:37:27 PAGE 4
180 ////////初始化寄存器
181 void Config905(void)
182 {
183 1 uchar i;
184 1 CSN=0; // Spi enable for write a spi command
185 1 //SpiWrite(WC); // Write config command写放配置命令
186 1 for (i=0;i<11;i++) // Write configration words 写放配置字
187 1 {
188 2 SpiWrite(RFConf[i]);
189 2 }
190 1 CSN=1; // Disable Spi
191 1 }
192 /////////////初始化
193 void Inituart(void)
194 {
195 1 TMOD = 0x20; //timer1 working mode 1
196 1 TL1 = 0xfd; //f7=9600 for 16mhz Fosc,and ...
197 1 TH1 = 0xfd; //...fd=19200 for 11.0592mhz Fosc
198 1 SCON = 0xd8; //uart mode 3,ren==1
199 1 PCON = 0x80; //smod=1
200 1 TR1 = 1; //start timer1
201 1 }
202 /////////////发送数据///////////////////////////////////////////////////////////////////
203 void TxPacket(void)
204 {
205 1 uchar i;
206 1 //Config905();
207 1 CSN=0;
208 1 SpiWrite(WTP); // Write payload command
209 1 for (i=0;i<32;i++)
210 1 {
211 2 SpiWrite(TxRxBuffer0[i]); // Write 32 bytes Tx data
212 2 }// Spi enable for write a spi command
213 1 CSN=1;
214 1 Delay(1); // Spi disable
215 1 CSN=0; // Spi enable for write a spi command
216 1 SpiWrite(WTA); // Write address command
217 1 for (i=0;i<4;i++) // Write 4 bytes address
218 1 {
219 2 SpiWrite(TxAddress[i]);
220 2 }
221 1 CSN=1; // Spi disable
222 1 TRX_CE=1; // Set TRX_CE high,start Tx data transmission
223 1 Delay(1); // while (DR!=1);
224 1 TRX_CE=0; // Set TRX_CE low
225 1 }
226 ////////////////////////////////////////////////////
227 void SetTxMode(void)
228 {
229 1 TRX_CE=0;
230 1 TXEN=1;
231 1 Delay(1); // delay for mode change(>=650us)
232 1 }
233 unsigned char CheckCD(void) //Pin->检查是否已存在 同频率载波
234 {
235 1 if (CD==1)
236 1 {
237 2 return 1;
238 2 }
239 1 else
240 1 {
241 2 return 0;
C51 COMPILER V8.02 FASONG 08/09/2008 15:37:27 PAGE 5
242 2 }
243 1 }
244 void TX(void)
245 {
246 1 SetTxMode();// Set nRF905 in Tx mode
247 1 TxPacket();// Send data by nRF905
248 1
249 1
250 1 CheckCD(); // 返回CD的当前电平
251 1
252 1 // SetRF_PA_PWR(unsigned char i); //设置发射功率
253 1 }
254 ////////////////////////接收数据///////////////////////////////
255 void SetRxMode(void)
256 {
257 1 TXEN=0;
258 1 TRX_CE=1;
259 1 Delay(1); // delay for mode change(>=650us)
260 1 }
261
262 unsigned char CheckDR(void) //检查是否有新数据传入 Data Ready
263 {
264 1 if (DR=1&&TRX_CE==1 && TXEN==0)
265 1 {
266 2 // Delay(50) ;
267 2 return 1;
268 2 }
269 1 else
270 1 {
271 2 return 0;
272 2 }
273 1 }
274 void RxPacket(void) //读数据
275 {
276 1 uchar i;
277 1 Delay(1);
278 1 // TRX_CE=0; // Set nRF905 in standby mode
279 1 Delay(100);
280 1 TRX_CE=0;
281 1 CSN=0; // Spi enable for write a spi command
282 1 Delay(1);
283 1 SpiWrite(RRP);
284 1 // Delay(10000);
285 1 // Delay(10000); // Read payload command
286 1 for (i = 0 ;i < 32 ;i++)
287 1 { // Delay(10000);
288 2 // Delay(10000);
289 2 // Delay(10000);
290 2 // Delay(10000);
291 2 TxRxBuffer2[i]=SpiRead(); // Read data and save to buffer
292 2 // Delay(10000);
293 2 // Delay(10000);
294 2 // Delay(10000);
295 2 }
296 1 CSN=1;
297 1 Delay(10);
298 1 // Delay(10);
299 1 TRX_CE=1;
300 1 }
301 ////////////////
302 void RX(void)
303 {
C51 COMPILER V8.02 FASONG 08/09/2008 15:37:27 PAGE 6
304 1 SetRxMode(); // Set nRF905 in Rx mode
305 1 //Delay(10000);
306 1 while (CheckDR()==0);
307 1 //Delay(10000);
308 1 Delay(10);
309 1 RxPacket();
310 1 //Delay(10000); // Recive data by nRF905
311 1 Delay(10);
312 1 }
313 /////////////////////////////////////////////////////////////////////////////////
314 void main(void)
315 { char i,k;
316 1 initLCD();
317 1 Inituart();
318 1 nRF905Init();
319 1 Config905();
320 1 Delay(1);
321 1
322 1 for(k=0;k<5;k++)
323 1 { TX();}
324 1 Delay(100);
325 1
326 1 while(1)
327 1 {
328 2 RX();
329 2 Delay(10);
330 2 for(i=0;i<5;i++)
331 2 {
332 3 Delay(10);
333 3 P0=TxRxBuffer2[i];
334 3 LCDwdata();
335 3 }
336 2 P0=0xc5;
337 2 enable();
338 2 LCD_write('S');
339 2 LCD_write('U');
340 2 LCD_write('C');
341 2 LCD_write('C');
342 2 LCD_write('E');
343 2 LCD_write('S');
344 2 LCD_write('S');
345 2 P0=0x82;
346 2 enable();
347 2 }
348 1
349 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 527 ----
CONSTANT SIZE = 8 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 65 ----
IDATA SIZE = 11 ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -