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