📄 ycn1int.plm
字号:
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 + -