www.pudn.com > rtu.rar > POWER32.A96


;	File name =POWER32.A96 
;	compile with model(nt-ef) control 
;	#pragma model(nt-ef) 
;	mk196 
;	设计 何风涛 
	RSEG 
	WATCHDOG     EQU    0000AH;;;;;;;FAST; 
	R0	     EQU    00000H;;;;;;;FAST; 
	WSR	     EQU    00014H;;;;;;;FAST; 
 
	REAL00	     EQU    00080H;;;;;;;FAST; 
	IMAG00	     EQU    00082H;;;;;;;FAST; 
	REAL01	     EQU    00084H;;;;;;;FAST; 
	IMAG01	     EQU    00086H;;;;;;;FAST; 
	REAL02	     EQU    00088H;;;;;;;FAST; 
	IMAG02	     EQU    0008AH;;;;;;;FAST; 
	REAL03	     EQU    0008CH;;;;;;;FAST; 
	IMAG03	     EQU    0008EH;;;;;;;FAST; 
	REAL04	     EQU    00090H;;;;;;;FAST; 
	IMAG04	     EQU    00092H;;;;;;;FAST; 
	REAL05	     EQU    00094H;;;;;;;FAST; 
	IMAG05	     EQU    00096H;;;;;;;FAST; 
	REAL06	     EQU    00098H;;;;;;;FAST; 
	IMAG06	     EQU    0009AH;;;;;;;FAST; 
	REAL07	     EQU    0009CH;;;;;;;FAST; 
	IMAG07	     EQU    0009EH;;;;;;;FAST; 
	REAL08	     EQU    000A0H;;;;;;;FAST; 
	IMAG08	     EQU    000A2H;;;;;;;FAST; 
	REAL09	     EQU    000A4H;;;;;;;FAST; 
	IMAG09	     EQU    000A6H;;;;;;;FAST; 
	REAL10	     EQU    000A8H;;;;;;;FAST; 
	IMAG10	     EQU    000AAH;;;;;;;FAST; 
	REAL11	     EQU    000ACH;;;;;;;FAST; 
	IMAG11	     EQU    000AEH;;;;;;;FAST; 
	REAL12	     EQU    000B0H;;;;;;;FAST; 
	IMAG12	     EQU    000B2H;;;;;;;FAST; 
	REAL13	     EQU    000B4H;;;;;;;FAST; 
	IMAG13	     EQU    000B6H;;;;;;;FAST; 
	REAL14	     EQU    000B8H;;;;;;;FAST; 
	IMAG14	     EQU    000BAH;;;;;;;FAST; 
	REAL15	     EQU    000BCH;;;;;;;FAST; 
	IMAG15	     EQU    000BEH;;;;;;;FAST; 
	REAL16	     EQU    000C0H;;;;;;;FAST; 
	IMAG16	     EQU    000C2H;;;;;;;FAST; 
	REAL17	     EQU    000C4H;;;;;;;FAST; 
	IMAG17	     EQU    000C6H;;;;;;;FAST; 
	REAL18	     EQU    000C8H;;;;;;;FAST; 
	IMAG18	     EQU    000CAH;;;;;;;FAST; 
	REAL19	     EQU    000CCH;;;;;;;FAST; 
	IMAG19	     EQU    000CEH;;;;;;;FAST; 
	REAL20	     EQU    000D0H;;;;;;;FAST; 
	IMAG20	     EQU    000D2H;;;;;;;FAST; 
	REAL21	     EQU    000D4H;;;;;;;FAST; 
	IMAG21	     EQU    000D6H;;;;;;;FAST; 
	REAL22	     EQU    000D8H;;;;;;;FAST; 
	IMAG22	     EQU    000DAH;;;;;;;FAST; 
	REAL23	     EQU    000DCH;;;;;;;FAST; 
	IMAG23	     EQU    000DEH;;;;;;;FAST; 
	REAL24	     EQU    000E0H;;;;;;;FAST; 
	IMAG24	     EQU    000E2H;;;;;;;FAST; 
	REAL25	     EQU    000E4H;;;;;;;FAST; 
	IMAG25	     EQU    000E6H;;;;;;;FAST; 
	REAL26	     EQU    000E8H;;;;;;;FAST; 
	IMAG26	     EQU    000EAH;;;;;;;FAST; 
	REAL27	     EQU    000ECH;;;;;;;FAST; 
	IMAG27	     EQU    000EEH;;;;;;;FAST; 
	REAL28	     EQU    000F0H;;;;;;;FAST; 
	IMAG28	     EQU    000F2H;;;;;;;FAST; 
	REAL29	     EQU    000F4H;;;;;;;FAST; 
	IMAG29	     EQU    000F6H;;;;;;;FAST; 
	REAL30	     EQU    000F8H;;;;;;;FAST; 
	IMAG30	     EQU    000FAH;;;;;;;FAST; 
	REAL31	     EQU    000FCH;;;;;;;FAST; 
	IMAG31	     EQU    000FEH;;;;;;;FAST; 
 
	PQCOS	     EQU    00050H;;;;;;;FAST; 
	PQSK	     EQU    00052H;;;;;;;FAST; 
	TEMPERATURE  EQU    00054H;;;;;;;FAST; 
	ADWINDOWS    EQU    00056H;;;;;;;FAST; 
	COSVL	     EQU    00058H;;;;;;;FAST; 
	SINVL	     EQU    0005AH;;;;;;;FAST; 
	WORK	     EQU    0005CH;;;;;;;FAST; 
	WTMP	     EQU    0005EH;;;;;;;FAST; 
	SUX	     EQU    00060H;;;;;;;FAST; 
	SUX01	     EQU    00060H;;;;;;;FAST; 
	SUX23	     EQU    00062H;;;;;;;FAST; 
	SUX0	     EQU    00060H;;;;;;;FAST; 
	SUX1	     EQU    00061H;;;;;;;FAST; 
	SUX2	     EQU    00062H;;;;;;;FAST; 
	SUX3	     EQU    00063H;;;;;;;FAST; 
	SUY	     EQU    00064H;;;;;;;FAST; 
	SUY01	     EQU    00064H;;;;;;;FAST; 
	SUY23	     EQU    00066H;;;;;;;FAST; 
	SUY0	     EQU    00064H;;;;;;;FAST; 
	SUY1	     EQU    00065H;;;;;;;FAST; 
	SUY2	     EQU    00066H;;;;;;;FAST; 
	SUY3	     EQU    00067H;;;;;;;FAST; 
	SUP	     EQU    00068H;;;;;;;FAST; 
	SUP01	     EQU    00068H;;;;;;;FAST; 
	SUP23	     EQU    0006AH;;;;;;;FAST; 
	SUQ	     EQU    0006CH;;;;;;;FAST; 
	SUQ01	     EQU    0006CH;;;;;;;FAST; 
	SUQ23	     EQU    0006EH;;;;;;;FAST; 
 
	ZREAL	     EQU    00070H;;;;;;;FAST; 
	ZREALL	     EQU    00070H;;;;;;;FAST; 
	ZREALH	     EQU    00071H;;;;;;;FAST; 
	ZIMAG	     EQU    00072H;;;;;;;FAST; 
	ZIMAGL	     EQU    00072H;;;;;;;FAST; 
	ZIMAGH	     EQU    00073H;;;;;;;FAST; 
	TANVL	     EQU    00074H;;;;;;;FAST; 
	ARCVL	     EQU    00076H;;;;;;;FAST; 
	XBSUM	     EQU    00078H;;;;;;;FAST; 
	XBSUM01      EQU    00078H;;;;;;;FAST; 
	XBSUM23      EQU    0007AH;;;;;;;FAST; 
	SUN	     EQU    0007CH;;;;;;;FAST; 
	SUN01	     EQU    0007CH;;;;;;;FAST; 
	SUN23	     EQU    0007EH;;;;;;;FAST; 
 
	CSEG 
	extrn	     SIN:null 
	extrn	     TAN:null 
 
	PUBLIC POWER;  WORK(WSR)*WTMP(WSR) 
	CSEG 
