⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ycn1int.plm

📁 这是一个产品完整的代码
💻 PLM
📖 第 1 页 / 共 2 页
字号:
                    TRBUF(7)=3;
                 END;
             IF CHECK_FLAG=1 THEN
                 DO;TRBUF(2)=3;
                    TRBUF(3)=0;
                    TRBUF(4)=0;
                    TRBUF(5)=0;
                    TRBUF(6)=2;
                 END;
             CALL RS485T_CTL;
             TRPT=0;
             TRXH=0;
             TRBZ=1;
             CALL BITSET(.INT_PENDING,6);
          END;

        ELSE
        DO;
        IF YC_TEST_FLAG=0 THEN DO;IF TRXH>5 THEN DO;SP_CON=0AH;
                                                    TRXH=0;
                                                 END;
                               END;
        IF YC_TEST_FLAG=1 THEN DO;IF TRXH>17 THEN DO;SP_CON=0AH;
                                                    TRXH=0;
                                                 END;
                               END;
        DO CASE TRXH;
          ;                     /* do nothing */

          DO;TRBUF(0)=BHAD;     /*TRXH=1*/
             TRBUF(1)=1;        /* 1-7:COS.Uab.Ucb.Ia.Ic.P.Q */
             TRPT=0;
             DO K2=0 TO TRLEN(0)-1;
               WORK=YCML(K2);/*YCML:Enable or disable transmission of item 1-7*/
               DO K1=0 TO 6;
                 WORK0=ROL(WORK0,1);
                 IF BITTST(.WORK0,0) THEN
                   DO;K3=K2*16+K1+1;
                      TRBUF(3+TRPT*2)=BUF1(K3).BIN(1);
                      TRBUF(4+TRPT*2)=BUF1(K3).BIN(0);
                      IF BUF1(K3).BIN(3)=1  THEN
                         TRBUF(3+TRPT*2)=TRBUF(3+TRPT*2) OR 08H;
                      TRPT=TRPT+1;
                   END;
               END;
             END;
             TRBUF(2)=TRPT*2;
             K2=0;
             DO K1=1 TO (TRBUF(2)+2);
               K2=K2+TRBUF(K1);
             END;
             TRBUF(TRBUF(2)+3)=K2;
             CALL RS485T_CTL;
             TRPT=0;
             TRXH=0;
             TRBZ=1;
             CALL BITSET(.INT_PENDING,6);
          END;

          DO;TRBUF(0)=BHAD;             /*TRXH=2*/
             TRBUF(1)=2;                /*Frequency*/
             TRPT=0;
             DO K2=0 TO TRLEN(1)-1;
               WORK0=FML(K2);
               DO K1=0 TO 5;
                 WORK0=ROL(WORK0,1);
                 IF BITTST(.WORK0,0) THEN
                   DO;K3=(K1+K2*6)*16;
                      TRBUF(3+TRPT*2)=WEST(K3).BCD(1);
                      TRBUF(4+TRPT*2)=WEST(K3).BCD(2);
                      TRPT=TRPT+1;
                      IF TRPT>2 THEN K1=8;
                   END;
               END;
             END;
             TRBUF(2)=TRPT*2;
             K2=0;
             DO K1=1 TO (TRBUF(2)+2);
               K2=K2+TRBUF(K1);
             END;
             TRBUF(TRBUF(2)+3)=K2;
             CALL RS485T_CTL;
             TRPT=0;
             TRBZ=1;
             TRXH=0;
             CALL BITSET(.INT_PENDING,6);
          END;

          DO;TRBUF(0)=BHAD;             /*TRXH=3*/
             TRBUF(1)=3;                /*W*/
             TRPT=0;
             K2=0;
