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

📄 ycn1mn.plm

📁 这是一个产品完整的代码
💻 PLM
字号:
/*32 points FFT Algorithm, with BDBH, can sample without synchronous signal*/
/*resample after calculation*/
/*------------------------SSC-2 RTU YC card program----------------------*/
/*      Filename     :   YCN1MN.PLM                                      */
/*      Programed by :   Huang Jun                                       */
/*      Modified by  :   Steelen                                         */
/*      Version      :   NEW VERSION 3.04                                */
/*      Date         :   from 05/10/98 to  dd/mm/yy                      */
/*      Print on     :                                                   */
/*-----------------------------------------------------------------------*/
YCN1MN:   DO;
$INCLUDE (C196.PLM)
$INCLUDE (YCN1MN.DEF)
$INCLUDE (YCN1INT.PLM)
START:  /*system initialization*/
        DISABLE;
        IOC1=0111$0000B;                /*Select TXD*/
        IOPORT1=0FH;                    /*Clear 74LS74*/
        CALL RS485R_CTL;
        CALL TIME(1000);                /*Delay 100ms*/

        WSR=0;
        IOC0=0000$0101B;        /*80C196KB initialization*/
        HSI_MODE=0000$1010B;    /*HSI mode set*/
        IOC1=0111$0000B;        /*Select TXD,HSO.4,HSO.5 ENABLE*/
        BAUD_RATE=38H;          /*12MHZ 2400bits/s*/
        BAUD_RATE=81H;
        SP_CON=0AH;             /*Serial command mode 2,0AH*/
        INT_PENDING=0;
        INT_PEND1=0;
        INT_MASK=1110$0110B;    /*Open EXT,SIO,STM,HSI,AD*/
        INT_MASK1=0;
        HSO_COMMAND=38H;        /*10ms SFT INT*/
        HSO_TIME=TIMER1+7490;

        TC8253_COM=36H;         /*8253 initializing command*/
        TC8253_COM=76H;
        TC8253_COM=0B0H;
        TC8253_A=0FFH;          /*Set counter initial value*/
        TC8253_A=0FFH;
        TC8253_B=80H;           /*20/32*1.8432*1000=1152=0480H,*/
        TC8253_B=04H;           /*32 points per cycle*/
        TC8253_C=0FFH;
        TC8253_C=0FFH;

        /*variables initialization*/
        ACLINES=12;   /*the default AC lines is 12*/
        DCLINES=1;    /*the default DC lines is 1*/

        DO M0=0 TO 15;
           UUXS(M0)=UUXSZH; /*1000/(100/(2.94/10*4096))=12042*/
           IIXS(M0)=IIXSZH;  /*10/(5/(2.94/10/4096))=2408*/
           PXS(M0)=PXSZH; /*UUXS*IIXS/1000=29003*/
           QXS(M0)=QXSZH; /* PXS*1.732=50432*/
        END;

        TRLEN(0)=2; /*YCML*/
        TRLEN(1)=2; /*FML*/
        TRLEN(2)=8; /*WML*/
        TRLEN(3)=4; /*the number of DC lines, (=4)*/

        /*determine what items(COS,Uab,Ia,Ucb,Ic,P,Q) to be sent*/
        DO M0=0 TO 11;
          YCML(M0)=0FFH;
        END;

        FML(0)=0FFH; /*determine which line's frequency to be sent*/
        FML(1)=0FFH;
        DO M0=0 TO 7;
          WML(M0)=0FFH;/*determine which line's WPQ to be sent*/
        END;

        TRXH=0;     /*the No. of transmission*/
        WAY=0;      /*the line number*/
        TRBZ=0;     /*the flag of transmission*/
        TRPT=0;     /*the count of transmission*/
        RECONT=0;   /*the count of receive*/
        IOS1_IMAGE=0;
        OVTM_COUNT=0; /*TC8253_A Timer Overflow Count*/

        CNVT$END=0;
        IF DATA$VALID<>0AA55H THEN
        DO;
         RST$CNT=0;
         DATA$VALID=0AA55H;
         DO M0=0 TO 3;
           EAST(0).BCD(M0)=0;
           EAST(1).BCD(M0)=0;
         END;
         DO M0=0 TO 255;
           DO M1=0 TO 3;
              WEST(M0).BCD(M1)=0;
           END;
         END;

         DO M0=0 TO 255;
           DO M1=0 TO 3;
              BUF1(M0).BIN(M1)=0;
           END;
         END;
         DO M0=0 TO N2-1;
         Wp(M0)=0;
         Wq(M0)=0;
         WpF(M0)=0;
         WqF(M0)=0;
         WpDIV(M0)=0;
         WqDIV(M0)=0;
         WpFDIV(M0)=0;
         WqFDIV(M0)=0;
         END;

        END;
        RST$CNT=RST$CNT+1;
        IF RST$CNT>200 THEN
                        DO;CALL RST_DOG;
                        RST$CNT=0;
                        DEAD$LOOP:GOTO DEAD$LOOP;
                        END;
        FNUM=36864;   /*50 Hz*/
        T1END=36864;
        ITEM=0FFH;    /*1:Uab;2:Ia;3:Ucb;4:Ic;0ffh:no item selected*/
        SAMP$NO=0;
        P1_IMAGE=0FH; /*choose line 0,item 0, clear 74LS74, sampling*/
        IOPORT1=P1_IMAGE;

        ENABLE;

AGAIN:  CALL RST_DOG;
        /*get the address of the board and running mode*/
        BHAD=(IOPORT0 AND 0FH)+1;
        IF (IOPORT0 AND 80H)<>0 THEN YC_TEST_FLAG=1;
                                ELSE YC_TEST_FLAG=0;
        IF (IOPORT0 AND 40H)<>0 THEN CHECK_FLAG=1;
                                ELSE CHECK_FLAG=0;

        SAMP$EN=0FFH;   /*enable sample*/
        CALL START$RUN; /*ignite LED 'start'*/

        /*wait for FCK signal*/
        IF CHECK_FLAG=1 THEN  P1_IMAGE=0DFH;/*item 5*/
                        ELSE  P1_IMAGE=(NOT WAY) AND 8FH;/*line WAY,item 0*/
        IOPORT1=P1_IMAGE;

WAIT:
        CALL RST_DOG;
        IF SAMP$END THEN GOTO BUSY;
        GOTO WAIT;

BUSY:   SAMP$END=0;
        CALL START$RUN; /*quench the LED 'START'*/
        LASTWAY=WAY;    /*store the last WAY*/
        CALL FREQUENCY;

        /*set next line,sampling*/
        WAY=WAY+1;
        IF WAY>=(ACLINES+DCLINES) THEN DO;WAY=0;
                                          CNVT$END=0FFFFH;
                                       END;
        IF CHECK_FLAG=1 THEN P1_IMAGE=5FH;
        ELSE P1_IMAGE=(NOT WAY) AND 0FH;
        IOPORT1=P1_IMAGE;

        /*calculate*/
        POS=SHL(LASTWAY,4);
        IF CHECK_FLAG=1 THEN
                        CALL CHECK_SUB;
        ELSE IF LASTWAY>=ACLINES THEN DO; CALL DC$CAL;
                                          CALL RST_DOG;
                                          CALL WPQ;
                                      END;
             ELSE DO; CALL RST_DOG;
                      CALL UIPQ;
                      CALL RST_DOG;
                      CALL BDBH;
                  END;
        GOTO AGAIN;
END YCN1MN;
EOF;

⌨️ 快捷键说明

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