POWER:	CLR   SUP; 
	CLR   SUQ; 
	CLR   SUN01; 
	LDB   WSR,	 WORK; 
	LD    ZREAL,	 REAL01;	   基波 
	LD    SUX01,	 IMAG01; 
	LDB   WSR,	 WTMP; 
	LD    ZIMAG,	 REAL01;	   基波 
	LD    SUX23,	 IMAG01; 
	ADD   SUX01,	 PQCOS;    功率补偿 
PLOOP:	CALL  DZARC; 
	LD    ARCVL,	 SUX01; 
	LD    SUN23,	 SUX23; 
	LD    SINVL,	 SIN[SUX01]; 
	SUB   SUX01,	 #9000; 
	NEG   SUX01; 
	LD    COSVL,	 SIN[SUX01]; 
	JBC   SUX23,	 0H,	   CNEXT0 
	NEG   COSVL; 
CNEXT0: JBC   SUX23,	 1H,	   SNEXT0; 
	NEG   SINVL; 
SNEXT0: MUL   SUX,	 ZREAL,    ZIMAG;  SUX=ZREAL*ZIMAG=U*I; 
	DIV   SUX,	 #10000; 
	MUL   SUY,	 SUX01,    COSVL; 
	ADD   SUP,	 SUY23; 
	MUL   SUY,	 SUX01,    SINVL; 
	ADD   SUQ,	 SUY23; 
	LD    SUN01, JXNST[SUN01] 
	BR    [SUN01] 