WTXD:        WORK0=WML(K2+6);
             WORK1=WML(K2+4);

             DO K1=0 TO 5;
               WORK0=ROL(WORK0,1);
               IF BITTST(.WORK0,0) THEN
                 DO;K3=(K1+K2*6)*16+12;                  /*Wp*/
                    TRBUF(3+TRPT*4)=BUF1(K3).BIN(2);
                    TRBUF(4+TRPT*4)=BUF1(K3).BIN(1);
                    TRBUF(5+TRPT*4)=BUF1(K3).BIN(0);
                    IF BUF1(K3).BIN(3)=1 THEN TRBUF(6+TRPT*4)=90H;
                                         ELSE TRBUF(6+TRPT*4)=80H;
                    TRPT=TRPT+1;
                 END;

               WORK1=ROL(WORK1,1);                       /*Wq*/
               IF BITTST(.WORK1,0) THEN
                 DO;K3=(K1+K2*6)*16+13;
                    TRBUF(3+TRPT*4)=BUF1(K3).BIN(2);
                    TRBUF(4+TRPT*4)=BUF1(K3).BIN(1);
                    TRBUF(5+TRPT*4)=BUF1(K3).BIN(0);
                    IF BUF1(K3).BIN(3)=1 THEN TRBUF(6+TRPT*4)=90H;
                                         ELSE TRBUF(6+TRPT*4)=80H;
                    TRPT=TRPT+1;
                 END;
             END;

             WORK0=WML(K2+2);
             WORK1=WML(K2);
             DO K1=0 TO 5;
               WORK0=ROL(WORK0,1);
               IF BITTST(.WORK0,0) THEN                /*-Wp*/
                 DO;K3=(K1+K2*6)*16+14;
                    TRBUF(3+TRPT*4)=BUF1(K3).BIN(2);
                    TRBUF(4+TRPT*4)=BUF1(K3).BIN(1);
                    TRBUF(5+TRPT*4)=BUF1(K3).BIN(0);
                    IF BUF1(K3).BIN(3)=1 THEN TRBUF(6+TRPT*4)=90H;
                                         ELSE TRBUF(6+TRPT*4)=80H;
                    TRPT=TRPT+1;
                 END;

               WORK1=ROL(WORK1,1);                   /*-Wq*/
               IF BITTST(.WORK1,0) THEN
                 DO;K3=(K1+K2*6)*16+15;
                    TRBUF(3+TRPT*4)=BUF1(K3).BIN(2);
                    TRBUF(4+TRPT*4)=BUF1(K3).BIN(1);
                    TRBUF(5+TRPT*4)=BUF1(K3).BIN(0);
                    IF BUF1(K3).BIN(3)=1 THEN TRBUF(6+TRPT*4)=90H;
                                         ELSE TRBUF(6+TRPT*4)=80H;
                    TRPT=TRPT+1;
                 END;
             END;

             K2=K2+1;
             IF (K2*4)<TRLEN(2) THEN GOTO WTXD;
             TRBUF(2)=TRPT*4;
             K2=0;
             DO K1=1 TO (TRBUF(2)+2);
               K2=K2+TRBUF(K1);
             END;
             TRBUF(TRBUF(2)+3)=K2;
             CALL RS485T_CTL;
             TRPT=0;
             TRXH=0;
             TRBZ=1;
             CALL BITSET(.INT_PENDING,6);
          END;

          DO;TRBUF(0)=BHAD;             /*TRXH=4*/
             TRBUF(1)=4;                /*DC yc value */
             TRBUF(2)=TRLEN(3)*2;
             DO K2=0 TO TRLEN(3)-1;
               TRBUF(3+K2*2)=DCV(K2).BIN(1);
               TRBUF(4+K2*2)=DCV(K2).BIN(0);
               IF DCV(K2).BIN(3)=1 THEN
                 TRBUF(3+K2*2)=TRBUF(3+K2*2) OR 08H;
             END;
             K2=0;
             DO K1=1 TO (TRBUF(2)+2);
               K2=K2+TRBUF(K1);
             END;
             TRBUF(TRBUF(2)+3)=K2;
             CALL RS485T_CTL;
             TRPT=0;
             TRXH=0;
             TRBZ=1;
             CALL BITSET(.INT_PENDING,6);
          END;

          DO;TRBUF(0)=BHAD;             /*TRXH=5*/
             TRBUF(1)=0FFH;             /*YC card status*/
             IF YC_TEST_FLAG=0 AND CHECK_FLAG=0 THEN
                 DO;TRBUF(2)=2;
                    TRBUF(3)=0;
                    TRBUF(4)=0;
                    TRBUF(5)=1;
                 END;
             IF YC_TEST_FLAG=1 THEN
                 DO;TRBUF(2)=4;
                    TRBUF(3)=0;
                    TRBUF(4)=0;
                    TRBUF(5)=0;
                    TRBUF(6)=0;
                    TRBUF(7)=3;
                 END;
             IF CHECK_FLAG=1 THEN
                 DO;TRBUF(2)=3;
                    TRBUF(3)=0;
                    TRBUF(4)=0;
                    TRBUF(5)=0;
                    TRBUF(6)=2;
                 END;
             CALL RS485T_CTL;
             TRPT=0;
             TRXH=0;
             TRBZ=1;
             CALL BITSET(.INT_PENDING,6);
          END;

          DO;TRBUF(0)=BHAD;       /*TRXH=6*/
             CALL SEND$BCD(6);    /*YC card TEST LINE 1 DATA*/
          END;

          DO;TRBUF(0)=BHAD;       /*TRXH=7*/
             CALL SEND$BCD(7);    /*YC card TEST LINE 2 DATA*/
          END;

          DO;TRBUF(0)=BHAD;       /*TRXH=8*/
             CALL SEND$BCD(8);    /*YC card TEST LINE 3 DATA*/
          END;

          DO;TRBUF(0)=BHAD;       /*TRXH=9*/
             CALL SEND$BCD(9);    /*YC card TEST LINE 4 DATA*/
          END;

          DO;TRBUF(0)=BHAD;       /*TRXH=10*/
             CALL SEND$BCD(10);    /*YC card TEST LINE 5 DATA*/
          END;

          DO;TRBUF(0)=BHAD;       /*TRXH=11*/
             CALL SEND$BCD(11);    /*YC card TEST LINE 6 DATA*/
          END;

          DO;TRBUF(0)=BHAD;       /*TRXH=12*/
             CALL SEND$BCD(12);    /*YC card TEST LINE 7 DATA*/
          END;

          DO;TRBUF(0)=BHAD;       /*TRXH=13*/
             CALL SEND$BCD(13);    /*YC card TEST LINE 8 DATA*/
          END;

          DO;TRBUF(0)=BHAD;       /*TRXH=14*/
             CALL SEND$BCD(14);    /*YC card TEST LINE 9 DATA*/
          END;

          DO;TRBUF(0)=BHAD;       /*TRXH=15*/
             CALL SEND$BCD(15);    /*YC card TEST LINE 10 DATA*/
          END;

          DO;TRBUF(0)=BHAD;       /*TRXH=16*/
             CALL SEND$BCD(16);    /*YC card TEST LINE 11 DATA*/
          END;

          DO;TRBUF(0)=BHAD;       /*TRXH=17*/
             CALL SEND$BCD(17);    /*YC card TEST LINE 12 DATA*/
          END;
       END;
    END;
