www.pudn.com > rtu.rar > FFT32.A96
; File name =FFT32.A96
; compile with model(nt-ef) control
; #pragma model(nt-ef)
; mk196
; 设计 何风涛
$include(FFT32.H)
extrn XX0;
extrn YY0;
extrn KK0;
extrn TAN;
extrn SIN;
extrn LCD_Device:null
PUBLIC FFT32
CSEG AT 0FB0000H
FFT32: CMP WTMP, R0;
JE REG1SET;
SJMP REG2SET;
REG1SET:LDB WSR, #WSR_100H_17FH
SJMP FSTART;
REG2SET:LDB WSR, #WSR_180H_1FFH
FSTART: LD IMAG00, [WORK];
AND IMAG00, #3FFFH;
ADD WORK, #0008H;
CMP IMAG00, #1FFFH;
JLE NEXTA01;
SUB IMAG00, #4000H;
NEXTA01:LD IMAG01, [WORK];
AND IMAG01, #3FFFH;
ADD WORK, #0008H;
CMP IMAG01, #1FFFH;
JLE NEXTA02;
SUB IMAG01, #4000H;
NEXTA02:LD IMAG02, [WORK];
AND IMAG02, #3FFFH;
ADD WORK, #0008H;
CMP IMAG02, #1FFFH;
JLE NEXTA03;
SUB IMAG02, #4000H;
NEXTA03:LD IMAG03, [WORK];
AND IMAG03, #3FFFH;
ADD WORK, #0008H;
CMP IMAG03, #1FFFH;
JLE NEXTA04;
SUB IMAG03, #4000H;
NEXTA04:LD IMAG04, [WORK];
AND IMAG04, #3FFFH;
ADD WORK, #0008H;
CMP IMAG04, #1FFFH;
JLE NEXTA05;
SUB IMAG04, #4000H;
NEXTA05:LD IMAG05, [WORK];
AND IMAG05, #3FFFH;
ADD WORK, #0008H;
CMP IMAG05, #1FFFH;
JLE NEXTA06;
SUB IMAG05, #4000H;
NEXTA06:LD IMAG06, [WORK];
AND IMAG06, #3FFFH;
ADD WORK, #0008H;
CMP IMAG06, #1FFFH;
JLE NEXTA07;
SUB IMAG06, #4000H;
NEXTA07:LD IMAG07, [WORK];
AND IMAG07, #3FFFH;
ADD WORK, #0008H;
CMP IMAG07, #1FFFH;
JLE NEXTA08;
SUB IMAG07, #4000H;
NEXTA08:LD IMAG08, [WORK];
AND IMAG08, #3FFFH;
ADD WORK, #0008H;
CMP IMAG08, #1FFFH;
JLE NEXTA09;
SUB IMAG08, #4000H;
NEXTA09:LD IMAG09, [WORK];
AND IMAG09, #3FFFH;
ADD WORK, #0008H;
CMP IMAG09, #1FFFH;
JLE NEXTA10;
SUB IMAG09, #4000H;
NEXTA10:LD IMAG10, [WORK];
AND IMAG10, #3FFFH;
ADD WORK, #0008H;
CMP IMAG10, #1FFFH;
JLE NEXTA11;
SUB IMAG10, #4000H;
NEXTA11:LD IMAG11, [WORK];
AND IMAG11, #3FFFH;
ADD WORK, #0008H;
CMP IMAG11, #1FFFH;
JLE NEXTA12;
SUB IMAG11, #4000H;
NEXTA12:LD IMAG12, [WORK];
AND IMAG12, #3FFFH;
ADD WORK, #0008H;
CMP IMAG12, #1FFFH;
JLE NEXTA13;
SUB IMAG12, #4000H;
NEXTA13:LD IMAG13, [WORK];
AND IMAG13, #3FFFH;
ADD WORK, #0008H;
CMP IMAG13, #1FFFH;
JLE NEXTA14;
SUB IMAG13, #4000H;
NEXTA14:LD IMAG14, [WORK];
AND IMAG14, #3FFFH;
ADD WORK, #0008H;
CMP IMAG14, #1FFFH;
JLE NEXTA15;
SUB IMAG14, #4000H;
NEXTA15:LD IMAG15, [WORK];
AND IMAG15, #3FFFH;
ADD WORK, #0008H;
CMP IMAG15, #1FFFH;
JLE NEXTA16;
SUB IMAG15, #4000H;
NEXTA16:LD IMAG16, [WORK];
AND IMAG16, #3FFFH;
ADD WORK, #0008H;
CMP IMAG16, #1FFFH;
JLE NEXTA17;
SUB IMAG16, #4000H;
NEXTA17:LD IMAG17, [WORK];
AND IMAG17, #3FFFH;
ADD WORK, #0008H;
CMP IMAG17, #1FFFH;
JLE NEXTA18;
SUB IMAG17, #4000H;
NEXTA18:LD IMAG18, [WORK];
AND IMAG18, #3FFFH;
ADD WORK, #0008H;
CMP IMAG18, #1FFFH;
JLE NEXTA19;
SUB IMAG18, #4000H;
NEXTA19:LD IMAG19, [WORK];
AND IMAG19, #3FFFH;
ADD WORK, #0008H;
CMP IMAG19, #1FFFH;
JLE NEXTA20;
SUB IMAG19, #4000H;
NEXTA20:LD IMAG20, [WORK];
AND IMAG20, #3FFFH;
ADD WORK, #0008H;
CMP IMAG20, #1FFFH;
JLE NEXTA21;
SUB IMAG20, #4000H;
NEXTA21:LD IMAG21, [WORK];
AND IMAG21, #3FFFH;
ADD WORK, #0008H;
CMP IMAG21, #1FFFH;
JLE NEXTA22;
SUB IMAG21, #4000H;
NEXTA22:LD IMAG22, [WORK];
AND IMAG22, #3FFFH;
ADD WORK, #0008H;
CMP IMAG22, #1FFFH;
JLE NEXTA23;
SUB IMAG22, #4000H;
NEXTA23:LD IMAG23, [WORK];
AND IMAG23, #3FFFH;
ADD WORK, #0008H;
CMP IMAG23, #1FFFH;
JLE NEXTA24;
SUB IMAG23, #4000H;
NEXTA24:LD IMAG24, [WORK];
AND IMAG24, #3FFFH;
ADD WORK, #0008H;
CMP IMAG24, #1FFFH;
JLE NEXTA25;
SUB IMAG24, #4000H;
NEXTA25:LD IMAG25, [WORK];
AND IMAG25, #3FFFH;
ADD WORK, #0008H;
CMP IMAG25, #1FFFH;
JLE NEXTA26;
SUB IMAG25, #4000H;
NEXTA26:LD IMAG26, [WORK];
AND IMAG26, #3FFFH;
ADD WORK, #0008H;
CMP IMAG26, #1FFFH;
JLE NEXTA27;
SUB IMAG26, #4000H;
NEXTA27:LD IMAG27, [WORK];
AND IMAG27, #3FFFH;
ADD WORK, #0008H;
CMP IMAG27, #1FFFH;
JLE NEXTA28;
SUB IMAG27, #4000H;
NEXTA28:LD IMAG28, [WORK];
AND IMAG28, #3FFFH;
ADD WORK, #0008H;
CMP IMAG28, #1FFFH;
JLE NEXTA29;
SUB IMAG28, #4000H;
NEXTA29:LD IMAG29, [WORK];
AND IMAG29, #3FFFH;
ADD WORK, #0008H;
CMP IMAG29, #1FFFH;
JLE NEXTA30;
SUB IMAG29, #4000H;
NEXTA30:LD IMAG30, [WORK];
AND IMAG30, #3FFFH;
ADD WORK, #0008H;
CMP IMAG30, #1FFFH;
JLE NEXTA31;
SUB IMAG30, #4000H;
NEXTA31:LD IMAG31, [WORK];
AND IMAG31, #3FFFH;
CMP IMAG31, #1FFFH;
JLE NEXTADE;
SUB IMAG31, #4000H;
NEXTADE:CLR REAL00;
CLR REAL01;
CLR REAL02;
CLR REAL03;
CLR REAL04;
CLR REAL05;
CLR REAL06;
CLR REAL07;
CLR REAL08;
CLR REAL09;
CLR REAL10;
CLR REAL11;
CLR REAL12;
CLR REAL13;
CLR REAL14;
CLR REAL15;
CLR REAL16;
CLR REAL17;
CLR REAL18;
CLR REAL19;
CLR REAL20;
CLR REAL21;
CLR REAL22;
CLR REAL23;
CLR REAL24;
CLR REAL25;
CLR REAL26;
CLR REAL27;
CLR REAL28;
CLR REAL29;
CLR REAL30;
CLR REAL31;
XCH REAL01, REAL16;
XCH IMAG01, IMAG16;
AF00X01:XCH REAL02, REAL08;
XCH IMAG02, IMAG08;
AF00X02:XCH REAL03, REAL24;
XCH IMAG03, IMAG24;
AF00X03:XCH REAL05, REAL20;
XCH IMAG05, IMAG20;
AF00X04:XCH REAL06, REAL12;
XCH IMAG06, IMAG12;
AF00X05:XCH REAL07, REAL28;
XCH IMAG07, IMAG28;
AF00X06:XCH REAL09, REAL18;
XCH IMAG09, IMAG18;
AF00X07:XCH REAL11, REAL26;
XCH IMAG11, IMAG26;
AF00X08:XCH REAL13, REAL22;
XCH IMAG13, IMAG22;
AF00X09:XCH REAL15, REAL30;
XCH IMAG15, IMAG30;
AF00X10:XCH REAL19, REAL25;
XCH IMAG19, IMAG25;
AF00X11:XCH REAL23, REAL29;
XCH IMAG23, IMAG29;
;;;;;;;;;;;;;;;;第一次碟形处理;;;;;;;;;;;;
AF01X00:SUB ZIMAG, IMAG00, IMAG01; X00=X00+X01; X01=X00-X01;
ADD IMAG00, IMAG01;
LD IMAG01, ZIMAG;
AF01X01:SUB ZIMAG, IMAG02, IMAG03; X02=X02+X03; X03=X02-X03;
ADD IMAG02, IMAG03;
LD IMAG03, ZIMAG;
AF01X02:SUB ZIMAG, IMAG04, IMAG05; X04=X04+X05; X05=X04-X05;
ADD IMAG04, IMAG05;
LD IMAG05, ZIMAG;
AF01X03:SUB ZIMAG, IMAG06, IMAG07; X06=X06+X07; X07=X06-X07;
ADD IMAG06, IMAG07;
LD IMAG07, ZIMAG;
AF01X04:SUB ZIMAG, IMAG08, IMAG09; X08=X08+X09; X09=X08-X09;
ADD IMAG08, IMAG09;
LD IMAG09, ZIMAG;
AF01X05:SUB ZIMAG, IMAG10, IMAG11; X10=X10+X11; X11=X10-X11;
ADD IMAG10, IMAG11;
LD IMAG11, ZIMAG;
AF01X06:SUB ZIMAG, IMAG12, IMAG13; X12=X12+X13; X13=X12-X13;
ADD IMAG12, IMAG13;
LD IMAG13, ZIMAG;
AF01X07:SUB ZIMAG, IMAG14, IMAG15; X14=X14+X15; X15=X14-X15;
ADD IMAG14, IMAG15;
LD IMAG15, ZIMAG;
AF01X08:SUB ZIMAG, IMAG16, IMAG17; X16=X16+X17; X17=X16-X17;
ADD IMAG16, IMAG17;
LD IMAG17, ZIMAG;
AF01X09:SUB ZIMAG, IMAG18, IMAG19; X18=X18+X19; X19=X18-X19;
ADD IMAG18, IMAG19;
LD IMAG19, ZIMAG;
AF01X10:SUB ZIMAG, IMAG20, IMAG21; X20=X20+X21; X21=X20-X21;
ADD IMAG20, IMAG21;
LD IMAG21, ZIMAG;
AF01X11:SUB ZIMAG, IMAG22, IMAG23; X22=X22+X23; X23=X22-X23;
ADD IMAG22, IMAG23;
LD IMAG23, ZIMAG;
AF01X12:SUB ZIMAG, IMAG24, IMAG25; X24=X24+X25; X25=X24-X25;
ADD IMAG24, IMAG25;
LD IMAG25, ZIMAG;
AF01X13:SUB ZIMAG, IMAG26, IMAG27; X26=X26+X27; X27=X26-X27;
ADD IMAG26, IMAG27;
LD IMAG27, ZIMAG;
AF01X14:SUB ZIMAG, IMAG28, IMAG29; X28=X28+X29; X29=X28-X29;
ADD IMAG28, IMAG29;
LD IMAG29, ZIMAG;
AF01X15:SUB ZIMAG, IMAG30, IMAG31; X30=X30+X31; X31=X30-X31;
ADD IMAG30, IMAG31;
LD IMAG31, ZIMAG;
;;;;;;;;;;;;;;;;第二次碟形处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AF02X00:SUB ZIMAG, IMAG00, IMAG02; X00=X00+X02; X02=X00-X02;
ADD IMAG00, IMAG02;
LD IMAG02, ZIMAG;
LD REAL01, IMAG03; X01=X01+X03*(-I); X03=X01-X03*(-I);
NEG IMAG03;
LD REAL03, IMAG03;
LD IMAG03, IMAG01;
AF02X01:SUB ZIMAG, IMAG04, IMAG06; X04=X04+X06; X06=X04-X06;
ADD IMAG04, IMAG06;
LD IMAG06, ZIMAG;
LD REAL05, IMAG07; X05=X05+X07*(-I); X07=X05-X07*(-I);
NEG IMAG07;
LD REAL07, IMAG07;
LD IMAG07, IMAG05;
AF02X02:SUB ZIMAG, IMAG08, IMAG10; X08=X08+X10; X10=X08-X10;
ADD IMAG08, IMAG10;
LD IMAG10, ZIMAG;
LD REAL09, IMAG11; X09=X09+X11*(-I); X11=X09-X11*(-I);
NEG IMAG11;
LD REAL11, IMAG11;
LD IMAG11, IMAG09;
AF02X03:SUB ZIMAG, IMAG12, IMAG14; X12=X12+X14; X14=X12-X14;
ADD IMAG12, IMAG14;
LD IMAG14, ZIMAG;
LD REAL13, IMAG15; X13=X13+X15*(-I); X15=X13-X15*(-I);
NEG IMAG15;
LD REAL15, IMAG15;
LD IMAG15, IMAG13;
AF02X04:SUB ZIMAG, IMAG16, IMAG18; X16=X16+X18; X18=X16-X18;
ADD IMAG16, IMAG18;
LD IMAG18, ZIMAG;
LD REAL17, IMAG19; X17=X17+X19*(-I); X19=X17-X19*(-I);
NEG IMAG19;
LD REAL19, IMAG19;
LD IMAG19, IMAG17;
AF02X05:SUB ZIMAG, IMAG20, IMAG22; X20=X20+X22; X22=X20-X22;
ADD IMAG20, IMAG22;
LD IMAG22, ZIMAG;
LD REAL21, IMAG23; X21=X21+X23*(-I); X23=X21-X23*(-I);
NEG IMAG23;
LD REAL23, IMAG23;
LD IMAG23, IMAG21;
AF02X06:SUB ZIMAG, IMAG24, IMAG26; X24=X24+X26; X26=X24-X26;
ADD IMAG24, IMAG26;
LD IMAG26, ZIMAG;
LD REAL25, IMAG27; X25=X25+X27*(-I); X27=X25-X27*(-I);
NEG IMAG27;
LD REAL27, IMAG27;
LD IMAG27, IMAG25;
AF02X07:SUB ZIMAG, IMAG28, IMAG30; X28=X28+X30; X30=X28-X30;
ADD IMAG28, IMAG30;
LD IMAG30, ZIMAG;
LD REAL29, IMAG31; X29=X29+X31*(-I); X31=X29-X31*(-I);
NEG IMAG31;
LD REAL31, IMAG31;
LD IMAG31, IMAG29;
;;;;;;;;;;;;;;; 14位AD/4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SHRA REAL00, #02H;
SHRA REAL01, #02H;
SHRA REAL02, #02H;
SHRA REAL03, #02H;
SHRA REAL04, #02H;
SHRA REAL05, #02H;
SHRA REAL06, #02H;
SHRA REAL07, #02H;
SHRA REAL08, #02H;
SHRA REAL09, #02H;
SHRA REAL10, #02H;
SHRA REAL11, #02H;
SHRA REAL12, #02H;
SHRA REAL13, #02H;
SHRA REAL14, #02H;
SHRA REAL15, #02H;
SHRA REAL16, #02H;
SHRA REAL17, #02H;
SHRA REAL18, #02H;
SHRA REAL19, #02H;
SHRA REAL20, #02H;
SHRA REAL21, #02H;
SHRA REAL22, #02H;
SHRA REAL23, #02H;
SHRA REAL24, #02H;
SHRA REAL25, #02H;
SHRA REAL26, #02H;
SHRA REAL27, #02H;
SHRA REAL28, #02H;
SHRA REAL29, #02H;
SHRA REAL30, #02H;
SHRA REAL31, #02H;
SHRA IMAG00, #02H;
SHRA IMAG01, #02H;
SHRA IMAG02, #02H;
SHRA IMAG03, #02H;
SHRA IMAG04, #02H;
SHRA IMAG05, #02H;
SHRA IMAG06, #02H;
SHRA IMAG07, #02H;
SHRA IMAG08, #02H;
SHRA IMAG09, #02H;
SHRA IMAG10, #02H;
SHRA IMAG11, #02H;
SHRA IMAG12, #02H;
SHRA IMAG13, #02H;
SHRA IMAG14, #02H;
SHRA IMAG15, #02H;
SHRA IMAG16, #02H;
SHRA IMAG17, #02H;
SHRA IMAG18, #02H;
SHRA IMAG19, #02H;
SHRA IMAG20, #02H;
SHRA IMAG21, #02H;
SHRA IMAG22, #02H;
SHRA IMAG23, #02H;
SHRA IMAG24, #02H;
SHRA IMAG25, #02H;
SHRA IMAG26, #02H;
SHRA IMAG27, #02H;
SHRA IMAG28, #02H;
SHRA IMAG29, #02H;
SHRA IMAG30, #02H;
SHRA IMAG31, #02H;
;;;;;;;;;;;;;;;;第三次碟形处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AF03X00:SUB ZREAL, REAL00, REAL04; X00=X00+X04; X04=X00-X04; W0
SUB ZIMAG, IMAG00, IMAG04;
ADD REAL00, REAL04;
ADD IMAG00, IMAG04;
LD REAL04, ZREAL;
LD IMAG04, ZIMAG;
SUB ZIMAG, IMAG02, REAL06; X02=X02+X06*(-I); X06=X02-X06*(-I);
SUB ZREAL, REAL02, IMAG06; X02=X02.REAL+X06.IMAG+(X02.IMAG-X06.REAL)*I;
ADD REAL02, IMAG06; X06=X02.REAL-X06.IMAG+(X02.IMAG+X06.REAL)*I;
ADD IMAG06, IMAG02, REAL06;
LD IMAG02, ZIMAG;
LD REAL06, ZREAL;
LD COSVL, #23170; COSVL=23170/32768=0.7071=SINVL;
;X1=X1+W4*X5; X1.REAL + 0.7071*(X5.REAL+X5.IMAG)+[X1.IMAG + 0.7071*(X5.IMAG-X5.REAL)]*I
;X5=X1-W4*X5; X1.REAL - 0.7071*(X5.REAL+X5.IMAG)+[X1.IMAG - 0.7071*(X5.IMAG-X5.REAL)]*I
;W4=0.7071-0.7071*I;
SUB ZREAL, IMAG05, REAL05; ZREAL=X5.IMAG-X5.REAL
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X5.IMAG-X5.REAL)
ADD ZREAL, REAL05, IMAG05; ZREAL=X5.REAL+X5.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X5.REAL+X5.IMAG)
SUB REAL05, REAL01, SUP23; X1.REAL-SUP23 + (X1.IMAG-SUQ23)*I
SUB IMAG05, IMAG01, SUQ23;
ADD REAL01, SUP23; X1.REAL+SUP23 + (X1.IMAG+SUQ23)*I
ADD IMAG01, SUQ23;
;X3=X3+W12*X7; X3.REAL - 0.7071*(X7.REAL-X7.IMAG)+ [X3.IMAG - 0.7071*(X7.REAL+X7.IMAG)]*I
;X7=X3-W12*X7; X3.REAL + 0.7071*(X7.REAL-X7.IMAG)+ [X3.IMAG + 0.7071*(X7.REAL+X7.IMAG)]*I
;W12=-0.7071-0.7071*I;
ADD ZREAL, REAL07, IMAG07; REAL=X7.REAL+X7.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X7.REAL+X7.IMAG)
SUB ZREAL, REAL07, IMAG07; REAL=X7.REAL-X7.IMAG
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X7.REAL-X7.IMAG)
ADD REAL07, REAL03, SUQ23; X3.REAL+SUQ23 + (X3.IMAG+SUP23)*I
ADD IMAG07, IMAG03, SUP23;
SUB REAL03, SUQ23; X3.REAL-SUQ23 + (X3.IMAG-SUP23)*I
SUB IMAG03, SUP23;
AF03X01:SUB ZREAL, REAL08, REAL12; X08=X08+X12; X12=X08-X12; W0
SUB ZIMAG, IMAG08, IMAG12;
ADD REAL08, REAL12;
ADD IMAG08, IMAG12;
LD REAL12, ZREAL;
LD IMAG12, ZIMAG;
SUB ZIMAG, IMAG10, REAL14; X10=X10+X14*(-I); X14=X10-X14*(-I);
SUB ZREAL, REAL10, IMAG14; X10=X10.REAL+X14.IMAG+(X10.IMAG-X14.REAL)*I;
ADD REAL10, IMAG14; X14=X10.REAL-X14.IMAG+(X10.IMAG+X14.REAL)*I;
ADD IMAG14, IMAG10, REAL14;
LD IMAG10, ZIMAG;
LD REAL14, ZREAL;
;X09=X09+W4*X13; X09.REAL + 0.7071*(X13.REAL+X13.IMAG)+[X09.IMAG + 0.7071*(X5.IMAG-X13.REAL)]*I
;X13=X09-W4*X13; X09.REAL - 0.7071*(X13.REAL+X13.IMAG)+[X09.IMAG - 0.7071*(X5.IMAG-X13.REAL)]*I
;W4=0.7071-0.7071*I;
SUB ZREAL, IMAG13, REAL13; ZREAL=X13.IMAG-X13.REAL
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X13.IMAG-X13.REAL)
ADD ZREAL, REAL13, IMAG13; ZREAL=X13.REAL+X13.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X13.REAL+X13.IMAG)
SUB REAL13, REAL09, SUP23; X09.REAL-SUP23 + (X09.IMAG-SUQ23)*I
SUB IMAG13, IMAG09, SUQ23;
ADD REAL09, SUP23; X09.REAL+SUP23 + (X09.IMAG+SUQ23)*I
ADD IMAG09, SUQ23;
;X11=X11+W12*X15; X11.REAL - 0.7071*(X15.REAL-X15.IMAG)+ [X11.IMAG - 0.7071*(X15.REAL+X15.IMAG)]*I
;X15=X11-W12*X15; X11.REAL + 0.7071*(X15.REAL-X15.IMAG)+ [X11.IMAG + 0.7071*(X15.REAL+X15.IMAG)]*I
;W12=-0.7071-0.7071*I;
ADD ZREAL, REAL15, IMAG15; REAL=X15.REAL+X15.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X15.REAL+X15.IMAG)
SUB ZREAL, REAL15, IMAG15; REAL=X15.REAL-X15.IMAG
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X15.REAL-X15.IMAG)
ADD REAL15, REAL11, SUQ23; X11.REAL+SUQ23 + (X11.IMAG+SUP23)*I
ADD IMAG15, IMAG11, SUP23;
SUB REAL11, SUQ23; X11.REAL-SUQ23 + (X11.IMAG-SUP23)*I
SUB IMAG11, SUP23;
AF03X02:SUB ZREAL, REAL16, REAL20; X16=X16+X20; X20=X16-X20; W0
SUB ZIMAG, IMAG16, IMAG20;
ADD REAL16, REAL20;
ADD IMAG16, IMAG20;
LD REAL20, ZREAL;
LD IMAG20, ZIMAG;
SUB ZIMAG, IMAG18, REAL22; X18=X18+X22*(-I); X22=X18-X22*(-I);
SUB ZREAL, REAL18, IMAG22; X18=X18.REAL+X22.IMAG+(X18.IMAG-X22.REAL)*I;
ADD REAL18, IMAG22; X22=X18.REAL-X22.IMAG+(X18.IMAG+X22.REAL)*I;
ADD IMAG22, IMAG18, REAL22;
LD IMAG18, ZIMAG;
LD REAL22, ZREAL;
;X17=X17+W4*X21; X17.REAL + 0.7071*(X21.REAL+X21.IMAG)+[X17.IMAG + 0.7071*(X21.IMAG-X21.REAL)]*I
;X21=X17-W4*X21; X17.REAL - 0.7071*(X21.REAL+X21.IMAG)+[X17.IMAG - 0.7071*(X21.IMAG-X21.REAL)]*I
;W4=0.7071-0.7071*I;
SUB ZREAL, IMAG21, REAL21; ZREAL=X21.IMAG-X21.REAL
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X21.IMAG-X21.REAL)
ADD ZREAL, REAL21, IMAG21; ZREAL=X21.REAL+X21.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X21.REAL+X21.IMAG)
SUB REAL21, REAL17, SUP23; X17.REAL-SUP23 + (X17.IMAG-SUQ23)*I
SUB IMAG21, IMAG17, SUQ23;
ADD REAL17, SUP23; X17.REAL+SUP23 + (X17.IMAG+SUQ23)*I
ADD IMAG17, SUQ23;
;X19=X19+W12*X23; X19.REAL - 0.7071*(X23.REAL-X23.IMAG)+ [X19.IMAG - 0.7071*(X23.REAL+X23.IMAG)]*I
;X23=X19-W12*X23; X19.REAL + 0.7071*(X23.REAL-X23.IMAG)+ [X19.IMAG + 0.7071*(X23.REAL+X23.IMAG)]*I
;W12=-0.7071-0.7071*I;
ADD ZREAL, REAL23, IMAG23; REAL=X23.REAL+X23.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X23.REAL+X23.IMAG)
SUB ZREAL, REAL23, IMAG23; REAL=X23.REAL-X23.IMAG
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X23.REAL-X23.IMAG)
ADD REAL23, REAL19, SUQ23; X19.REAL+SUQ23 + (X19.IMAG+SUP23)*I
ADD IMAG23, IMAG19, SUP23;
SUB REAL19, SUQ23; X19.REAL-SUQ23 + (X19.IMAG-SUP23)*I
SUB IMAG19, SUP23;
AF03X03:SUB ZREAL, REAL24, REAL28; X24=X24+X28; X28=X24-X28; W0
SUB ZIMAG, IMAG24, IMAG28;
ADD REAL24, REAL28;
ADD IMAG24, IMAG28;
LD REAL28, ZREAL;
LD IMAG28, ZIMAG;
SUB ZIMAG, IMAG26, REAL30; X26=X26+X30*(-I); X30=X26-X30*(-I);
SUB ZREAL, REAL26, IMAG30; X26=X26.REAL+X30.IMAG+(X26.IMAG-X30.REAL)*I;
ADD REAL26, IMAG30; X30=X26.REAL-X30.IMAG+(X26.IMAG+X30.REAL)*I;
ADD IMAG30, IMAG26, REAL30;
LD IMAG26, ZIMAG;
LD REAL30, ZREAL;
;X25=X25+W4*X29; X25.REAL + 0.7071*(X29.REAL+X29.IMAG)+[X25.IMAG + 0.7071*(X29.IMAG-X29.REAL)]*I
;X29=X25-W4*X29; X25.REAL - 0.7071*(X29.REAL+X29.IMAG)+[X25.IMAG - 0.7071*(X29.IMAG-X29.REAL)]*I
;W4=0.7071-0.7071*I;
SUB ZREAL, IMAG29, REAL29; ZREAL=X29.IMAG-X29.REAL
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X29.IMAG-X29.REAL)
ADD ZREAL, REAL29, IMAG29; ZREAL=X29.REAL+X29.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X29.REAL+X29.IMAG)
SUB REAL29, REAL25, SUP23; X25.REAL-SUP23 + (X25.IMAG-SUQ23)*I
SUB IMAG29, IMAG25, SUQ23;
ADD REAL25, SUP23; X25.REAL+SUP23 + (X25.IMAG+SUQ23)*I
ADD IMAG25, SUQ23;
;X27=X27+W12*X31; X27.REAL - 0.7071*(X31.REAL-X31.IMAG)+ [X27.IMAG - 0.7071*(X31.REAL+X31.IMAG)]*I
;X31=X27-W12*X31; X27.REAL + 0.7071*(X31.REAL-X31.IMAG)+ [X27.IMAG + 0.7071*(X31.REAL+X31.IMAG)]*I
;W12=-0.7071-0.7071*I;
ADD ZREAL, REAL31, IMAG31; REAL=X31.REAL+X31.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X31.REAL+X31.IMAG)
SUB ZREAL, REAL31, IMAG31; REAL=X31.REAL-X31.IMAG
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X31.REAL-X31.IMAG)
ADD REAL31, REAL27, SUQ23; X27.REAL+SUQ23 + (X27.IMAG+SUP23)*I
ADD IMAG31, IMAG27, SUP23;
SUB REAL27, SUQ23; X27.REAL-SUQ23 + (X27.IMAG-SUP23)*I
SUB IMAG27, SUP23;
;;;;;;;;;;;;;;;;第四次碟形处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AF04X00:SUB ZREAL, REAL00, REAL08; X00=X00+X08; X08=X00-X08; W0
SUB ZIMAG, IMAG00, IMAG08;
ADD REAL00, REAL08;
ADD IMAG00, IMAG08;
LD REAL08, ZREAL;
LD IMAG08, ZIMAG;
SUB ZIMAG, IMAG04, REAL12; X04=X04+X12*(-I); X12=X04-X12*(-I); W8
SUB ZREAL, REAL04, IMAG12; X04=X04.REAL+X12.IMAG+(X12.IMAG-X12.REAL)*I;
ADD REAL04, IMAG12; X12=X04.REAL-X12.IMAG+(X04.IMAG+X12.REAL)*I;
ADD IMAG12, IMAG04, REAL12;
LD IMAG04, ZIMAG;
LD REAL12, ZREAL;
LD COSVL, #23170; COSVL=23170/32768=0.7071=SINVL;
;X02=X02+W4*X10; X02.REAL + 0.7071*(X10.REAL+X10.IMAG)+[X02.IMAG + 0.7071*(X10.IMAG-X10.REAL)]*I
;X10=X02-W4*X10; X02.REAL - 0.7071*(X10.REAL+X10.IMAG)+[X02.IMAG - 0.7071*(X10.IMAG-X10.REAL)]*I
;W4=0.7071-0.7071*I;
SUB ZREAL, IMAG10, REAL10; ZREAL=X10.IMAG-X10.REAL
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X10.IMAG-X10.REAL)
ADD ZREAL, REAL10, IMAG10; ZREAL=X10.REAL+X10.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X10.REAL+X10.IMAG)
SUB REAL10, REAL02, SUP23; X02.REAL-SUP23 + (X02.IMAG-SUQ23)*I
SUB IMAG10, IMAG02, SUQ23;
ADD REAL02, SUP23; X02.REAL+SUP23 + (X02.IMAG+SUQ23)*I
ADD IMAG02, SUQ23;
;X06=X06+W12*X14; X06.REAL - 0.7071*(X14.REAL-X14.IMAG)+ [X06.IMAG - 0.7071*(X14.REAL+X14.IMAG)]*I
;X14=X06-W12*X14; X06.REAL + 0.7071*(X14.REAL-X14.IMAG)+ [X06.IMAG + 0.7071*(X14.REAL+X14.IMAG)]*I
;W12=-0.7071-0.7071*I;
ADD ZREAL, REAL14, IMAG14; REAL=X14.REAL+X14.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X14.REAL+X14.IMAG)
SUB ZREAL, REAL14, IMAG14; REAL=X14.REAL-X14.IMAG
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X14.REAL-X14.IMAG)
ADD REAL14, REAL06, SUQ23; X06.REAL+SUQ23 + (X06.IMAG+SUP23)*I
ADD IMAG14, IMAG06, SUP23;
SUB REAL06, SUQ23; X06.REAL-SUQ23 + (X06.IMAG-SUP23)*I
SUB IMAG06, SUP23;
LD COSVL, #30274; W2; COSVL= 30274/32768=COS(-11.25*2);
LD SINVL, #52996; W2; SINVL=-12540/32768=SIN(-11.25*2);
;X01=X01+W2*X09; X01.REAL +(COSVL*X09.REAL - SINVL*X09.IMAG)+[X01.IMAG +(COSVL*X09.IMAG + SINVL*X09.REAL)]*I
;X09=X01-W2*X09; X01.REAL -(COSVL*X09.REAL - SINVL*X09.IMAG)+[X01.IMAG -(COSVL*X09.IMAG + SINVL*X09.REAL)]*I
;W02= 30274/32768-12540/32768*I;
MUL SUX, REAL09, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG09, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X09.REAL - SINVL*X09.IMAG;
MUL SUX, IMAG09, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL09, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X09.IMAG + SINVL*X09.REAL;
SUB REAL09, REAL01, SUQ23; X01.REAL - SUQ23+
SUB IMAG09, IMAG01, SUP23; (X01.IMAG - SUP23)*I
ADD REAL01, SUQ23; X01.REAL + SUQ23+
ADD IMAG01, SUP23; (X01.IMAG + SUP23)*I
LD COSVL, #12540; W6; COSVL= 12540/32768=COS(-11.25*6);
LD SINVL, #35262; W6; SINVL=-30274/32768=SIN(-11.25*6);
;X03=X03+W6*X11; X03.REAL +(COSVL*X11.REAL - SINVL*X11.IMAG)+[X03.IMAG +(COSVL*X11.IMAG + SINVL*X11.REAL)]*I
;X11=X03-W6*X11; X03.REAL -(COSVL*X11.REAL - SINVL*X11.IMAG)+[X03.IMAG -(COSVL*X11.IMAG + SINVL*X11.REAL)]*I
;W06= 12540/32768-30274/32768*I;
MUL SUX, REAL11, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG11, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X11.REAL - SINVL*X11.IMAG;
MUL SUX, IMAG11, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL11, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X11.IMAG + SINVL*X11.REAL;
SUB REAL11, REAL03, SUQ23; X03.REAL - SUQ23+
SUB IMAG11, IMAG03, SUP23; (X03.IMAG - SUP23)*I
ADD REAL03, SUQ23; X03.REAL + SUQ23+
ADD IMAG03, SUP23; (X03.IMAG + SUP23)*I
LD COSVL, #52996; W10; COSVL=-12540/32768=COS(11.25*10);
LD SINVL, #35262; W10; SINVL=-30274/32768=SIN(11.25*10);
;X05=X05+W10*X13; X05.REAL +(COSVL*X13.REAL - SINVL*X13.IMAG)+[X05.IMAG +(COSVL*X13.IMAG + SINVL*X13.REAL)]*I
;X13=X05-W10*X13; X05.REAL -(COSVL*X13.REAL - SINVL*X13.IMAG)+[X05.IMAG -(COSVL*X13.IMAG + SINVL*X13.REAL)]*I
;W10=-12540/32768-30274/32768*I;
MUL SUX, REAL13, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG13, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X13.REAL - SINVL*X13.IMAG;
MUL SUX, IMAG13, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL13, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X13.IMAG + SINVL*X13.REAL;
SUB REAL13, REAL05, SUQ23; X05.REAL - SUQ23+
SUB IMAG13, IMAG05, SUP23; (X05.IMAG - SUP23)*I
ADD REAL05, SUQ23; X05.REAL + SUQ23+
ADD IMAG05, SUP23; (X05.IMAG + SUP23)*I
LD COSVL, #35262; W14; COSVL=-30274/32768=COS(11.25*14);
LD SINVL, #52996; W14; SINVL=-12540/32768=SIN(11.25*14);
;X07=X07+W14*X15; X07.REAL +(COSVL*X15.REAL - SINVL*X15.IMAG)+[X07.IMAG +(COSVL*X15.IMAG + SINVL*X15.REAL)]*I
;X15=X07-W14*X15; X07.REAL -(COSVL*X15.REAL - SINVL*X15.IMAG)+[X07.IMAG -(COSVL*X15.IMAG + SINVL*X15.REAL)]*I
;W14=-12540/32768-30274/32768*I;
MUL SUX, REAL15, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG15, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X15.REAL - SINVL*X15.IMAG;
MUL SUX, IMAG15, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL15, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X15.IMAG + SINVL*X15.REAL;
SUB REAL15, REAL07, SUQ23; X07.REAL - SUQ23+
SUB IMAG15, IMAG07, SUP23; (X07.IMAG - SUP23)*I
ADD REAL07, SUQ23; X07.REAL + SUQ23+
ADD IMAG07, SUP23; (X07.IMAG + SUP23)*I
AF04X01:SUB ZREAL, REAL16, REAL24; X16=X16+X24; X24=X16-X24; W0
SUB ZIMAG, IMAG16, IMAG24;
ADD REAL16, REAL24;
ADD IMAG16, IMAG24;
LD REAL24, ZREAL;
LD IMAG24, ZIMAG;
SUB ZIMAG, IMAG20, REAL28; X20=X20+X28*(-I); X28=X20-X28*(-I); W8
SUB ZREAL, REAL20, IMAG28; X20=X20.REAL+X28.IMAG+(X28.IMAG-X28.REAL)*I;
ADD REAL20, IMAG28; X28=X20.REAL-X28.IMAG+(X20.IMAG+X28.REAL)*I;
ADD IMAG28, IMAG20, REAL28;
LD IMAG20, ZIMAG;
LD REAL28, ZREAL;
LD COSVL, #23170; COSVL=23170/32768=0.7071=SINVL;
;X18=X18+W4*X26; X18.REAL + 0.7071*(X26.REAL+X26.IMAG)+[X18.IMAG + 0.7071*(X26.IMAG-X26.REAL)]*I
;X26=X18-W4*X26; X18.REAL - 0.7071*(X26.REAL+X26.IMAG)+[X18.IMAG - 0.7071*(X26.IMAG-X26.REAL)]*I
;W4=0.7071-0.7071*I;
SUB ZREAL, IMAG26, REAL26; ZREAL=X26.IMAG-X26.REAL
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X26.IMAG-X26.REAL)
ADD ZREAL, REAL26, IMAG26; ZREAL=X26.REAL+X26.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X26.REAL+X26.IMAG)
SUB REAL26, REAL18, SUP23; X18.REAL-SUP23 + (X18.IMAG-SUQ23)*I
SUB IMAG26, IMAG18, SUQ23;
ADD REAL18, SUP23; X18.REAL+SUP23 + (X18.IMAG+SUQ23)*I
ADD IMAG18, SUQ23;
;X22=X22+W12*X30; X22.REAL - 0.7071*(X30.REAL-X30.IMAG)+ [X22.IMAG - 0.7071*(X30.REAL+X30.IMAG)]*I
;X30=X22-W12*X30; X22.REAL + 0.7071*(X30.REAL-X30.IMAG)+ [X22.IMAG + 0.7071*(X30.REAL+X30.IMAG)]*I
;W12=-0.7071-0.7071*I;
ADD ZREAL, REAL30, IMAG30; REAL=X30.REAL+X30.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X30.REAL+X30.IMAG)
SUB ZREAL, REAL30, IMAG30; REAL=X30.REAL-X30.IMAG
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X30.REAL-X30.IMAG)
ADD REAL30, REAL22, SUQ23; X22.REAL+SUQ23 + (X22.IMAG+SUP23)*I
ADD IMAG30, IMAG22, SUP23;
SUB REAL22, SUQ23; X22.REAL-SUQ23 + (X22.IMAG-SUP23)*I
SUB IMAG22, SUP23;
LD COSVL, #30274; W2; COSVL= 30274/32768=COS(-11.25*2);
LD SINVL, #52996; W2; SINVL=-12540/32768=SIN(-11.25*2);
;X17=X17+W2*X25; X17.REAL +(COSVL*X25.REAL - SINVL*X25.IMAG)+[X17.IMAG +(COSVL*X25.IMAG + SINVL*X25.REAL)]*I
;X25=X17-W2*X25; X17.REAL -(COSVL*X25.REAL - SINVL*X25.IMAG)+[X17.IMAG -(COSVL*X25.IMAG + SINVL*X25.REAL)]*I
;W02= 30274/32768-12540/32768*I;
MUL SUX, REAL25, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG25, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X25.REAL - SINVL*X25.IMAG;
MUL SUX, IMAG25, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL25, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X25.IMAG + SINVL*X25.REAL;
SUB REAL25, REAL17, SUQ23; X17.REAL - SUQ23+
SUB IMAG25, IMAG17, SUP23; (X17.IMAG - SUP23)*I
ADD REAL17, SUQ23; X17.REAL + SUQ23+
ADD IMAG17, SUP23; (X17.IMAG + SUP23)*I
LD COSVL, #12540; W6; COSVL= 12540/32768=COS(-11.25*6);
LD SINVL, #35262; W6; SINVL=-30274/32768=SIN(-11.25*6);
;X19=X19+W6*X27; X19.REAL +(COSVL*X27.REAL - SINVL*X27.IMAG)+[X19.IMAG +(COSVL*X27.IMAG + SINVL*X27.REAL)]*I
;X27=X19-W6*X27; X19.REAL -(COSVL*X27.REAL - SINVL*X27.IMAG)+[X19.IMAG -(COSVL*X27.IMAG + SINVL*X27.REAL)]*I
;W06= 12540/32768-30274/32768*I;
MUL SUX, REAL27, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG27, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X27.REAL - SINVL*X27.IMAG;
MUL SUX, IMAG27, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL27, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X27.IMAG + SINVL*X27.REAL;
SUB REAL27, REAL19, SUQ23; X19.REAL - SUQ23+
SUB IMAG27, IMAG19, SUP23; (X19.IMAG - SUP23)*I
ADD REAL19, SUQ23; X19.REAL + SUQ23+
ADD IMAG19, SUP23; (X19.IMAG + SUP23)*I
LD COSVL, #52996; W10; COSVL=-12540/32768=COS(11.25*10);
LD SINVL, #35262; W10; SINVL=-30274/32768=SIN(11.25*10);
;X21=X21+W10*X29; X21.REAL +(COSVL*X29.REAL - SINVL*X29.IMAG)+[X21.IMAG +(COSVL*X29.IMAG + SINVL*X29.REAL)]*I
;X29=X21-W10*X29; X21.REAL -(COSVL*X29.REAL - SINVL*X29.IMAG)+[X21.IMAG -(COSVL*X29.IMAG + SINVL*X29.REAL)]*I
;W10=-12540/32768-30274/32768*I;
MUL SUX, REAL29, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG29, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X29.REAL - SINVL*X29.IMAG;
MUL SUX, IMAG29, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL29, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X29.IMAG + SINVL*X29.REAL;
SUB REAL29, REAL21, SUQ23; X21.REAL - SUQ23+
SUB IMAG29, IMAG21, SUP23; (X21.IMAG - SUP23)*I
ADD REAL21, SUQ23; X21.REAL + SUQ23+
ADD IMAG21, SUP23; (X21.IMAG + SUP23)*I
LD COSVL, #35262; W14; COSVL=-30274/32768=COS(11.25*14);
LD SINVL, #52996; W14; SINVL=-12540/32768=SIN(11.25*14);
;X23=X23+W14*X31; X23.REAL +(COSVL*X31.REAL - SINVL*X31.IMAG)+[X23.IMAG +(COSVL*X31.IMAG + SINVL*X31.REAL)]*I
;X31=X23-W14*X31; X23.REAL -(COSVL*X31.REAL - SINVL*X31.IMAG)+[X23.IMAG -(COSVL*X31.IMAG + SINVL*X31.REAL)]*I
;W14=-12540/32768-30274/32768*I;
MUL SUX, REAL31, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG31, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X31.REAL - SINVL*X31.IMAG;
MUL SUX, IMAG31, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL31, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X31.IMAG + SINVL*X31.REAL;
SUB REAL31, REAL23, SUQ23; X23.REAL - SUQ23+
SUB IMAG31, IMAG23, SUP23; (X23.IMAG - SUP23)*I
ADD REAL23, SUQ23; X23.REAL + SUQ23+
ADD IMAG23, SUP23; (X23.IMAG + SUP23)*I
;;;;;;;;;;;;;;;;第五次碟形处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AF05X00:SHRA IMAG00, #02H; X00=X00+X16; X16=X00-X16; W0
SHRA IMAG16, #02H;
;ADD REAL00, REAL16;
ADD IMAG00, IMAG16;
ADD REAL08, IMAG24; X08=X08+X24*(-I); X24=X08-X24*(-I);W8
SUB IMAG08, REAL24; X08=X08.REAL+X24.IMAG+(X08.IMAG-X24.REAL)*I;
LD COSVL, #23170; COSVL=23170/32768=0.7071=SINVL;
;X04=X04+W4*X20; X04.REAL + 0.7071*(X20.REAL+X20.IMAG)+[X04.IMAG + 0.7071*(X20.IMAG-X20.REAL)]*I
;X20=X04-W4*X20; X04.REAL - 0.7071*(X20.REAL+X20.IMAG)+[X04.IMAG - 0.7071*(X20.IMAG-X20.REAL)]*I
;W4=0.7071-0.7071*I;
SUB ZREAL, IMAG20, REAL20; ZREAL=X20.IMAG-X20.REAL
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X20.IMAG-X20.REAL)
ADD ZREAL, REAL20, IMAG20; ZREAL=X20.REAL+X20.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X20.REAL+X20.IMAG)
ADD REAL04, SUP23; X04.REAL+SUP23 + (X04.IMAG+SUQ23)*I
ADD IMAG04, SUQ23;
;X12=X12+W12*X28; X12.REAL - 0.7071*(X28.REAL-X28.IMAG)+ [X12.IMAG - 0.7071*(X28.REAL+X28.IMAG)]*I
;X28=X12-W12*X28; X12.REAL + 0.7071*(X28.REAL-X28.IMAG)+ [X12.IMAG + 0.7071*(X28.REAL+X28.IMAG)]*I
;W12=-0.7071-0.7071*I;
ADD ZREAL, REAL28, IMAG28; REAL=X28.REAL+X28.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X28.REAL+X28.IMAG)
SUB ZREAL, REAL28, IMAG28; REAL=X28.REAL-X28.IMAG
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X28.REAL-X28.IMAG)
SUB REAL12, SUQ23; X12.REAL-SUQ23 + (X12.IMAG-SUP23)*I
SUB IMAG12, SUP23;
LD COSVL, #30274; W2; COSVL= 30274/32768=COS(-11.25*2);
LD SINVL, #52996; W2; SINVL=-12540/32768=SIN(-11.25*2);
;X02=X02+W2*X18; X02.REAL +(COSVL*X18.REAL - SINVL*X18.IMAG)+[X02.IMAG +(COSVL*X18.IMAG + SINVL*X18.REAL)]*I
;X18=X02-W2*X18; X02.REAL -(COSVL*X18.REAL - SINVL*X18.IMAG)+[X02.IMAG -(COSVL*X18.IMAG + SINVL*X18.REAL)]*I
;W02= 30274/32768-12540/32768*I;
MUL SUX, REAL18, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG18, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X18.REAL - SINVL*X18.IMAG;
MUL SUX, IMAG18, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL18, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X18.IMAG + SINVL*X18.REAL;
ADD REAL02, SUQ23; X02.REAL + SUQ23+
ADD IMAG02, SUP23; (X02.IMAG + SUP23)*I
LD COSVL, #12540; W6; COSVL= 12540/32768=COS(-11.25*6);
LD SINVL, #35262; W6; SINVL=-30274/32768=SIN(-11.25*6);
;X06=X06+W6*X22; X06.REAL +(COSVL*X22.REAL - SINVL*X22.IMAG)+[X06.IMAG +(COSVL*X22.IMAG + SINVL*X22.REAL)]*I
;X22=X06-W6*X22; X06.REAL -(COSVL*X22.REAL - SINVL*X22.IMAG)+[X06.IMAG -(COSVL*X22.IMAG + SINVL*X22.REAL)]*I
;W06= 12540/32768-30274/32768*I;
MUL SUX, REAL22, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG22, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X22.REAL - SINVL*X22.IMAG;
MUL SUX, IMAG22, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL22, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X22.IMAG + SINVL*X22.REAL;
ADD REAL06, SUQ23; X06.REAL + SUQ23+
ADD IMAG06, SUP23; (X06.IMAG + SUP23)*I
LD COSVL, #52996; W10; COSVL=-12540/32768=COS(11.25*10);
LD SINVL, #35262; W10; SINVL=-30274/32768=SIN(11.25*10);
;X10=X10+W10*X26; X10.REAL +(COSVL*X26.REAL - SINVL*X26.IMAG)+[X10.IMAG +(COSVL*X26.IMAG + SINVL*X26.REAL)]*I
;X26=X10-W10*X26; X10.REAL -(COSVL*X26.REAL - SINVL*X26.IMAG)+[X10.IMAG -(COSVL*X26.IMAG + SINVL*X26.REAL)]*I
;W10=-12540/32768-30274/32768*I;
MUL SUX, REAL26, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG26, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X26.REAL - SINVL*X26.IMAG;
MUL SUX, IMAG26, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL26, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X26.IMAG + SINVL*X26.REAL;
ADD REAL10, SUQ23; X10.REAL + SUQ23+
ADD IMAG10, SUP23; (X10.IMAG + SUP23)*I
LD COSVL, #32138; W01 COSVL= 32138/32768=COS(-11.25*1);
LD SINVL, #59143; W01 SINVL=-06393/32768=SIN(-11.25*1);
;X01=X01+W1*X17; X01.REAL +(COSVL*X17.REAL - SINVL*X17.IMAG)+[X01.IMAG +(COSVL*X17.IMAG + SINVL*X17.REAL)]*I
;X17=X01-W1*X17; X01.REAL -(COSVL*X17.REAL - SINVL*X17.IMAG)+[X01.IMAG -(COSVL*X17.IMAG + SINVL*X17.REAL)]*I
;W01=-32138/32768-06393/32768*I;
MUL SUX, REAL17, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG17, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X17.REAL - SINVL*X17.IMAG;
MUL SUX, IMAG17, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL17, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X17.IMAG + SINVL*X17.REAL;
ADD REAL01, SUQ23; X01.REAL + SUQ23+
ADD IMAG01, SUP23; (X01.IMAG + SUP23)*I
LD COSVL, #27246; W03 COSVL= 27246/32768=COS(11.25*3);
LD SINVL, #47331; W03 SINVL=-18205/32768=SIN(11.25*3);
;X03=X03+W3*X19; X03.REAL +(COSVL*X19.REAL - SINVL*X19.IMAG)+[X03.IMAG +(COSVL*X19.IMAG + SINVL*X19.REAL)]*I
;X19=X03-W3*X19; X03.REAL -(COSVL*X19.REAL - SINVL*X19.IMAG)+[X03.IMAG -(COSVL*X19.IMAG + SINVL*X19.REAL)]*I
;W03=27246/32768-18205/32768*I;
MUL SUX, REAL19, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG19, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X19.REAL - SINVL*X19.IMAG;
MUL SUX, IMAG19, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL19, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X19.IMAG + SINVL*X19.REAL;
ADD REAL03, SUQ23; X03.REAL + SUQ23+
ADD IMAG03, SUP23; (X03.IMAG + SUP23)*I
LD COSVL, #18205; W05 COSVL= 18205/32768=COS(11.25*5);
LD SINVL, #38290; W05 SINVL=-27246/32768=SIN(11.25*5);
;X05=X05+W3*X21; X05.REAL +(COSVL*X21.REAL - SINVL*X21.IMAG)+[X05.IMAG +(COSVL*X21.IMAG + SINVL*X21.REAL)]*I
;X21=X05-W3*X21; X05.REAL -(COSVL*X21.REAL - SINVL*X21.IMAG)+[X05.IMAG -(COSVL*X21.IMAG + SINVL*X21.REAL)]*I
;W05=27246/32768-18205/32768*I;
MUL SUX, REAL21, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG21, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X21.REAL - SINVL*X21.IMAG;
MUL SUX, IMAG21, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL21, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X21.IMAG + SINVL*X21.REAL;
ADD REAL05, SUQ23; X05.REAL + SUQ23+
ADD IMAG05, SUP23; (X05.IMAG + SUP23)*I
LD COSVL, #06393; W07 COSVL= 06393/32768=COS(-11.25*7);
LD SINVL, #33398; W07 SINVL=-32138/32768=SIN(-11.25*7);
;X07=X07+W3*X23; X07.REAL +(COSVL*X23.REAL - SINVL*X23.IMAG)+[X07.IMAG +(COSVL*X23.IMAG + SINVL*X23.REAL)]*I
;X23=X07-W3*X23; X07.REAL -(COSVL*X23.REAL - SINVL*X23.IMAG)+[X07.IMAG -(COSVL*X23.IMAG + SINVL*X23.REAL)]*I
;W07=06393/32768-32138/32768*I;
MUL SUX, REAL23, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG23, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X23.REAL - SINVL*X23.IMAG;
MUL SUX, IMAG23, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL23, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X23.IMAG + SINVL*X23.REAL;
ADD REAL07, SUQ23; X07.REAL + SUQ23+
ADD IMAG07, SUP23; (X07.IMAG + SUP23)*I
LD COSVL, #59143; W09 COSVL=-6393/32768=COS(-11.25*9);
LD SINVL, #33398; W09 SINVL=-32138/32768=SIN(-11.25*9);
;X09=X09+W3*X25; X09.REAL +(COSVL*X25.REAL - SINVL*X25.IMAG)+[X09.IMAG +(COSVL*X25.IMAG + SINVL*X25.REAL)]*I
;X25=X09-W3*X25; X09.REAL -(COSVL*X25.REAL - SINVL*X25.IMAG)+[X09.IMAG -(COSVL*X25.IMAG + SINVL*X25.REAL)]*I
;W09=-6393/32768-32138/32768*I;
MUL SUX, REAL25, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG25, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X25.REAL - SINVL*X25.IMAG;
MUL SUX, IMAG25, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL25, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X25.IMAG + SINVL*X25.REAL;
ADD REAL09, SUQ23; X09.REAL + SUQ23+
ADD IMAG09, SUP23; (X09.IMAG + SUP23)*I
LD COSVL, #47331; W11 COSVL=-18205/32768=COS(11.25*11);
LD SINVL, #38290; W11 SINVL=-27246/32768=SIN(11.25*11);
;X11=X11+W3*X27; X11.REAL +(COSVL*X27.REAL - SINVL*X27.IMAG)+[X11.IMAG +(COSVL*X27.IMAG + SINVL*X27.REAL)]*I
;X27=X11-W3*X27; X11.REAL -(COSVL*X27.REAL - SINVL*X27.IMAG)+[X11.IMAG -(COSVL*X27.IMAG + SINVL*X27.REAL)]*I
;W11=-18205/32768-27246/32768*I;
MUL SUX, REAL27, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG27, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X27.REAL - SINVL*X27.IMAG;
MUL SUX, IMAG27, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL27, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X27.IMAG + SINVL*X27.REAL;
ADD REAL11, SUQ23; X11.REAL + SUQ23+
ADD IMAG11, SUP23; (X11.IMAG + SUP23)*I
LD COSVL, #38290; W13 COSVL=-27246/32768=COS(11.25*13);
LD SINVL, #47331; W13 SINVL=-18205/32768=SIN(11.25*13);
;X13=X13+W3*X29; X13.REAL +(COSVL*X29.REAL - SINVL*X29.IMAG)+[X13.IMAG +(COSVL*X29.IMAG + SINVL*X29.REAL)]*I
;X29=X13-W3*X29; X13.REAL -(COSVL*X29.REAL - SINVL*X29.IMAG)+[X13.IMAG -(COSVL*X29.IMAG + SINVL*X29.REAL)]*I
;W13=-18205/32768-27246/32768*I;
MUL SUX, REAL29, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG29, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X29.REAL - SINVL*X29.IMAG;
MUL SUX, IMAG29, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL29, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X29.IMAG + SINVL*X29.REAL;
ADD REAL13, SUQ23; X13.REAL + SUQ23+
ADD IMAG13, SUP23; (X13.IMAG + SUP23)*I
;;;;;;;;;;;;;;;;;;; 直流分量 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SHRA IMAG00, #002H;
SUB IMAG00, DCZO; 零点
MUL SUY, IMAG00, DCSK; 斜率
DIV SUY, #10000;
LD REAL00, SUY01; REAL00=[(FFT_IMAGE_VALUE/4)-DCZO]*DCSK/10000;
;;;;;;;;;;;;;;;;;;; 基波谐波分量 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLR SUY01;
CLR SUY23;
CLR WORK;
CLR XBSUM01;
CLR XBSUM23;
LD SUN01, REAL01; 基波分量
LD SUN23, IMAG01;
XBFX00: LD ZREAL, SUN01; ZREAL=基波实部
LD ZIMAG, SUN23; ZIMAG=基波虚部
CLR SUP01;
JBC ZREALH, 07H, XN000;if ZREAL<0 then ZREAL=-ZREAL;
NEG ZREAL;
XN000: JBC ZIMAGH, 07H, XN001;if ZREAL<0 then ZREAL=-ZREAL;
NEG ZIMAG;
XN001: CMP ZIMAG, ZREAL; tg*=IMAG/REAL;
JLE XN002; IF IMAG<=REAL THEN JUMP XN002;
XCH ZREAL, ZIMAG;
LD SUP01, #0FFFFH; 45度标志
XN002: LD SUX23, ZIMAG; IMAG<=REAL;
CLR SUX01;
CMP SUX23, R0;
JE XDIV;
LD SUX01, #0FFFFH;
DEC SUX23; SUX=(IMAG*65536)-1;
SHRAL SUX, #01H; SUX=SUX/2
XDIV: CMP R0, ZREAL;
JNE XN003;
LD SUX01, #07FFFH; IF ZREAL=0 THEN SUX01=07FFFH=TANVL
SJMP XN004;
XN003: CMP ZREAL, #01H;
JE XN004;
CMP ZREAL, #02H;
JNE XNMMM;
SHRAL SUX, #01H;
SJMP XN004;
XNMMM: DIV SUX, ZREAL;
XN004: LD TANVL, SUX01;
;;;;;;;;;;;;; 由TANVL对分法查找角度 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLR DCZO; FIRST=0;
LD DCSK, #4500; LAST=4500;
XN005: ADD SUQ01, DCZO, DCSK;
SHR SUQ01, #01H; SUQ01=(FIRST+LAST)/2;
LD SUQ23, SUQ01;
SHL SUQ23, #01H;
LD ADDRESSL, #lsw TAN;
LD ADDRESSH, #msw TAN;
ADD ADDRESSL, SUQ23;
ADDC ADDRESSH, R0;
ELD SUX01, [ADDRESS]; TAN[] ;SUX01=TAN(SUQ23);
CMP DCZO, DCSK;
JGE XN007; IF FIRST>=LAST THEN JUMP XN007;
CMP DCZO, SUQ01;
JE XN007;
CMP DCSK, SUQ01;
JE XN007;
SUB SUQ23, DCSK, DCZO;
CMP SUQ23, #01H;
JLE XN007;
CMP TANVL, SUX01;
JE XN007;
JGT XN006;
LD DCSK, SUQ01; ;DCSK=SUQ01=(FIRST+LAST)/2;
SJMP XN005;
XN006: LD DCZO, SUQ01; ;DCZO=SUQ01=(FIRST+LAST)/2;
SJMP XN005;
XN007: LD ARCVL, SUQ01;
SHL ARCVL, #01H;
LD ADDRESSL, #lsw SIN;
LD ADDRESSH, #msw SIN;
ADD ADDRESSL, ARCVL;
ADDC ADDRESSH, R0;
ELD SINVL, [ADDRESS];SIN[]
LD DCZO, #18000;
SUB DCZO, ARCVL;
LD ADDRESSL, #lsw SIN;
LD ADDRESSH, #msw SIN;
ADD ADDRESSL, DCZO;
ADDC ADDRESSH, R0;
ELD COSVL, [ADDRESS]; SIN[]
MUL SUX, ZIMAG, SINVL;
MUL SUQ, ZREAL, COSVL;
ADD SUX01, SUQ01;
ADDC SUX23, R0;
ADD SUX23, SUQ23; 模长=AD值=幅值*8
MUL SUQ, SUX23, ADWINDOWS;5DC9H=(10000/1706)*32768/8;
SHLL SUQ, #01H;
LD SUX23, SUQ23;
MUL SUQ, SUX23, TEMPERATURE;
DIV SUQ, #10000;
LD SUX23, SUQ01;
LD WTMP, SUX23;
ADD XBSUM01, SUX23;
ADDC XBSUM23, R0;
MUL SUQ, SUX23, SUX23;
ADD SUY01, SUQ01;
ADDC SUY23, R0;
ADD SUY23, SUQ23;
JBC SUP01, 0H, XN008;
LD SUP01, #18000;
SUB SUP01, ARCVL;
LD ARCVL, SUP01;
XN008: SHR ARCVL, #01H;
CMP SUN01, R0;
JGE A01OR04;
A02OR03:CMP SUN23, R0;
JGE A0002;
A0003: LD SUX01, #47536; 47536=-18000;
ADD SUX01, ARCVL;
SJMP SQ000;
A0002: LD SUX01, #18000;
SUB SUX01, ARCVL;
SJMP SQ000;
A01OR04:CMP SUN23, R0;
JGE A0001;
A0004: LD SUX01, ARCVL;
NEG SUX01;
SJMP SQ000;
A0001: LD SUX01, ARCVL;
SQ000: LD ADDRESSL, #lsw JXNST;
LD ADDRESSH, #msw JXNST;
ADD ADDRESSL, WORK;
ADDC ADDRESSH, R0;
ELD ADRL, [ADDRESS];
ELD ADRH, 2[ADDRESS];
EBR [ADR];
XCASE02:LD WORK, #04;
LD SUN01, REAL02; 二次谐波
LD SUN23, IMAG02;
LD REAL01, WTMP; 基波模长
LD IMAG01, SUX01; 基波角度
EJMP XBFX00;
XCASE03:LD WORK, #08;
LD SUN01, REAL03; 三次谐波
LD SUN23, IMAG03;
LD REAL02, WTMP; 二次谐波模长
LD IMAG02, SUX01; 二次谐波角度
EJMP XBFX00;
XCASE04:LD WORK, #12;
LD SUN01, REAL04; 四次谐波
LD SUN23, IMAG04;
LD REAL03, WTMP; 三次谐波模长
LD IMAG03, SUX01; 三次谐波角度
EJMP XBFX00;
XCASE05:LD WORK, #16;
LD SUN01, REAL05; 五次谐波
LD SUN23, IMAG05;
LD REAL04, WTMP; 四次谐波模长
LD IMAG04, SUX01; 四次谐波角度
EJMP XBFX00;
XCASE06:LD WORK, #20;
LD SUN01, REAL06; 六次谐波
LD SUN23, IMAG06;
LD REAL05, WTMP; 五次谐波模长
LD IMAG05, SUX01; 五次谐波角度
EJMP XBFX00;
XCASE07:LD WORK, #24;
LD SUN01, REAL07; 七次谐波
LD SUN23, IMAG07;
LD REAL06, WTMP; 六次谐波模长
LD IMAG06, SUX01; 六次谐波角度
EJMP XBFX00;
XCASE08:LD WORK, #28;
LD SUN01, REAL08; 八次谐波
LD SUN23, IMAG08;
LD REAL07, WTMP; 七次谐波模长
LD IMAG07, SUX01; 七次谐波角度
EJMP XBFX00;
XCASE09:LD WORK, #32;
LD SUN01, REAL09; 九次谐波
LD SUN23, IMAG09;
LD REAL08, WTMP; 八次谐波模长
LD IMAG08, SUX01; 八次谐波角度
EJMP XBFX00;
XCASE10:LD WORK, #36;
LD SUN01, REAL10; 十次谐波
LD SUN23, IMAG10;
LD REAL09, WTMP; 九次谐波模长
LD IMAG09, SUX01; 九次谐波角度
EJMP XBFX00;
XCASE11:LD WORK, #40;
LD SUN01, REAL11; 11次谐波
LD SUN23, IMAG11;
LD REAL10, WTMP; 十次谐波模长
LD IMAG10, SUX01; 十次谐波角度
EJMP XBFX00;
XCASE12:LD WORK, #44;
LD SUN01, REAL12; 12次谐波
LD SUN23, IMAG12;
LD REAL11, WTMP; 11次谐波模长
LD IMAG11, SUX01; 11次谐波角度
EJMP XBFX00;
XCASE13:LD WORK, #48;
LD SUN01, REAL13; 13次谐波
LD SUN23, IMAG13;
LD REAL12, WTMP; 12次谐波模长
LD IMAG12, SUX01; 12次谐波角度
EJMP XBFX00;
XCASE14:LD REAL13, WTMP; 13次谐波模长
LD IMAG13, SUX01; 13次谐波角度
SJMP ZSQT;
JXNST: DCL XCASE02;
DCL XCASE03;
DCL XCASE04;
DCL XCASE05;
DCL XCASE06;
DCL XCASE07;
DCL XCASE08;
DCL XCASE09;
DCL XCASE10;
DCL XCASE11;
DCL XCASE12;
DCL XCASE13;
DCL XCASE14;
ZSQT: LD SUN01, SUY01; TANVL COSVL SINVL
LD SUN23, SUY23;
CMP SUY23, R0;
JNE ZSQRT;
CMP SUY01, R0;
JNE ZSQRT;
ST R0, SUX23;
EJMP SQEEE;
ZSQRT: CLR TANVL;
R7BIT: JBC SUY3, 7H, R6BIT;
SHRL SUY, #01H;
DECB TANVL;
R6BIT: JBC SUY3, 6H, R5BIT;
SHRL SUY, #01H;
DECB TANVL;
R5BIT: JBC SUY3, 5H, R4BIT;
RSBN: JBC TANVL, 0H, SQRT;
SHRL SUY, #01H;
DECB TANVL;
SJMP SQRT;
R4BIT: JBC SUY3, 4H, SHIFT;
RZBN: JBC TANVL, 0H, SQRT;
SHLL SUY, #01H;
INCB TANVL;
SJMP SQRT;
SHIFT: SHLL SUY, #01H;
INCB TANVL;
SJMP R7BIT;
SQRT: LD DCSK, #1000H;
SUB DCZO, SUY23, DCSK;
SHR DCZO, #07H;
AND DCZO, #0FFFEH;
LD ADDRESSL, #lsw YY0;
LD ADDRESSH, #msw YY0;
ADD ADDRESSL, DCZO;
ADDC ADDRESSH, R0;
ELD ZREAL, [ADDRESS];
LD ADDRESSL, #lsw KK0;
LD ADDRESSH, #msw KK0;
ADD ADDRESSL, DCZO;
ADDC ADDRESSH, R0;
ELD SUX01, [ADDRESS];
LD SUX23, #0001H;
LD ADDRESSL, #lsw XX0;
LD ADDRESSH, #msw XX0;
ADD ADDRESSL, DCZO;
ADDC ADDRESSH, R0;
ELD ZIMAG, [ADDRESS];
SUB SUY23, ZIMAG; SUP,SUQ=SUX*SUY
MULU SUP, SUX23, SUY23;
MULU SUQ, SUX01, SUY01;
MULU COSVL, SUX23, SUY01;
MULU WORK, SUX01, SUY23;
; LDB WATCHDOG, #01EH;
; LDB WATCHDOG, #0E1H;
CLR SUX01;
CLR SUY01;
ADD SUQ23, COSVL;
ADDC SUX01, R0;
ADD SUQ23, WORK;
ADDC SUX01, R0;
ADD SUP01, SUX01;
ADDC SUY01, R0;
ADD SUP01, SINVL;
ADDC SUY01, R0;
ADD SUP01, WTMP;
ADDC SUY01, R0;
ADD SUP23, SUY01;
LD SUX01, SUQ23;
LD SUX23, SUP01;
ADD SUX23, ZREAL;
SHRA TANVL, #01H;
CMP TANVL, R0;
JGE ZOOM;
SHORT: NEG TANVL;
SHLL SUX, TANVL;
SJMP SQEEE;
ZOOM: SHRL SUX, TANVL;
SQEEE: LD REAL14, SUX23; 有效值 XT014=1--13U
LD ZREAL, REAL01;
MUL SUX, ZREAL, ZREAL;
SUB SUN01, SUX01;
SUBC SUN23, SUX23;
CMP SUN23, R0;
JGE SSSSS;
CLR SUN23;
CLR SUN01;
SSSSS: LD SUY23, SUN23;
LD SUY01, SUN01;
XBZSQT: CMP SUY23, R0;
JNE XBROOT;
CMP SUY01, R0;
JNE XBROOT;
ST R0, SUX23;
EJMP SQQXB;
XBROOT: CLR TANVL;
R7BXB: JBC SUY3, 7H, R6BXB;
SHRL SUY, #01H;
DECB TANVL;
R6BXB: JBC SUY3, 6H, R5BXB;
SHRL SUY, #01H;
DECB TANVL;
R5BXB: JBC SUY3, 5H, R4BXB;
RSBNX: JBC TANVL, 0H, SQRTX;
SHRL SUY, #01H;
DECB TANVL;
SJMP SQRTX;
R4BXB: JBC SUY3, 4H, SHIFTX;
RZBNX: JBC TANVL, 0H, SQRTX;
SHLL SUY, #01H;
INCB TANVL;
SJMP SQRTX;
SHIFTX: SHLL SUY, #01H;
INCB TANVL;
SJMP R7BXB;
SQRTX: LD DCSK, #1000H;
SUB DCZO, SUY23, DCSK;
SHR DCZO, #07H;
AND DCZO, #0FFFEH;
LD ADDRESSL, #lsw YY0;
LD ADDRESSH, #msw YY0;
ADD ADDRESSL, DCZO;
ADDC ADDRESSH, R0;
ELD ZREAL, [ADDRESS];
LD ADDRESSL, #lsw KK0;
LD ADDRESSH, #msw KK0;
ADD ADDRESSL, DCZO;
ADDC ADDRESSH, R0;
ELD SUX01, [ADDRESS];
LD SUX23, #0001H;
LD ADDRESSL, #lsw XX0;
LD ADDRESSH, #msw XX0;
ADD ADDRESSL, DCZO;
ADDC ADDRESSH, R0;
ELD ZIMAG, [ADDRESS];
SUB SUY23, ZIMAG; SUP,SUQ=SUX*SUY
MULU SUP, SUX23, SUY23;
MULU SUQ, SUX01, SUY01;
MULU COSVL, SUX23, SUY01;
MULU WORK, SUX01, SUY23;
; LDB WATCHDOG, #01EH;
; LDB WATCHDOG, #0E1H;
CLR SUX01;
CLR SUY01;
ADD SUQ23, COSVL;
ADDC SUX01, R0;
ADD SUQ23, WORK;
ADDC SUX01, R0;
ADD SUP01, SUX01;
ADDC SUY01, R0;
ADD SUP01, SINVL;
ADDC SUY01, R0;
ADD SUP01, WTMP;
ADDC SUY01, R0;
ADD SUP23, SUY01;
LD SUX01, SUQ23;
LD SUX23, SUP01;
ADD SUX23, ZREAL;
SHRA TANVL, #01H;
CMP TANVL, R0;
JGE ZOOMX;
SHORTX: NEG TANVL;
SHLL SUX, TANVL;
SJMP SQQXB;
ZOOMX: SHRL SUX, TANVL;
SQQXB: LD IMAG14, SUX23; 谐波有效值 XT014=2--13U
LD ZREAL, #125;
MUL SUY, ZREAL, SUX23; SUY=SUX23*125;
SHRL SUY, #01H;
LD SUX23, REAL14;
SHR SUX23, #04H;
CMP SUX23, R0;
JNE XBANY;
LD SUY01, #9999;
SJMP MAXXB;
XBANY: CMP SUX23, #01H;
JE XBNEXT;
DIV SUY, SUX23;
XBNEXT: CMP SUY01, #9999;
JLE MAXXB;
LD SUY01, #9999;
MAXXB: LD REAL15, SUY01; 畸变率
SHRL XBSUM, #04H; 谐波含量
LD SUX23, XBSUM01;
LD ZREAL, #125;
CLR WORK;
LD ZIMAG, REAL01;
AXBFL: MUL SUY, ZREAL, ZIMAG; SUY=ZIMAG*125;
SHRL SUY, #01H;
CMP SUX23, R0;
JNE ADANY;
LD SUY01, #9999;
SJMP MAXAD;
ADANY: CMP SUX23, #01H;
JE ADNEXT;
DIV SUY, SUX23;
ADNEXT: CMP SUY01, #9999;
JLE MAXAD;
LD SUY01, #9999;
MAXAD: LD ADDRESSL, #lsw XNST;
LD ADDRESSH, #msw XNST;
ADD ADDRESSL, WORK;
ADDC ADDRESSH, R0;
ELD ADRL, [ADDRESS];
ELD ADRH, 2[ADDRESS];
EBR [ADR];
; LD WORK, XNST[WORK]
; BR [WORK]
MCASE02:LD WORK, #04;
LD ZIMAG, REAL02; 二次谐波
LD REAL17, SUY01; 基波含量
EJMP AXBFL;
MCASE03:LD WORK, #08;
LD ZIMAG, REAL03; 三次谐波
LD REAL18, SUY01; 二次谐波含量
EJMP AXBFL;
MCASE04:LD WORK, #12;
LD ZIMAG, REAL04; 四次谐波
LD REAL19, SUY01; 三次谐波含量
EJMP AXBFL;
MCASE05:LD WORK, #16;
LD ZIMAG, REAL05; 五次谐波
LD REAL20, SUY01; 四次谐波含量
EJMP AXBFL;
MCASE06:LD WORK, #20;
LD ZIMAG, REAL06; 六次谐波
LD REAL21, SUY01; 五次谐波含量
EJMP AXBFL;
MCASE07:LD WORK, #24;
LD ZIMAG, REAL07; 7次谐波
LD REAL22, SUY01; 6次谐波含量
EJMP AXBFL;
MCASE08:LD WORK, #28;
LD ZIMAG, REAL08; 8次谐波
LD REAL23, SUY01; 7次谐波含量
EJMP AXBFL;
MCASE09:LD WORK, #32;
LD ZIMAG, REAL09; 9次谐波
LD REAL24, SUY01; 8次谐波含量
EJMP AXBFL;
MCASE10:LD WORK, #36;
LD ZIMAG, REAL10; 10次谐波
LD REAL25, SUY01; 09次谐波含量
EJMP AXBFL;
MCASE11:LD WORK, #40;
LD ZIMAG, REAL11; 11次谐波
LD REAL26, SUY01; 10次谐波含量
EJMP AXBFL;
MCASE12:LD WORK, #44;
LD ZIMAG, REAL12; 12次谐波
LD REAL27, SUY01; 11次谐波含量
EJMP AXBFL;
MCASE13:LD WORK, #48;
LD ZIMAG, REAL13; 13次谐波
LD REAL28, SUY01; 12次谐波含量
EJMP AXBFL;
MCASE14:LD REAL29, SUY01; 13次谐波含量
EJMP XTEND;
XNST: DCL MCASE02;
DCL MCASE03;
DCL MCASE04;
DCL MCASE05;
DCL MCASE06;
DCL MCASE07;
DCL MCASE08;
DCL MCASE09;
DCL MCASE10;
DCL MCASE11;
DCL MCASE12;
DCL MCASE13;
DCL MCASE14;
XTEND: LDB WSR, #00H
RET
PUBLIC DZARC; SUX01=SUX01-SUX23=-18000--0--18000
CSEG AT 0FB1300H
DZARC: LDB WSR, #WSR_200H_27FH
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;
PUBLIC POWER1;/* U1*I1*COS(wt+t+DCZO)*DCSK */
CSEG AT 0FB2000H
POWER1: LDB WSR, #WSR_200H_27FH
CLR SUP;
CLR SUQ;
CLR SUN01;
LD ZREAL, 104H[0]; U1 基波 模长
LD SUX01, 106H[0]; U1 基波 角度
LD ZIMAG, 184H[0]; I1 基波 模长
LD SUX23, 186H[0]; I1 基波 角度
ADD SUX01, DCZO; 功率补偿
PLOOP: CALL DZARC; //计算相角差 1 | 0
LD ARCVL, SUX01; //ARCVL=相角差 ----------
LD SUN23, SUX23; //SUN23=象限 3 | 2
LD ADDRESSL, #lsw SIN;
LD ADDRESSH, #msw SIN;
ADD ADDRESSL, SUX01;
ADDC ADDRESSH, R0;
ADD ADDRESSL, SUX01;
ADDC ADDRESSH, R0;
ELD SINVL, [ADDRESS];SINVL=SIN(SUX01);
SUB SUX01, #9000;
NEG SUX01;
LD ADDRESSL, #lsw SIN;
LD ADDRESSH, #msw SIN;
ADD ADDRESSL, SUX01;
ADDC ADDRESSH, R0;
ADD ADDRESSL, SUX01;
ADDC ADDRESSH, R0;
ELD COSVL, [ADDRESS];SINVL=SIN(SUX01);
JBC SUX23, 0H, CNEXT0;
NEG COSVL; // 2 或 3 象限
CNEXT0: JBC SUX23, 1H, SNEXT0;
NEG SINVL; // 3 或 4 象限
SNEXT0: MUL SUX, ZREAL, ZIMAG; SUX=ZREAL*ZIMAG=U*I;
DIV SUX, #2000;
MUL SUY, SUX01, COSVL;
ADD SUP, SUY23;
MUL SUY, SUX01, SINVL;
ADD SUQ, SUY23;
LD ADDRESSL, #lsw JXNARC;
LD ADDRESSH, #msw JXNARC;
ADD ADDRESSL, SUN01;
ADDC ADDRESSH, R0;
ELD ADRL, [ADDRESS];
ELD ADRH, 2[ADDRESS];
EBR [ADR];
PCASE02:LD SUN01, #04;
LD REAL17, SUN23; SUN23 基波功角象限值
LD IMAG17, ARCVL; ARCVL 基波功角
LD WORK, ARCVL;
LD ZREAL, 108H[0]; U1 二次谐波 模长
LD SUX01, 10AH[0]; U1 二次谐波 角度
LD ZIMAG, 188H[0]; I1 二次谐波 模长
LD SUX23, 18AH[0]; I1 二次谐波 角度
LJMP PLOOP;
PCASE03:LD SUN01, #08;
LD REAL18, SUN23; SUN23 2 次谐波功角象限值
LD IMAG18, ARCVL; ARCVL 2 次谐波功角
LD ZREAL, 10CH[0]; U1 三次谐波 模长
LD SUX01, 10EH[0]; U1 三次谐波 角度
LD ZIMAG, 18CH[0]; I1 三次谐波 模长
LD SUX23, 18EH[0]; I1 三次谐波 角度
LJMP PLOOP;
PCASE04:LD SUN01, #12;
LD REAL19, SUN23; SUN23 3 次谐波功角象限值
LD IMAG19, ARCVL; ARCVL 3 次谐波功角
LD ZREAL, 110H[0]; U1 四次谐波 模长
LD SUX01, 112H[0]; U1 四次谐波 角度
LD ZIMAG, 190H[0]; I1 四次谐波 模长
LD SUX23, 192H[0]; I1 四次谐波 角度
LJMP PLOOP;
PCASE05:LD SUN01, #16;
LD REAL20, SUN23; SUN23 4 次谐波功角象限值
LD IMAG20, ARCVL; ARCVL 4 次谐波功角
LD ZREAL, 114H[0]; U1 5 次谐波模长
LD SUX01, 116H[0]; U1 5 次谐波角度
LD ZIMAG, 194H[0]; I1 5 次谐波模长
LD SUX23, 196H[0]; I1 5 次谐波角度
LJMP PLOOP;
PCASE06:LD SUN01, #20;
LD REAL21, SUN23; SUN23 5 次谐波功角象限值
LD IMAG21, ARCVL; ARCVL 5 次谐波功角
LD ZREAL, 118H[0]; U1 6 次谐波模长
LD SUX01, 11AH[0]; U1 6 次谐波角度
LD ZIMAG, 198H[0]; I1 6 次谐波模长
LD SUX23, 19AH[0]; I1 6 次谐波角度
LJMP PLOOP;
PCASE07:LD SUN01, #24;
LD REAL22, SUN23; SUN23 6 次谐波功角象限值
LD IMAG22, ARCVL; ARCVL 6 次谐波功角
LD ZREAL, 11CH[0]; U1 7 次谐波模长
LD SUX01, 11EH[0]; U1 7 次谐波角度
LD ZIMAG, 19CH[0]; I1 7 次谐波模长
LD SUX23, 19EH[0]; I1 7 次谐波角度
LJMP PLOOP;
PCASE08:LD SUN01, #28;
LD REAL23, SUN23; SUN23 7 次谐波功角象限值
LD IMAG23, ARCVL; ARCVL 7 次谐波功角
LD ZREAL, 120H[0]; U1 8 次谐波模长
LD SUX01, 122H[0]; U1 8 次谐波角度
LD ZIMAG, 1A0H[0]; I1 8 次谐波模长
LD SUX23, 1A2H[0]; I1 8 次谐波角度
LJMP PLOOP;
PCASE09:LD SUN01, #32;
LD REAL24, SUN23; SUN23 8 次谐波功角象限值
LD IMAG24, ARCVL; ARCVL 8 次谐波功角
LD ZREAL, 124H[0]; U1 9 次谐波模长
LD SUX01, 126H[0]; U1 9 次谐波角度
LD ZIMAG, 1A4H[0]; I1 9 次谐波模长
LD SUX23, 1A6H[0]; I1 9 次谐波角度
LJMP PLOOP;
PCASE10:LD SUN01, #36;
LD REAL25, SUN23; SUN23 9 次谐波功角象限值
LD IMAG25, ARCVL; ARCVL 9 次谐波功角
LD ZREAL, 128H[0]; U1 10 次谐波模长
LD SUX01, 12AH[0]; U1 10 次谐波角度
LD ZIMAG, 1A8H[0]; I1 10 次谐波模长
LD SUX23, 1AAH[0]; I1 10 次谐波角度
LJMP PLOOP;
PCASE11:LD SUN01, #40;
LD REAL26, SUN23; SUN23 10 次谐波功角象限值
LD IMAG26, ARCVL; ARCVL 10 次谐波功角
LD ZREAL, 12CH[0]; U1 11 次谐波模长
LD SUX01, 12EH[0]; U1 11 次谐波角度
LD ZIMAG, 1ACH[0]; I1 11 次谐波模长
LD SUX23, 1AEH[0]; I1 11 次谐波角度
LJMP PLOOP;
PCASE12:LD SUN01, #44;
LD REAL27, SUN23; SUN23 11 次谐波功角象限值
LD IMAG27, ARCVL; ARCVL 11 次谐波功角
LD ZREAL, 130H[0]; U1 12 次谐波模长
LD SUX01, 132H[0]; U1 12 次谐波角度
LD ZIMAG, 1B0H[0]; I1 12 次谐波模长
LD SUX23, 1B2H[0]; I1 12 次谐波角度
LJMP PLOOP;
PCASE13:LD SUN01, #48;
LD REAL28, SUN23; SUN23 12 次谐波功角象限值
LD IMAG28, ARCVL; ARCVL 12 次谐波功角
LD ZREAL, 134H[0]; U1 13 次谐波模长
LD SUX01, 136H[0]; U1 13 次谐波角度
LD ZIMAG, 1B4H[0]; I1 13 次谐波模长
LD SUX23, 1B6H[0]; I1 13 次谐波角度
LJMP PLOOP;
PCASE14:LD ZREAL, 138H[0]; U1 1-13次谐波有效值
LD ZIMAG, 1B8H[0]; I1 1-13次谐波
LD REAL29, SUN23; SUN23 13次谐波功角象限值
LD IMAG29, ARCVL; ARCVL 13次谐波功角
SJMP SPOWER;
JXNARC: DCL PCASE02;
DCL PCASE03;
DCL PCASE04;
DCL PCASE05;
DCL PCASE06;
DCL PCASE07;
DCL PCASE08;
DCL PCASE09;
DCL PCASE10;
DCL PCASE11;
DCL PCASE12;
DCL PCASE13;
DCL PCASE14;
SPOWER: MUL SUX, ZREAL, ZIMAG; 实在功率 S
DIV SUX, #4000; 40U*40I 8S=UI/10/20/20
LD SUN01, SUX01; 实在功率
MUL SUX, SUP01, DCSK;
DIV SUX, #10000;
LD SUP01, SUX01;
CLR SUP23;
MUL SUX, SUQ01, DCSK;
DIV SUX, #10000;
LD SUQ01, SUX01;
CLR SUQ23;
LDB WSR, #00H
;SUP 有功功率 U1*I1*COS(t)
;SUQ 无功功率 U1*I1*SIN(t)
;SUN01实在功率 U1*I1
;WORK 基波功角
RET
PUBLIC PQCOS;/* SUP SUQ COSVL ARCVL */
CSEG AT 0FB5000H
PQCOS: LDB WSR, #WSR_200H_27FH
CLR WORK; P Q 互换标志
LD ZREAL, SUP;
LD ZIMAG, SUQ;
JBC ZREALH, 07H, PQ000;if ZREAL<0 then ZREAL=-ZREAL;
NEG ZREAL;
PQ000: JBC ZIMAGH, 07H, PQ001;if ZREAL<0 then ZREAL=-ZREAL;
NEG ZIMAG;
PQ001: CMP ZIMAG, ZREAL; tg*=IMAG/REAL;
JLE PQ002; IF IMAG<=REAL THEN JUMP PQ002;
XCH ZREAL, ZIMAG;
LD WORK, #0FFFFH; P Q 互换标志
PQ002: LD SUX23, ZIMAG; IMAG<=REAL;
CLR SUX01;
CMP SUX23, R0;
JE PQDIV;
LD SUX01, #0FFFFH;
DEC SUX23; SUX=(IMAG*65536)-1;
SHRAL SUX, #01H; SUX=SUX/2
PQDIV: CMP R0, ZREAL;
JNE PQ003;
LD SUX01, #07FFFH; IF ZREAL=0 THEN SUX01=07FFFH=TANVL
SJMP PQ004;
PQ003: CMP ZREAL, #01H;
JE PQ004;
CMP ZREAL, #02H;
JNE PQMMM;
SHRAL SUX, #01H;
SJMP PQ004;
PQMMM: DIV SUX, ZREAL;
PQ004: LD TANVL, SUX01;
;;;;;;;;;;;;; 由TANVL对分法查找角度 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLR DCZO; FIRST=0;
LD DCSK, #4500; LAST=4500;
PQ005: ADD SUN01, DCZO, DCSK;
SHR SUN01, #01H; SUN01=(FIRST+LAST)/2;
LD SUN23, SUN01;
SHL SUN23, #01H;
LD ADDRESSL, #lsw TAN;
LD ADDRESSH, #msw TAN;
ADD ADDRESSL, SUN23;
ADDC ADDRESSH, R0;
ELD SUX01, [ADDRESS]; TAN[] ;SUX01=TAN(SUN23);
CMP DCZO, DCSK;
JGE PQ007; IF FIRST>=LAST THEN JUMP XN007;
CMP DCZO, SUN01;
JE PQ007;
CMP DCSK, SUN01;
JE PQ007;
SUB SUN23, DCSK, DCZO;
CMP SUN23, #01H;
JLE PQ007;
CMP TANVL, SUX01;
JE PQ007;
JGT PQ006;
LD DCSK, SUN01; ;DCSK=SUN01=(FIRST+LAST)/2;
SJMP PQ005;
PQ006: LD DCZO, SUN01; ;DCZO=SUN01=(FIRST+LAST)/2;
SJMP PQ005;
PQ007: LD DCZO, SUN01;
JBS WORK, 07H, PQ008;
NEG DCZO;
ADD DCZO, #9000;
PQ008: LD ARCVL, DCZO;//COS
SHL DCZO, #01H;
LD ADDRESSL, #lsw SIN;
LD ADDRESSH, #msw SIN;
ADD ADDRESSL, DCZO;
ADDC ADDRESSH, R0;
ELD COSVL, [ADDRESS];
MULU SUY, COSVL, #2000;
LD COSVL, SUY23;
JBS SUP23, 07H, PQA23;
JBS SUQ23, 07H, PQA04;
PQA01: NEG ARCVL;
ADD ARCVL, #9000;
SJMP PQEND;
PQA04: NEG ARCVL;
ADD ARCVL, #9000;
NEG ARCVL;
SJMP PQEND;
PQA23: NEG COSVL;
JBS SUQ23, 07H, PQA03;
PQA02: ADD ARCVL, #9000;
SJMP PQEND;
PQA03: ADD ARCVL, #9000;
NEG ARCVL;
PQEND: LDB WSR, #00H
RET
PUBLIC FFTARC
FFTARC: LDB WSR, #WSR_200H_27FH
ADD WORK, #128; //180.00C
LD IMAG00, [WORK];
ADD WORK, #0008H;
CMP IMAG00, #1FFFH;
JLE NEXTB01;
SUB IMAG00, #4000H;
NEXTB01:LD IMAG01, [WORK];
AND IMAG01, #3FFFH;
ADD WORK, #0008H;
CMP IMAG01, #1FFFH;
JLE NEXTB02;
SUB IMAG01, #4000H;
NEXTB02:LD IMAG02, [WORK];
AND IMAG02, #3FFFH;
ADD WORK, #0008H;
CMP IMAG02, #1FFFH;
JLE NEXTB03;
SUB IMAG02, #4000H;
NEXTB03:LD IMAG03, [WORK];
AND IMAG03, #3FFFH;
ADD WORK, #0008H;
CMP IMAG03, #1FFFH;
JLE NEXTB04;
SUB IMAG03, #4000H;
NEXTB04:LD IMAG04, [WORK];
AND IMAG04, #3FFFH;
ADD WORK, #0008H;
CMP IMAG04, #1FFFH;
JLE NEXTB05;
SUB IMAG04, #4000H;
NEXTB05:LD IMAG05, [WORK];
AND IMAG05, #3FFFH;
ADD WORK, #0008H;
CMP IMAG05, #1FFFH;
JLE NEXTB06;
SUB IMAG05, #4000H;
NEXTB06:LD IMAG06, [WORK];
AND IMAG06, #3FFFH;
ADD WORK, #0008H;
CMP IMAG06, #1FFFH;
JLE NEXTB07;
SUB IMAG06, #4000H;
NEXTB07:LD IMAG07, [WORK];
AND IMAG07, #3FFFH;
ADD WORK, #0008H;
CMP IMAG07, #1FFFH;
JLE NEXTB08;
SUB IMAG07, #4000H;
NEXTB08:LD IMAG08, [WORK];
AND IMAG08, #3FFFH;
ADD WORK, #0008H;
CMP IMAG08, #1FFFH;
JLE NEXTB09;
SUB IMAG08, #4000H;
NEXTB09:LD IMAG09, [WORK];
AND IMAG09, #3FFFH;
ADD WORK, #0008H;
CMP IMAG09, #1FFFH;
JLE NEXTB10;
SUB IMAG09, #4000H;
NEXTB10:LD IMAG10, [WORK];
AND IMAG10, #3FFFH;
ADD WORK, #0008H;
CMP IMAG10, #1FFFH;
JLE NEXTB11;
SUB IMAG10, #4000H;
NEXTB11:LD IMAG11, [WORK];
AND IMAG11, #3FFFH;
ADD WORK, #0008H;
CMP IMAG11, #1FFFH;
JLE NEXTB12;
SUB IMAG11, #4000H;
NEXTB12:LD IMAG12, [WORK];
AND IMAG12, #3FFFH;
ADD WORK, #0008H;
CMP IMAG12, #1FFFH;
JLE NEXTB13;
SUB IMAG12, #4000H;
NEXTB13:LD IMAG13, [WORK];
AND IMAG13, #3FFFH;
ADD WORK, #0008H;
CMP IMAG13, #1FFFH;
JLE NEXTB14;
SUB IMAG13, #4000H;
NEXTB14:LD IMAG14, [WORK];
AND IMAG14, #3FFFH;
ADD WORK, #0008H;
CMP IMAG14, #1FFFH;
JLE NEXTB15;
SUB IMAG14, #4000H;
NEXTB15:LD IMAG15, [WORK];
AND IMAG15, #3FFFH;
ADD WORK, #0008H;
CMP IMAG15, #1FFFH;
JLE NEXTB16;
SUB IMAG15, #4000H;
NEXTB16:LD IMAG16, [WORK];
AND IMAG16, #3FFFH;
ADD WORK, #0008H;
CMP IMAG16, #1FFFH;
JLE NEXTB17;
SUB IMAG16, #4000H;
NEXTB17:LD IMAG17, [WORK];
AND IMAG17, #3FFFH;
ADD WORK, #0008H;
CMP IMAG17, #1FFFH;
JLE NEXTB18;
SUB IMAG17, #4000H;
NEXTB18:LD IMAG18, [WORK];
AND IMAG18, #3FFFH;
ADD WORK, #0008H;
CMP IMAG18, #1FFFH;
JLE NEXTB19;
SUB IMAG18, #4000H;
NEXTB19:LD IMAG19, [WORK];
AND IMAG19, #3FFFH;
ADD WORK, #0008H;
CMP IMAG19, #1FFFH;
JLE NEXTB20;
SUB IMAG19, #4000H;
NEXTB20:LD IMAG20, [WORK];
AND IMAG20, #3FFFH;
ADD WORK, #0008H;
CMP IMAG20, #1FFFH;
JLE NEXTB21;
SUB IMAG20, #4000H;
NEXTB21:LD IMAG21, [WORK];
AND IMAG21, #3FFFH;
ADD WORK, #0008H;
CMP IMAG21, #1FFFH;
JLE NEXTB22;
SUB IMAG21, #4000H;
NEXTB22:LD IMAG22, [WORK];
AND IMAG22, #3FFFH;
ADD WORK, #0008H;
CMP IMAG22, #1FFFH;
JLE NEXTB23;
SUB IMAG22, #4000H;
NEXTB23:LD IMAG23, [WORK];
AND IMAG23, #3FFFH;
ADD WORK, #0008H;
CMP IMAG23, #1FFFH;
JLE NEXTB24;
SUB IMAG23, #4000H;
NEXTB24:LD IMAG24, [WORK];
AND IMAG24, #3FFFH;
ADD WORK, #0008H;
CMP IMAG24, #1FFFH;
JLE NEXTB25;
SUB IMAG24, #4000H;
NEXTB25:LD IMAG25, [WORK];
AND IMAG25, #3FFFH;
ADD WORK, #0008H;
CMP IMAG25, #1FFFH;
JLE NEXTB26;
SUB IMAG25, #4000H;
NEXTB26:LD IMAG26, [WORK];
AND IMAG26, #3FFFH;
ADD WORK, #0008H;
CMP IMAG26, #1FFFH;
JLE NEXTB27;
SUB IMAG26, #4000H;
NEXTB27:LD IMAG27, [WORK];
AND IMAG27, #3FFFH;
ADD WORK, #0008H;
CMP IMAG27, #1FFFH;
JLE NEXTB28;
SUB IMAG27, #4000H;
NEXTB28:LD IMAG28, [WORK];
AND IMAG28, #3FFFH;
ADD WORK, #0008H;
CMP IMAG28, #1FFFH;
JLE NEXTB29;
SUB IMAG28, #4000H;
NEXTB29:LD IMAG29, [WORK];
AND IMAG29, #3FFFH;
ADD WORK, #0008H;
CMP IMAG29, #1FFFH;
JLE NEXTB30;
SUB IMAG29, #4000H;
NEXTB30:LD IMAG30, [WORK];
AND IMAG30, #3FFFH;
ADD WORK, #0008H;
CMP IMAG30, #1FFFH;
JLE NEXTB31;
SUB IMAG30, #4000H;
NEXTB31:LD IMAG31, [WORK];
AND IMAG31, #3FFFH;
CMP IMAG31, #1FFFH;
JLE NEXTBDE;
SUB IMAG31, #4000H;
NEXTBDE:CLR REAL00;
CLR REAL01;
CLR REAL02;
CLR REAL03;
CLR REAL04;
CLR REAL05;
CLR REAL06;
CLR REAL07;
CLR REAL08;
CLR REAL09;
CLR REAL10;
CLR REAL11;
CLR REAL12;
CLR REAL13;
CLR REAL14;
CLR REAL15;
CLR REAL16;
CLR REAL17;
CLR REAL18;
CLR REAL19;
CLR REAL20;
CLR REAL21;
CLR REAL22;
CLR REAL23;
CLR REAL24;
CLR REAL25;
CLR REAL26;
CLR REAL27;
CLR REAL28;
CLR REAL29;
CLR REAL30;
CLR REAL31;
XCH REAL01, REAL16;
XCH IMAG01, IMAG16;
BF00X01:XCH REAL02, REAL08;
XCH IMAG02, IMAG08;
BF00X02:XCH REAL03, REAL24;
XCH IMAG03, IMAG24;
BF00X03:XCH REAL05, REAL20;
XCH IMAG05, IMAG20;
BF00X04:XCH REAL06, REAL12;
XCH IMAG06, IMAG12;
BF00X05:XCH REAL07, REAL28;
XCH IMAG07, IMAG28;
BF00X06:XCH REAL09, REAL18;
XCH IMAG09, IMAG18;
BF00X07:XCH REAL11, REAL26;
XCH IMAG11, IMAG26;
BF00X08:XCH REAL13, REAL22;
XCH IMAG13, IMAG22;
BF00X09:XCH REAL15, REAL30;
XCH IMAG15, IMAG30;
BF00X10:XCH REAL19, REAL25;
XCH IMAG19, IMAG25;
BF00X11:XCH REAL23, REAL29;
XCH IMAG23, IMAG29;
;;;;;;;;;;;;;;;;第一次碟形处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BF01X00:SUB ZIMAG, IMAG00, IMAG01; X01=X00-X01;
LD IMAG01, ZIMAG;
BF01X01:SUB ZIMAG, IMAG02, IMAG03; X03=X02-X03;
LD IMAG03, ZIMAG;
BF01X02:SUB ZIMAG, IMAG04, IMAG05; X05=X04-X05;
LD IMAG05, ZIMAG;
BF01X03:SUB ZIMAG, IMAG06, IMAG07; X07=X06-X07;
LD IMAG07, ZIMAG;
BF01X04:SUB ZIMAG, IMAG08, IMAG09; X09=X08-X09;
LD IMAG09, ZIMAG;
BF01X05:SUB ZIMAG, IMAG10, IMAG11; X11=X10-X11;
LD IMAG11, ZIMAG;
BF01X06:SUB ZIMAG, IMAG12, IMAG13; X13=X12-X13;
LD IMAG13, ZIMAG;
BF01X07:SUB ZIMAG, IMAG14, IMAG15; X15=X14-X15;
LD IMAG15, ZIMAG;
BF01X08:SUB ZIMAG, IMAG16, IMAG17; X17=X16-X17;
LD IMAG17, ZIMAG;
BF01X09:SUB ZIMAG, IMAG18, IMAG19; X19=X18-X19;
LD IMAG19, ZIMAG;
BF01X10:SUB ZIMAG, IMAG20, IMAG21; X21=X20-X21;
LD IMAG21, ZIMAG;
BF01X11:SUB ZIMAG, IMAG22, IMAG23; X23=X22-X23;
LD IMAG23, ZIMAG;
BF01X12:SUB ZIMAG, IMAG24, IMAG25; X25=X24-X25;
LD IMAG25, ZIMAG;
BF01X13:SUB ZIMAG, IMAG26, IMAG27; X27=X26-X27;
LD IMAG27, ZIMAG;
BF01X14:SUB ZIMAG, IMAG28, IMAG29; X29=X28-X29;
LD IMAG29, ZIMAG;
BF01X15:SUB ZIMAG, IMAG30, IMAG31; X31=X30-X31;
LD IMAG31, ZIMAG;
;;;;;;;;;;;;;;;;第二次碟形处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BF02X00:LD REAL01, IMAG03; X01=X01+X03*(-I);
BF02X01:LD REAL05, IMAG07; X07=X05-X07*(-I);
BF02X02:LD REAL09, IMAG11; X11=X09-X11*(-I);
BF02X03:LD REAL13, IMAG15; X15=X13-X15*(-I);
BF02X04:LD REAL17, IMAG19; X19=X17-X19*(-I);
BF02X05:LD REAL21, IMAG23; X23=X21-X23*(-I);
BF02X06:LD REAL25, IMAG27; X27=X25-X27*(-I);
BF02X07:LD REAL29, IMAG31; X31=X29-X31*(-I);
;;;;;;;;;;;;;;;;第三次碟形处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BF03X00:LD COSVL, #23170; COSVL=23170/32768=0.7071=SINVL;
;X1=X1+W4*X5; X1.REAL + 0.7071*(X5.REAL+X5.IMAG)+[X1.IMAG + 0.7071*(X5.IMAG-X5.REAL)]*I
;X5=X1-W4*X5; X1.REAL - 0.7071*(X5.REAL+X5.IMAG)+[X1.IMAG - 0.7071*(X5.IMAG-X5.REAL)]*I
;W4=0.7071-0.7071*I;
SUB ZREAL, IMAG05, REAL05; ZREAL=X5.IMAG-X5.REAL
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X5.IMAG-X5.REAL)
ADD ZREAL, REAL05, IMAG05; ZREAL=X5.REAL+X5.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X5.REAL+X5.IMAG)
ADD REAL01, SUP23; X1.REAL+SUP23 + (X1.IMAG+SUQ23)*I
ADD IMAG01, SUQ23;
BF03X01:;X09=X09+W4*X13; X09.REAL + 0.7071*(X13.REAL+X13.IMAG)+[X09.IMAG + 0.7071*(X5.IMAG-X13.REAL)]*I
;X13=X09-W4*X13; X09.REAL - 0.7071*(X13.REAL+X13.IMAG)+[X09.IMAG - 0.7071*(X5.IMAG-X13.REAL)]*I
;W4=0.7071-0.7071*I;
SUB ZREAL, IMAG13, REAL13; ZREAL=X13.IMAG-X13.REAL
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X13.IMAG-X13.REAL)
ADD ZREAL, REAL13, IMAG13; ZREAL=X13.REAL+X13.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X13.REAL+X13.IMAG)
ADD REAL09, SUP23; X09.REAL+SUP23 + (X09.IMAG+SUQ23)*I
ADD IMAG09, SUQ23;
BF03X02:;X17=X17+W4*X21; X17.REAL + 0.7071*(X21.REAL+X21.IMAG)+[X17.IMAG + 0.7071*(X21.IMAG-X21.REAL)]*I
;X21=X17-W4*X21; X17.REAL - 0.7071*(X21.REAL+X21.IMAG)+[X17.IMAG - 0.7071*(X21.IMAG-X21.REAL)]*I
;W4=0.7071-0.7071*I;
SUB ZREAL, IMAG21, REAL21; ZREAL=X21.IMAG-X21.REAL
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X21.IMAG-X21.REAL)
ADD ZREAL, REAL21, IMAG21; ZREAL=X21.REAL+X21.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X21.REAL+X21.IMAG)
ADD REAL17, SUP23; X17.REAL+SUP23 + (X17.IMAG+SUQ23)*I
ADD IMAG17, SUQ23;
BF03X03:;X25=X25+W4*X29; X25.REAL + 0.7071*(X29.REAL+X29.IMAG)+[X25.IMAG + 0.7071*(X29.IMAG-X29.REAL)]*I
;X29=X25-W4*X29; X25.REAL - 0.7071*(X29.REAL+X29.IMAG)+[X25.IMAG - 0.7071*(X29.IMAG-X29.REAL)]*I
;W4=0.7071-0.7071*I;
SUB ZREAL, IMAG29, REAL29; ZREAL=X29.IMAG-X29.REAL
MUL SUQ, ZREAL, COSVL;
SHLL SUQ, #01H; SUQ23=0.7071*(X29.IMAG-X29.REAL)
ADD ZREAL, REAL29, IMAG29; ZREAL=X29.REAL+X29.IMAG
MUL SUP, ZREAL, COSVL;
SHLL SUP, #01H; SUP23=0.7071*(X29.REAL+X29.IMAG)
ADD REAL25, SUP23; X25.REAL+SUP23 + (X25.IMAG+SUQ23)*I
ADD IMAG25, SUQ23;
;;;;;;;;;;;;;;; 14位AD/4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SHRA REAL01, #02H;
SHRA REAL09, #02H;
SHRA REAL17, #02H;
SHRA REAL25, #02H;
SHRA IMAG01, #02H;
SHRA IMAG09, #02H;
SHRA IMAG17, #02H;
SHRA IMAG25, #02H;
;;;;;;;;;;;;;;;;第四次碟形处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BF04X00:LD COSVL, #30274; W2; COSVL= 30274/32768=COS(-11.25*2);
LD SINVL, #52996; W2; SINVL=-12540/32768=SIN(-11.25*2);
;X01=X01+W2*X09; X01.REAL +(COSVL*X09.REAL - SINVL*X09.IMAG)+[X01.IMAG +(COSVL*X09.IMAG + SINVL*X09.REAL)]*I
;X09=X01-W2*X09; X01.REAL -(COSVL*X09.REAL - SINVL*X09.IMAG)+[X01.IMAG -(COSVL*X09.IMAG + SINVL*X09.REAL)]*I
;W02= 30274/32768-12540/32768*I;
MUL SUX, REAL09, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG09, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X09.REAL - SINVL*X09.IMAG;
MUL SUX, IMAG09, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL09, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X09.IMAG + SINVL*X09.REAL;
ADD REAL01, SUQ23; X01.REAL + SUQ23+
ADD IMAG01, SUP23; (X01.IMAG + SUP23)*I
BF04X01:;X17=X17+W2*X25; X17.REAL +(COSVL*X25.REAL - SINVL*X25.IMAG)+[X17.IMAG +(COSVL*X25.IMAG + SINVL*X25.REAL)]*I
;X25=X17-W2*X25; X17.REAL -(COSVL*X25.REAL - SINVL*X25.IMAG)+[X17.IMAG -(COSVL*X25.IMAG + SINVL*X25.REAL)]*I
;W02= 30274/32768-12540/32768*I;
MUL SUX, REAL25, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG25, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X25.REAL - SINVL*X25.IMAG;
MUL SUX, IMAG25, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL25, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X25.IMAG + SINVL*X25.REAL;
ADD REAL17, SUQ23; X17.REAL + SUQ23+
ADD IMAG17, SUP23; (X17.IMAG + SUP23)*I
;;;;;;;;;;;;;;;;第五次碟形处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BF05X00:LD COSVL, #32138; W01 COSVL= 32138/32768=COS(-11.25*1);
LD SINVL, #59143; W01 SINVL=-06393/32768=SIN(-11.25*1);
;X01=X01+W1*X17; X01.REAL +(COSVL*X17.REAL - SINVL*X17.IMAG)+[X01.IMAG +(COSVL*X17.IMAG + SINVL*X17.REAL)]*I
;X17=X01-W1*X17; X01.REAL -(COSVL*X17.REAL - SINVL*X17.IMAG)+[X01.IMAG -(COSVL*X17.IMAG + SINVL*X17.REAL)]*I
;W01=-32138/32768-06393/32768*I;
MUL SUX, REAL17, COSVL;
SHLL SUX, #01H;
MUL SUY, IMAG17, SINVL;
SHLL SUY, #01H;
SUB SUQ23, SUX23, SUY23; SUQ23=COSVL*X17.REAL - SINVL*X17.IMAG;
MUL SUX, IMAG17, COSVL;
SHLL SUX, #01H;
MUL SUY, REAL17, SINVL;
SHLL SUY, #01H;
ADD SUP23, SUX23, SUY23; SUP23=COSVL*X17.IMAG + SINVL*X17.REAL;
ADD REAL01, SUQ23; X01.REAL + SUQ23+
ADD IMAG01, SUP23; (X01.IMAG + SUP23)*I
;;;;;;;;;;;;;;;;;;;;;;;;;基波分量;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLR SUY01;
CLR SUY23;
CLR WORK;
CLR XBSUM01;
CLR XBSUM23;
LD SUN01, REAL01; 基波分量
LD SUN23, IMAG01;
LD ZREAL, SUN01; ZREAL=基波实部
LD ZIMAG, SUN23; ZIMAG=基波虚部
CLR SUP01;
JBC ZREALH, 07H, XNB00;if ZREAL<0 then ZREAL=-ZREAL;
NEG ZREAL;
XNB00: JBC ZIMAGH, 07H, XNB01;if ZREAL<0 then ZREAL=-ZREAL;
NEG ZIMAG;
XNB01: CMP ZIMAG, ZREAL; tg*=IMAG/REAL;
JLE XNB02; IF IMAG<=REAL THEN JUMP XNB02;
XCH ZREAL, ZIMAG;
LD SUP01, #0FFFFH; 45度标志
XNB02: LD SUX23, ZIMAG; IMAG<=REAL;
CLR SUX01;
CMP SUX23, R0;
JE XDIVV;
LD SUX01, #0FFFFH;
DEC SUX23; SUX=(IMAG*65536)-1;
SHRAL SUX, #01H; SUX=SUX/2
XDIVV: CMP R0, ZREAL;
JNE XNB03;
LD SUX01, #07FFFH; IF ZREAL=0 THEN SUX01=07FFFH=TANVL
SJMP XNB04;
XNB03: CMP ZREAL, #01H;
JE XNB04;
CMP ZREAL, #02H;
JNE XBMMM;
SHRAL SUX, #01H;
SJMP XNB04;
XBMMM: DIV SUX, ZREAL;
XNB04: LD TANVL, SUX01;
;;;;;;;;;;;;; 由TANVL对分法查找角度 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLR DCZO; FIRST=0;
LD DCSK, #4500; LAST=4500;
XNB05: ADD SUQ01, DCZO, DCSK;
SHR SUQ01, #01H; SUQ01=(FIRST+LAST)/2;
LD SUQ23, SUQ01;
SHL SUQ23, #01H;
LD ADDRESSL, #lsw TAN;
LD ADDRESSH, #msw TAN;
ADD ADDRESSL, SUQ23;
ADDC ADDRESSH, R0;
ELD SUX01, [ADDRESS]; TAN[] ;SUX01=TAN(SUQ23);
CMP DCZO, DCSK;
JGE XNB07; IF FIRST>=LAST THEN JUMP XNB07;
CMP DCZO, SUQ01;
JE XNB07;
CMP DCSK, SUQ01;
JE XNB07;
SUB SUQ23, DCSK, DCZO;
CMP SUQ23, #01H;
JLE XNB07;
CMP TANVL, SUX01;
JE XNB07;
JGT XNB06;
LD DCSK, SUQ01; ;DCSK=SUQ01=(FIRST+LAST)/2;
SJMP XNB05;
XNB06: LD DCZO, SUQ01; ;DCZO=SUQ01=(FIRST+LAST)/2;
SJMP XNB05;
XNB07: LD ARCVL, SUQ01;
SHL ARCVL, #01H;
LD ADDRESSL, #lsw SIN;
LD ADDRESSH, #msw SIN;
ADD ADDRESSL, ARCVL;
ADDC ADDRESSH, R0;
ELD SINVL, [ADDRESS];SIN[]
LD DCZO, #18000;
SUB DCZO, ARCVL;
LD ADDRESSL, #lsw SIN;
LD ADDRESSH, #msw SIN;
ADD ADDRESSL, DCZO;
ADDC ADDRESSH, R0;
ELD COSVL, [ADDRESS]; SIN[]
MUL SUX, ZIMAG, SINVL;
MUL SUQ, ZREAL, COSVL;
ADD SUX01, SUQ01;
ADDC SUX23, R0;
ADD SUX23, SUQ23; 模长=AD值=幅值*8
MUL SUQ, SUX23, ADWINDOWS;5DC9H=(10000/1706)*32768/8;
SHLL SUQ, #01H;
LD SUX23, SUQ23;
MUL SUQ, SUX23, TEMPERATURE;
DIV SUQ, #10000;
LD SUX23, SUQ01;
LD WTMP, SUX23;
ADD XBSUM01, SUX23;
ADDC XBSUM23, R0;
MUL SUQ, SUX23, SUX23;
ADD SUY01, SUQ01;
ADDC SUY23, R0;
ADD SUY23, SUQ23;
JBC SUP01, 0H, XNB08;
LD SUP01, #18000;
SUB SUP01, ARCVL;
LD ARCVL, SUP01;
XNB08: SHR ARCVL, #01H;
CMP SUN01, R0;
JGE B01OR04;
B02OR03:CMP SUN23, R0;
JGE B0002;
B0003: LD SUX01, #47536; 47536=-18000;
ADD SUX01, ARCVL;
SJMP SQB00;
B0002: LD SUX01, #18000;
SUB SUX01, ARCVL;
SJMP SQB00;
B01OR04:CMP SUN23, R0;
JGE B0001;
B0004: LD SUX01, ARCVL;
NEG SUX01;
SJMP SQB00;
B0001: LD SUX01, ARCVL;
SQB00: LD REAL01, WTMP; 基波模长
LD IMAG01, SUX01; 基波角度
LD COSVL, SUX01;
LDB WSR, #00H
RET
;;积分电度:=DCZO*SUX/(65536*450)=DCZO*146*SUX/(65536*65536);
PUBLIC YwCalc
YwCalc: MULU SUY, DCZO, #146;
MULU SUP, SUX01, SUY01;
MULU SUQ, SUX23, SUY23;
LD ZREAL, SUP23;
LD ZIMAG, SUQ01;
MULU XBSUM, SUX01, SUY23;
ADD ZREAL, XBSUM01;
ADDC ZIMAG, XBSUM23;
ADDC SUQ23, R0;
MULU XBSUM, SUX23, SUY01;
ADD ZREAL, XBSUM01;
ADDC ZIMAG, XBSUM23;
ADDC SUQ23, R0;
LD SUP23, ZREAL;
LD SUQ01, ZIMAG;
ELD SUX01, [SUN];
ELD SUX23, 2[SUN];
ELD SUY01, 4[SUN];
ELD SUY23, 6[SUN];
ADD SUP01, SUX01;
ADDC SUP23, SUX23;
ADDC SUQ01, SUY01;
ADDC SUQ23, SUY23;
EST SUP01, [SUN];
EST SUP23, 2[SUN];
EST SUQ01, 4[SUN];
EST SUQ23, 6[SUN];
RET
PUBLIC FFTUS;/* WORK=&Uab WTMP=&Ub TEMPERATURE DCZO,DCSK 斜率 */
FFTUS: CLR ARCVL;
BR FORN00;
UB00: LD ZIMAG, [WTMP];
AND ZIMAG, #3FFFH;
CMP ZIMAG, #1FFFH;
JLE NEXTUB0;
SUB ZIMAG, #4000H;
NEXTUB0:MUL SUQ, ZIMAG, DCSK;
DIV SUQ, #10000;
LD SUN01, SUQ01; // UB=SUN01;
ADD WTMP, #0008H;
UAB0: LD ZIMAG, [WORK];
AND ZIMAG, #3FFFH;
CMP ZIMAG, #1FFFH;
JLE NEXTUAB;
SUB ZIMAG, #4000H;
NEXTUAB:MUL SUQ, ZIMAG, TEMPERATURE;
DIV SUQ, #10000;
ADD SUQ01, SUN01; /* UAB+UB */
CMP SUQ01, R0;
JGE NUAB;
ADD SUQ01, #4000H;
NUAB: ST SUQ01, [WORK];
ADD WORK, #0002H;
UCB0: LD ZIMAG, [WORK]; /* UCB */
AND ZIMAG, #3FFFH;
CMP ZIMAG, #1FFFH;
JLE NEXTUCB;
SUB ZIMAG, #4000H;
NEXTUCB:MUL SUQ, ZIMAG, DCZO;
DIV SUQ, #10000;
ADD SUQ01, SUN01; /* UCB+UB */
CMP SUQ01, R0;
JGE NUCB;
ADD SUQ01, #4000H;
NUCB: ST SUQ01, [WORK];
ADD WORK, #0006H;
INC ARCVL;
FORN00: CMP ARCVL, #32;
BNC UB00;
RET
PUBLIC YCWND
YCWND: MUL SUY, DCZO, DCSK;
DIV SUY, #4000;
LD DCSK, SUY;
RET;
PUBLIC DCWND
DCWND: MUL SUY, DCZO, DCSK;
DIV SUY, #5000;
LD DCSK, SUY;
RET;
PUBLIC PQWND
PQWND: MUL SUY, DCZO, DCSK;
DIV SUY, #200;
MUL SUP, SUY;
DIV SUP, #20000;
MUL SUQ, SUY;
DIV SUQ, #20000;
MUL SUY, DCZO, DCSK;
DIV SUY, #1000;
CMP SUY, #1200;
JLE PQEEE;
JBC SUP+1, 07H, ZS00;
LD SUP23, #0FFFFH;
SJMP NEXTQ;
ZS00: LD SUP23, #0;
NEXTQ: JBC SUQ+1, 07H, ZSQ0;
LD SUQ23, #0FFFFH;
SJMP NEXTQQ;
ZSQ0: LD SUQ23, #0;
NEXTQQ: DIV SUP, #10;
DIV SUQ, #10;
PQEEE: RET;
;Asin(wt+Q)
;模长=(A*8/4)*ADWINDOWS*2/65536*TEMPERTURE/10000
; =A*ADWINDOWS/04000H*TEMPERTURE/10000
;ADWINDOWS=5DC9H=(1000/1706)*32768/8; 1706-1000
;电压放大40倍 电流放大80倍 功率放大8倍
;00 直流分量 ±2048 ±10000(±2048)
;01 基波分量 10000(1706) 幅角(-180--180)
;02 02次谐波 10000(1706) 幅角(-180--180)
;03 03次谐波 10000(1706) 幅角(-180--180)
;04 04次谐波 10000(1706) 幅角(-180--180)
;05 05次谐波 10000(1706) 幅角(-180--180)
;06 06次谐波 10000(1706) 幅角(-180--180)
;07 07次谐波 10000(1706) 幅角(-180--180)
;08 08次谐波 10000(1706) 幅角(-180--180)
;09 09次谐波 10000(1706) 幅角(-180--180)
;10 10次谐波 10000(1706) 幅角(-180--180)
;11 11次谐波 10000(1706) 幅角(-180--180)
;12 12次谐波 10000(1706) 幅角(-180--180)
;13 13次谐波 10000(1706) 幅角(-180--180)
;14 1-13次谐波有效值10000(1706) 2-13次谐波有效值10000(1706)
;15 波形畸变率 1000
;16
;17 基波含量 1000
;18 02次谐波含量 1000
;19 03次谐波含量 1000
;20 04次谐波含量 1000
;21 05次谐波含量 1000
;22 06次谐波含量 1000
;23 07次谐波含量 1000
;24 08次谐波含量 1000
;25 09次谐波含量 1000
;26 10次谐波含量 1000
;27 11次谐波含量 1000
;28 12次谐波含量 1000
;29 13次谐波含量 1000
;30
;31
END