XCASE02:LD    SUN01,	 #02; 
	LDB   WSR,	 WORK; 
	LD    ZREAL,	 REAL02;	  二次谐波 
	LD    SUX01,	 IMAG02; 
	LD    REAL17,	 SUN23; 	  SUN23 基波功角象限值 
	LD    IMAG17,	 ARCVL; 	  ARCVL 基波功角 
	LDB   WSR,	 WTMP; 
	LD    ZIMAG,	 REAL02;	  二次谐波 
	LD    SUX23,	 IMAG02; 
	LJMP  PLOOP; 
XCASE03:LD    SUN01,	 #04; 
	LDB   WSR,	 WORK; 
	LD    ZREAL,	 REAL03;	  三次谐波 
	LD    SUX01,	 IMAG03; 
	LD    REAL18,	 SUN23; 	  SUN23 02次谐波功角象限值 
	LD    IMAG18,	 ARCVL; 	  ARCVL 02次谐波功角 
	LDB   WSR,	 WTMP; 
	LD    ZIMAG,	 REAL03;	  三次谐波 
	LD    SUX23,	 IMAG03; 
	LJMP  PLOOP; 
XCASE04:LD    SUN01,	 #06; 
	LDB   WSR,	 WORK; 
	LD    ZREAL,	 REAL04;	  四次谐波 
	LD    SUX01,	 IMAG04; 
	LD    REAL19,	 SUN23; 	  SUN23 03次谐波功角象限值 
	LD    IMAG19,	 ARCVL; 	  ARCVL 03次谐波功角 
	LDB   WSR,	 WTMP; 
	LD    ZIMAG,	 REAL04;	  四次谐波 
	LD    SUX23,	 IMAG04; 
	LJMP  PLOOP; 
XCASE05:LD    SUN01,	 #08; 
	LDB   WSR,	 WORK; 
	LD    ZREAL,	 REAL05;	  05次谐波 
	LD    SUX01,	 IMAG05; 
	LD    REAL20,	 SUN23; 	  SUN23 04次谐波功角象限值 
	LD    IMAG20,	 ARCVL; 	  ARCVL 04次谐波功角 
	LDB   WSR,	 WTMP; 
	LD    ZIMAG,	 REAL05;	  05次谐波 
	LD    SUX23,	 IMAG05; 
	LJMP  PLOOP; 
XCASE06:LD    SUN01,	 #10; 
	LDB   WSR,	 WORK; 
	LD    ZREAL,	 REAL06;	  06次谐波 
	LD    SUX01,	 IMAG06; 
	LD    REAL21,	 SUN23; 	  SUN23 05次谐波功角象限值 
	LD    IMAG21,	 ARCVL; 	  ARCVL 05次谐波功角 
	LDB   WSR,	 WTMP; 
	LD    ZIMAG,	 REAL06;	  06次谐波 
	LD    SUX23,	 IMAG06; 
	LJMP  PLOOP; 
