📄 output.lst
字号:
401 2 }
402 1 }
403
404 /*********************************************************************************************************
-**
405 功能:Extern0;产生外部中断0,是仲裁机分配IIC使用权的。
406 描述:FlagMutex---用于隔离外部中断,假如一次外部中断没有执行完,不能响应下一次外部中断;
407 FlagExt0---外部中断期间标志;P20---保证IIC使用权已经完全释放才可以再次响应。
408 参数:无
409 返回:无
410 **********************************************************************************************************
-**/
411 void EXT0() interrupt 0 using 1
412 {
413 1 if((FlagExt0 == 0) && (P20 == 1))
414 1 {
415 2 FlagExt0 = 1;
416 2 }
417 1 }
418
419 /*********************************************************************************************************
-**
420 功能:ClearMyRom
421 描述:清零字节数存储地址
422 参数:无
423 返回:无
424 **********************************************************************************************************
-**/
425 void ClearMyRam(uint address)
426 {
427 1 MyWriteOneByte(address,0x00);
428 1 MyWriteOneByte(address+1,0x00);
429 1 }
430
431 /*********************************************************************************************************
-**
432 功能:SetDataBytes
433 描述:设置自带RAM的字节长度
434 参数:address---存放长度的地址 len---长度值
435 返回:无
436 **********************************************************************************************************
-**/
437 void SetMyDataBytes(uint address,uchar len)
438 {
439 1 uint num;
440 1 xdata uchar temp[2];
441 1 MyReadBytes(address,temp,2);
442 1 num = temp[0] + temp[1] * 0x100 + len;
443 1 temp[0]=num%256;
444 1 temp[1]=num/256;
445 1 MyWriteBytes(address,temp,2);
446 1 }
447
448 /*********************************************************************************************************
-**
449 功能:GetMyDataBytes
450 描述:得到自带RAM里的数据字节数
451 参数:address---存放长度的地址
C51 COMPILER V7.50 OUTPUT 03/17/2008 20:38:41 PAGE 9
452 返回:uint
453 **********************************************************************************************************
-**/
454 uint GetMyDataBytes(uint address)
455 {
456 1 uint num;
457 1 xdata uchar temp[2] = {0x00,0x00};
458 1 MyReadBytes(address,temp,2);
459 1 num = temp[0] + temp[1] * 0x100;
460 1 return num;
461 1 }
462
463 /*********************************************************************************************************
-**
464 功能:ClearComRam
465 描述:清零字节数存储地址
466 参数:address---需要清零的地址
467 返回:无
468 **********************************************************************************************************
-**/
469 void ClearComRam(uint address)
470 {
471 1 ComWriteOneByte(address,0x00);
472 1 ComWriteOneByte(address+1,0x00);
473 1 }
474
475 /*********************************************************************************************************
-**
476 功能:SetComDataBytes;设置字节数的函数
477 描述:设置公共RAM的字节长度。是先读出长度,再累加一个需要设置的长度。
478 参数:address---需要设置字节数的地址;len---需要设置的长度。
479 返回:无
480 **********************************************************************************************************
-**/
481 void SetComDataBytes(uint address,uchar len)
482 {
483 1 uint num;
484 1 xdata uchar temp[2];
485 1 ComReadBytes(address,temp,2);
486 1 num = temp[0] + temp[1] * 0x100 + len;
487 1 temp[0]=num%256;
488 1 temp[1]=num/256;
489 1 ComWriteBytes(address,temp,2);
490 1 }
491
492 /*********************************************************************************************************
-**
493 功能:GetComDataBytes;取到字节数的函数
494 描述:取得公共RAM里的数据字节数
495 参数:address---存放字节数的地址
496 返回:uint
497 **********************************************************************************************************
-**/
498 uint GetComDataBytes(uint address)
499 {
500 1 uint num;
501 1 xdata uchar temp[2] = {0x00,0x00};
502 1
503 1 ComReadBytes(address,temp,2);
504 1 num = temp[0] + temp[1] * 0x100;
505 1 return num;
506 1 }
C51 COMPILER V7.50 OUTPUT 03/17/2008 20:38:41 PAGE 10
507
508 /*********************************************************************************************************
-**
509 功能:WsSerialRecieve,接收外设发送来的数据。
510 描述:通过串口中断接收外设发送过来的数据,保存在RecvDataBuff数组里,数据接收完毕时通过标识FlagProcessRecvDa
-ta
511 通知Process7017RecvData或者Process7053RecvData函数来打包接收的数据。
512 参数:无
513 返回:无
514 **********************************************************************************************************
-**/
515 void WsSerialRecieve() interrupt 4 using 3 //注意:这个函数在程序里面没有用到,但是删除后有问题,暂时我
-们也不知道什么原因!
516 {
517 1 if(RI)
518 1 {
519 2 uchar ch;
520 2 RI = 0;
521 2 ch = SBUF;
522 2 if(ch==0x3E) //若第一个字符为数据开始字符">"。
523 2 {
524 3 FlagStartRecv=1; //开始接收标志置位。
525 3 RecvDataCount = -1; //第一个字符不接收。
526 3 }
527 2
528 2 if(FlagStartRecv) //若可以开始接收
529 2 {
530 3 if(RecvDataCount >=0) //若接收的个数大于0,验证接收个数的有效性。
531 3 {
532 4 RecvDataBuff[RecvDataCount]=ch; //保存接收的数据
533 4 }
534 3 RecvDataCount++; //接收的个数加一
535 3 if(RecvDataCount > (RecvDataSize-1)) //如果接收的数据已经接收完毕
536 3 {
537 4 FlagProcessRecvData=1; //FlagProcessRecvData置位,通知函数来打包该数据。
538 4 FlagStartRecv=0; //开始接收标识复位,暂时不接受外设数据。
539 4 RecvDataCount=-1; //接收个数也复位为-1.
540 4 }
541 3 }
542 2 }
543 1 }
544
545 /*********************************************************************************************************
-**
546 功能:CopyToMyRam,从公共RAM里拷贝相应的数据到自己的RAM。
547 描述:实现从公共RAM里通过数组CopyBuff[COPYLEN]拷贝数据到自己的RAM,如果长度不超过缓冲区长度就一次拷贝过去,
-假
548 如长度超过缓冲区长度就分几次拷贝过去。
549 参数:address1--自带RAM命令起始地址 address2--公共RAM命令起始地址 lenght--命令字节长度
550 返回:无
551 **********************************************************************************************************
-**/
552 void CopyToMyRam(uint address1,uint address2,uint length)
553 {
554 1 xdata uchar CopyBuff[COPYLEN]; //缓冲区数组。
555 1 uchar i,len1,len2;
556 1 len1=(uchar)(length / COPYLEN); //拷贝的次数。
557 1 len2=(uchar)(length % COPYLEN); //拷贝的余数。
558 1
559 1 if(length>0) //验证length的有效性。
560 1 {
561 2 if(length>COPYLEN) //length大于缓冲区的长度
C51 COMPILER V7.50 OUTPUT 03/17/2008 20:38:41 PAGE 11
562 2 {
563 3 for(i=0;i<len1;i++)
564 3 {
565 4 ComReadBytes(address1,CopyBuff,COPYLEN);
566 4 MyWriteBytes(address2,CopyBuff,COPYLEN);
567 4 address1 += COPYLEN ;
568 4 address2 += COPYLEN ;
569 4 }
570 3 ComReadBytes(address1,CopyBuff,len2);
571 3 MyWriteBytes(address2,CopyBuff,len2);
572 3 }
573 2 else //length小于缓冲区的长度。
574 2 {
575 3 ComReadBytes(address1,CopyBuff,length);
576 3 MyWriteBytes(address2,CopyBuff,length);
577 3 }
578 2 }
579 1 }
580
581
582 /*********************************************************************************************************
-**
583 功能:CopyAllToMyRam(),把公共RAM中所有相应的数据拷贝到再带RAM中去。
584 描述:实现把公共RAM中所有相应的数据拷贝到再带RAM中去,主要是拷贝服务器发来的存储在公共RAM中的命令。
585 参数:无
586 返回:无
587 **********************************************************************************************************
-**/
588 void CopyAllToMyRam()
589 {
590 1 uchar len = 0;
591 1
592 1 len = ComReadOneByte(ComAlarmLenAdd1); //取出公共RAM中从机1报警动作号的长度。
593 1 if((len > 0) && (len <= MaxSlaveAlarmLen))
594 1 {
595 2 CopyToMyRam(ComAlarmStart1,Ws1Alarm,len); //再把公共RAM中从机1报警动作号拷贝到输出机自带RAM中去。
596 2 MyWriteOneByte(Ws1AlarmLen,len); //再把公共RAM中从机1报警动作号长度拷贝到输出机自带RAM中去
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -