send8000(add_com_11.0592m).lst
来自「基于89c2051开发的ptr8000一对多无线通信程序.」· LST 代码 · 共 448 行 · 第 1/2 页
LST
448 行
207 2 triggle=1;
208 2 comsbuf[13]=P3;
209 2 RLED=0;
210 2 }
211 1 }
212
213 void Ptimer1(void) interrupt 3 using 1
214 {
215 1 TH1=(65536-46080)/256; /* Fosc=733728MHz/4=1.8432MHz */
216 1 TL1=(65536-46080)%256; /* 50ms timer interrupt */
217 1 TR1=1;
218 1 if(++tim_cnt==20)
219 1 {
220 2 tim_cnt=0;
221 2 Flag_scd=1;
222 2 if(tim_scd++==60)
223 2 {
224 3 tim_scd=0;
225 3 if(tim_mnt++==60)
226 3 {
227 4 tim_mnt=0;
228 4 if(tim_hur++==24) tim_hur=0;
229 4 }
230 3 }
231 2 }
232 1 }
233
234
235 /************************************************************************************************/
236 main()
237 {
238 1 uchar i;
C51 COMPILER V7.06 SEND8000_ADD_COM_11_0592M_ 01/19/2007 16:36:53 PAGE 5
239 1 for(i=0;i<4;i++) comsbuf[i]=TX_ADDRESS[i];
240 1 comsbuf[4]=RX_ADDRESS_0;
241 1 comsbuf[5]=RX_ADDRESS_1;
242 1 comsbuf[6]=RX_ADDRESS_2;
243 1 comsbuf[7]=RX_ADDRESS_3;
244 1 comsbuf[8]=0xff;
245 1 comsbuf[9]=0xd7;
246 1 comsbuf[10]=0x06;
247 1 comsbuf[11]='S';
248 1 comsbuf[14]=0x00;
249 1 comsbuf[15]='E';
250 1
251 1 /*IO口模式设置00准双向;01推挽;10高阻输入;11开漏 */
252 1 //P0M1=0x00; /* P0M1: 00000000 键盘 双向*/
253 1 //P0M2=0x0F; /* P0M2: 00001111 LED 推挽*/
254 1 //P1M1=0x2C; /* P1M1: 00101100 P1.2/P1.3配置为开漏,外接上拉电阻;P1.5(RST)仅能为输入(高阻);*/
255 1 //P1M2=0x0C; /* P1M2: 00001100 中断1,串口为准双向;*/
256 1 //P2M1=0x00; /* P2M1: 00000000 */
257 1 //P2M2=0x00; /* P2M2: 00000000 */
258 1 //P3M1=0x00; /* IO口模式设置: 准双向口00,使用内部时钟 */
259 1 //P3M2=0x00;
260 1
261 1 //P0=0xFF; /* 初化P0口 */
262 1 //P1=0xFF;
263 1 //P2=0xFF; /* */
264 1 //P3=0xFF; /* */
265 1
266 1 //DIVM=2; /* 降低工作频率,以便程序移植 */
267 1 TR0 = 1;
268 1 IE = 0x82; //Enable timer0.
269 1
270 1 uart_init(); /* 串口初始化9600BPS */
271 1 Spi_init(); /* 初始化SPI端口 */
272 1
273 1 ChangeMode(Standby); /* nRF905进入待机SPI通讯模式 */
274 1 //Delayus(1000);
275 1 Delayms(1);
276 1 Config905(); /* 配置nRF905 */
277 1
278 1 //TMOD|=0x10; /* Timer1 mode set Mode1 */
279 1 //TH1=(65536-46080)/256; /* Fosc=1.8432MHz,50ms timer interrupt */
280 1 //TL1=(65536-46080)%256;
281 1 //ET1=1;TR1=1;
282 1 //EA=1;
283 1
284 1 //eeprom_read(E2ADRSYS,Databuf,16); /* 读取本系统地址及参数 */
285 1 //ADDRESS = BUFADR;
286 1 //if(ADDRESS==0xFF) /* 地址为0xFF时,初始化地址为1 */
287 1 //{
288 1 // BUFADR = ADDRESS = 0x01; /* 本系统地址存储为0x01 */
289 1 // for(i=1;i<16;i++)Databuf[i]=i;
290 1 // eeprom_write(E2ADRSYS,Databuf,16); /* 存储本系统地址及参数 */
291 1 //}
292 1 //mscom_snd(Databuf,16);
293 1
294 1 RF905_Read(RC,Databuf);
295 1 //mscom_snd(Databuf,16);
296 1 ChangeMode(RXMode); /**/
297 1
298 1 while(1)
299 1 {
300 2 while(RF_DR && RF_AM)
C51 COMPILER V7.06 SEND8000_ADD_COM_11_0592M_ 01/19/2007 16:36:53 PAGE 6
301 2 {
302 3 ChangeMode(Standby);
303 3 Delayms(1);
304 3 RF905_Read(RRP,Databuf);
305 3 ChangeMode(RXMode);
306 3 //Delayus(300);
307 3 //Delayms(1);
308 3 //mscom_snd(Databuf,16);
309 3 if(Databuf[15]=='E' && Databuf[14]==0x00 && Databuf[11]=='S')
310 3 {
311 4 triggle1=1;
312 4 }
313 3 }
314 2 if(triggle1)
315 2 {
316 3 //triggle=0;
317 3 triggle1=0;
318 3 ChangeMode(TXMode);
319 3 //Delayus(3100);
320 3 Delayms(3);
321 3 RF905_Write(WTA,TX_ADDRESS);
322 3 //RF905_Write(WTP,Databuf);
323 3 RF905_Write(WTP,comsbuf);
324 3 ChangeMode(TXData);
325 3 //mscom_snd(TX_ADDRESS,4);
326 3 //mscom_snd(Databuf,16);
327 3 //Delayus(650); // ensure nRF905 have began TX
328 3 //Delayms(2);
329 3 while(!RF_DR);
330 3 ChangeMode(RXMode);
331 3 }
332 2 if(trigglecom)
333 2 {
334 3 trigglecom=0;
335 3 mscom_snd(comsbuf,16);
336 3 }
337 2 /*
338 2 switch (URT_rcv)
339 2 {
340 2 case 0x00:
341 2 for(i=0;i<16;i++) Databuf[i]=i;
342 2 //eeprom_write(E2ADRSYS,Databuf,16);
343 2 //eeprom_read(E2ADRSYS,Databuf,16);
344 2 //mscom_snd(Databuf,16);
345 2 URT_rcv =0x10;
346 2 break;
347 2 case 0x01:
348 2 ChangeMode(Standby);
349 2 Delayus(3100);
350 2 RF905_Read(RC,Databuf);
351 2 ChangeMode(RXMode);
352 2 mscom_snd(Databuf,16);
353 2 URT_rcv =0x10;
354 2 break;
355 2 case 0x02:
356 2 ChangeMode(TXMode);
357 2 Delayus(3100);
358 2 RF905_Write(WTA,TX_ADDRESS);
359 2 RF905_Write(WTP,Databuf);
360 2 ChangeMode(TXData);
361 2 //mscom_snd(TX_ADDRESS,4);
362 2 //mscom_snd(Databuf,16);
C51 COMPILER V7.06 SEND8000_ADD_COM_11_0592M_ 01/19/2007 16:36:53 PAGE 7
363 2 Delayus(650); // ensure nRF905 have began TX
364 2 ChangeMode(RXMode);
365 2 URT_rcv =0x10;
366 2 break;
367 2 case 0x03:
368 2 ChangeMode(Standby);
369 2 RF905_Read(RTP,Databuf);
370 2 Delayus(650);
371 2 ChangeMode(RXMode);
372 2 mscom_snd(Databuf,16);
373 2 URT_rcv =0x10;
374 2 break;
375 2 case 0x04:
376 2 ChangeMode(Standby);
377 2 RF905_Read(RRP,Databuf);
378 2 Delayus(650);
379 2 ChangeMode(RXMode);
380 2 //mscom_snd(Databuf,16);
381 2 URT_rcv =0x10;
382 2 break;
383 2 case 0x05:
384 2 for(i=0;i<16;i++) Databuf[i]=15-i;
385 2 //eeprom_write(E2ADRSYS,Databuf,16);
386 2 //eeprom_read(E2ADRSYS,Databuf,16);
387 2 //mscom_snd(Databuf,16);
388 2 URT_rcv =0x10;
389 2 break;
390 2 case 0x06:
391 2 for(i=0;i<16;i++) Databuf[i]=0x06;
392 2 //eeprom_write(E2ADRSYS,Databuf,16);
393 2 //eeprom_read(E2ADRSYS,Databuf,16);
394 2 //mscom_snd(Databuf,16);
395 2 URT_rcv =0x10;
396 2 break;
397 2 case 0x07:
398 2 ChangeMode(PowerDown);
399 2 URT_rcv =0x10;
400 2 default:
401 2 ChangeMode(RXMode);
402 2 URT_rcv =0x10;
403 2 break;
404 2 }
405 2 */
406 2 }
407 1 }
408
409
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 639 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 5
IDATA SIZE = 65 ----
BIT SIZE = 4 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?