XCASE07:LD    SUN01,	 #12; 
	LDB   WSR,	 WORK; 
	LD    ZREAL,	 REAL07;	  07次谐波 
	LD    SUX01,	 IMAG07; 
	LD    REAL22,	 SUN23; 	  SUN23 06次谐波功角象限值 
	LD    IMAG22,	 ARCVL; 	  ARCVL 06次谐波功角 
	LDB   WSR,	 WTMP; 
	LD    ZIMAG,	 REAL07;	  07次谐波 
	LD    SUX23,	 IMAG07; 
	LJMP  PLOOP; 
XCASE08:LD    SUN01,	 #14; 
	LDB   WSR,	 WORK; 
	LD    ZREAL,	 REAL08;	  08次谐波 
	LD    SUX01,	 IMAG08; 
	LD    REAL23,	 SUN23; 	  SUN23 07次谐波功角象限值 
	LD    IMAG23,	 ARCVL; 	  ARCVL 07次谐波功角 
	LDB   WSR,	 WTMP; 
	LD    ZIMAG,	 REAL08;	  08次谐波 
	LD    SUX23,	 IMAG08; 
	LJMP  PLOOP; 
XCASE09:LD    SUN01,	 #16; 
	LDB   WSR,	 WORK; 
	LD    ZREAL,	 REAL09;	  09次谐波 
	LD    SUX01,	 IMAG09; 
	LD    REAL24,	 SUN23; 	  SUN23 08次谐波功角象限值 
	LD    IMAG24,	 ARCVL; 	  ARCVL 08次谐波功角 
	LDB   WSR,	 WTMP; 
	LD    ZIMAG,	 REAL09;	  09次谐波 
	LD    SUX23,	 IMAG09; 
	LJMP  PLOOP; 
XCASE10:LD    SUN01,	 #18; 
	LDB   WSR,	 WORK; 
	LD    ZREAL,	 REAL10;	  10次谐波 
	LD    SUX01,	 IMAG10; 
	LD    REAL25,	 SUN23; 	  SUN23 09次谐波功角象限值 
	LD    IMAG25,	 ARCVL; 	  ARCVL 09次谐波功角 
	LDB   WSR,	 WTMP; 
	LD    ZIMAG,	 REAL10;	  10次谐波 
	LD    SUX23,	 IMAG10; 
	LJMP  PLOOP; 
XCASE11:LD    SUN01,	 #20; 
	LDB   WSR,	 WORK; 
	LD    ZREAL,	 REAL11;	  11次谐波 
	LD    SUX01,	 IMAG11; 
	LD    REAL26,	 SUN23; 	  SUN23 10次谐波功角象限值 
	LD    IMAG26,	 ARCVL; 	  ARCVL 10次谐波功角 
	LDB   WSR,	 WTMP; 
	LD    ZIMAG,	 REAL11;	  11次谐波 
	LD    SUX23,	 IMAG11; 
	LJMP  PLOOP; 
XCASE12:LD    SUN01,	 #22; 
	LDB   WSR,	 WORK; 
	LD    ZREAL,	 REAL12;	  12次谐波 
	LD    SUX01,	 IMAG12; 
	LD    REAL27,	 SUN23; 	  SUN23 11次谐波功角象限值 
	LD    IMAG27,	 ARCVL; 	  ARCVL 11次谐波功角 
	LDB   WSR,	 WTMP; 
	LD    ZIMAG,	 REAL12;	  12次谐波 
	LD    SUX23,	 IMAG12; 
	LJMP  PLOOP; 
XCASE13:LD    SUN01,	 #24; 
	LDB   WSR,	 WORK; 
	LD    ZREAL,	 REAL13;	  13次谐波 
	LD    SUX01,	 IMAG13; 
	LD    REAL28,	 SUN23; 	  SUN23 12次谐波功角象限值 
	LD    IMAG28,	 ARCVL; 	  ARCVL 12次谐波功角 
	LDB   WSR,	 WTMP; 
	LD    ZIMAG,	 REAL13;	  13次谐波 
	LD    SUX23,	 IMAG13; 
	LJMP  PLOOP; 
XCASE14:LDB   WSR,	 WORK; 
	LD    ZREAL,	 REAL14;	  1-13次谐波 
	LD    REAL29,	 SUN23; 	  SUN23 13次谐波功角象限值 
	LD    IMAG29,	 ARCVL; 	  ARCVL 13次谐波功角 
	LDB   WSR,	 WTMP; 
	LD    ZIMAG,	 REAL14;	  1-13次谐波 
	SJMP  SPOWER; 
