📄 phatpspv1.lst
字号:
.................... return cos(x - PI_DIV_BY_TWO);
.................... }
....................
.................... ////////////////////////////////////////////////////////////////////////////
.................... // float tan(float x)
.................... ////////////////////////////////////////////////////////////////////////////
.................... // Description : returns the tangent value of the angle x, which is in radian
.................... // Date : 9/20/2001
.................... //
.................... float tan(float x)
.................... {
.................... float c, s;
....................
.................... c = cos(x);
.................... if (c == 0.0)
.................... return (1.0e+36);
....................
.................... s = sin(x);
.................... return(s/c);
.................... }
....................
....................
....................
.................... float const pas[3] = {0.49559947, -4.6145309, 5.6036290};
.................... float const qas[3] = {1.0000000, -5.5484666, 5.6036290};
....................
.................... float ASIN_COS(float x, int n)
.................... {
.................... float y, res, r, y2;
.................... int1 s;
.................... #ifdef _ERRNO
.................... if(x <-1 || x > 1)
.................... {
.................... errno=EDOM;
.................... }
.................... #endif
.................... s = 0;
.................... y = x;
....................
.................... if (x < 0)
.................... {
.................... s = 1;
.................... y = -y;
.................... }
....................
.................... if (y > 0.5)
.................... {
.................... y = sqrt((1.0 - y)/2.0);
.................... n += 2;
.................... }
....................
.................... y2=y*y;
....................
.................... res = pas[0]*y2 + pas[1];
.................... res = res*y2 + pas[2];
....................
.................... r = qas[0]*y2 + qas[1];
.................... r = r*y2 + qas[2];
....................
.................... res = y*res/r;
....................
.................... if (n & 2) // |x| > 0.5
.................... res = PI_DIV_BY_TWO - 2.0*res;
.................... if (s)
.................... res = -res;
.................... if (n & 1) // take arccos
.................... res = PI_DIV_BY_TWO - res;
....................
.................... return(res);
.................... }
....................
....................
.................... ////////////////////////////////////////////////////////////////////////////
.................... // float asin(float x)
.................... ////////////////////////////////////////////////////////////////////////////
.................... // Description : returns the arcsine value of the value x.
.................... // Date : N/A
.................... //
.................... float asin(float x)
.................... {
.................... float r;
....................
.................... r = ASIN_COS(x, 0);
.................... return(r);
.................... }
....................
....................
.................... ////////////////////////////////////////////////////////////////////////////
.................... // float acos(float x)
.................... ////////////////////////////////////////////////////////////////////////////
.................... // Description : returns the arccosine value of the value x.
.................... // Date : N/A
.................... //
.................... float acos(float x)
.................... {
.................... float r;
....................
.................... r = ASIN_COS(x, 1);
.................... return(r);
.................... }
....................
.................... float const pat[4] = {0.17630401, 5.6710795, 22.376096, 19.818457};
.................... float const qat[4] = {1.0000000, 11.368190, 28.982246, 19.818457};
....................
.................... ////////////////////////////////////////////////////////////////////////////
.................... // float atan(float x)
.................... ////////////////////////////////////////////////////////////////////////////
.................... // Description : returns the arctangent value of the value x.
.................... // Date : N/A
.................... //
.................... float atan(float x)
.................... {
.................... float y, res, r;
.................... int1 s, flag;
....................
.................... s = 0;
*
0876: BCF 5B.0
.................... flag = 0;
0877: BCF 5B.1
.................... y = x;
0878: MOVF 4E,W
0879: MOVWF 52
087A: MOVF 4D,W
087B: MOVWF 51
087C: MOVF 4C,W
087D: MOVWF 50
087E: MOVF 4B,W
087F: MOVWF 4F
....................
.................... if (x < 0)
0880: MOVF 4E,W
0881: MOVWF 5F
0882: MOVF 4D,W
0883: MOVWF 5E
0884: MOVF 4C,W
0885: MOVWF 5D
0886: MOVF 4B,W
0887: MOVWF 5C
0888: CLRF 63
0889: CLRF 62
088A: CLRF 61
088B: CLRF 60
088C: BCF 0A.3
088D: CALL 603
088E: BSF 0A.3
088F: BTFSS 03.0
0890: GOTO 094
.................... {
.................... s = 1;
0891: BSF 5B.0
.................... y = -y;
0892: MOVLW 80
0893: XORWF 50,F
.................... }
....................
.................... if (y > 1.0)
0894: CLRF 5F
0895: CLRF 5E
0896: CLRF 5D
0897: MOVLW 7F
0898: MOVWF 5C
0899: MOVF 52,W
089A: MOVWF 63
089B: MOVF 51,W
089C: MOVWF 62
089D: MOVF 50,W
089E: MOVWF 61
089F: MOVF 4F,W
08A0: MOVWF 60
08A1: BCF 0A.3
08A2: CALL 603
08A3: BSF 0A.3
08A4: BTFSS 03.0
08A5: GOTO 0BF
.................... {
.................... y = 1.0/y;
08A6: CLRF 63
08A7: CLRF 62
08A8: CLRF 61
08A9: MOVLW 7F
08AA: MOVWF 60
08AB: MOVF 52,W
08AC: MOVWF 67
08AD: MOVF 51,W
08AE: MOVWF 66
08AF: MOVF 50,W
08B0: MOVWF 65
08B1: MOVF 4F,W
08B2: MOVWF 64
08B3: BCF 0A.3
08B4: CALL 538
08B5: BSF 0A.3
08B6: MOVF 7A,W
08B7: MOVWF 52
08B8: MOVF 79,W
08B9: MOVWF 51
08BA: MOVF 78,W
08BB: MOVWF 50
08BC: MOVF 77,W
08BD: MOVWF 4F
.................... flag = 1;
08BE: BSF 5B.1
.................... }
....................
.................... res = pat[0]*y*y + pat[1];
08BF: MOVLW 0A
08C0: MOVWF 63
08C1: MOVLW 89
08C2: MOVWF 62
08C3: MOVLW 34
08C4: MOVWF 61
08C5: MOVLW 7C
08C6: MOVWF 60
08C7: MOVF 52,W
08C8: MOVWF 67
08C9: MOVF 51,W
08CA: MOVWF 66
08CB: MOVF 50,W
08CC: MOVWF 65
08CD: MOVF 4F,W
08CE: MOVWF 64
08CF: BCF 0A.3
08D0: CALL 4C2
08D1: BSF 0A.3
08D2: MOVF 77,W
08D3: MOVWF 5C
08D4: MOVF 78,W
08D5: MOVWF 5D
08D6: MOVF 79,W
08D7: MOVWF 5E
08D8: MOVF 7A,W
08D9: MOVWF 5F
08DA: MOVWF 63
08DB: MOVF 79,W
08DC: MOVWF 62
08DD: MOVF 78,W
08DE: MOVWF 61
08DF: MOVF 77,W
08E0: MOVWF 60
08E1: MOVF 52,W
08E2: MOVWF 67
08E3: MOVF 51,W
08E4: MOVWF 66
08E5: MOVF 50,W
08E6: MOVWF 65
08E7: MOVF 4F,W
08E8: MOVWF 64
08E9: BCF 0A.3
08EA: CALL 4C2
08EB: BSF 0A.3
08EC: MOVF 77,W
08ED: MOVWF 60
08EE: MOVF 78,W
08EF: MOVWF 61
08F0: MOVF 79,W
08F1: MOVWF 62
08F2: MOVF 7A,W
08F3: MOVWF 63
08F4: BCF 03.1
08F5: MOVF 7A,W
08F6: MOVWF 67
08F7: MOVF 79,W
08F8: MOVWF 66
08F9: MOVF 78,W
08FA: MOVWF 65
08FB: MOVF 77,W
08FC: MOVWF 64
08FD: MOVLW 7C
08FE: MOVWF 6B
08FF: MOVLW 79
0900: MOVWF 6A
0901: MOVLW 35
0902: MOVWF 69
0903: MOVLW 81
0904: MOVWF 68
0905: BCF 0A.3
0906: CALL 380
0907: BSF 0A.3
0908: MOVF 7A,W
0909: MOVWF 56
090A: MOVF 79,W
090B: MOVWF 55
090C: MOVF 78,W
090D: MOVWF 54
090E: MOVF 77,W
090F: MOVWF 53
.................... res = res*y*y + pat[2];
0910: MOVF 56,W
0911: MOVWF 63
0912: MOVF 55,W
0913: MOVWF 62
0914: MOVF 54,W
0915: MOVWF 61
0916: MOVF 53,W
0917: MOVWF 60
0918: MOVF 52,W
0919: MOVWF 67
091A: MOVF 51,W
091B: MOVWF 66
091C: MOVF 50,W
091D: MOVWF 65
091E: MOVF 4F,W
091F: MOVWF 64
0920: BCF 0A.3
0921: CALL 4C2
0922: BSF 0A.3
0923: MOVF 77,W
0924: MOVWF 5C
0925: MOVF 78,W
0926: MOVWF 5D
0927: MOVF 79,W
0928: MOVWF 5E
0929: MOVF 7A,W
092A: MOVWF 5F
092B: MOVWF 63
092C: MOVF 79,W
092D: MOVWF 62
092E: MOVF 78,W
092F: MOVWF 61
0930: MOVF 77,W
0931: MOVWF 60
0932: MOVF 52,W
0933: MOVWF 67
0934: MOVF 51,W
0935: MOVWF 66
0936: MOVF 50,W
0937: MOVWF 65
0938: MOVF 4F,W
0939: MOVWF 64
093A: BCF 0A.3
093B: CALL 4C2
093C: BSF 0A.3
093D: MOVF 77,W
093E: MOVWF 60
093F: MOVF 78,W
0940: MOVWF 61
0941: MOVF 79,W
0942: MOVWF 62
0943: MOVF 7A,W
0944: MOVWF 63
0945: BCF 03.1
0946: MOVF 7A,W
0947: MOVWF 67
0948: MOVF 79,W
0949: MOVWF 66
094A: MOVF 78,W
094B: MOVWF 65
094C: MOVF 77,W
094D: MOVWF 64
094E: MOVLW 3F
094F: MOVWF 6B
0950: MOVLW 02
0951: MOVWF 6A
0952: MOVLW 33
0953: MOVWF 69
0954: MOVLW 83
0955: MOVWF 68
0956: BCF 0A.3
0957: CALL 380
0958: BSF 0A.3
0959: MOVF 7A,W
095A: MOVWF 56
095B: MOVF 79,W
095C: MOVWF 55
095D: MOVF 78,W
095E: MOVWF 54
095F: MOVF 77,W
0960: MOVWF 53
.................... res = res*y*y + pat[3];
0961: MOVF 56,W
0962: MOVWF 63
0963: MOVF 55,W
0964: MOVWF 62
0965: MOVF 54,W
0966: MOVWF 61
0967: MOVF 53,W
0968: MOVWF 60
0969: MOVF 52,W
096A: MOVWF 67
096B: MOVF 51,W
096C: MOVWF 66
096D: MOVF 50,W
096E: MOVWF 65
096F: MOVF 4F,W
0970: MOVWF 64
0971: BCF 0A.3
0972: CALL 4C2
0973: BSF 0A.3
0974: MOVF 77,W
0975: MOVWF 5C
0976: MOVF 78,W
0977: MOVWF 5D
0978: MOVF 79,W
0979: MOVWF 5E
097A: MOVF 7A,W
097B: MOVWF 5F
097C: MOVWF 63
097D: MOVF 79,W
097E: MOVWF 62
097F: MOVF 78,W
0980: MOVWF 61
0981: MOVF 77,W
0982: MOVWF 60
0983: MOVF 52,W
0984: MOVWF 67
0985: MOVF 51,W
0986: MOVWF 66
0987: MOVF 50,W
0988: MOVWF 65
0989: MOVF 4F,W
098A: MOVWF 64
098B: BCF 0A.3
098C: CALL 4C2
098D: BSF 0A.3
098E: MOVF 77,W
098F: MOVWF 60
0990: MOVF 78,W
0991: MOVWF 61
0992: MOVF 79,W
0993: MOVWF 62
0994: MOVF 7A,W
0995: MOVWF 63
0996: BCF 03.1
0997: MOVF 7A,W
0998: MOVWF 67
0999: MOVF 79,W
099A: MOVWF 66
099B: MOVF 78,W
099C: MOVWF 65
099D: MOVF 77,W
099E: MOVWF 64
099F: MOVLW 33
09A0: MOVWF 6B
09A1: MOVLW 8C
09A2: MOVWF 6A
09A3: MOVLW 1E
09A4: MOVWF 69
09A5: MOVLW 83
09A6: MOVWF 68
09A7: BCF 0A.3
09A8: CALL 380
09A9: BSF 0A.3
09AA: MOVF 7A,W
09AB: MOVWF 56
09AC: MOVF 79,W
09AD: MOVWF 55
09AE: MOVF 78,W
09AF: MOVWF 54
09B0: MOVF 77,W
09B1: MOVWF 53
....................
.................... r = qat[0]*y*y + qat[1];
09B2: CLRF 63
09B3: CLRF 62
09B4: CLRF 61
09B5: MOVLW 7F
09B6: MOVWF 60
09B7: MOVF 52,W
09B8: MOVWF 67
09B9: MOVF 51,W
09BA: MOVWF 66
09BB: MOVF 50,W
09BC: MOVWF 65
09BD: MOVF 4F,W
09BE: MOVWF 64
09BF: BCF 0A.3
09C0: CALL 4C2
09C1: BSF 0A.3
09C2: MOVF 77,W
09C3: MOVWF 5C
09C4: MOVF 78,W
09C5: MOVWF 5D
09C6: MOVF 79,W
09C7: MOVWF 5E
09C8: MOVF 7A,W
09C9: MOVWF 5F
09CA: MOVWF 63
09CB: MOVF 79,W
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -