📄 main.lst
字号:
246 4 }
247 3 i=0;
248 3 break;
249 3 case 3:
250 3 RX_BEEP=c;
251 3 START_T0(20);
252 3 RXSTAT=4;
253 3 RXtem[3]=c;
254 3 /*if(c==ADDR)
255 3 {
256 3
257 3 if(set)
258 3 {
259 3 RXSTAT=4;
260 3 START_T0(20);
261 3 }
262 3 else
263 3 {
264 3 RXSTAT=0;
265 3 rxok=1;
266 3 CALL_isr_T0();
267 3 }
268 3
269 3 }*/
270 3
271 3 break;
272 3 case 4:
273 3 if(set)
274 3 {
275 4 RX_addr=c;
276 4 set_ok=1;
277 4 set=0;
278 4 RXSTAT=0;
279 4 CALL_isr_T0();
280 4 }
281 3 else
282 3 {
283 4 CRC.chrX[0]=c;
284 4 //SBUF=CRC.chrX[0];
285 4 // while(!TI);
286 4 // TI=0;
287 4
288 4 RXSTAT=5;
289 4 START_T0(20);
290 4 }
291 3 break;
292 3 case 5:
293 3 CRC.chrX[1]=c;
294 3 //SBUF=CRC.chrX[1];
295 3 //while(!TI);
296 3 // TI=0;
297 3
298 3
299 3 // if(crcx==CRC.intX)//crc交验通过
C51 COMPILER V7.05 MAIN 04/08/2005 13:54:31 PAGE 6
300 3 {
301 4 rxok=1;
302 4 }
303 3 RXSTAT=0;
304 3 CALL_isr_T0();
305 3
306 3 break;
307 3 default:
308 3 RXSTAT=0;
309 3 break;
310 3 }
311 2
312 2 }
313 1 else
314 1 {
315 2 TI=0;
316 2
317 2 }
318 1 }
319 /*************************原有的函数需改变*************************************
320 * *
321 * Function: isr_timer0 *
322 * *
323 * Input: - *
324 * Output: - *
325 * *
326 * Description: *
327 * *
328 * *
329 ****************************************************************************/
330 void isr_timer0(void) interrupt 1 using 2
331 {
332 1 TR0=0;
333 1 if(RXTimerOUT!=0) //此if{}else{} 为新加入的判断超时功能
334 1 {
335 2 RXTimerOUT--;
336 2 }
337 1 else
338 1 {
339 2 RXSTAT=0;
340 2 RXNOM=0;
341 2 set=0;
342 2 }
343 1
344 1
345 1
346 1 TH0=0Xac;
347 1 TL0=0X95;
348 1 TR0=1;
349 1 }
350 //**********************************************************
351 void Send_ok(unsigned char key)
352 {
353 1 unsigned char i;
354 1 ES=0;
355 1 TX_EN=1;
356 1 //Delay1msa(5);
357 1 for(i=0;i<8;i++)
358 1 {
359 2 SBUF = 0x88; // 发送数据
360 2 while(0==TI); // 等待发送完毕
361 2 TI = 0; // 清除发送标志
C51 COMPILER V7.05 MAIN 04/08/2005 13:54:31 PAGE 7
362 2 SBUF = 0xff; // 发送数据
363 2 while(0==TI); // 等待发送完毕
364 2 TI = 0; // 清除发送标志
365 2
366 2 SBUF = key; // 发送数据
367 2 while(0==TI); // 等待发送完毕
368 2 TI = 0; // 清除发送标志
369 2 SBUF = key; // 发送数据
370 2 while(0==TI); // 等待发送完毕
371 2 TI = 0; // 清除发送标志
372 2 }
373 1 if(key_tem==0x02)
374 1 {
375 2 wring_send_times--;
376 2 if(wring_send_times==0)
377 2 {
378 3 key_tem=0x01;
379 3 }
380 2 }
381 1 else
382 1 {
383 2 key_tem=0x01;
384 2 }
385 1 TX_EN=0;
386 1 //Delay1msa(4);
387 1 ES=1;
388 1
389 1 }
390
391 /******************************************************************
392 * 名称:UART_SendByte
393 * 功能:向串口发送字节数据。
394 * 入口参数:dat 待发送的数据
395 * 出口参数:无
396 ******************************************************************
397 void UART_SendByte(uint8 dat)
398 { SBUF = dat; // 发送数据
399 while(0==TI); // 等待发送完毕
400 TI = 0; // 清除发送标志
401 }
402
403
404 /******************************************************************
405 * 名称:UART_SendCode
406 * 功能:读取FLASH中的数据,并发送到串口。
407 * 入口参数:addr 读取的起始地址
408 * no 读取的数据个数
409 * 出口参数:无
410 ******************************************************************
411 void UART_SendCode(uint16 addr, uint16 no)
412 { uint8 code *readp;
413
414 readp = addr;
415 for(; no>0; no--)
416 { UART_SendByte(*readp++); // 读取数据并发送
417 }
418 }
419
420 */
421 void flash_led(unsigned char j )
422 {
423 1 char i;
C51 COMPILER V7.05 MAIN 04/08/2005 13:54:31 PAGE 8
424 1 for(i=0;i<j;i++)
425 1 {
426 2 LED=0;
427 2 Delay1ms(50);
428 2 LED=1;
429 2 Delay1ms(50);
430 2 }
431 1 LED=1;
432 1 }
433 //***************************************************************
434 void flash_beep(unsigned char j )
435 {
436 1 char i;
437 1 beep_delay++;
438 1 if(beep_delay>40000)
439 1 {
440 2 beep_delay=0;
441 2 for(i=0;i<j;i++)
442 2 {
443 3 BEEP=0;
444 3 Delay1ms(60);
445 3 BEEP=1;
446 3 Delay1ms(60);
447 3 }
448 2 }
449 1 BEEP=0;
450 1
451 1 }
452 //******************************************************************
453 //**********************************************************
454 void Setok(void)
455 {
456 1
457 1 ES=0;
458 1 SBUF ='O'; // 发送数据
459 1 while(0==TI); // 等待发送完毕
460 1 TI = 0; // 清除发送标志
461 1 SBUF = 'K'; // 发送数据
462 1 while(0==TI); // 等待发送完毕
463 1 TI = 0; // 清除发送标志
464 1 ES=1;
465 1 }
466 //**************************************************************
467 void main(void)
468 {
469 1 unsigned char Link_ok=0,j,CS_state=0;
470 1 unsigned int powoffdelay=0;
471 1
472 1
473 1 ports_init();
474 1 BEEP=0;
475 1 LED=0;
476 1 Delay100ms(2);
477 1 LED=1;
478 1 if(ISP)
479 1 {
480 2 user_uart_init();//用户串口初始化
481 2 watchdog_init();//初始化看门狗
482 2
483 2 }
484 1 else
485 1 {
C51 COMPILER V7.05 MAIN 04/08/2005 13:54:31 PAGE 9
486 2 uart_init(); //进入ISP模式
487 2 FLASH_WriteByte(0xc04, 0);
488 2 }
489 1
490 1 osc_init();
491 1 rtc_init();
492 1 EA=1;
493 1 ES=1;
494 1 CS=0;
495 1 TX_EN=0; //接收状态
496 1 PWR =1;
497 1 //rtc_start();
498 1
499 1 if((FLASH_ReadByte(0XC05)==0x55)&(FLASH_ReadByte(0XC06)==0xaa))//初始化模块的ID
500 1 {
501 2 EA=0;
502 2 ADDR=FLASH_ReadByte(0XC04);
503 2 EA=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -