📄 camera 5rd.lst
字号:
10C4: MOVFF 58,7E
10C8: MOVLW DB
10CA: MOVWF x85
10CC: MOVLW 0F
10CE: MOVWF x84
10D0: MOVLW 49
10D2: MOVWF x83
10D4: MOVLW 7F
10D6: MOVWF x82
10D8: RCALL 0942
10DA: MOVFF 00,7E
10DE: MOVFF 01,7F
10E2: MOVFF 02,80
10E6: MOVFF 03,81
10EA: CLRF x83
10EC: MOVFF 68,82
10F0: CALL 05B8
10F4: BSF FD8.1
10F6: MOVFF 81,87
10FA: MOVFF 80,86
10FE: MOVFF 7F,85
1102: MOVFF 7E,84
1106: MOVFF 03,8B
110A: MOVFF 02,8A
110E: MOVFF 01,89
1112: MOVFF 00,88
1116: CALL 05F0
111A: MOVFF 03,6D
111E: MOVFF 02,6C
1122: MOVFF 01,6B
1126: MOVFF 00,6A
.................... quad = quad % 4; // quadrant (0 to 3)
112A: MOVLW 03
112C: ANDWF x68,F
....................
.................... if (quad == 0 || quad == 2)
112E: MOVF x68,F
1130: BZ 1138
1132: MOVF x68,W
1134: SUBLW 02
1136: BNZ 116E
.................... t = frac * PI_DIV_BY_TWO;
1138: MOVFF 6D,85
113C: MOVFF 6C,84
1140: MOVFF 6B,83
1144: MOVFF 6A,82
1148: MOVLW DB
114A: MOVWF x89
114C: MOVLW 0F
114E: MOVWF x88
1150: MOVLW 49
1152: MOVWF x87
1154: MOVLW 7F
1156: MOVWF x86
1158: CALL 0860
115C: MOVFF 03,63
1160: MOVFF 02,62
1164: MOVFF 01,61
1168: MOVFF 00,60
.................... else if (quad == 1)
116C: BRA 123C
116E: DECFSZ x68,W
1170: BRA 11D8
.................... t = (1-frac) * PI_DIV_BY_TWO;
1172: BSF FD8.1
1174: CLRF x87
1176: CLRF x86
1178: CLRF x85
117A: MOVLW 7F
117C: MOVWF x84
117E: MOVFF 6D,8B
1182: MOVFF 6C,8A
1186: MOVFF 6B,89
118A: MOVFF 6A,88
118E: CALL 05F0
1192: MOVFF 00,7E
1196: MOVFF 01,7F
119A: MOVFF 02,80
119E: MOVFF 03,81
11A2: MOVFF 03,85
11A6: MOVFF 02,84
11AA: MOVFF 01,83
11AE: MOVFF 00,82
11B2: MOVLW DB
11B4: MOVWF x89
11B6: MOVLW 0F
11B8: MOVWF x88
11BA: MOVLW 49
11BC: MOVWF x87
11BE: MOVLW 7F
11C0: MOVWF x86
11C2: CALL 0860
11C6: MOVFF 03,63
11CA: MOVFF 02,62
11CE: MOVFF 01,61
11D2: MOVFF 00,60
.................... else // should be 3
11D6: BRA 123C
.................... t = (frac-1) * PI_DIV_BY_TWO;
11D8: BSF FD8.1
11DA: MOVFF 6D,87
11DE: MOVFF 6C,86
11E2: MOVFF 6B,85
11E6: MOVFF 6A,84
11EA: CLRF x8B
11EC: CLRF x8A
11EE: CLRF x89
11F0: MOVLW 7F
11F2: MOVWF x88
11F4: CALL 05F0
11F8: MOVFF 00,7E
11FC: MOVFF 01,7F
1200: MOVFF 02,80
1204: MOVFF 03,81
1208: MOVFF 03,85
120C: MOVFF 02,84
1210: MOVFF 01,83
1214: MOVFF 00,82
1218: MOVLW DB
121A: MOVWF x89
121C: MOVLW 0F
121E: MOVWF x88
1220: MOVLW 49
1222: MOVWF x87
1224: MOVLW 7F
1226: MOVWF x86
1228: CALL 0860
122C: MOVFF 03,63
1230: MOVFF 02,62
1234: MOVFF 01,61
1238: MOVFF 00,60
....................
.................... y = 0.999999999781;
123C: CLRF 5F
123E: CLRF 5E
1240: CLRF 5D
1242: MOVLW 7F
1244: MOVWF 5C
.................... t = t * t;
1246: MOVFF 63,85
124A: MOVFF 62,84
124E: MOVFF 61,83
1252: MOVFF 60,82
1256: MOVFF 63,89
125A: MOVFF 62,88
125E: MOVFF 61,87
1262: MOVFF 60,86
1266: CALL 0860
126A: MOVFF 03,63
126E: MOVFF 02,62
1272: MOVFF 01,61
1276: MOVFF 00,60
.................... for (i = 0; i <= 3; i++)
127A: CLRF x69
127C: MOVF x69,W
127E: SUBLW 03
1280: BNC 1346
.................... {
.................... t2 = t2 * t;
1282: MOVFF 67,85
1286: MOVFF 66,84
128A: MOVFF 65,83
128E: MOVFF 64,82
1292: MOVFF 63,89
1296: MOVFF 62,88
129A: MOVFF 61,87
129E: MOVFF 60,86
12A2: CALL 0860
12A6: MOVFF 03,67
12AA: MOVFF 02,66
12AE: MOVFF 01,65
12B2: MOVFF 00,64
.................... y = y + p[i] * t2;
12B6: MOVF x69,W
12B8: MULLW 04
12BA: MOVF FF3,W
12BC: CLRF 03
12BE: ADDLW 6E
12C0: MOVWF FE9
12C2: MOVLW 00
12C4: ADDWFC 03,W
12C6: MOVWF FEA
12C8: MOVFF FEF,7E
12CC: MOVFF FEC,7F
12D0: MOVFF FEC,80
12D4: MOVFF FEC,81
12D8: MOVFF 81,85
12DC: MOVFF 80,84
12E0: MOVFF 7F,83
12E4: MOVFF 7E,82
12E8: MOVFF 67,89
12EC: MOVFF 66,88
12F0: MOVFF 65,87
12F4: MOVFF 64,86
12F8: CALL 0860
12FC: MOVFF FEA,83
1300: MOVFF FE9,82
1304: BCF FD8.1
1306: MOVFF 5F,87
130A: MOVFF 5E,86
130E: MOVFF 5D,85
1312: MOVFF 5C,84
1316: MOVFF 03,8B
131A: MOVFF 02,8A
131E: MOVFF 01,89
1322: MOVFF 00,88
1326: CALL 05F0
132A: MOVFF 83,FEA
132E: MOVFF 82,FE9
1332: MOVFF 03,5F
1336: MOVFF 02,5E
133A: MOVFF 01,5D
133E: MOVFF 00,5C
.................... }
1342: INCF x69,F
1344: BRA 127C
....................
.................... if (quad == 2 || quad == 1)
1346: MOVF x68,W
1348: SUBLW 02
134A: BZ 1350
134C: DECFSZ x68,W
134E: BRA 1354
.................... y = -y; // correct sign
1350: MOVLW 80
1352: XORWF 5D,F
....................
.................... return (y);
1354: MOVFF 5C,00
1358: MOVFF 5D,01
135C: MOVFF 5E,02
1360: MOVFF 5F,03
.................... }
1364: GOTO 184E (RETURN)
....................
.................... ////////////////////////////////////////////////////////////////////////////
.................... // float sin(float x)
.................... ////////////////////////////////////////////////////////////////////////////
.................... // Description : returns the sine value of the angle x, which is in radian
.................... // Date : 9/20/2001
.................... //
.................... float sin(float x)
.................... {
.................... 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;
*
0B16: BCF x70.0
.................... flag = 0;
0B18: BCF x70.1
.................... y = x;
0B1A: MOVFF 63,67
0B1E: MOVFF 62,66
0B22: MOVFF 61,65
0B26: MOVFF 60,64
....................
.................... if (x < 0)
0B2A: MOVFF 63,81
0B2E: MOVFF 62,80
0B32: MOVFF 61,7F
0B36: MOVFF 60,7E
0B3A: CLRF x85
0B3C: CLRF x84
0B3E: CLRF x83
0B40: CLRF x82
0B42: RCALL 0AA0
0B44: BNC 0B4C
.................... {
.................... s = 1;
0B46: BSF x70.0
.................... y = -y;
0B48: MOVLW 80
0B4A: XORWF x65,F
.................... }
....................
.................... if (y > 1.0)
0B4C: CLRF x81
0B4E: CLRF x80
0B50: CLRF x7F
0B52: MOVLW 7F
0B54: MOVWF x7E
0B56: MOVFF 67,85
0B5A: MOVFF 66,84
0B5E: MOVFF 65,83
0B62: MOVFF 64,82
0B66: RCALL 0AA0
0B68: BNC 0B98
.................... {
.................... y = 1.0/y;
0B6A: CLRF x81
0B6C: CLRF x80
0B6E: CLRF x7F
0B70: MOVLW 7F
0B72: MOVWF x7E
0B74: MOVFF 67,85
0B78: MOVFF 66,84
0B7C: MOVFF 65,83
0B80: MOVFF 64,82
0B84: RCALL 0942
0B86: MOVFF 03,67
0B8A: MOVFF 02,66
0B8E: MOVFF 01,65
0B92: MOVFF 00,64
.................... flag = 1;
0B96: BSF x70.1
.................... }
....................
.................... res = pat[0]*y*y + pat[1];
0B98: MOVLW 0A
0B9A: MOVWF x85
0B9C: MOVLW 89
0B9E: MOVWF x84
0BA0: MOVLW 34
0BA2: MOVWF x83
0BA4: MOVLW 7C
0BA6: MOVWF x82
0BA8: MOVFF 67,89
0BAC: MOVFF 66,88
0BB0: MOVFF 65,87
0BB4: MOVFF 64,86
0BB8: RCALL 0860
0BBA: MOVFF 00,71
0BBE: MOVFF 01,72
0BC2: MOVFF 02,73
0BC6: MOVFF 03,74
0BCA: MOVFF 03,85
0BCE: MOVFF 02,84
0BD2: MOVFF 01,83
0BD6: MOVFF 00,82
0BDA: MOVFF 67,89
0BDE: MOVFF 66,88
0BE2: MOVFF 65,87
0BE6: MOVFF 64,86
0BEA: RCALL 0860
0BEC: MOVFF 00,75
0BF0: MOVFF 01,76
0BF4: MOVFF 02,77
0BF8: MOVFF 03,78
0BFC: BCF FD8.1
0BFE: MOVFF 03,87
0C02: MOVFF 02,86
0C06: MOVFF 01,85
0C0A: MOVFF 00,84
0C0E: MOVLW 7C
0C10: MOVWF x8B
0C12: MOVLW 79
0C14: MOVWF x8A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -