📄 phat.lst
字号:
09F4: MOVWF 6E
09F5: MOVLW E4
09F6: MOVWF 6D
09F7: MOVLW 35
09F8: MOVWF 6C
09F9: MOVLW 82
09FA: MOVWF 6B
09FB: BCF 0A.3
09FC: CALL 477
09FD: BSF 0A.3
09FE: MOVF 7A,W
09FF: MOVWF 5D
0A00: MOVF 79,W
0A01: MOVWF 5C
0A02: MOVF 78,W
0A03: MOVWF 5B
0A04: MOVF 77,W
0A05: MOVWF 5A
.................... r = r*y*y + qat[2];
0A06: MOVF 5D,W
0A07: MOVWF 66
0A08: MOVF 5C,W
0A09: MOVWF 65
0A0A: MOVF 5B,W
0A0B: MOVWF 64
0A0C: MOVF 5A,W
0A0D: MOVWF 63
0A0E: MOVF 55,W
0A0F: MOVWF 6A
0A10: MOVF 54,W
0A11: MOVWF 69
0A12: MOVF 53,W
0A13: MOVWF 68
0A14: MOVF 52,W
0A15: MOVWF 67
0A16: BCF 0A.3
0A17: CALL 336
0A18: BSF 0A.3
0A19: MOVF 77,W
0A1A: MOVWF 5F
0A1B: MOVF 78,W
0A1C: MOVWF 60
0A1D: MOVF 79,W
0A1E: MOVWF 61
0A1F: MOVF 7A,W
0A20: MOVWF 62
0A21: MOVWF 66
0A22: MOVF 79,W
0A23: MOVWF 65
0A24: MOVF 78,W
0A25: MOVWF 64
0A26: MOVF 77,W
0A27: MOVWF 63
0A28: MOVF 55,W
0A29: MOVWF 6A
0A2A: MOVF 54,W
0A2B: MOVWF 69
0A2C: MOVF 53,W
0A2D: MOVWF 68
0A2E: MOVF 52,W
0A2F: MOVWF 67
0A30: BCF 0A.3
0A31: CALL 336
0A32: BSF 0A.3
0A33: MOVF 77,W
0A34: MOVWF 63
0A35: MOVF 78,W
0A36: MOVWF 64
0A37: MOVF 79,W
0A38: MOVWF 65
0A39: MOVF 7A,W
0A3A: MOVWF 66
0A3B: BCF 03.1
0A3C: MOVF 7A,W
0A3D: MOVWF 6A
0A3E: MOVF 79,W
0A3F: MOVWF 69
0A40: MOVF 78,W
0A41: MOVWF 68
0A42: MOVF 77,W
0A43: MOVWF 67
0A44: MOVLW A4
0A45: MOVWF 6E
0A46: MOVLW DB
0A47: MOVWF 6D
0A48: MOVLW 67
0A49: MOVWF 6C
0A4A: MOVLW 83
0A4B: MOVWF 6B
0A4C: BCF 0A.3
0A4D: CALL 477
0A4E: BSF 0A.3
0A4F: MOVF 7A,W
0A50: MOVWF 5D
0A51: MOVF 79,W
0A52: MOVWF 5C
0A53: MOVF 78,W
0A54: MOVWF 5B
0A55: MOVF 77,W
0A56: MOVWF 5A
.................... r = r*y*y + qat[3];
0A57: MOVF 5D,W
0A58: MOVWF 66
0A59: MOVF 5C,W
0A5A: MOVWF 65
0A5B: MOVF 5B,W
0A5C: MOVWF 64
0A5D: MOVF 5A,W
0A5E: MOVWF 63
0A5F: MOVF 55,W
0A60: MOVWF 6A
0A61: MOVF 54,W
0A62: MOVWF 69
0A63: MOVF 53,W
0A64: MOVWF 68
0A65: MOVF 52,W
0A66: MOVWF 67
0A67: BCF 0A.3
0A68: CALL 336
0A69: BSF 0A.3
0A6A: MOVF 77,W
0A6B: MOVWF 5F
0A6C: MOVF 78,W
0A6D: MOVWF 60
0A6E: MOVF 79,W
0A6F: MOVWF 61
0A70: MOVF 7A,W
0A71: MOVWF 62
0A72: MOVWF 66
0A73: MOVF 79,W
0A74: MOVWF 65
0A75: MOVF 78,W
0A76: MOVWF 64
0A77: MOVF 77,W
0A78: MOVWF 63
0A79: MOVF 55,W
0A7A: MOVWF 6A
0A7B: MOVF 54,W
0A7C: MOVWF 69
0A7D: MOVF 53,W
0A7E: MOVWF 68
0A7F: MOVF 52,W
0A80: MOVWF 67
0A81: BCF 0A.3
0A82: CALL 336
0A83: BSF 0A.3
0A84: MOVF 77,W
0A85: MOVWF 63
0A86: MOVF 78,W
0A87: MOVWF 64
0A88: MOVF 79,W
0A89: MOVWF 65
0A8A: MOVF 7A,W
0A8B: MOVWF 66
0A8C: BCF 03.1
0A8D: MOVF 7A,W
0A8E: MOVWF 6A
0A8F: MOVF 79,W
0A90: MOVWF 69
0A91: MOVF 78,W
0A92: MOVWF 68
0A93: MOVF 77,W
0A94: MOVWF 67
0A95: MOVLW 33
0A96: MOVWF 6E
0A97: MOVLW 8C
0A98: MOVWF 6D
0A99: MOVLW 1E
0A9A: MOVWF 6C
0A9B: MOVLW 83
0A9C: MOVWF 6B
0A9D: BCF 0A.3
0A9E: CALL 477
0A9F: BSF 0A.3
0AA0: MOVF 7A,W
0AA1: MOVWF 5D
0AA2: MOVF 79,W
0AA3: MOVWF 5C
0AA4: MOVF 78,W
0AA5: MOVWF 5B
0AA6: MOVF 77,W
0AA7: MOVWF 5A
....................
.................... res = y*res/r;
0AA8: MOVF 55,W
0AA9: MOVWF 66
0AAA: MOVF 54,W
0AAB: MOVWF 65
0AAC: MOVF 53,W
0AAD: MOVWF 64
0AAE: MOVF 52,W
0AAF: MOVWF 63
0AB0: MOVF 59,W
0AB1: MOVWF 6A
0AB2: MOVF 58,W
0AB3: MOVWF 69
0AB4: MOVF 57,W
0AB5: MOVWF 68
0AB6: MOVF 56,W
0AB7: MOVWF 67
0AB8: BCF 0A.3
0AB9: CALL 336
0ABA: BSF 0A.3
0ABB: MOVF 77,W
0ABC: MOVWF 5F
0ABD: MOVF 78,W
0ABE: MOVWF 60
0ABF: MOVF 79,W
0AC0: MOVWF 61
0AC1: MOVF 7A,W
0AC2: MOVWF 62
0AC3: MOVWF 66
0AC4: MOVF 79,W
0AC5: MOVWF 65
0AC6: MOVF 78,W
0AC7: MOVWF 64
0AC8: MOVF 77,W
0AC9: MOVWF 63
0ACA: MOVF 5D,W
0ACB: MOVWF 6A
0ACC: MOVF 5C,W
0ACD: MOVWF 69
0ACE: MOVF 5B,W
0ACF: MOVWF 68
0AD0: MOVF 5A,W
0AD1: MOVWF 67
0AD2: BCF 0A.3
0AD3: CALL 3AC
0AD4: BSF 0A.3
0AD5: MOVF 7A,W
0AD6: MOVWF 59
0AD7: MOVF 79,W
0AD8: MOVWF 58
0AD9: MOVF 78,W
0ADA: MOVWF 57
0ADB: MOVF 77,W
0ADC: MOVWF 56
....................
....................
.................... if (flag) // for |x| > 1
0ADD: BTFSS 5E.1
0ADE: GOTO 2FB
.................... res = PI_DIV_BY_TWO - res;
0ADF: BSF 03.1
0AE0: MOVLW DB
0AE1: MOVWF 6A
0AE2: MOVLW 0F
0AE3: MOVWF 69
0AE4: MOVLW 49
0AE5: MOVWF 68
0AE6: MOVLW 7F
0AE7: MOVWF 67
0AE8: MOVF 59,W
0AE9: MOVWF 6E
0AEA: MOVF 58,W
0AEB: MOVWF 6D
0AEC: MOVF 57,W
0AED: MOVWF 6C
0AEE: MOVF 56,W
0AEF: MOVWF 6B
0AF0: BCF 0A.3
0AF1: CALL 477
0AF2: BSF 0A.3
0AF3: MOVF 7A,W
0AF4: MOVWF 59
0AF5: MOVF 79,W
0AF6: MOVWF 58
0AF7: MOVF 78,W
0AF8: MOVWF 57
0AF9: MOVF 77,W
0AFA: MOVWF 56
.................... if (s)
0AFB: BTFSS 5E.0
0AFC: GOTO 2FF
.................... res = -res;
0AFD: MOVLW 80
0AFE: XORWF 57,F
....................
.................... return(res);
0AFF: MOVF 56,W
0B00: MOVWF 77
0B01: MOVF 57,W
0B02: MOVWF 78
0B03: MOVF 58,W
0B04: MOVWF 79
0B05: MOVF 59,W
0B06: MOVWF 7A
.................... }
....................
.................... /////////////////////////////////////////////////////////////////////////////
.................... // float atan2(float y, float x)
.................... /////////////////////////////////////////////////////////////////////////////
.................... // Description :computes the principal value of arc tangent of y/x, using the
.................... // signs of both the arguments to determine the quadrant of the return value
.................... // Returns : returns the arc tangent of y/x.
.................... // Date : N/A
.................... //
....................
....................
.................... float atan2(float y,float x)
.................... {
.................... float z;
.................... int1 sign;
.................... int quad;
.................... sign=0;
.................... quad=0; //quadrant
.................... quad=((y<=0.0)?(x<=0.0)?:4):((x<0.0)?:1));
.................... if(y<0.0)
.................... {
.................... sign=1;
.................... y=-y;
.................... }
.................... if(x<0.0)
.................... {
.................... x=-x;
.................... }
.................... if (x==0.0)
.................... {
.................... if(y==0.0)
.................... {
.................... #ifdef _ERRNO
.................... {
.................... errno=EDOM;
.................... }
.................... #endif
.................... }
.................... else
.................... {
.................... if(sign)
.................... {
.................... return (-(PI_DIV_BY_TWO));
.................... }
.................... else
.................... {
.................... return (PI_DIV_BY_TWO);
.................... }
.................... }
.................... }
.................... else
.................... {
.................... z=y/x;
.................... switch(quad)
.................... {
.................... case 1:
.................... {
.................... return atan(z);
.................... break;
.................... }
.................... case 2:
.................... {
.................... // return (atan(z)+PI_DIV_BY_TWO); //2L3122
.................... return (PI-atan(z));
.................... break;
.................... }
.................... case 3:
.................... {
.................... return (atan(z)-PI);
.................... break;
.................... }
.................... case 4:
.................... {
.................... return (-atan(z));
.................... break;
.................... }
.................... }
.................... }
.................... }
....................
.................... //////////////////// Hyperbolic functions ////////////////////
....................
.................... ////////////////////////////////////////////////////////////////////////////
.................... // float cosh(float x)
.................... ////////////////////////////////////////////////////////////////////////////
.................... // Description : Computes the hyperbolic cosine value of x
.................... // Returns : returns the hyperbolic cosine value of x
.................... // Date : N/A
.................... //
....................
.................... float cosh(float x)
.................... {
.................... return ((exp(x)+exp(-x))/2);
.................... }
....................
.................... ////////////////////////////////////////////////////////////////////////////
.................... // float sinh(float x)
.................... ////////////////////////////////////////////////////////////////////////////
.................... // Description : Computes the hyperbolic sine value of x
.................... // Returns : returns the hyperbolic sine value of x
.................... // Date : N/A
.................... //
....................
.................... float sinh(float x)
.................... {
....................
.................... return ((exp(x) - exp(-x))/2);
.................... }
....................
.................... ////////////////////////////////////////////////////////////////////////////
.................... // float tanh(float x)
.................... ////////////////////////////////////////////////////////////////////////////
.................... // Description : Computes the hyperbolic tangent value of x
.................... // Returns : returns the hyperbolic tangent value of x
.................... // Date : N/A
.................... //
....................
.................... float tanh(float x)
.................... {
.................... return(sinh(x)/cosh(x));
.................... }
....................
.................... ////////////////////////////////////////////////////////////////////////////
.................... // float frexp(float x, signed int *exp)
.................... ////////////////////////////////////////////////////////////////////////////
.................... // Description : breaks a floating point number into a normalized fraction and an integral
.................... // power of 2. It stores the integer in the signed int object pointed to by exp.
.................... // Returns : returns the value x, such that x is a double with magnitude in the interval
.................... // [1/2,1) or zero, and value equals x times 2 raised to the power *exp.If value is zero,
.................... // both parts of the result are zero.
.................... // Date : N/A
.................... //
....................
....................
....................
.................... #define LOG2 .30102999566398119521
.................... float frexp(float x, signed int *exp)
.................... {
.................... float res;
.................... int1 sign = 0;
.................... if(x == 0.0)
.................... {
.................... *exp=0;
.................... return (0.0);
.................... }
.................... if(x < 0.0)
.................... {
.................... x=-x;
.................... sign=1;
.................... }
.................... if (x > 1.0)
.................... {
.................... *exp=(ceil(log10(x)/LOG2));
.................... res=x/(pow(2, *exp));
.................... if (res == 1)
.................... {
.................... *exp=*exp+1;
.................... res=.5;
.................... }
.................... }
.................... else
.................... {
.................... if(x < 0.5)
.................... {
.................... *exp=-1;
.................... res=x*2;
.................... }
.................... else
.................... {
.................... *exp=0;
.................... res=x;
.................... }
.................... }
.................... if(sign)
.................... {
.................... res=-res;
.................... }
.................... return res;
.................... }
....................
.................... //////////////////////////////////////////////////////////////////////////////
.................... // float ldexp(float x, signed int *exp)
.................... ///////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -