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 + -
显示快捷键?