JXNST:	DCW   XCASE02; 
	DCW   XCASE03; 
	DCW   XCASE04; 
	DCW   XCASE05; 
	DCW   XCASE06; 
	DCW   XCASE07; 
	DCW   XCASE08; 
	DCW   XCASE09; 
	DCW   XCASE10; 
	DCW   XCASE11; 
	DCW   XCASE12; 
	DCW   XCASE13; 
	DCW   XCASE14; 
SPOWER: MUL   SUX,	 ZREAL,    ZIMAG;  实在功率 S 
	DIV   SUX,	 #10000; 
	LD    SUN01,	 SUX01; 	   实在功率 
	MUL   SUX,	 SUP01,    PQSK; 
	DIV   SUX,	 #10000; 
	LD    SUP01,	 SUX01; 
	CLR   SUP23; 
	MUL   SUX,	 SUQ01,    PQSK; 
	DIV   SUX,	 #10000; 
	LD    SUQ01,	 SUX01; 
	CLR   SUQ23; 
	;SUP   有功功率 
	;SUQ   无功功率 
	;SUN01 实在功率 
	RET 
 
 
	PUBLIC DZARC;  SUX01=SUX01-SUX23=-18000--0--18000 
	CSEG 
DZARC:	LD    SUY01,	 SUX01; 
	LD    SUY23,	 SUX23; 
	SHRA  SUY01,	 #01H; 
	SHRA  SUY23,	 #01H; 
	SUB   SUY01,	 SUY23; 
	CMP   SUY01,	 R0; 
	JGE   DZ000; 
	NEG   SUY01; 
DZ000:	CMP   SUY01,	 #16383; 
	JGE   DZ500; 
	SUB   SUX01,	 SUX23; 
	CLR   SUX23; 
	CMP   SUX01,	 R0; 
	JGE   DZ002;	 DZ001<0;   DZ002>0; 
DZ001:	NEG   SUX01; 
	OR    SUX23,	 #0080H; 
DZ002:	CMP   SUX01,	 #9000; 
	JLE   DZ101; 
	CMP   SUX01,	 #18000; 
	JLE   DZ201; 
	CMP   SUX01,	 #27000; 
	JLE   DZ301; 
	SUB   SUX01,	 #27000; 
	SUB   SUX01,	 #9000; 
	NEG   SUX01; 
DZ401:	JBS  SUX23,	 7H,	   DZ444; 
	LD   SUX23,	 #0002H;   第四象限 
	RET; 
DZ444:	CLR  SUX23;		   第一象限 
	RET; 
DZ101:	JBS  SUX23,	 7H,	   DZ111; 
	CLR  SUX23;		   第一象限 
	RET; 
DZ111:	LD   SUX23,	 #0002H;   第四象限 
	RET; 
DZ201:	JBS  SUX23,	 7H,	   DZ222; 
	SUB  SUX01,	 #18000;   第二象限 
	NEG  SUX01; 
	LD   SUX23,	 #0001H; 
	RET; 
DZ222:	SUB  SUX01,	 #18000;   第三象限 
	NEG  SUX01; 
	LD   SUX23,	 #0003H; 
	RET; 
DZ301:	JBS  SUX23,	 7H,	   DZ333; 
	SUB  SUX01,	 #18000;   第三象限 
	LD   SUX23,	 #0003H; 
	RET; 
DZ333:	SUB  SUX01,	 #18000;   第二象限 
	LD   SUX23,	 #0001H; 
	RET; 
DZ500:	CMP  SUX01,	 R0; 
	JGE  DZ700; 
DZ600:	ADD  SUX01,	 #18000;   第一象限 
	SUB  SUX23,	 #18000; 
	NEG  SUX23; 
	ADD  SUX01,	 SUX23; 
	CLR  SUX23; 
	RET; 
DZ700:	SUB  SUX01,	 #18000;   第四象限 
	NEG  SUX01; 
	ADD  SUX23,	 #18000; 
	ADD  SUX01,	 SUX23; 
	CMP  SUX01,	 R0; 
	JE   DZ701; 
	LD   SUX23,	 #0002H; 
	RET; 
DZ701:	CLR  SUX23; 
	RET; 
 
	END