END FS_INT;

/*-----------------------------------------------------------------------*/
HSI_INT:PROCEDURE INTERRUPT 2;          /*HSI INT*/
        DCL IREG WORD FAST;
        DCL (IRG0,IRG1) BYTE AT(.IREG);
        DCL STATUS BYTE;

        INT_MASK=0C0H;
        ENABLE;
        STATUS=HSI_STATUS;
        IOS1_IMAGE=IOS1_IMAGE OR IOS1;
        IF BITTST(.IOS1_IMAGE,7) THEN
          DO;CALL BITCLR(.IOS1_IMAGE,7);
             IF BITTST(.STATUS,2) THEN /*HSI.1*/
                DO;IREG=HSI_TIME;
                   OVTM_COUNT=OVTM_COUNT+1;
                END;
             IF BITTST(.STATUS,0) THEN /*HSI.0*/
                DO;IREG=HSI_TIME;
                   IREG=T1END;
                   T1LOW=TC8253_C;
                   T1HIH=TC8253_C;
                   TC8253_C=0FFH;
                   TC8253_C=0FFH;
                   T1END=-T1END;
                   IF (T1END<=41060) AND (T1END>=32512) THEN
                      DO;IREG=IREG-T1END;
                         IF BITTST(.IRG1,7) THEN IREG=-IREG;
                         IF IREG<80 THEN
                           DO;FNUM=T1END;
                              /*2^NP:sampling points in one cycle*/
                              IREG=SHR(T1END,NP);
                              TC8253_B=IRG0;
                              TC8253_B=IRG1;
                             /*
                              IF SAMP$EN THEN
                                DO;SAMP$NO=0;
                                   IF CHECK_FLAG=1 THEN  P1_IMAGE=0DFH;
                                                   ELSE  P1_IMAGE=(NOT WAY) AND 8FH;
                                   IOPORT1=P1_IMAGE;
                                END;
                             */
                           END;
                      END;
                                                        ELSE  T1END=IREG;
                END;
          END;
END HSI_INT;

⌨️ 快捷键说明

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