plc51x_fnc.lst

来自「PLC源代码」· LST 代码 · 共 702 行 · 第 1/5 页

LST
702
字号
 403   2              }
 404   1        else if  (a<0x600)
 405   1              { a -= 0x500;
 406   2                if (a < _Y_num)
 407   2                  { p = (unsigned char*)rY1 + (a / 8);
 408   3                      }
 409   2              }
 410   1        else if  (a<0x800)
 411   1              { a -= 0x600;
 412   2                if (a < _T_num)
 413   2                  { p = (unsigned char*)rT1 + (a / 8);
 414   3                      }
 415   2              }
 416   1        else if  (a<0xe00)
 417   1              { a -= 0x800;
 418   2                if (a < _M_num)
 419   2                  { p = (unsigned char*)rM1 + (a / 8);
 420   3                      }
 421   2              }
 422   1        else if  (a<0xf00)
 423   1              { a -= 0xe00;
 424   2                if (a < _C_num)
 425   2                  { p = (unsigned char*)rC1 + (a / 8);
 426   3                      }
 427   2              }
C51 COMPILER V8.16   PLC51X_FNC                                                            10/10/2009 14:43:38 PAGE 8   

 428   1        else 
 429   1              { a -= 0xf00;
 430   2                if (a < _M8xxx_num)
 431   2                  { p = (unsigned char*)rM8xxx1 + (a / 8);
 432   3                      }
 433   2              }
 434   1        return(p);
 435   1      }
 436          
 437          
 438          //-----------------------------------------------------------------------------------------//
 439          //    函数名称:   RD_int_ppp                                                               //
 440          //    函数类型:   unsigned int RD_int_ppp(unsigned int a)                                  //
 441          //                                                                                                                         //
 442          //    功能描述:  将并列的n位软元件点的内容从存储器内读入                                  //
 443          //                                                                                                                         //
 444          //    入口参数:  unsigned int  a ...... 读入软元件点的起始地址                            //
 445          //                                                                                                                         //
 446          //    出口参数:  并列的n位软元件点的内容                                                  //
 447          //                                                                                                                         //
 448          //    全局变量:   无                                                                                   //
 449          //                                                                                                                         //
 450          //    调用模块:   char* ADDR_int_ppp(unsigned int a)                                       //
 451          //    模块描述:  读入并列的n位软元件点的起始地址,返回地址绝对指针                        //
 452          //                                                                                         //
 453          //                                                                                                                         //
 454          //    作   者:   许意义                                                                                       //
 455          //    日   期:   2009年9月26日                                                                        //
 456          //    备    注:                                                                                                            //
 457          //-----------------------------------------------------------------------------------------//
 458          //    修 改 人:                                                                                                        //
 459          //    日   期:                                                                                                        //
 460          //    备    注:                                                                                                            //
 461          //-----------------------------------------------------------------------------------------//
 462          
 463          unsigned int RD_int_ppp(unsigned int a)    // (读入int点内容)
 464          { unsigned char *p;
 465   1        unsigned char i, n;
 466   1        unsigned int  Ia;
 467   1        p = ADDR_int_ppp(a); 
 468   1        n = 0x10;
 469   1        i = a % 8;
 470   1        Ia = (unsigned int)(*p++);
 471   1        n -= (8-i);
 472   1        for (; n>=8; )   
 473   1          { Ia = ((unsigned int)(*p++) << 8) | Ia; 
 474   2                n  -= 8;
 475   2              }
 476   1        if (n != 0)
 477   1              { Ia = ((unsigned int)(*p++) << (16-n)) | (Ia >> n); 
 478   2              }
 479   1        else ; 
 480   1        return Ia;
 481   1      }
 482          
 483          
 484          //-----------------------------------------------------------------------------------------//
 485          //    函数名称:   WR_int_ppp                                                               //
 486          //    函数类型:   void WR_int_ppp(unsigned int a,unsigned int b,unsigned char n)           //
 487          //                                                                                                                         //
 488          //    功能描述:  将并列的n位软元件点的内容写入存储器                                      //
 489          //                                                                                                                         //
C51 COMPILER V8.16   PLC51X_FNC                                                            10/10/2009 14:43:38 PAGE 9   

 490          //    入口参数:  unsigned int  a ...... 写入软元件点的起始地址                            //
 491          //                unsigned int  b ...... 写入内容                                          //
 492          //                unsigned char n ...... 写入宽度,n=2,4bit;  n=4,8bit;                    //
 493          //                                                 n=6,12bit; n=8,16bit; 依次类推          //
 494          //                                                                                                                         //
 495          //    出口参数:  返回写入点地址下一个地址                                                 //
 496          //                                                                                                                         //
 497          //    全局变量:   无                                                                                   //
 498          //                                                                                                                         //
 499          //    调用模块:   char* ADDR_int_ppp(unsigned int a)                                       //
 500          //    模块描述:  读入并列的n位软元件点的起始地址,返回地址绝对指针                        //
 501          //                                                                                         //
 502          //                                                                                                                         //
 503          //    作   者:   许意义                                                                                       //
 504          //    日   期:   2009年9月26日                                                                        //
 505          //    备    注:                                                                                                            //
 506          //-----------------------------------------------------------------------------------------//
 507          //    修 改 人:                                                                                                        //
 508          //    日   期:                                                                                                        //
 509          //    备    注:                                                                                                            //
 510          //-----------------------------------------------------------------------------------------//
 511          
 512          unsigned int WR_int_ppp(unsigned int a,unsigned int b,unsigned char n)     // (写入int点内容)
 513          { unsigned char *p;
 514   1        unsigned char i, j;
 515   1        unsigned char Ca;
 516   1        p = ADDR_int_ppp(a); 
 517   1        n <<= 1;
 518   1        if (n == 0)
 519   1          { if ((b&0x01) == 0)   *p &= ~(1 << (a % 8));
 520   2                     else  *p |= 1 << (a % 8);
 521   2                a++;
 522   2          }
 523   1        else 
 524   1          { i = a % 8;
 525   2                if (n <= (8-i))
 526   2                  { Ca = BYTE_BIT_s[i];
 527   3                        for (j=1; j<n; j++)
 528   3                          { Ca |= (Ca << 1);
 529   4                              }
 530   3                    *p++ = ((*p & ~Ca) | ((unsigned char)((b<<i) & 0xff) & Ca)); 
 531   3                        b >>= n;
 532   3                        a  += n;
 533   3                        n   = 0;
 534   3                      }
 535   2                else 
 536   2                  { Ca = BYTE_BIT_w[i];
 537   3                    *p++ = ((*p & ~Ca) | ((unsigned char)((b<<i) & 0xff) & Ca)); 
 538   3                        i   = 8-i;
 539   3                        b >>= i;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?