CCS PCM C Compiler, Version 4.106, 47914 28-4-13 13:38Filename: C:\Users\Honza\Documents\pic\poloha_slunce\main.lstROM used: 4642 words (57%)Largest free fragment is 2048RAM used: 10 (3%) at main() level154 (42%) worst caseStack: 4 locations*0000: MOVLW 070001: MOVWF 0A0002: GOTO 7330003: NOP.................... #include "C:\Users\Honza\Documents\pic\poloha_slunce\main.h".................... #include <16F887.h>.................... //////// Standard Header file for the PIC16F887 device ////////////////*029C: MOVF 77,W029D: MOVWF 73029E: MOVF 78,W029F: MOVWF 7402A0: MOVF 79,W02A1: MOVWF 7502A2: MOVF 7A,W02A3: MOVWF 7602A4: BSF 03.502A5: MOVWF 4D02A6: MOVF 79,W02A7: MOVWF 4C02A8: MOVF 78,W02A9: MOVWF 4B02AA: MOVF 77,W02AB: MOVWF 4A02AC: MOVLW C302AD: MOVWF 5102AE: MOVLW F502AF: MOVWF 5002B0: MOVLW 4802B1: MOVWF 4F02B2: MOVLW 8002B3: MOVWF 4E02B4: BCF 03.502B5: CALL 20E*0688: MOVF 77,W0689: MOVWF 5E068A: MOVF 78,W068B: MOVWF 5F068C: MOVF 79,W068D: MOVWF 60068E: MOVF 7A,W068F: MOVWF 610690: BSF 03.50691: MOVWF 4D0692: BCF 03.50693: MOVF 60,W0694: BSF 03.50695: MOVWF 4C0696: BCF 03.50697: MOVF 5F,W0698: BSF 03.50699: MOVWF 4B069A: BCF 03.5069B: MOVF 5E,W069C: BSF 03.5069D: MOVWF 4A069E: CLRF 51069F: CLRF 5006A0: MOVLW 3406A1: MOVWF 4F06A2: MOVLW 8606A3: MOVWF 4E06A4: BCF 03.506A5: CALL 20E06A6: MOVF 7A,W06A7: BSF 03.506A8: MOVWF 4906A9: MOVF 79,W06AA: MOVWF 4806AB: MOVF 78,W06AC: MOVWF 4706AD: MOVF 77,W06AE: MOVWF 4606AF: BCF 03.506B0: CALL 44E.................... #device PIC16F887.................... #list........................................ #device adc=8........................................ #FUSES NOWDT //No Watch Dog Timer.................... #FUSES INTRC //Internal RC Osc.................... #FUSES NOPUT //No Power Up Timer.................... #FUSES MCLR //Master Clear pin enabled.................... #FUSES NOPROTECT //Code not protected from reading.................... #FUSES NOCPD //No EE protection.................... #FUSES NOBROWNOUT //No brownout reset.................... #FUSES IESO //Internal External Switch Over mode enabled.................... #FUSES FCMEN //Fail-safe clock monitor enabled.................... #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O.................... #FUSES NODEBUG //No Debug mode for ICD.................... #FUSES NOWRT //Program memory not write protected.................... #FUSES BORV40 //Brownout reset at 4.0V........................................ #use delay(clock=8000000)*071D: MOVLW 25071E: MOVWF 04071F: BCF 03.70720: MOVF 00,W0721: BTFSC 03.20722: GOTO 7300723: MOVLW 020724: MOVWF 780725: CLRF 770726: DECFSZ 77,F0727: GOTO 7260728: DECFSZ 78,F0729: GOTO 725072A: MOVLW 97072B: MOVWF 77072C: DECFSZ 77,F072D: GOTO 72C072E: DECFSZ 00,F072F: GOTO 7230730: BCF 0A.30731: BCF 0A.40732: GOTO 7E2 (RETURN)................................................................................ #include "math.h".................... ////////////////////////////////////////////////////////////////////////////.................... //// (C) Copyright 1996,2008 Custom Computer Services ////.................... //// This source code may only be used by licensed users of the CCS C ////.................... //// compiler. This source code may only be distributed to other ////.................... //// licensed users of the CCS C compiler. No other use, reproduction ////.................... //// or distribution is permitted without written permission. ////.................... //// Derivative programs created using this software in object code ////.................... //// form are not restricted in any way. ////.................... ////////////////////////////////////////////////////////////////////////////.................... //// ////.................... //// History: ////.................... //// * 9/20/2001 : Improvments are made to sin/cos code. ////.................... //// The code now is small, much faster, ////.................... //// and more accurate. ////.................... //// * 2/21/2007 : Compiler handles & operator differently and does.................... //// not return generic (int8 *) so type cast is done ////.................... //// ////.................... ////////////////////////////////////////////////////////////////////////////........................................ #ifndef MATH_H.................... #define MATH_H........................................ #ifdef PI.................... #undef PI.................... #endif.................... #define PI 3.1415926535897932............................................................ #define SQRT2 1.4142135623730950........................................ //float const ps[4] = {5.9304945, 21.125224, 8.9403076, 0.29730279};.................... //float const qs[4] = {1.0000000, 15.035723, 17.764134, 2.4934718};........................................ ///////////////////////////// Round Functions //////////////////////////////........................................ float32 CEIL_FLOOR(float32 x, unsigned int8 n).................... {.................... float32 y, res;.................... unsigned int16 l;.................... int1 s;........................................ s = 0;.................... y = x;........................................ if (x < 0).................... {.................... s = 1;.................... y = -y;.................... }........................................ if (y <= 32768.0).................... res = (float32)(unsigned int16)y;........................................ else if (y < 10000000.0).................... {.................... l = (unsigned int16)(y/32768.0);.................... y = 32768.0*(y/32768.0 - (float32)l);.................... res = 32768.0*(float32)l;.................... res += (float32)(unsigned int16)y;.................... }........................................ else.................... res = y;........................................ y = y - (float32)(unsigned int16)y;........................................ if (s).................... res = -res;........................................ if (y != 0).................... {.................... if (s == 1 && n == 0).................... res -= 1.0;........................................ if (s == 0 && n == 1).................... res += 1.0;.................... }.................... if (x == 0).................... res = 0;........................................ return (res);.................... }........................................ // Overloaded Functions to take care for new Data types in PCD.................... // Overloaded function CEIL_FLOOR() for data type - Float48.................... #if defined(__PCD__).................... float48 CEIL_FLOOR(float48 x, unsigned int8 n).................... {.................... float48 y, res;.................... unsigned int16 l;.................... int1 s;........................................ s = 0;.................... y = x;........................................ if (x < 0).................... {.................... s = 1;.................... y = -y;.................... }........................................ if (y <= 32768.0).................... res = (float48)(unsigned int16)y;........................................ else if (y < 10000000.0).................... {.................... l = (unsigned int16)(y/32768.0);.................... y = 32768.0*(y/32768.0 - (float48)l);.................... res = 32768.0*(float32)l;.................... res += (float48)(unsigned int16)y;.................... }........................................ else.................... res = y;........................................ y = y - (float48)(unsigned int16)y;........................................ if (s).................... res = -res;........................................ if (y != 0).................... {.................... if (s == 1 && n == 0).................... res -= 1.0;........................................ if (s == 0 && n == 1).................... res += 1.0;.................... }.................... if (x == 0).................... res = 0;........................................ return (res);.................... }............................................................ // Overloaded function CEIL_FLOOR() for data type - Float64.................... float64 CEIL_FLOOR(float64 x, unsigned int8 n).................... {.................... float64 y, res;.................... unsigned int16 l;.................... int1 s;........................................ s = 0;.................... y = x;........................................ if (x < 0).................... {.................... s = 1;.................... y = -y;.................... }........................................ if (y <= 32768.0).................... res = (float64)(unsigned int16)y;........................................ else if (y < 10000000.0).................... {.................... l = (unsigned int16)(y/32768.0);.................... y = 32768.0*(y/32768.0 - (float64)l);.................... res = 32768.0*(float64)l;.................... res += (float64)(unsigned int16)y;.................... }........................................ else.................... res = y;........................................ y = y - (float64)(unsigned int16)y;........................................ if (s).................... res = -res;........................................ if (y != 0).................... {.................... if (s == 1 && n == 0).................... res -= 1.0;........................................ if (s == 0 && n == 1).................... res += 1.0;.................... }.................... if (x == 0).................... res = 0;........................................ return (res);.................... }.................... #endif........................................ ////////////////////////////////////////////////////////////////////////////.................... // float floor(float x).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : rounds down the number x..................... // Date : N/A.................... //.................... float32 floor(float32 x).................... {.................... return CEIL_FLOOR(x, 0);.................... }.................... // Following 2 functions are overloaded functions of floor() for PCD.................... // Overloaded function floor() for data type - Float48.................... #if defined(__PCD__).................... float48 floor(float48 x).................... {.................... return CEIL_FLOOR(x, 0);.................... }........................................ // Overloaded function floor() for data type - Float64.................... float64 floor(float64 x).................... {.................... return CEIL_FLOOR(x, 0);.................... }.................... #endif............................................................ ////////////////////////////////////////////////////////////////////////////.................... // float ceil(float x).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : rounds up the number x..................... // Date : N/A.................... //.................... float32 ceil(float32 x).................... {.................... return CEIL_FLOOR(x, 1);.................... }.................... // Following 2 functions are overloaded functions of ceil() for PCD.................... // Overloaded function ceil() for data type - Float48.................... #if defined(__PCD__).................... float48 ceil(float48 x).................... {.................... return CEIL_FLOOR(x, 1);.................... }........................................ // Overloaded function ceil() for data type - Float64.................... float64 ceil(float64 x).................... {.................... return CEIL_FLOOR(x, 1);.................... }.................... #endif........................................ ////////////////////////////////////////////////////////////////////////////.................... // float fabs(float x).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : Computes the absolute value of floating point number x.................... // Returns : returns the absolute value of x.................... // Date : N/A.................... //.................... #define fabs abs........................................ ////////////////////////////////////////////////////////////////////////////.................... // float fmod(float x).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : Computes the floating point remainder of x/y.................... // Returns : returns the value of x= i*y, for some integer i such that, if y.................... // is non zero, the result has the same isgn of x na dmagnitude less than the.................... // magnitude of y. If y is zero then a domain error occurs..................... // Date : N/A.................... //........................................ float fmod(float32 x,float32 y).................... {.................... float32 i;.................... if (y!=0.0).................... {.................... i=(x/y < 0.0)? ceil(x/y): floor(x/y);.................... return(x-(i*y));.................... }.................... else.................... {.................... #ifdef _ERRNO.................... {.................... errno=EDOM;.................... }.................... #endif.................... }.................... }.................... //Overloaded function for fmod() for PCD.................... // Overloaded function fmod() for data type - Float48.................... #if defined(__PCD__).................... float48 fmod(float48 x,float48 y).................... {.................... float48 i;.................... if (y!=0.0).................... {.................... i=(x/y < 0.0)? ceil(x/y): floor(x/y);.................... return(x-(i*y));.................... }.................... else.................... {.................... #ifdef _ERRNO.................... {.................... errno=EDOM;.................... }.................... #endif.................... }.................... }.................... // Overloaded function fmod() for data type - Float64.................... float64 fmod(float64 x,float64 y).................... {.................... float64 i;.................... if (y!=0.0).................... {.................... i=(x/y < 0.0)? ceil(x/y): floor(x/y);.................... return(x-(i*y));.................... }.................... else.................... {.................... #ifdef _ERRNO.................... {.................... errno=EDOM;.................... }.................... #endif.................... }.................... }.................... #endif.................... //////////////////// Exponential and logarithmic functions ////////////////////.................... ////////////////////////////////////////////////////////////////////////////.................... // float exp(float x).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : returns the value (e^x).................... // Date : N/A.................... //.................... #define LN2 0.6931471805599453........................................ float const pe[6] = {0.000207455774, 0.00127100575, 0.00965065093,.................... 0.0554965651, 0.240227138, 0.693147172};............................................................ float32 exp(float32 x).................... {.................... float32 y, res, r;.................... #if defined(__PCD__).................... int8 data1;.................... #endif.................... signed int8 n;.................... int1 s;.................... #ifdef _ERRNO.................... if(x > 88.722838).................... {.................... errno=ERANGE;.................... return(0);.................... }.................... #endif.................... n = (signed int16)(x/LN2);.................... s = 0;.................... y = x;........................................ if (x < 0).................... {.................... s = 1;.................... n = -n;.................... y = -y;.................... }........................................ res = 0.0;.................... #if !defined(__PCD__).................... *((unsigned int8 *)(&res)) = n + 0x7F;.................... #endif........................................ #if defined(__PCD__) // Takes care of IEEE format for PCD.................... data1 = n+0x7F;.................... if(bit_test(data1,0)).................... bit_set(*(((unsigned int8 *)(&res)+2)),7);.................... rotate_right(&data1,1);.................... bit_clear(data1,7);.................... *(((unsigned int8 *)(&res)+3)) = data1;.................... #endif........................................ y = y/LN2 - (float32)n;........................................ r = pe[0]*y + pe[1];.................... r = r*y + pe[2];.................... r = r*y + pe[3];.................... r = r*y + pe[4];.................... r = r*y + pe[5];........................................ res = res*(1.0 + y*r);........................................ if (s).................... res = 1.0/res;.................... return(res);.................... }............................................................ //Overloaded function for exp() for PCD.................... // Overloaded function exp() for data type - Float48.................... #if defined(__PCD__).................... float48 exp(float48 x).................... {.................... float48 y, res, r;.................... int8 data1;.................... signed int8 n;.................... int1 s;.................... #ifdef _ERRNO.................... if(x > 88.722838).................... {.................... errno=ERANGE;.................... return(0);.................... }.................... #endif.................... n = (signed int16)(x/LN2);.................... s = 0;.................... y = x;........................................ if (x < 0).................... {.................... s = 1;.................... n = -n;.................... y = -y;.................... }........................................ res = 0.0;........................................ data1 = n+0x7F;.................... if(bit_test(data1,0)).................... bit_set(*(((unsigned int8 *)(&res)+4)),7);.................... rotate_right(&data1,1);.................... bit_clear(data1,7);.................... *(((unsigned int8 *)(&res)+5)) = data1;........................................ y = y/LN2 - (float48)n;........................................ r = pe[0]*y + pe[1];.................... r = r*y + pe[2];.................... r = r*y + pe[3];.................... r = r*y + pe[4];.................... r = r*y + pe[5];........................................ res = res*(1.0 + y*r);........................................ if (s).................... res = 1.0/res;.................... return(res);.................... }........................................ // Overloaded function exp() for data type - Float64.................... float64 exp(float64 x).................... {.................... float64 y, res, r;.................... unsigned int16 data1, data2;.................... unsigned int16 *p;.................... signed int16 n;.................... int1 s;.................... #ifdef _ERRNO.................... if(x > 709.7827128).................... {.................... errno=ERANGE;.................... return(0);.................... }.................... #endif.................... n = (signed int16)(x/LN2);.................... s = 0;.................... y = x;........................................ if (x < 0).................... {.................... s = 1;.................... n = -n;.................... y = -y;.................... }........................................ res = 0.0;........................................ #if !defined(__PCD__).................... *((unsigned int16 *)(&res)) = n + 0x7F;.................... #endif.................... p= (((unsigned int16 *)(&res))+3);.................... data1 = *p;.................... data2 = *p;.................... data1 = n + 0x3FF;.................... data1 = data1 <<4;.................... if(bit_test(data2,15)).................... bit_set(data1,15);.................... data2 = data2 & 0x000F;.................... data1 ^= data2;........................................ *(((unsigned int16 *)(&res)+3)) = data1;............................................................ y = y/LN2 - (float64)n;........................................ r = pe[0]*y + pe[1];.................... r = r*y + pe[2];.................... r = r*y + pe[3];.................... r = r*y + pe[4];.................... r = r*y + pe[5];........................................ res = res*(1.0 + y*r);........................................ if (s).................... res = 1.0/res;.................... return(res);.................... }........................................ #ENDIF............................................................ /************************************************************/........................................ float32 const pl[4] = {0.45145214, -9.0558803, 26.940971, -19.860189};.................... float32 const ql[4] = {1.0000000, -8.1354259, 16.780517, -9.9300943};........................................ ////////////////////////////////////////////////////////////////////////////.................... // float log(float x).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : returns the the natural log of x.................... // Date : N/A.................... //.................... float32 log(float32 x).................... {.................... float32 y, res, r, y2;.................... #if defined(__PCD__).................... unsigned int8 data1,data2;.................... #endif.................... signed int8 n;.................... #ifdef _ERRNO.................... if(x <0).................... {.................... errno=EDOM;.................... }.................... if(x ==0).................... {.................... errno=ERANGE;.................... return(0);.................... }.................... #endif.................... y = x;........................................ if (y != 1.0).................... {.................... #if !defined(__PCD__).................... *((unsigned int8 *)(&y)) = 0x7E;.................... #endif........................................ #if defined(__PCD__) // Takes care of IEEE format.................... data2 = *(((unsigned int8 *)(&y))+3);.................... *(((unsigned int8 *)(&y))+3) = 0x3F;.................... data1 = *(((unsigned int8 *)(&y))+2);.................... bit_clear(data1,7);.................... *(((unsigned int8 *)(&y))+2) = data1;.................... if(bit_test(data2,7)).................... bit_set(*(((unsigned int8 *)(&y))+3),7);.................... #endif........................................ y = (y - 1.0)/(y + 1.0);........................................ y2=y*y;........................................ res = pl[0]*y2 + pl[1];.................... res = res*y2 + pl[2];.................... res = res*y2 + pl[3];........................................ r = ql[0]*y2 + ql[1];.................... r = r*y2 + ql[2];.................... r = r*y2 + ql[3];........................................ res = y*res/r;.................... #if !defined(__PCD__).................... n = *((unsigned int8 *)(&x)) - 0x7E;.................... #endif.................... #if defined(__PCD__).................... data1 = *(((unsigned int8 *)(&x)+3));.................... rotate_left(&data1,1);.................... data2 = *(((unsigned int8 *)(&x)+2));.................... if(bit_test (data2,7)).................... bit_set(data1,0);.................... n = data1 - 0x7E;.................... #endif........................................ if (n<0).................... r = -(float32)-n;.................... else.................... r = (float32)n;........................................ res += r*LN2;.................... }........................................ else.................... res = 0.0;........................................ return(res);.................... }........................................ //Overloaded function for log() for PCD.................... // Overloaded function log() for data type - Float48.................... #if defined(__PCD__).................... float48 log(float48 x).................... {.................... float48 y, res, r, y2;.................... unsigned int8 data1,data2;.................... signed int8 n;.................... #ifdef _ERRNO.................... if(x <0).................... {.................... errno=EDOM;.................... }.................... if(x ==0).................... {.................... errno=ERANGE;.................... return(0);.................... }.................... #endif.................... y = x;........................................ if (y != 1.0).................... {........................................ #if !defined(__PCD__).................... *((unsigned int8 *)(&y)) = 0x7E;.................... #endif.................... data2 = *(((unsigned int8 *)(&y))+5);.................... *(((unsigned int8 *)(&y))+5) = 0x3F;.................... data1 = *(((unsigned int8 *)(&y))+4);.................... bit_clear(data1,7);.................... *(((unsigned int8 *)(&y))+4) = data1;........................................ if(bit_test(data2,7)).................... bit_set(*(((unsigned int8 *)(&y))+4),7);.................... y = (y - 1.0)/(y + 1.0);........................................ y2=y*y;........................................ res = pl[0]*y2 + pl[1];.................... res = res*y2 + pl[2];.................... res = res*y2 + pl[3];........................................ r = ql[0]*y2 + ql[1];.................... r = r*y2 + ql[2];.................... r = r*y2 + ql[3];........................................ res = y*res/r;........................................ data1 = *(((unsigned int8 *)(&x)+5));.................... rotate_left(&data1,1);.................... data2 = *(((unsigned int8 *)(&x)+4));.................... if(bit_test (data2,7)).................... bit_set(data1,0);........................................ n = data1 - 0x7E;........................................ if (n<0).................... r = -(float48)-n;.................... else.................... r = (float48)n;........................................ res += r*LN2;.................... }........................................ else.................... res = 0.0;........................................ return(res);.................... }........................................ // Overloaded function log() for data type - Float48.................... #if defined(__PCD__).................... float32 const pl_64[4] = {0.45145214, -9.0558803, 26.940971, -19.860189};.................... float32 const ql_64[4] = {1.0000000, -8.1354259, 16.780517, -9.9300943};.................... #endif.................... float64 log(float64 x).................... {.................... float64 y, res, r, y2;.................... unsigned int16 data1,data2;.................... unsigned int16 *p;.................... signed int16 n;.................... #ifdef _ERRNO.................... if(x <0).................... {.................... errno=EDOM;.................... }.................... if(x ==0).................... {.................... errno=ERANGE;.................... return(0);.................... }.................... #endif.................... y = x;........................................ if (y != 1.0).................... {.................... #if !defined(__PCD__).................... *((unsigned int8 *)(&y)) = 0x7E;.................... #endif.................... p= (((unsigned int16 *)(&y))+3);.................... data1 = *p;.................... data2 = *p;.................... data1 = 0x3FE;.................... data1 = data1 <<4;.................... if(bit_test (data2,15)).................... bit_set(data1,15);.................... data2 = data2 & 0x000F;.................... data1 ^=data2;........................................ *p = data1;........................................ y = (y - 1.0)/(y + 1.0);........................................ y2=y*y;........................................ res = pl_64[0]*y2 + pl_64[1];.................... res = res*y2 + pl_64[2];.................... res = res*y2 + pl_64[3];........................................ r = ql_64[0]*y2 + ql_64[1];.................... r = r*y2 + ql_64[2];.................... r = r*y2 + ql_64[3];........................................ res = y*res/r;........................................ p= (((unsigned int16 *)(&x))+3);.................... data1 = *p;.................... bit_clear(data1,15);.................... data1 = data1 >>4;.................... n = data1 - 0x3FE;............................................................ if (n<0).................... r = -(float64)-n;.................... else.................... r = (float64)n;........................................ res += r*LN2;.................... }........................................ else.................... res = 0.0;........................................ return(res);.................... }.................... #endif............................................................ #define LN10 2.3025850929940456........................................ ////////////////////////////////////////////////////////////////////////////.................... // float log10(float x).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : returns the the log base 10 of x.................... // Date : N/A.................... //.................... float32 log10(float32 x).................... {.................... float32 r;........................................ r = log(x);.................... r = r/LN10;.................... return(r);.................... }........................................ //Overloaded functions for log10() for PCD.................... // Overloaded function log10() for data type - Float48.................... #if defined(__PCD__).................... float48 log10(float48 x).................... {.................... float48 r;........................................ r = log(x);.................... r = r/LN10;.................... return(r);.................... }........................................ // Overloaded function log10() for data type - Float64.................... float64 log10(float64 x).................... {.................... float64 r;........................................ r = log(x);.................... r = r/LN10;.................... return(r);.................... }.................... #endif.................... ////////////////////////////////////////////////////////////////////////////.................... // float modf(float x).................... ////////////////////////////////////////////////////////////////////////////.................... // Description :breaks the argument value int integral and fractional parts,.................... // ach of which have the same sign as the argument. It stores the integral part.................... // as a float in the object pointed to by the iptr.................... // Returns : returns the signed fractional part of value..................... // Date : N/A.................... //........................................ float32 modf(float32 value,float32 *iptr).................... {.................... *iptr=(value < 0.0)? ceil(value): floor(value);.................... return(value - *iptr);.................... }.................... //Overloaded functions for modf() for PCD.................... // Overloaded function modf() for data type - Float48.................... #if defined(__PCD__).................... float48 modf(float48 value,float48 *iptr).................... {.................... *iptr=(value < 0.0)? ceil(value): floor(value);.................... return(value - *iptr);.................... }.................... // Overloaded function modf() for data type - Float64.................... float64 modf(float64 value,float64 *iptr).................... {.................... *iptr=(value < 0.0)? ceil(value): floor(value);.................... return(value - *iptr);.................... }.................... #endif........................................ ////////////////////////////////////////////////////////////////////////////.................... // float pwr(float x,float y).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : returns the value (x^y).................... // Date : N/A.................... // Note : 0 is returned when the function will generate an imaginary number.................... //.................... float32 pwr(float32 x,float32 y).................... {.................... if(0 > x && fmod(y, 1) == 0) {.................... if(fmod(y, 2) == 0) {.................... return (exp(log(-x) * y));.................... } else {.................... return (-exp(log(-x) * y));.................... }.................... } else if(0 > x && fmod(y, 1) != 0) {.................... return 0;.................... } else {.................... if(x != 0 || 0 >= y) {.................... return (exp(log(x) * y));.................... }.................... }.................... }.................... //Overloaded functions for pwr() for PCD.................... // Overloaded function pwr() for data type - Float48.................... #if defined(__PCD__).................... float48 pwr(float48 x,float48 y).................... {.................... if(0 > x && fmod(y, 1) == 0) {.................... if(fmod(y, 2) == 0) {.................... return (exp(log(-x) * y));.................... } else {.................... return (-exp(log(-x) * y));.................... }.................... } else if(0 > x && fmod(y, 1) != 0) {.................... return 0;.................... } else {.................... if(x != 0 || 0 >= y) {.................... return (exp(log(x) * y));.................... }.................... }.................... }.................... // Overloaded function pwr() for data type - Float64.................... float64 pwr(float64 x,float64 y).................... {.................... if(0 > x && fmod(y, 1) == 0) {.................... if(fmod(y, 2) == 0) {.................... return (exp(log(-x) * y));.................... } else {.................... return (-exp(log(-x) * y));.................... }.................... } else if(0 > x && fmod(y, 1) != 0) {.................... return 0;.................... } else {.................... if(x != 0 || 0 >= y) {.................... return (exp(log(x) * y));.................... }.................... }.................... }.................... #endif........................................ //////////////////// Power functions ////////////////////........................................ ////////////////////////////////////////////////////////////////////////////.................... // float pow(float x,float y).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : returns the value (x^y).................... // Date : N/A.................... // Note : 0 is returned when the function will generate an imaginary number.................... //.................... float32 pow(float32 x,float32 y).................... {.................... if(0 > x && fmod(y, 1) == 0) {.................... if(fmod(y, 2) == 0) {.................... return (exp(log(-x) * y));.................... } else {.................... return (-exp(log(-x) * y));.................... }.................... } else if(0 > x && fmod(y, 1) != 0) {.................... return 0;.................... } else {.................... if(x != 0 || 0 >= y) {.................... return (exp(log(x) * y));.................... }.................... }.................... }.................... //Overloaded functions for pow() for PCD.................... // Overloaded function for pow() data type - Float48.................... #if defined(__PCD__).................... float48 pow(float48 x,float48 y).................... {.................... if(0 > x && fmod(y, 1) == 0) {.................... if(fmod(y, 2) == 0) {.................... return (exp(log(-x) * y));.................... } else {.................... return (-exp(log(-x) * y));.................... }.................... } else if(0 > x && fmod(y, 1) != 0) {.................... return 0;.................... } else {.................... if(x != 0 || 0 >= y) {.................... return (exp(log(x) * y));.................... }.................... }.................... }........................................ // Overloaded function pow() for data type - Float64.................... float64 pow(float64 x,float64 y).................... {.................... if(0 > x && fmod(y, 1) == 0) {.................... if(fmod(y, 2) == 0) {.................... return (exp(log(-x) * y));.................... } else {.................... return (-exp(log(-x) * y));.................... }.................... } else if(0 > x && fmod(y, 1) != 0) {.................... return 0;.................... } else {.................... if(x != 0 || 0 >= y) {.................... return (exp(log(x) * y));.................... }.................... }.................... }.................... #endif........................................ ////////////////////////////////////////////////////////////////////////////.................... // float sqrt(float x).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : returns the square root of x.................... // Date : N/A.................... //.................... float32 sqrt(float32 x).................... {.................... float32 y, res;.................... #if defined(__PCD__).................... unsigned int16 data1,data2;.................... #endif.................... BYTE *p;........................................ #ifdef _ERRNO.................... if(x < 0).................... {.................... errno=EDOM;.................... }.................... #endif........................................ if( x<=0.0)*0888: MOVF 2C,W0889: MOVWF 49088A: MOVF 2B,W088B: MOVWF 48088C: MOVF 2A,W088D: MOVWF 47088E: MOVF 29,W088F: MOVWF 460890: CLRF 4D0891: CLRF 4C0892: CLRF 4B0893: CLRF 4A0894: BCF 0A.30895: BCF 03.50896: CALL 40D0897: BSF 0A.30898: BTFSC 03.00899: GOTO 09C089A: BTFSS 03.2089B: GOTO 0A1.................... return(0.0);089C: CLRF 77089D: CLRF 78089E: CLRF 79089F: CLRF 7A08A0: GOTO 129........................................ y=x;08A1: BSF 03.508A2: MOVF 2C,W08A3: MOVWF 3008A4: MOVF 2B,W08A5: MOVWF 2F08A6: MOVF 2A,W08A7: MOVWF 2E08A8: MOVF 29,W08A9: MOVWF 2D........................................ #if !defined(__PCD__).................... p=&y;08AA: CLRF 3608AB: MOVLW AD08AC: MOVWF 35.................... (*p)=(BYTE)((((unsigned int16)(*p)) + 127) >> 1);08AD: MOVF 35,W08AE: MOVWF 0408AF: BCF 03.708B0: BTFSC 36.008B1: BSF 03.708B2: MOVF 00,W08B3: CLRF 3A08B4: MOVWF 3908B5: MOVLW 7F08B6: ADDWF 39,F08B7: BTFSC 03.008B8: INCF 3A,F08B9: BCF 03.008BA: RRF 3A,W08BB: MOVWF 7A08BC: RRF 39,W08BD: MOVWF 7908BE: MOVWF 3908BF: MOVF 35,W08C0: MOVWF 0408C1: BCF 03.708C2: BTFSC 36.008C3: BSF 03.708C4: MOVF 39,W08C5: MOVWF 00.................... #endif........................................ #if defined(__PCD__).................... p = (((unsigned int8 *)(&y))+3);.................... data1 = *(((unsigned int8 *)(&y))+3);.................... data2 = *(((unsigned int8 *)(&y))+2);.................... rotate_left(&data1,1);.................... if(bit_test(data2,7)).................... bit_set(data1,0);.................... data1 = ((data1+127) >>1);.................... bit_clear(data2,7);.................... if(bit_test(data1,0)).................... bit_set(data2,7);.................... data1 = data1 >>1;.................... *(((unsigned int8 *)(&y))+3) = data1;.................... *(((unsigned int8 *)(&y))+2) = data2;........................................ #endif........................................ do {.................... res=y;08C6: MOVF 30,W08C7: MOVWF 3408C8: MOVF 2F,W08C9: MOVWF 3308CA: MOVF 2E,W08CB: MOVWF 3208CC: MOVF 2D,W08CD: MOVWF 31.................... y+=(x/y);08CE: MOVF 2C,W08CF: MOVWF 4908D0: MOVF 2B,W08D1: MOVWF 4808D2: MOVF 2A,W08D3: MOVWF 4708D4: MOVF 29,W08D5: MOVWF 4608D6: MOVF 30,W08D7: MOVWF 4D08D8: MOVF 2F,W08D9: MOVWF 4C08DA: MOVF 2E,W08DB: MOVWF 4B08DC: MOVF 2D,W08DD: MOVWF 4A08DE: BCF 0A.308DF: BCF 03.508E0: CALL 14208E1: BSF 0A.308E2: BCF 03.108E3: BSF 03.508E4: MOVF 30,W08E5: MOVWF 4D08E6: MOVF 2F,W08E7: MOVWF 4C08E8: MOVF 2E,W08E9: MOVWF 4B08EA: MOVF 2D,W08EB: MOVWF 4A08EC: MOVF 7A,W08ED: MOVWF 5108EE: MOVF 79,W08EF: MOVWF 5008F0: MOVF 78,W08F1: MOVWF 4F08F2: MOVF 77,W08F3: MOVWF 4E08F4: BCF 0A.308F5: BCF 03.508F6: CALL 2C708F7: BSF 0A.308F8: MOVF 7A,W08F9: BSF 03.508FA: MOVWF 3008FB: MOVF 79,W08FC: MOVWF 2F08FD: MOVF 78,W08FE: MOVWF 2E08FF: MOVF 77,W0900: MOVWF 2D........................................ #if !defined(__PCD__).................... (*p)--;0901: MOVF 35,W0902: MOVWF 040903: BCF 03.70904: BTFSC 36.00905: BSF 03.70906: DECF 00,F.................... #endif........................................ #if defined(__PCD__).................... data1 = *(((unsigned int8 *)(&y))+3);.................... data2 = *(((unsigned int8 *)(&y))+2);.................... rotate_left(&data1,1);.................... if(bit_test(data2,7)).................... bit_set(data1,0);.................... data1--;.................... bit_clear(data2,7);.................... if(bit_test(data1,0)).................... bit_set(data2,7);.................... data1 = data1 >>1;.................... *(((unsigned int8 *)(&y))+3) = data1;.................... *(((unsigned int8 *)(&y))+2) = data2;........................................ #endif.................... } while(res != y);0907: MOVF 34,W0908: MOVWF 490909: MOVF 33,W090A: MOVWF 48090B: MOVF 32,W090C: MOVWF 47090D: MOVF 31,W090E: MOVWF 46090F: MOVF 30,W0910: MOVWF 4D0911: MOVF 2F,W0912: MOVWF 4C0913: MOVF 2E,W0914: MOVWF 4B0915: MOVF 2D,W0916: MOVWF 4A0917: BCF 0A.30918: BCF 03.50919: CALL 40D091A: BSF 0A.3091B: BTFSC 03.2091C: GOTO 11F091D: BSF 03.5091E: GOTO 0C6........................................ return(res);091F: BSF 03.50920: MOVF 31,W0921: MOVWF 770922: MOVF 32,W0923: MOVWF 780924: MOVF 33,W0925: MOVWF 790926: MOVF 34,W0927: MOVWF 7A0928: BCF 03.5.................... }.................... //Overloaded functions for sqrt() for PCD.................... // Overloaded function sqrt() for data type - Float48.................... #if defined(__PCD__).................... float48 sqrt(float48 x).................... {.................... float48 y, res;.................... unsigned int16 data1,data2;.................... BYTE *p;........................................ #ifdef _ERRNO.................... if(x < 0).................... {.................... errno=EDOM;.................... }.................... #endif........................................ if( x<=0.0).................... return(0.0);........................................ y=x;........................................ #if !defined(__PCD__).................... p=&y;.................... (*p)=(BYTE)((((unsigned int16)(*p)) + 127) >> 1);.................... #endif........................................ #if defined(__PCD__).................... p = (((unsigned int8 *)(&y))+5);.................... data1 = *(((unsigned int8 *)(&y))+5);.................... data2 = *(((unsigned int8 *)(&y))+4);.................... rotate_left(&data1,1);.................... if(bit_test(data2,7)).................... bit_set(data1,0);.................... data1 = ((data1+127) >>1);.................... bit_clear(data2,7);.................... if(bit_test(data1,0)).................... bit_set(data2,7);.................... data1 = data1 >>1;.................... *(((unsigned int8 *)(&y))+5) = data1;.................... *(((unsigned int8 *)(&y))+4) = data2;........................................ #endif........................................ do {.................... res=y;.................... y+=(x/y);........................................ #if !defined(__PCD__).................... (*p)--;.................... #endif........................................ data1 = *(((unsigned int8 *)(&y))+5);.................... data2 = *(((unsigned int8 *)(&y))+4);.................... rotate_left(&data1,1);.................... if(bit_test(data2,7)).................... bit_set(data1,0);.................... data1--;.................... bit_clear(data2,7);.................... if(bit_test(data1,0)).................... bit_set(data2,7);.................... data1 = data1 >>1;.................... *(((unsigned int8 *)(&y))+5) = data1;.................... *(((unsigned int8 *)(&y))+4) = data2;........................................ } while(res != y);........................................ return(res);.................... }........................................ // Overloaded function sqrt() for data type - Float64.................... float64 sqrt(float64 x).................... {.................... float64 y, res;.................... unsigned int16 *p;.................... unsigned int16 temp1,temp2;........................................ #ifdef _ERRNO.................... if(x < 0).................... {.................... errno=EDOM;.................... }.................... #endif........................................ if( x<=0.0).................... return(0.0);........................................ y=x;.................... p= (((unsigned int16 *)(&y))+3);.................... temp1 = *p;.................... temp2 = *p;.................... bit_clear(temp1,15);.................... temp1 = (temp1>>4)+1023;.................... temp1 = temp1 >> 1;.................... temp1 = (temp1<<4) & 0xFFF0;.................... if(bit_test(temp2,15)).................... bit_set(temp1,15);.................... temp2 = temp2 & 0x000F;.................... temp1 ^= temp2;........................................ (*p) = temp1;........................................ do {.................... res=y;.................... y+=(x/y);.................... temp1 = *p;.................... temp2 = *p;.................... bit_clear(temp1,15);.................... temp1 = (temp1>>4);.................... temp1--;.................... temp1 = (temp1<<4) & 0xFFF0;.................... if(bit_test(temp2,15)).................... bit_set(temp1,15);.................... temp2 = temp2 & 0x000F;.................... temp1 ^= temp2;.................... (*p) = temp1;........................................ } while(res != y);........................................ return(res);.................... }.................... #endif........................................ ////////////////////////////// Trig Functions //////////////////////////////.................... #ifdef PI_DIV_BY_TWO.................... #undef PI_DIV_BY_TWO.................... #endif.................... #define PI_DIV_BY_TWO 1.5707963267948966.................... #ifdef TWOBYPI.................... #undef TWOBYPI.................... #define TWOBYPI 0.6366197723675813.................... #endif.................... ////////////////////////////////////////////////////////////////////////////.................... // float cos(float x).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : returns the cosine value of the angle x, which is in radian.................... // Date : 9/20/2001.................... //.................... float32 cos(float32 x).................... {*046F: BSF 03.50470: CLRF 270471: CLRF 260472: CLRF 250473: MOVLW 7F0474: MOVWF 24.................... float32 y, t, t2 = 1.0;.................... unsigned int8 quad, i;.................... float32 frac;.................... float32 p[6] = { //by the series definition for cosine.................... -0.5, // sum ( ( (-1)^n * x^2n )/(2n)! ).................... 0.04166666666667,.................... -0.00138888888889,.................... 0.00002480158730,.................... -0.00000027557319,.................... 0.00000000208767,.................... //-0.00000000001147,.................... // 0.00000000000005.................... };0475: MOVLW 7E0476: MOVWF 2E0477: MOVLW 800478: MOVWF 2F0479: CLRF 30047A: CLRF 31047B: MOVLW 7A047C: MOVWF 32047D: MOVLW 2A047E: MOVWF 33047F: MOVLW AA0480: MOVWF 340481: MOVLW AB0482: MOVWF 350483: MOVLW 750484: MOVWF 360485: MOVLW B60486: MOVWF 370487: MOVLW 0B0488: MOVWF 380489: MOVLW 61048A: MOVWF 39048B: MOVLW 6F048C: MOVWF 3A048D: MOVLW 50048E: MOVWF 3B048F: MOVLW 0D0490: MOVWF 3C0491: MOVLW 010492: MOVWF 3D0493: MOVLW 690494: MOVWF 3E0495: MOVLW 930496: MOVWF 3F0497: MOVLW F20498: MOVWF 400499: MOVLW 7E049A: MOVWF 41049B: MOVLW 62049C: MOVWF 42049D: MOVLW 0F049E: MOVWF 43049F: MOVLW 7604A0: MOVWF 4404A1: MOVLW AE04A2: MOVWF 45........................................ if (x < 0) x = -x; // absolute value of input04A3: MOVF 76,W04A4: MOVWF 4904A5: MOVF 75,W04A6: MOVWF 4804A7: MOVF 74,W04A8: MOVWF 4704A9: MOVF 73,W04AA: MOVWF 4604AB: CLRF 4D04AC: CLRF 4C04AD: CLRF 4B04AE: CLRF 4A04AF: BCF 03.504B0: CALL 40D04B1: BTFSS 03.004B2: GOTO 4B604B3: MOVF 74,W04B4: XORLW 8004B5: MOVWF 74........................................ quad = (unsigned int8)(x / PI_DIV_BY_TWO); // quadrant04B6: MOVF 76,W04B7: BSF 03.504B8: MOVWF 4904B9: MOVF 75,W04BA: MOVWF 4804BB: MOVF 74,W04BC: MOVWF 4704BD: MOVF 73,W04BE: MOVWF 4604BF: MOVLW DB04C0: MOVWF 4D04C1: MOVLW 0F04C2: MOVWF 4C04C3: MOVLW 4904C4: MOVWF 4B04C5: MOVLW 7F04C6: MOVWF 4A04C7: BCF 03.504C8: CALL 14204C9: MOVF 7A,W04CA: BSF 03.504CB: MOVWF 4904CC: MOVF 79,W04CD: MOVWF 4804CE: MOVF 78,W04CF: MOVWF 4704D0: MOVF 77,W04D1: MOVWF 4604D2: BCF 03.504D3: CALL 44E04D4: MOVF 78,W04D5: BSF 03.504D6: MOVWF 28.................... frac = (x / PI_DIV_BY_TWO) - quad; // fractional part of input04D7: MOVF 76,W04D8: MOVWF 4904D9: MOVF 75,W04DA: MOVWF 4804DB: MOVF 74,W04DC: MOVWF 4704DD: MOVF 73,W04DE: MOVWF 4604DF: MOVLW DB04E0: MOVWF 4D04E1: MOVLW 0F04E2: MOVWF 4C04E3: MOVLW 4904E4: MOVWF 4B04E5: MOVLW 7F04E6: MOVWF 4A04E7: BCF 03.504E8: CALL 14204E9: MOVF 77,W04EA: BSF 03.504EB: MOVWF 4604EC: MOVF 78,W04ED: MOVWF 4704EE: MOVF 79,W04EF: MOVWF 4804F0: MOVF 7A,W04F1: MOVWF 4904F2: CLRF 4B04F3: MOVF 28,W04F4: MOVWF 4A04F5: BCF 03.504F6: CALL 03004F7: BSF 03.104F8: BSF 03.504F9: MOVF 49,W04FA: MOVWF 4D04FB: MOVF 48,W04FC: MOVWF 4C04FD: MOVF 47,W04FE: MOVWF 4B04FF: MOVF 46,W0500: MOVWF 4A0501: MOVF 7A,W0502: MOVWF 510503: MOVF 79,W0504: MOVWF 500505: MOVF 78,W0506: MOVWF 4F0507: MOVF 77,W0508: MOVWF 4E0509: BCF 03.5050A: CALL 2C7050B: MOVF 7A,W050C: BSF 03.5050D: MOVWF 2D050E: MOVF 79,W050F: MOVWF 2C0510: MOVF 78,W0511: MOVWF 2B0512: MOVF 77,W0513: MOVWF 2A.................... quad = quad % 4; // quadrant (0 to 3)0514: MOVLW 030515: ANDWF 28,F........................................ if (quad == 0 || quad == 2)0516: MOVF 28,F0517: BTFSC 03.20518: GOTO 51D0519: MOVF 28,W051A: SUBLW 02051B: BTFSS 03.2051C: GOTO 539.................... t = frac * PI_DIV_BY_TWO;051D: MOVF 2D,W051E: MOVWF 4D051F: MOVF 2C,W0520: MOVWF 4C0521: MOVF 2B,W0522: MOVWF 4B0523: MOVF 2A,W0524: MOVWF 4A0525: MOVLW DB0526: MOVWF 510527: MOVLW 0F0528: MOVWF 500529: MOVLW 49052A: MOVWF 4F052B: MOVLW 7F052C: MOVWF 4E052D: BCF 03.5052E: CALL 20E052F: MOVF 7A,W0530: BSF 03.50531: MOVWF 230532: MOVF 79,W0533: MOVWF 220534: MOVF 78,W0535: MOVWF 210536: MOVF 77,W0537: MOVWF 20.................... else if (quad == 1)0538: GOTO 5A20539: DECFSZ 28,W053A: GOTO 56F.................... t = (1-frac) * PI_DIV_BY_TWO;053B: BSF 03.1053C: CLRF 4D053D: CLRF 4C053E: CLRF 4B053F: MOVLW 7F0540: MOVWF 4A0541: MOVF 2D,W0542: MOVWF 510543: MOVF 2C,W0544: MOVWF 500545: MOVF 2B,W0546: MOVWF 4F0547: MOVF 2A,W0548: MOVWF 4E0549: BCF 03.5054A: CALL 2C7054B: MOVF 77,W054C: BSF 03.5054D: MOVWF 46054E: MOVF 78,W054F: MOVWF 470550: MOVF 79,W0551: MOVWF 480552: MOVF 7A,W0553: MOVWF 490554: MOVWF 4D0555: MOVF 48,W0556: MOVWF 4C0557: MOVF 47,W0558: MOVWF 4B0559: MOVF 46,W055A: MOVWF 4A055B: MOVLW DB055C: MOVWF 51055D: MOVLW 0F055E: MOVWF 50055F: MOVLW 490560: MOVWF 4F0561: MOVLW 7F0562: MOVWF 4E0563: BCF 03.50564: CALL 20E0565: MOVF 7A,W0566: BSF 03.50567: MOVWF 230568: MOVF 79,W0569: MOVWF 22056A: MOVF 78,W056B: MOVWF 21056C: MOVF 77,W056D: MOVWF 20.................... else // should be 3056E: GOTO 5A2.................... t = (frac-1) * PI_DIV_BY_TWO;056F: BSF 03.10570: MOVF 2D,W0571: MOVWF 4D0572: MOVF 2C,W0573: MOVWF 4C0574: MOVF 2B,W0575: MOVWF 4B0576: MOVF 2A,W0577: MOVWF 4A0578: CLRF 510579: CLRF 50057A: CLRF 4F057B: MOVLW 7F057C: MOVWF 4E057D: BCF 03.5057E: CALL 2C7057F: MOVF 77,W0580: BSF 03.50581: MOVWF 460582: MOVF 78,W0583: MOVWF 470584: MOVF 79,W0585: MOVWF 480586: MOVF 7A,W0587: MOVWF 490588: MOVWF 4D0589: MOVF 48,W058A: MOVWF 4C058B: MOVF 47,W058C: MOVWF 4B058D: MOVF 46,W058E: MOVWF 4A058F: MOVLW DB0590: MOVWF 510591: MOVLW 0F0592: MOVWF 500593: MOVLW 490594: MOVWF 4F0595: MOVLW 7F0596: MOVWF 4E0597: BCF 03.50598: CALL 20E0599: MOVF 7A,W059A: BSF 03.5059B: MOVWF 23059C: MOVF 79,W059D: MOVWF 22059E: MOVF 78,W059F: MOVWF 2105A0: MOVF 77,W05A1: MOVWF 20........................................ y = 1.0;05A2: CLRF 7E05A3: CLRF 7D05A4: CLRF 7C05A5: MOVLW 7F05A6: MOVWF 7B.................... t = t * t;05A7: MOVF 23,W05A8: MOVWF 4D05A9: MOVF 22,W05AA: MOVWF 4C05AB: MOVF 21,W05AC: MOVWF 4B05AD: MOVF 20,W05AE: MOVWF 4A05AF: MOVF 23,W05B0: MOVWF 5105B1: MOVF 22,W05B2: MOVWF 5005B3: MOVF 21,W05B4: MOVWF 4F05B5: MOVF 20,W05B6: MOVWF 4E05B7: BCF 03.505B8: CALL 20E05B9: MOVF 7A,W05BA: BSF 03.505BB: MOVWF 2305BC: MOVF 79,W05BD: MOVWF 2205BE: MOVF 78,W05BF: MOVWF 2105C0: MOVF 77,W05C1: MOVWF 20.................... for (i = 0; i <= 5; i++)05C2: CLRF 2905C3: MOVF 29,W05C4: SUBLW 0505C5: BTFSS 03.005C6: GOTO 631.................... {.................... t2 = t2 * t;05C7: MOVF 27,W05C8: MOVWF 4D05C9: MOVF 26,W05CA: MOVWF 4C05CB: MOVF 25,W05CC: MOVWF 4B05CD: MOVF 24,W05CE: MOVWF 4A05CF: MOVF 23,W05D0: MOVWF 5105D1: MOVF 22,W05D2: MOVWF 5005D3: MOVF 21,W05D4: MOVWF 4F05D5: MOVF 20,W05D6: MOVWF 4E05D7: BCF 03.505D8: CALL 20E05D9: MOVF 7A,W05DA: BSF 03.505DB: MOVWF 2705DC: MOVF 79,W05DD: MOVWF 2605DE: MOVF 78,W05DF: MOVWF 2505E0: MOVF 77,W05E1: MOVWF 24.................... y = y + p[i] * t2;05E2: RLF 29,W05E3: MOVWF 7705E4: RLF 77,F05E5: MOVLW FC05E6: ANDWF 77,F05E7: MOVF 77,W05E8: ADDLW AE05E9: MOVWF 0405EA: BCF 03.705EB: MOVF 00,W05EC: MOVWF 4605ED: INCF 04,F05EE: MOVF 00,W05EF: MOVWF 4705F0: INCF 04,F05F1: MOVF 00,W05F2: MOVWF 4805F3: INCF 04,F05F4: MOVF 00,W05F5: MOVWF 4905F6: MOVWF 4D05F7: MOVF 48,W05F8: MOVWF 4C05F9: MOVF 47,W05FA: MOVWF 4B05FB: MOVF 46,W05FC: MOVWF 4A05FD: MOVF 27,W05FE: MOVWF 5105FF: MOVF 26,W0600: MOVWF 500601: MOVF 25,W0602: MOVWF 4F0603: MOVF 24,W0604: MOVWF 4E0605: BCF 03.50606: CALL 20E0607: BSF 03.50608: CLRF 470609: MOVF 04,W060A: MOVWF 46060B: BCF 47.0060C: BTFSC 03.7060D: BSF 47.0060E: BCF 03.1060F: MOVF 7E,W0610: MOVWF 4D0611: MOVF 7D,W0612: MOVWF 4C0613: MOVF 7C,W0614: MOVWF 4B0615: MOVF 7B,W0616: MOVWF 4A0617: MOVF 7A,W0618: MOVWF 510619: MOVF 79,W061A: MOVWF 50061B: MOVF 78,W061C: MOVWF 4F061D: MOVF 77,W061E: MOVWF 4E061F: BCF 03.50620: CALL 2C70621: BSF 03.50622: MOVF 46,W0623: MOVWF 040624: BCF 03.70625: BTFSC 47.00626: BSF 03.70627: MOVF 7A,W0628: MOVWF 7E0629: MOVF 79,W062A: MOVWF 7D062B: MOVF 78,W062C: MOVWF 7C062D: MOVF 77,W062E: MOVWF 7B.................... }062F: INCF 29,F0630: GOTO 5C3........................................ if (quad == 2 || quad == 1)0631: MOVF 28,W0632: SUBLW 020633: BTFSC 03.20634: GOTO 6370635: DECFSZ 28,W0636: GOTO 63A.................... y = -y; // correct sign0637: MOVF 7C,W0638: XORLW 800639: MOVWF 7C........................................ return (y);063A: MOVF 7B,W063B: MOVWF 77063C: MOVF 7C,W063D: MOVWF 78063E: MOVF 7D,W063F: MOVWF 790640: MOVF 7E,W0641: MOVWF 7A.................... }0642: BCF 03.50643: RETURN............................................................ //Overloaded functions for cos() for PCD.................... // Overloaded function cos() for data type - Float48.................... #if defined(__PCD__).................... float48 cos(float48 x).................... {.................... float48 y, t, t2 = 1.0;.................... unsigned int8 quad, i;.................... float48 frac;.................... float48 p[6] = { //by the series definition for cosine.................... -0.5, // sum ( ( (-1)^n * x^2n )/(2n)! ).................... 0.04166666666667,.................... -0.00138888888889,.................... 0.00002480158730,.................... -0.00000027557319,.................... 0.00000000208767,.................... //-0.00000000001147,.................... // 0.00000000000005.................... };........................................ if (x < 0) x = -x; // absolute value of input........................................ quad = (unsigned int8)(x / PI_DIV_BY_TWO); // quadrant.................... frac = (x / PI_DIV_BY_TWO) - quad; // fractional part of input.................... quad = quad % 4; // quadrant (0 to 3)........................................ if (quad == 0 || quad == 2).................... t = frac * PI_DIV_BY_TWO;.................... else if (quad == 1).................... t = (1-frac) * PI_DIV_BY_TWO;.................... else // should be 3.................... t = (frac-1) * PI_DIV_BY_TWO;........................................ y = 0.999999999781;.................... t = t * t;.................... for (i = 0; i <= 5; i++).................... {.................... t2 = t2 * t;.................... y = y + p[i] * t2;.................... }........................................ if (quad == 2 || quad == 1).................... y = -y; // correct sign........................................ return (y);.................... }........................................ // Overloaded function cos() for data type - Float48.................... float64 cos(float64 x).................... {.................... float64 y, t, t2 = 1.0;.................... unsigned int8 quad, i;.................... float64 frac;.................... float64 p[6] = { //by the series definition for cosine.................... -0.5, // sum ( ( (-1)^n * x^2n )/(2n)! ).................... 0.04166666666667,.................... -0.00138888888889,.................... 0.00002480158730,.................... -0.00000027557319,.................... 0.00000000208767,.................... //-0.00000000001147,.................... // 0.00000000000005.................... };........................................ if (x < 0) x = -x; // absolute value of input........................................ quad = (unsigned int8)(x / PI_DIV_BY_TWO); // quadrant.................... frac = (x / PI_DIV_BY_TWO) - quad; // fractional part of input.................... quad = quad % 4; // quadrant (0 to 3)........................................ if (quad == 0 || quad == 2).................... t = frac * PI_DIV_BY_TWO;.................... else if (quad == 1).................... t = (1-frac) * PI_DIV_BY_TWO;.................... else // should be 3.................... t = (frac-1) * PI_DIV_BY_TWO;........................................ y = 0.999999999781;.................... t = t * t;.................... for (i = 0; i <= 5; i++).................... {.................... t2 = t2 * t;.................... y = y + p[i] * t2;.................... }........................................ if (quad == 2 || quad == 1).................... y = -y; // correct sign........................................ return (y);.................... }........................................ #endif........................................ ////////////////////////////////////////////////////////////////////////////.................... // float sin(float x).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : returns the sine value of the angle x, which is in radian.................... // Date : 9/20/2001.................... //.................... float32 sin(float32 x).................... {.................... return cos(x - PI_DIV_BY_TWO);0644: BSF 03.10645: MOVF 6E,W0646: BSF 03.50647: MOVWF 4D0648: BCF 03.50649: MOVF 6D,W064A: BSF 03.5064B: MOVWF 4C064C: BCF 03.5064D: MOVF 6C,W064E: BSF 03.5064F: MOVWF 4B0650: BCF 03.50651: MOVF 6B,W0652: BSF 03.50653: MOVWF 4A0654: MOVLW DB0655: MOVWF 510656: MOVLW 0F0657: MOVWF 500658: MOVLW 490659: MOVWF 4F065A: MOVLW 7F065B: MOVWF 4E065C: BCF 03.5065D: CALL 2C7065E: MOVF 77,W065F: MOVWF 6F0660: MOVF 78,W0661: MOVWF 700662: MOVF 79,W0663: MOVWF 710664: MOVF 7A,W0665: MOVWF 720666: MOVWF 760667: MOVF 79,W0668: MOVWF 750669: MOVF 78,W066A: MOVWF 74066B: MOVF 77,W066C: MOVWF 73066D: CALL 46F.................... }066E: RETURN........................................ //Overloaded functions for sin() for PCD.................... // Overloaded function sin() for data type - Float48.................... #if defined(__PCD__).................... float48 sin(float48 x).................... {.................... return cos(x - PI_DIV_BY_TWO);.................... }........................................ // Overloaded function sin() for data type - Float48.................... float64 sin(float64 x).................... {.................... return cos(x - PI_DIV_BY_TWO);.................... }.................... #endif........................................ ////////////////////////////////////////////////////////////////////////////.................... // float tan(float x).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : returns the tangent value of the angle x, which is in radian.................... // Date : 9/20/2001.................... //.................... float32 tan(float32 x).................... {.................... float32 c, s;........................................ c = cos(x);.................... if (c == 0.0).................... return (1.0e+36);........................................ s = sin(x);.................... return(s/c);.................... }.................... //Overloaded functions for tan() for PCD.................... // Overloaded function tan() for data type - Float48.................... #if defined(__PCD__).................... float48 tan(float48 x).................... {.................... float48 c, s;........................................ c = cos(x);.................... if (c == 0.0).................... return (1.0e+36);........................................ s = sin(x);.................... return(s/c);.................... }........................................ // Overloaded function tan() for data type - Float48.................... float64 tan(float64 x).................... {.................... float64 c, s;........................................ c = cos(x);.................... if (c == 0.0).................... return (1.0e+36);........................................ s = sin(x);.................... return(s/c);.................... }.................... #endif........................................ float32 const pas[3] = {0.49559947, -4.6145309, 5.6036290};.................... float32 const qas[3] = {1.0000000, -5.5484666, 5.6036290};........................................ float32 ASIN_COS(float32 x, unsigned int8 n).................... {.................... float32 y, res, r, y2;.................... int1 s;.................... #ifdef _ERRNO.................... if(x <-1 || x > 1).................... {.................... errno=EDOM;.................... }.................... #endif.................... s = 0;*0800: BCF 74.0.................... y = x;0801: MOVF 6A,W0802: MOVWF 6F0803: MOVF 69,W0804: MOVWF 6E0805: MOVF 68,W0806: MOVWF 6D0807: MOVF 67,W0808: MOVWF 6C........................................ if (x < 0)0809: MOVF 6A,W080A: BSF 03.5080B: MOVWF 49080C: BCF 03.5080D: MOVF 69,W080E: BSF 03.5080F: MOVWF 480810: BCF 03.50811: MOVF 68,W0812: BSF 03.50813: MOVWF 470814: BCF 03.50815: MOVF 67,W0816: BSF 03.50817: MOVWF 460818: CLRF 4D0819: CLRF 4C081A: CLRF 4B081B: CLRF 4A081C: BCF 0A.3081D: BCF 03.5081E: CALL 40D081F: BSF 0A.30820: BTFSS 03.00821: GOTO 026.................... {.................... s = 1;0822: BSF 74.0.................... y = -y;0823: MOVF 6D,W0824: XORLW 800825: MOVWF 6D.................... }........................................ if (y > 0.5)0826: BSF 03.50827: CLRF 490828: CLRF 480829: CLRF 47082A: MOVLW 7E082B: MOVWF 46082C: BCF 03.5082D: MOVF 6F,W082E: BSF 03.5082F: MOVWF 4D0830: BCF 03.50831: MOVF 6E,W0832: BSF 03.50833: MOVWF 4C0834: BCF 03.50835: MOVF 6D,W0836: BSF 03.50837: MOVWF 4B0838: BCF 03.50839: MOVF 6C,W083A: BSF 03.5083B: MOVWF 4A083C: BCF 0A.3083D: BCF 03.5083E: CALL 40D083F: BSF 0A.30840: BTFSS 03.00841: GOTO 133.................... {.................... y = sqrt((1.0 - y)/2.0);0842: BSF 03.10843: BSF 03.50844: CLRF 4D0845: CLRF 4C0846: CLRF 4B0847: MOVLW 7F0848: MOVWF 4A0849: BCF 03.5084A: MOVF 6F,W084B: BSF 03.5084C: MOVWF 51084D: BCF 03.5084E: MOVF 6E,W084F: BSF 03.50850: MOVWF 500851: BCF 03.50852: MOVF 6D,W0853: BSF 03.50854: MOVWF 4F0855: BCF 03.50856: MOVF 6C,W0857: BSF 03.50858: MOVWF 4E0859: BCF 0A.3085A: BCF 03.5085B: CALL 2C7085C: BSF 0A.3085D: MOVF 77,W085E: BSF 03.5085F: MOVWF 240860: MOVF 78,W0861: MOVWF 250862: MOVF 79,W0863: MOVWF 260864: MOVF 7A,W0865: MOVWF 270866: MOVF 27,W0867: MOVWF 490868: MOVF 26,W0869: MOVWF 48086A: MOVF 25,W086B: MOVWF 47086C: MOVF 24,W086D: MOVWF 46086E: CLRF 4D086F: CLRF 4C0870: CLRF 4B0871: MOVLW 800872: MOVWF 4A0873: BCF 0A.30874: BCF 03.50875: CALL 1420876: BSF 0A.30877: MOVF 77,W0878: BSF 03.50879: MOVWF 24087A: MOVF 78,W087B: MOVWF 25087C: MOVF 79,W087D: MOVWF 26087E: MOVF 7A,W087F: MOVWF 270880: MOVF 27,W0881: MOVWF 2C0882: MOVF 26,W0883: MOVWF 2B0884: MOVF 25,W0885: MOVWF 2A0886: MOVF 24,W0887: MOVWF 29*0929: MOVF 7A,W092A: MOVWF 6F092B: MOVF 79,W092C: MOVWF 6E092D: MOVF 78,W092E: MOVWF 6D092F: MOVF 77,W0930: MOVWF 6C.................... n += 2;0931: MOVLW 020932: ADDWF 6B,F.................... }........................................ y2=y*y;0933: MOVF 6F,W0934: BSF 03.50935: MOVWF 4D0936: BCF 03.50937: MOVF 6E,W0938: BSF 03.50939: MOVWF 4C093A: BCF 03.5093B: MOVF 6D,W093C: BSF 03.5093D: MOVWF 4B093E: BCF 03.5093F: MOVF 6C,W0940: BSF 03.50941: MOVWF 4A0942: BCF 03.50943: MOVF 6F,W0944: BSF 03.50945: MOVWF 510946: BCF 03.50947: MOVF 6E,W0948: BSF 03.50949: MOVWF 50094A: BCF 03.5094B: MOVF 6D,W094C: BSF 03.5094D: MOVWF 4F094E: BCF 03.5094F: MOVF 6C,W0950: BSF 03.50951: MOVWF 4E0952: BCF 0A.30953: BCF 03.50954: CALL 20E0955: BSF 0A.30956: MOVF 7A,W0957: BSF 03.50958: MOVWF 230959: MOVF 79,W095A: MOVWF 22095B: MOVF 78,W095C: MOVWF 21095D: MOVF 77,W095E: MOVWF 20........................................ res = pas[0]*y2 + pas[1];095F: MOVLW 370960: MOVWF 4D0961: MOVLW BF0962: MOVWF 4C0963: MOVLW 7D0964: MOVWF 4B0965: MOVWF 4A0966: MOVF 23,W0967: MOVWF 510968: MOVF 22,W0969: MOVWF 50096A: MOVF 21,W096B: MOVWF 4F096C: MOVF 20,W096D: MOVWF 4E096E: BCF 0A.3096F: BCF 03.50970: CALL 20E0971: BSF 0A.30972: MOVF 77,W0973: BSF 03.50974: MOVWF 240975: MOVF 78,W0976: MOVWF 250977: MOVF 79,W0978: MOVWF 260979: MOVF 7A,W097A: MOVWF 27097B: BCF 03.1097C: MOVF 27,W097D: MOVWF 4D097E: MOVF 26,W097F: MOVWF 4C0980: MOVF 25,W0981: MOVWF 4B0982: MOVF 24,W0983: MOVWF 4A0984: MOVLW 3D0985: MOVWF 510986: MOVLW AA0987: MOVWF 500988: MOVLW 930989: MOVWF 4F098A: MOVLW 81098B: MOVWF 4E098C: BCF 0A.3098D: BCF 03.5098E: CALL 2C7098F: BSF 0A.30990: MOVF 7A,W0991: MOVWF 730992: MOVF 79,W0993: MOVWF 720994: MOVF 78,W0995: MOVWF 710996: MOVF 77,W0997: MOVWF 70.................... res = res*y2 + pas[2];0998: MOVF 73,W0999: BSF 03.5099A: MOVWF 4D099B: MOVF 72,W099C: MOVWF 4C099D: MOVF 71,W099E: MOVWF 4B099F: MOVF 70,W09A0: MOVWF 4A09A1: MOVF 23,W09A2: MOVWF 5109A3: MOVF 22,W09A4: MOVWF 5009A5: MOVF 21,W09A6: MOVWF 4F09A7: MOVF 20,W09A8: MOVWF 4E09A9: BCF 0A.309AA: BCF 03.509AB: CALL 20E09AC: BSF 0A.309AD: MOVF 77,W09AE: BSF 03.509AF: MOVWF 2409B0: MOVF 78,W09B1: MOVWF 2509B2: MOVF 79,W09B3: MOVWF 2609B4: MOVF 7A,W09B5: MOVWF 2709B6: BCF 03.109B7: MOVF 27,W09B8: MOVWF 4D09B9: MOVF 26,W09BA: MOVWF 4C09BB: MOVF 25,W09BC: MOVWF 4B09BD: MOVF 24,W09BE: MOVWF 4A09BF: MOVLW EE09C0: MOVWF 5109C1: MOVLW 5009C2: MOVWF 5009C3: MOVLW 3309C4: MOVWF 4F09C5: MOVLW 8109C6: MOVWF 4E09C7: BCF 0A.309C8: BCF 03.509C9: CALL 2C709CA: BSF 0A.309CB: MOVF 7A,W09CC: MOVWF 7309CD: MOVF 79,W09CE: MOVWF 7209CF: MOVF 78,W09D0: MOVWF 7109D1: MOVF 77,W09D2: MOVWF 70........................................ r = qas[0]*y2 + qas[1];09D3: BSF 03.509D4: CLRF 4D09D5: CLRF 4C09D6: CLRF 4B09D7: MOVLW 7F09D8: MOVWF 4A09D9: MOVF 23,W09DA: MOVWF 5109DB: MOVF 22,W09DC: MOVWF 5009DD: MOVF 21,W09DE: MOVWF 4F09DF: MOVF 20,W09E0: MOVWF 4E09E1: BCF 0A.309E2: BCF 03.509E3: CALL 20E09E4: BSF 0A.309E5: MOVF 77,W09E6: BSF 03.509E7: MOVWF 2409E8: MOVF 78,W09E9: MOVWF 2509EA: MOVF 79,W09EB: MOVWF 2609EC: MOVF 7A,W09ED: MOVWF 2709EE: BCF 03.109EF: MOVF 27,W09F0: MOVWF 4D09F1: MOVF 26,W09F2: MOVWF 4C09F3: MOVF 25,W09F4: MOVWF 4B09F5: MOVF 24,W09F6: MOVWF 4A09F7: MOVLW 0A09F8: MOVWF 5109F9: MOVLW 8D09FA: MOVWF 5009FB: MOVLW B109FC: MOVWF 4F09FD: MOVLW 8109FE: MOVWF 4E09FF: BCF 0A.30A00: BCF 03.50A01: CALL 2C70A02: BSF 0A.30A03: MOVF 7A,W0A04: MOVWF 7E0A05: MOVF 79,W0A06: MOVWF 7D0A07: MOVF 78,W0A08: MOVWF 7C0A09: MOVF 77,W0A0A: MOVWF 7B.................... r = r*y2 + qas[2];0A0B: MOVF 7E,W0A0C: BSF 03.50A0D: MOVWF 4D0A0E: MOVF 7D,W0A0F: MOVWF 4C0A10: MOVF 7C,W0A11: MOVWF 4B0A12: MOVF 7B,W0A13: MOVWF 4A0A14: MOVF 23,W0A15: MOVWF 510A16: MOVF 22,W0A17: MOVWF 500A18: MOVF 21,W0A19: MOVWF 4F0A1A: MOVF 20,W0A1B: MOVWF 4E0A1C: BCF 0A.30A1D: BCF 03.50A1E: CALL 20E0A1F: BSF 0A.30A20: MOVF 77,W0A21: BSF 03.50A22: MOVWF 240A23: MOVF 78,W0A24: MOVWF 250A25: MOVF 79,W0A26: MOVWF 260A27: MOVF 7A,W0A28: MOVWF 270A29: BCF 03.10A2A: MOVF 27,W0A2B: MOVWF 4D0A2C: MOVF 26,W0A2D: MOVWF 4C0A2E: MOVF 25,W0A2F: MOVWF 4B0A30: MOVF 24,W0A31: MOVWF 4A0A32: MOVLW EE0A33: MOVWF 510A34: MOVLW 500A35: MOVWF 500A36: MOVLW 330A37: MOVWF 4F0A38: MOVLW 810A39: MOVWF 4E0A3A: BCF 0A.30A3B: BCF 03.50A3C: CALL 2C70A3D: BSF 0A.30A3E: MOVF 7A,W0A3F: MOVWF 7E0A40: MOVF 79,W0A41: MOVWF 7D0A42: MOVF 78,W0A43: MOVWF 7C0A44: MOVF 77,W0A45: MOVWF 7B........................................ res = y*res/r;0A46: MOVF 6F,W0A47: BSF 03.50A48: MOVWF 4D0A49: BCF 03.50A4A: MOVF 6E,W0A4B: BSF 03.50A4C: MOVWF 4C0A4D: BCF 03.50A4E: MOVF 6D,W0A4F: BSF 03.50A50: MOVWF 4B0A51: BCF 03.50A52: MOVF 6C,W0A53: BSF 03.50A54: MOVWF 4A0A55: MOVF 73,W0A56: MOVWF 510A57: MOVF 72,W0A58: MOVWF 500A59: MOVF 71,W0A5A: MOVWF 4F0A5B: MOVF 70,W0A5C: MOVWF 4E0A5D: BCF 0A.30A5E: BCF 03.50A5F: CALL 20E0A60: BSF 0A.30A61: MOVF 77,W0A62: BSF 03.50A63: MOVWF 240A64: MOVF 78,W0A65: MOVWF 250A66: MOVF 79,W0A67: MOVWF 260A68: MOVF 7A,W0A69: MOVWF 270A6A: MOVWF 490A6B: MOVF 26,W0A6C: MOVWF 480A6D: MOVF 25,W0A6E: MOVWF 470A6F: MOVF 24,W0A70: MOVWF 460A71: MOVF 7E,W0A72: MOVWF 4D0A73: MOVF 7D,W0A74: MOVWF 4C0A75: MOVF 7C,W0A76: MOVWF 4B0A77: MOVF 7B,W0A78: MOVWF 4A0A79: BCF 0A.30A7A: BCF 03.50A7B: CALL 1420A7C: BSF 0A.30A7D: MOVF 7A,W0A7E: MOVWF 730A7F: MOVF 79,W0A80: MOVWF 720A81: MOVF 78,W0A82: MOVWF 710A83: MOVF 77,W0A84: MOVWF 70........................................ if (n & 2) // |x| > 0.50A85: BTFSS 6B.10A86: GOTO 2B7.................... res = PI_DIV_BY_TWO - 2.0*res;0A87: BSF 03.50A88: CLRF 4D0A89: CLRF 4C0A8A: CLRF 4B0A8B: MOVLW 800A8C: MOVWF 4A0A8D: MOVF 73,W0A8E: MOVWF 510A8F: MOVF 72,W0A90: MOVWF 500A91: MOVF 71,W0A92: MOVWF 4F0A93: MOVF 70,W0A94: MOVWF 4E0A95: BCF 0A.30A96: BCF 03.50A97: CALL 20E0A98: BSF 0A.30A99: BSF 03.10A9A: MOVLW DB0A9B: BSF 03.50A9C: MOVWF 4D0A9D: MOVLW 0F0A9E: MOVWF 4C0A9F: MOVLW 490AA0: MOVWF 4B0AA1: MOVLW 7F0AA2: MOVWF 4A0AA3: MOVF 7A,W0AA4: MOVWF 510AA5: MOVF 79,W0AA6: MOVWF 500AA7: MOVF 78,W0AA8: MOVWF 4F0AA9: MOVF 77,W0AAA: MOVWF 4E0AAB: BCF 0A.30AAC: BCF 03.50AAD: CALL 2C70AAE: BSF 0A.30AAF: MOVF 7A,W0AB0: MOVWF 730AB1: MOVF 79,W0AB2: MOVWF 720AB3: MOVF 78,W0AB4: MOVWF 710AB5: MOVF 77,W0AB6: MOVWF 70.................... if (s)0AB7: BTFSS 74.00AB8: GOTO 2BC.................... res = -res;0AB9: MOVF 71,W0ABA: XORLW 800ABB: MOVWF 71.................... if (n & 1) // take arccos0ABC: BTFSS 6B.00ABD: GOTO 2DC.................... res = PI_DIV_BY_TWO - res;0ABE: BSF 03.10ABF: MOVLW DB0AC0: BSF 03.50AC1: MOVWF 4D0AC2: MOVLW 0F0AC3: MOVWF 4C0AC4: MOVLW 490AC5: MOVWF 4B0AC6: MOVLW 7F0AC7: MOVWF 4A0AC8: MOVF 73,W0AC9: MOVWF 510ACA: MOVF 72,W0ACB: MOVWF 500ACC: MOVF 71,W0ACD: MOVWF 4F0ACE: MOVF 70,W0ACF: MOVWF 4E0AD0: BCF 0A.30AD1: BCF 03.50AD2: CALL 2C70AD3: BSF 0A.30AD4: MOVF 7A,W0AD5: MOVWF 730AD6: MOVF 79,W0AD7: MOVWF 720AD8: MOVF 78,W0AD9: MOVWF 710ADA: MOVF 77,W0ADB: MOVWF 70........................................ return(res);0ADC: MOVF 70,W0ADD: MOVWF 770ADE: MOVF 71,W0ADF: MOVWF 780AE0: MOVF 72,W0AE1: MOVWF 790AE2: MOVF 73,W0AE3: MOVWF 7A.................... }0AE4: RETURN........................................ //Overloaded functions for ASIN_COS() for PCD.................... // Overloaded function ASIN_COS() for data type - Float48.................... #if defined(__PCD__).................... float48 ASIN_COS(float48 x, unsigned int8 n).................... {.................... float48 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);.................... }........................................ // Overloaded function ASIN_COS() for data type - Float64.................... float64 ASIN_COS(float64 x, unsigned int8 n).................... {.................... float64 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);.................... }.................... #endif........................................ ////////////////////////////////////////////////////////////////////////////.................... // float asin(float x).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : returns the arcsine value of the value x..................... // Date : N/A.................... //.................... float32 asin(float32 x).................... {.................... float32 r;........................................ r = ASIN_COS(x, 0);*15B6: MOVF 62,W15B7: MOVWF 6A15B8: MOVF 61,W15B9: MOVWF 6915BA: MOVF 60,W15BB: MOVWF 6815BC: MOVF 5F,W15BD: MOVWF 6715BE: CLRF 6B15BF: BCF 0A.415C0: BSF 0A.315C1: CALL 00015C2: BSF 0A.415C3: BCF 0A.315C4: MOVF 7A,W15C5: MOVWF 6615C6: MOVF 79,W15C7: MOVWF 6515C8: MOVF 78,W15C9: MOVWF 6415CA: MOVF 77,W15CB: MOVWF 63.................... return(r);15CC: MOVF 63,W15CD: MOVWF 7715CE: MOVF 64,W15CF: MOVWF 7815D0: MOVF 65,W15D1: MOVWF 7915D2: MOVF 66,W15D3: MOVWF 7A.................... }.................... //Overloaded functions for asin() for PCD.................... // Overloaded function asin() for data type - Float48.................... #if defined(__PCD__).................... float48 asin(float48 x).................... {.................... float48 r;........................................ r = ASIN_COS(x, 0);.................... return(r);.................... }........................................ // Overloaded function asin() for data type - Float64.................... float64 asin(float64 x).................... {.................... float64 r;........................................ r = ASIN_COS(x, 0);.................... return(r);.................... }.................... #endif........................................ ////////////////////////////////////////////////////////////////////////////.................... // float acos(float x).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : returns the arccosine value of the value x..................... // Date : N/A.................... //.................... float32 acos(float32 x).................... {.................... float32 r;........................................ r = ASIN_COS(x, 1);*16E9: MOVF 62,W16EA: MOVWF 6A16EB: MOVF 61,W16EC: MOVWF 6916ED: MOVF 60,W16EE: MOVWF 6816EF: MOVF 5F,W16F0: MOVWF 6716F1: MOVLW 0116F2: MOVWF 6B16F3: BCF 0A.416F4: BSF 0A.316F5: CALL 00016F6: BSF 0A.416F7: BCF 0A.316F8: MOVF 7A,W16F9: MOVWF 6616FA: MOVF 79,W16FB: MOVWF 6516FC: MOVF 78,W16FD: MOVWF 6416FE: MOVF 77,W16FF: MOVWF 63.................... return(r);1700: MOVF 63,W1701: MOVWF 771702: MOVF 64,W1703: MOVWF 781704: MOVF 65,W1705: MOVWF 791706: MOVF 66,W1707: MOVWF 7A.................... }.................... //Overloaded functions for acos() for PCD.................... // Overloaded function acos() for data type - Float48.................... #if defined(__PCD__).................... float48 acos(float48 x).................... {.................... float48 r;........................................ r = ASIN_COS(x, 1);.................... return(r);.................... }........................................ // Overloaded function acos() for data type - Float64.................... float64 acos(float64 x).................... {.................... float64 r;........................................ r = ASIN_COS(x, 1);.................... return(r);.................... }.................... #endif........................................ float32 const pat[4] = {0.17630401, 5.6710795, 22.376096, 19.818457};.................... float32 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.................... //.................... float32 atan(float32 x).................... {.................... float32 y, res, r;.................... int1 s, flag;........................................ s = 0;.................... flag = 0;.................... y = x;........................................ if (x < 0).................... {.................... s = 1;.................... y = -y;.................... }........................................ if (y > 1.0).................... {.................... y = 1.0/y;.................... flag = 1;.................... }........................................ res = pat[0]*y*y + pat[1];.................... res = res*y*y + pat[2];.................... res = res*y*y + pat[3];........................................ r = qat[0]*y*y + qat[1];.................... r = r*y*y + qat[2];.................... r = r*y*y + qat[3];........................................ res = y*res/r;............................................................ if (flag) // for |x| > 1.................... res = PI_DIV_BY_TWO - res;.................... if (s).................... res = -res;........................................ return(res);.................... }.................... //Overloaded functions for atan() for PCD.................... // Overloaded function atan() for data type - Float48.................... #if defined(__PCD__).................... float48 atan(float48 x).................... {.................... float48 y, res, r;.................... int1 s, flag;........................................ s = 0;.................... flag = 0;.................... y = x;........................................ if (x < 0).................... {.................... s = 1;.................... y = -y;.................... }........................................ if (y > 1.0).................... {.................... y = 1.0/y;.................... flag = 1;.................... }........................................ res = pat[0]*y*y + pat[1];.................... res = res*y*y + pat[2];.................... res = res*y*y + pat[3];........................................ r = qat[0]*y*y + qat[1];.................... r = r*y*y + qat[2];.................... r = r*y*y + qat[3];........................................ res = y*res/r;............................................................ if (flag) // for |x| > 1.................... res = PI_DIV_BY_TWO - res;.................... if (s).................... res = -res;........................................ return(res);.................... }........................................ // Overloaded function atan() for data type - Float64.................... float64 atan(float64 x).................... {.................... float64 y, res, r;.................... int1 s, flag;........................................ s = 0;.................... flag = 0;.................... y = x;........................................ if (x < 0).................... {.................... s = 1;.................... y = -y;.................... }........................................ if (y > 1.0).................... {.................... y = 1.0/y;.................... flag = 1;.................... }........................................ res = pat[0]*y*y + pat[1];.................... res = res*y*y + pat[2];.................... res = res*y*y + pat[3];........................................ r = qat[0]*y*y + qat[1];.................... r = r*y*y + qat[2];.................... r = r*y*y + qat[3];........................................ res = y*res/r;............................................................ if (flag) // for |x| > 1.................... res = PI_DIV_BY_TWO - res;.................... if (s).................... res = -res;........................................ return(res);.................... }.................... #endif........................................ /////////////////////////////////////////////////////////////////////////////.................... // 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.................... //........................................ float32 atan2(float32 y,float32 x).................... {.................... float32 z;.................... int1 sign;.................... unsigned int8 quad;.................... sign=0;.................... quad=0; //quadrant.................... quad=((y<=0.0)?((x<=0.0)?3:4):((x<0.0)?2: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;.................... }.................... }.................... }.................... }........................................ //Overloaded functions for atan2() for PCD.................... // Overloaded function atan2() for data type - Float48.................... #if defined(__PCD__).................... float48 atan2(float48 y,float48 x).................... {.................... float48 z;.................... int1 sign;.................... unsigned int8 quad;.................... sign=0;.................... quad=0; //quadrant.................... quad=((y<=0.0)?((x<=0.0)?3:4):((x<0.0)?2: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;.................... }.................... }.................... }.................... }........................................ // Overloaded function atan2() for data type - Float64.................... float64 atan2(float64 y,float64 x).................... {.................... float64 z;.................... int1 sign;.................... unsigned int8 quad;.................... sign=0;.................... quad=0; //quadrant.................... quad=((y<=0.0)?((x<=0.0)?3:4):((x<0.0)?2: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;.................... }.................... }.................... }.................... }.................... #endif........................................ //////////////////// 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.................... //........................................ float32 cosh(float32 x).................... {.................... return ((exp(x)+exp(-x))/2);.................... }.................... //Overloaded functions for cosh() for PCD.................... // Overloaded function cosh() for data type - Float48.................... #if defined(__PCD__).................... float48 cosh(float48 x).................... {.................... return ((exp(x)+exp(-x))/2);.................... }........................................ // Overloaded function cosh() for data type - Float64.................... float64 cosh(float64 x).................... {.................... return ((exp(x)+exp(-x))/2);.................... }.................... #endif........................................ ////////////////////////////////////////////////////////////////////////////.................... // float sinh(float x).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : Computes the hyperbolic sine value of x.................... // Returns : returns the hyperbolic sine value of x.................... // Date : N/A.................... //........................................ float32 sinh(float32 x).................... {........................................ return ((exp(x) - exp(-x))/2);.................... }.................... //Overloaded functions for sinh() for PCD.................... // Overloaded function sinh() for data type - Float48.................... #if defined(__PCD__).................... float48 sinh(float48 x).................... {........................................ return ((exp(x) - exp(-x))/2);.................... }........................................ // Overloaded function sinh() for data type - Float48.................... float64 sinh(float64 x).................... {........................................ return ((exp(x) - exp(-x))/2);.................... }.................... #endif........................................ ////////////////////////////////////////////////////////////////////////////.................... // float tanh(float x).................... ////////////////////////////////////////////////////////////////////////////.................... // Description : Computes the hyperbolic tangent value of x.................... // Returns : returns the hyperbolic tangent value of x.................... // Date : N/A.................... //........................................ float32 tanh(float32 x).................... {.................... return(sinh(x)/cosh(x));.................... }.................... //Overloaded functions for tanh() for PCD.................... // Overloaded function tanh() for data type - Float48.................... #if defined(__PCD__).................... float48 tanh(float48 x).................... {.................... return(sinh(x)/cosh(x));.................... }........................................ // Overloaded function tanh() for data type - Float64.................... float64 tanh(float64 x).................... {.................... return(sinh(x)/cosh(x));.................... }.................... #endif........................................ ////////////////////////////////////////////////////////////////////////////.................... // 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.................... float32 frexp(float32 x, signed int8 *exp).................... {.................... float32 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;.................... }........................................ //Overloaded functions for frexp() for PCD.................... // Overloaded function frexp() for data type - Float48.................... #if defined(__PCD__).................... float48 frexp(float48 x, signed int8 *exp).................... {.................... float48 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;.................... }........................................ // Overloaded function frexp() for data type - Float64.................... float64 frexp(float64 x, signed int8 *exp).................... {.................... float64 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;.................... }.................... #endif........................................ //////////////////////////////////////////////////////////////////////////////.................... // float ldexp(float x, signed int *exp).................... //////////////////////////////////////////////////////////////////////////////.................... // Description : multiplies a floating point number by an integral power of 2..................... // Returns : returns the value of x times 2 raised to the power exp..................... // Date : N/A.................... //........................................ float32 ldexp(float32 value, signed int8 exp).................... {.................... return (value * pow(2,exp));.................... }.................... //Overloaded functions for ldexp() for PCD.................... // Overloaded function ldexp() for data type - Float48........................................ #if defined(__PCD__).................... float48 ldexp(float48 value, signed int8 exp).................... {.................... return (value * pow(2,exp));.................... }.................... // Overloaded function ldexp() for data type - Float64.................... float64 ldexp(float64 value, signed int8 exp).................... {.................... return (value * pow(2,exp));.................... }.................... #endif........................................ #endif............................................................ #define PIN_SDA PIN_B0.................... #define PIN_SCL PIN_B1.................... #use i2c(master, sda=PIN_SDA, scl=PIN_SCL).................... //set RS232.................... #use rs232(baud=9600,parity=N,xmit=PIN_C7,rcv=PIN_C6,bits=8) //rcv TXD xmit RXD*004F: BCF 20.70050: MOVF 20,W0051: BSF 03.50052: MOVWF 070053: BCF 03.50054: BCF 07.70055: MOVLW 080056: MOVWF 780057: GOTO 0580058: NOP0059: BSF 78.7005A: GOTO 069005B: BCF 78.7005C: RRF 65,F005D: BTFSC 03.0005E: BSF 07.7005F: BTFSS 03.00060: BCF 07.70061: BSF 78.60062: GOTO 0690063: BCF 78.60064: DECFSZ 78,F0065: GOTO 05C0066: GOTO 0670067: NOP0068: BSF 07.70069: MOVLW 3F006A: MOVWF 04006B: DECFSZ 04,F006C: GOTO 06B006D: NOP006E: BTFSC 78.7006F: GOTO 05B0070: BTFSC 78.60071: GOTO 0630072: RETURN............................................................ signed int16 AZIMUT;.................... signed int ELEVACE;........................................ int stupne (float rad).................... {*066F: MOVF 5C,W0670: BSF 03.50671: MOVWF 490672: BCF 03.50673: MOVF 5B,W0674: BSF 03.50675: MOVWF 480676: BCF 03.50677: MOVF 5A,W0678: BSF 03.50679: MOVWF 47067A: BCF 03.5067B: MOVF 59,W067C: BSF 03.5067D: MOVWF 46067E: MOVLW C3067F: MOVWF 4D0680: MOVLW F50681: MOVWF 4C0682: MOVLW 480683: MOVWF 4B0684: MOVLW 800685: MOVWF 4A0686: BCF 03.50687: CALL 142*06B1: MOVF 78,W06B2: MOVWF 5D.................... int a =(int) ((rad/3.14)*180);.................... return a;06B3: MOVF 5D,W06B4: MOVWF 78.................... }06B5: RETURN........................................ float rad (float stup).................... {*0285: MOVF 6E,W0286: BSF 03.50287: MOVWF 490288: BCF 03.50289: MOVF 6D,W028A: BSF 03.5028B: MOVWF 48028C: BCF 03.5028D: MOVF 6C,W028E: BSF 03.5028F: MOVWF 470290: BCF 03.50291: MOVF 6B,W0292: BSF 03.50293: MOVWF 460294: CLRF 4D0295: CLRF 4C0296: MOVLW 340297: MOVWF 4B0298: MOVLW 860299: MOVWF 4A029A: BCF 03.5029B: CALL 142*02B6: MOVF 7A,W02B7: MOVWF 7202B8: MOVF 79,W02B9: MOVWF 7102BA: MOVF 78,W02BB: MOVWF 7002BC: MOVF 77,W02BD: MOVWF 6F.................... float a = ((stup/180)*3.14);.................... return a;02BE: MOVF 6F,W02BF: MOVWF 7702C0: MOVF 70,W02C1: MOVWF 7802C2: MOVF 71,W02C3: MOVWF 7902C4: MOVF 72,W02C5: MOVWF 7A.................... }02C6: RETURN........................................ //provede vypocet dnu od zacatku roku.................... int16 den (int m, int16 d) //vstupem je mesic a den.................... {.................... switch (m) {*101D: MOVF 59,W101E: XORLW 01101F: BTFSC 03.21020: GOTO 0431021: XORLW 031022: BTFSC 03.21023: GOTO 0441024: XORLW 011025: BTFSC 03.21026: GOTO 0491027: XORLW 071028: BTFSC 03.21029: GOTO 04E102A: XORLW 01102B: BTFSC 03.2102C: GOTO 053102D: XORLW 03102E: BTFSC 03.2102F: GOTO 0581030: XORLW 011031: BTFSC 03.21032: GOTO 05D1033: XORLW 0F1034: BTFSC 03.21035: GOTO 0621036: XORLW 011037: BTFSC 03.21038: GOTO 0671039: XORLW 03103A: BTFSC 03.2103B: GOTO 06C103C: XORLW 01103D: BTFSC 03.2103E: GOTO 073103F: XORLW 071040: BTFSC 03.21041: GOTO 07A1042: GOTO 081........................................ case 1: d=d;........................................ break;1043: GOTO 0CD........................................ case 2: d=31+d;1044: MOVLW 1F1045: ADDWF 5A,F1046: BTFSC 03.01047: INCF 5B,F........................................ break;1048: GOTO 0CD........................................ case 3: d=58+d;1049: MOVLW 3A104A: ADDWF 5A,F104B: BTFSC 03.0104C: INCF 5B,F........................................ break;104D: GOTO 0CD........................................ case 4: d=89+d;104E: MOVLW 59104F: ADDWF 5A,F1050: BTFSC 03.01051: INCF 5B,F........................................ break;1052: GOTO 0CD.................... case 5: d=119+d;1053: MOVLW 771054: ADDWF 5A,F1055: BTFSC 03.01056: INCF 5B,F........................................ break;1057: GOTO 0CD........................................ case 6: d=150+d;1058: MOVLW 961059: ADDWF 5A,F105A: BTFSC 03.0105B: INCF 5B,F........................................ break;105C: GOTO 0CD.................... case 7: d=180+d;105D: MOVLW B4105E: ADDWF 5A,F105F: BTFSC 03.01060: INCF 5B,F........................................ break;1061: GOTO 0CD........................................ case 8: d=211+d;1062: MOVLW D31063: ADDWF 5A,F1064: BTFSC 03.01065: INCF 5B,F........................................ break;1066: GOTO 0CD.................... case 9: d=242+d;1067: MOVLW F21068: ADDWF 5A,F1069: BTFSC 03.0106A: INCF 5B,F........................................ break;106B: GOTO 0CD........................................ case 10: d=262+d;106C: MOVLW 06106D: ADDWF 5A,F106E: MOVLW 01106F: BTFSC 03.01070: MOVLW 021071: ADDWF 5B,F........................................ break;1072: GOTO 0CD.................... case 11: d=303+d;1073: MOVLW 2F1074: ADDWF 5A,F1075: MOVLW 011076: BTFSC 03.01077: MOVLW 021078: ADDWF 5B,F........................................ break;1079: GOTO 0CD........................................ case 12: d=333+d;107A: MOVLW 4D107B: ADDWF 5A,F107C: MOVLW 01107D: BTFSC 03.0107E: MOVLW 02107F: ADDWF 5B,F........................................ break;1080: GOTO 0CD........................................ default:printf("chyba");1081: MOVLW 041082: BSF 03.61083: MOVWF 0D1084: MOVLW 001085: MOVWF 0F........................................ break; }*10CB: BCF 03.610CC: GOTO 0CD............................................................ printf("Den: %ld\r\n", d);10CD: MOVLW 0710CE: BSF 03.610CF: MOVWF 0D10D0: MOVLW 0010D1: MOVWF 0F10D2: BCF 03.010D3: MOVLW 0510D4: BCF 03.610D5: MOVWF 5C10D6: BCF 0A.410D7: CALL 07310D8: BSF 0A.410D9: MOVLW 1010DA: MOVWF 0410DB: MOVF 5B,W10DC: MOVWF 5D10DD: MOVF 5A,W10DE: MOVWF 5C10DF: BCF 0A.410E0: CALL 0C210E1: BSF 0A.410E2: MOVLW 0D10E3: MOVWF 6510E4: BCF 0A.410E5: CALL 04F10E6: BSF 0A.410E7: MOVLW 0A10E8: MOVWF 6510E9: BCF 0A.410EA: CALL 04F10EB: BSF 0A.4.................... return d;10EC: MOVF 5A,W10ED: MOVWF 7810EE: MOVF 5B,W10EF: MOVWF 79........................................ }........................................ float deklinace (float d) //vstupem je den v roce.................... {*1109: MOVLW 3F110A: MOVWF 60110B: MOVLW 7E110C: MOVWF 5F110D: MOVLW 7C110E: MOVWF 5E110F: MOVLW 7E1110: MOVWF 5D.................... float b = 0.98630137;.................... d=((rad(23.45))*sin(rad(b*(d-81))));1111: MOVLW 9A1112: MOVWF 6E1113: MOVLW 991114: MOVWF 6D1115: MOVLW 3B1116: MOVWF 6C1117: MOVLW 831118: MOVWF 6B1119: BCF 0A.4111A: CALL 285111B: BSF 0A.4111C: MOVF 77,W111D: MOVWF 61111E: MOVF 78,W111F: MOVWF 621120: MOVF 79,W1121: MOVWF 631122: MOVF 7A,W1123: MOVWF 641124: CLRF 661125: MOVF 04,W1126: MOVWF 651127: BCF 66.01128: BTFSC 03.71129: BSF 66.0112A: BSF 03.1112B: MOVF 5C,W112C: BSF 03.5112D: MOVWF 4D112E: BCF 03.5112F: MOVF 5B,W1130: BSF 03.51131: MOVWF 4C1132: BCF 03.51133: MOVF 5A,W1134: BSF 03.51135: MOVWF 4B1136: BCF 03.51137: MOVF 59,W1138: BSF 03.51139: MOVWF 4A113A: CLRF 51113B: CLRF 50113C: MOVLW 22113D: MOVWF 4F113E: MOVLW 85113F: MOVWF 4E1140: BCF 0A.41141: BCF 03.51142: CALL 2C71143: BSF 0A.41144: MOVF 65,W1145: MOVWF 041146: BCF 03.71147: BTFSC 66.01148: BSF 03.71149: MOVF 60,W114A: BSF 03.5114B: MOVWF 4D114C: BCF 03.5114D: MOVF 5F,W114E: BSF 03.5114F: MOVWF 4C1150: BCF 03.51151: MOVF 5E,W1152: BSF 03.51153: MOVWF 4B1154: BCF 03.51155: MOVF 5D,W1156: BSF 03.51157: MOVWF 4A1158: MOVF 7A,W1159: MOVWF 51115A: MOVF 79,W115B: MOVWF 50115C: MOVF 78,W115D: MOVWF 4F115E: MOVF 77,W115F: MOVWF 4E1160: BCF 0A.41161: BCF 03.51162: CALL 20E1163: BSF 0A.41164: MOVF 77,W1165: MOVWF 671166: MOVF 78,W1167: MOVWF 681168: MOVF 79,W1169: MOVWF 69116A: MOVF 7A,W116B: MOVWF 6A116C: MOVWF 6E116D: MOVF 79,W116E: MOVWF 6D116F: MOVF 78,W1170: MOVWF 6C1171: MOVF 77,W1172: MOVWF 6B1173: BCF 0A.41174: CALL 2851175: BSF 0A.41176: MOVF 77,W1177: MOVWF 671178: MOVF 78,W1179: MOVWF 68117A: MOVF 79,W117B: MOVWF 69117C: MOVF 7A,W117D: MOVWF 6A117E: MOVWF 6E117F: MOVF 79,W1180: MOVWF 6D1181: MOVF 78,W1182: MOVWF 6C1183: MOVF 77,W1184: MOVWF 6B1185: BCF 0A.41186: CALL 6441187: BSF 0A.41188: MOVF 64,W1189: BSF 03.5118A: MOVWF 4D118B: BCF 03.5118C: MOVF 63,W118D: BSF 03.5118E: MOVWF 4C118F: BCF 03.51190: MOVF 62,W1191: BSF 03.51192: MOVWF 4B1193: BCF 03.51194: MOVF 61,W1195: BSF 03.51196: MOVWF 4A1197: MOVF 7A,W1198: MOVWF 511199: MOVF 79,W119A: MOVWF 50119B: MOVF 78,W119C: MOVWF 4F119D: MOVF 77,W119E: MOVWF 4E119F: BCF 0A.411A0: BCF 03.511A1: CALL 20E11A2: BSF 0A.411A3: MOVF 7A,W11A4: MOVWF 5C11A5: MOVF 79,W11A6: MOVWF 5B11A7: MOVF 78,W11A8: MOVWF 5A11A9: MOVF 77,W11AA: MOVWF 59.................... return d;11AB: MOVF 59,W11AC: MOVWF 7711AD: MOVF 5A,W11AE: MOVWF 7811AF: MOVF 5B,W11B0: MOVWF 7911B1: MOVF 5C,W11B2: MOVWF 7A........................................ }........................................ float lstm (int gmt) //vstupem je GMT dane lokality.................... {.................... float a;.................... a=((rad(15))*gmt);*11BD: CLRF 6E11BE: CLRF 6D11BF: MOVLW 7011C0: MOVWF 6C11C1: MOVLW 8211C2: MOVWF 6B11C3: BCF 0A.411C4: CALL 28511C5: BSF 0A.411C6: MOVF 77,W11C7: MOVWF 5E11C8: MOVF 78,W11C9: MOVWF 5F11CA: MOVF 79,W11CB: MOVWF 6011CC: MOVF 7A,W11CD: MOVWF 6111CE: BSF 03.511CF: CLRF 4B11D0: BCF 03.511D1: MOVF 59,W11D2: BSF 03.511D3: MOVWF 4A11D4: BCF 0A.411D5: BCF 03.511D6: CALL 03011D7: BSF 0A.411D8: MOVF 61,W11D9: BSF 03.511DA: MOVWF 4D11DB: BCF 03.511DC: MOVF 60,W11DD: BSF 03.511DE: MOVWF 4C11DF: BCF 03.511E0: MOVF 5F,W11E1: BSF 03.511E2: MOVWF 4B11E3: BCF 03.511E4: MOVF 5E,W11E5: BSF 03.511E6: MOVWF 4A11E7: MOVF 7A,W11E8: MOVWF 5111E9: MOVF 79,W11EA: MOVWF 5011EB: MOVF 78,W11EC: MOVWF 4F11ED: MOVF 77,W11EE: MOVWF 4E11EF: BCF 0A.411F0: BCF 03.511F1: CALL 20E11F2: BSF 0A.411F3: MOVF 7A,W11F4: MOVWF 5D11F5: MOVF 79,W11F6: MOVWF 5C11F7: MOVF 78,W11F8: MOVWF 5B11F9: MOVF 77,W11FA: MOVWF 5A.................... return a;11FB: MOVF 5A,W11FC: MOVWF 7711FD: MOVF 5B,W11FE: MOVWF 7811FF: MOVF 5C,W1200: MOVWF 791201: MOVF 5D,W1202: MOVWF 7A.................... }............................................................ float eot (float d) //vstupem je den v roce.................... {.................... float a;.................... a=rad(0.98630137*(d-81));*1213: BSF 03.11214: MOVF 5C,W1215: BSF 03.51216: MOVWF 4D1217: BCF 03.51218: MOVF 5B,W1219: BSF 03.5121A: MOVWF 4C121B: BCF 03.5121C: MOVF 5A,W121D: BSF 03.5121E: MOVWF 4B121F: BCF 03.51220: MOVF 59,W1221: BSF 03.51222: MOVWF 4A1223: CLRF 511224: CLRF 501225: MOVLW 221226: MOVWF 4F1227: MOVLW 851228: MOVWF 4E1229: BCF 0A.4122A: BCF 03.5122B: CALL 2C7122C: BSF 0A.4122D: MOVLW 3F122E: BSF 03.5122F: MOVWF 4D1230: MOVLW 7E1231: MOVWF 4C1232: MOVLW 7C1233: MOVWF 4B1234: MOVLW 7E1235: MOVWF 4A1236: MOVF 7A,W1237: MOVWF 511238: MOVF 79,W1239: MOVWF 50123A: MOVF 78,W123B: MOVWF 4F123C: MOVF 77,W123D: MOVWF 4E123E: BCF 0A.4123F: BCF 03.51240: CALL 20E1241: BSF 0A.41242: MOVF 77,W1243: MOVWF 611244: MOVF 78,W1245: MOVWF 621246: MOVF 79,W1247: MOVWF 631248: MOVF 7A,W1249: MOVWF 64124A: MOVWF 6E124B: MOVF 79,W124C: MOVWF 6D124D: MOVF 78,W124E: MOVWF 6C124F: MOVF 77,W1250: MOVWF 6B1251: BCF 0A.41252: CALL 2851253: BSF 0A.41254: MOVF 7A,W1255: MOVWF 601256: MOVF 79,W1257: MOVWF 5F1258: MOVF 78,W1259: MOVWF 5E125A: MOVF 77,W125B: MOVWF 5D.................... a=9.87*sin(2*a)-7.53*cos(a)-1.5*sin(a);125C: BSF 03.5125D: CLRF 4D125E: CLRF 4C125F: CLRF 4B1260: MOVLW 801261: MOVWF 4A1262: BCF 03.51263: MOVF 60,W1264: BSF 03.51265: MOVWF 511266: BCF 03.51267: MOVF 5F,W1268: BSF 03.51269: MOVWF 50126A: BCF 03.5126B: MOVF 5E,W126C: BSF 03.5126D: MOVWF 4F126E: BCF 03.5126F: MOVF 5D,W1270: BSF 03.51271: MOVWF 4E1272: BCF 0A.41273: BCF 03.51274: CALL 20E1275: BSF 0A.41276: MOVF 77,W1277: MOVWF 611278: MOVF 78,W1279: MOVWF 62127A: MOVF 79,W127B: MOVWF 63127C: MOVF 7A,W127D: MOVWF 64127E: MOVWF 6E127F: MOVF 79,W1280: MOVWF 6D1281: MOVF 78,W1282: MOVWF 6C1283: MOVF 77,W1284: MOVWF 6B1285: BCF 0A.41286: CALL 6441287: BSF 0A.41288: MOVLW 851289: BSF 03.5128A: MOVWF 4D128B: MOVLW EB128C: MOVWF 4C128D: MOVLW 1D128E: MOVWF 4B128F: MOVLW 821290: MOVWF 4A1291: MOVF 7A,W1292: MOVWF 511293: MOVF 79,W1294: MOVWF 501295: MOVF 78,W1296: MOVWF 4F1297: MOVF 77,W1298: MOVWF 4E1299: BCF 0A.4129A: BCF 03.5129B: CALL 20E129C: BSF 0A.4129D: MOVF 77,W129E: MOVWF 61129F: MOVF 78,W12A0: MOVWF 6212A1: MOVF 79,W12A2: MOVWF 6312A3: MOVF 7A,W12A4: MOVWF 6412A5: MOVF 60,W12A6: MOVWF 7612A7: MOVF 5F,W12A8: MOVWF 7512A9: MOVF 5E,W12AA: MOVWF 7412AB: MOVF 5D,W12AC: MOVWF 7312AD: BCF 0A.412AE: CALL 46F12AF: BSF 0A.412B0: MOVLW C312B1: BSF 03.512B2: MOVWF 4D12B3: MOVLW F512B4: MOVWF 4C12B5: MOVLW 7012B6: MOVWF 4B12B7: MOVLW 8112B8: MOVWF 4A12B9: MOVF 7A,W12BA: MOVWF 5112BB: MOVF 79,W12BC: MOVWF 5012BD: MOVF 78,W12BE: MOVWF 4F12BF: MOVF 77,W12C0: MOVWF 4E12C1: BCF 0A.412C2: BCF 03.512C3: CALL 20E12C4: BSF 0A.412C5: CLRF 6612C6: MOVF 04,W12C7: MOVWF 6512C8: BCF 66.012C9: BTFSC 03.712CA: BSF 66.012CB: BSF 03.112CC: MOVF 64,W12CD: BSF 03.512CE: MOVWF 4D12CF: BCF 03.512D0: MOVF 63,W12D1: BSF 03.512D2: MOVWF 4C12D3: BCF 03.512D4: MOVF 62,W12D5: BSF 03.512D6: MOVWF 4B12D7: BCF 03.512D8: MOVF 61,W12D9: BSF 03.512DA: MOVWF 4A12DB: MOVF 7A,W12DC: MOVWF 5112DD: MOVF 79,W12DE: MOVWF 5012DF: MOVF 78,W12E0: MOVWF 4F12E1: MOVF 77,W12E2: MOVWF 4E12E3: BCF 0A.412E4: BCF 03.512E5: CALL 2C712E6: BSF 0A.412E7: MOVF 65,W12E8: MOVWF 0412E9: BCF 03.712EA: BTFSC 66.012EB: BSF 03.712EC: MOVF 77,W12ED: MOVWF 6112EE: MOVF 78,W12EF: MOVWF 6212F0: MOVF 79,W12F1: MOVWF 6312F2: MOVF 7A,W12F3: MOVWF 6412F4: MOVF 60,W12F5: MOVWF 6E12F6: MOVF 5F,W12F7: MOVWF 6D12F8: MOVF 5E,W12F9: MOVWF 6C12FA: MOVF 5D,W12FB: MOVWF 6B12FC: BCF 0A.412FD: CALL 64412FE: BSF 0A.412FF: BSF 03.51300: CLRF 4D1301: CLRF 4C1302: MOVLW 401303: MOVWF 4B1304: MOVLW 7F1305: MOVWF 4A1306: MOVF 7A,W1307: MOVWF 511308: MOVF 79,W1309: MOVWF 50130A: MOVF 78,W130B: MOVWF 4F130C: MOVF 77,W130D: MOVWF 4E130E: BCF 0A.4130F: BCF 03.51310: CALL 20E1311: BSF 0A.41312: CLRF 681313: MOVF 04,W1314: MOVWF 671315: BCF 68.01316: BTFSC 03.71317: BSF 68.01318: BSF 03.11319: MOVF 64,W131A: BSF 03.5131B: MOVWF 4D131C: BCF 03.5131D: MOVF 63,W131E: BSF 03.5131F: MOVWF 4C1320: BCF 03.51321: MOVF 62,W1322: BSF 03.51323: MOVWF 4B1324: BCF 03.51325: MOVF 61,W1326: BSF 03.51327: MOVWF 4A1328: MOVF 7A,W1329: MOVWF 51132A: MOVF 79,W132B: MOVWF 50132C: MOVF 78,W132D: MOVWF 4F132E: MOVF 77,W132F: MOVWF 4E1330: BCF 0A.41331: BCF 03.51332: CALL 2C71333: BSF 0A.41334: MOVF 67,W1335: MOVWF 041336: BCF 03.71337: BTFSC 68.01338: BSF 03.71339: MOVF 7A,W133A: MOVWF 60133B: MOVF 79,W133C: MOVWF 5F133D: MOVF 78,W133E: MOVWF 5E133F: MOVF 77,W1340: MOVWF 5D.................... return a;1341: MOVF 5D,W1342: MOVWF 771343: MOVF 5E,W1344: MOVWF 781345: MOVF 5F,W1346: MOVWF 791347: MOVF 60,W1348: MOVWF 7A........................................ }............................................................ float tc (int delka, float lstm, float eot) //vstupem je zemepisná delka, LSTM, EoT.................... {.................... float a;.................... a=4*(float)(delka-lstm)+eot;*1378: BSF 03.51379: CLRF 4B137A: BCF 03.5137B: MOVF 5A,W137C: BSF 03.5137D: MOVWF 4A137E: BCF 0A.4137F: BCF 03.51380: CALL 0301381: BSF 0A.41382: BSF 03.11383: MOVF 7A,W1384: BSF 03.51385: MOVWF 4D1386: MOVF 79,W1387: MOVWF 4C1388: MOVF 78,W1389: MOVWF 4B138A: MOVF 77,W138B: MOVWF 4A138C: BCF 03.5138D: MOVF 5E,W138E: BSF 03.5138F: MOVWF 511390: BCF 03.51391: MOVF 5D,W1392: BSF 03.51393: MOVWF 501394: BCF 03.51395: MOVF 5C,W1396: BSF 03.51397: MOVWF 4F1398: BCF 03.51399: MOVF 5B,W139A: BSF 03.5139B: MOVWF 4E139C: BCF 0A.4139D: BCF 03.5139E: CALL 2C7139F: BSF 0A.413A0: BSF 03.513A1: CLRF 4D13A2: CLRF 4C13A3: CLRF 4B13A4: MOVLW 8113A5: MOVWF 4A13A6: MOVF 7A,W13A7: MOVWF 5113A8: MOVF 79,W13A9: MOVWF 5013AA: MOVF 78,W13AB: MOVWF 4F13AC: MOVF 77,W13AD: MOVWF 4E13AE: BCF 0A.413AF: BCF 03.513B0: CALL 20E13B1: BSF 0A.413B2: MOVF 77,W13B3: MOVWF 6713B4: MOVF 78,W13B5: MOVWF 6813B6: MOVF 79,W13B7: MOVWF 6913B8: MOVF 7A,W13B9: MOVWF 6A13BA: BCF 03.113BB: MOVF 7A,W13BC: BSF 03.513BD: MOVWF 4D13BE: BCF 03.513BF: MOVF 79,W13C0: BSF 03.513C1: MOVWF 4C13C2: BCF 03.513C3: MOVF 78,W13C4: BSF 03.513C5: MOVWF 4B13C6: BCF 03.513C7: MOVF 77,W13C8: BSF 03.513C9: MOVWF 4A13CA: BCF 03.513CB: MOVF 62,W13CC: BSF 03.513CD: MOVWF 5113CE: BCF 03.513CF: MOVF 61,W13D0: BSF 03.513D1: MOVWF 5013D2: BCF 03.513D3: MOVF 60,W13D4: BSF 03.513D5: MOVWF 4F13D6: BCF 03.513D7: MOVF 5F,W13D8: BSF 03.513D9: MOVWF 4E13DA: BCF 0A.413DB: BCF 03.513DC: CALL 2C713DD: BSF 0A.413DE: MOVF 7A,W13DF: MOVWF 6613E0: MOVF 79,W13E1: MOVWF 6513E2: MOVF 78,W13E3: MOVWF 6413E4: MOVF 77,W13E5: MOVWF 63.................... return a;13E6: MOVF 63,W13E7: MOVWF 7713E8: MOVF 64,W13E9: MOVWF 7813EA: MOVF 65,W13EB: MOVWF 7913EC: MOVF 66,W13ED: MOVWF 7A.................... }............................................................ float lst (float lt, float tc) //vstupem je den GMT dane lokality.................... {.................... float a;.................... a=lt+(tc/60);*1406: MOVF 60,W1407: BSF 03.51408: MOVWF 491409: BCF 03.5140A: MOVF 5F,W140B: BSF 03.5140C: MOVWF 48140D: BCF 03.5140E: MOVF 5E,W140F: BSF 03.51410: MOVWF 471411: BCF 03.51412: MOVF 5D,W1413: BSF 03.51414: MOVWF 461415: CLRF 4D1416: CLRF 4C1417: MOVLW 701418: MOVWF 4B1419: MOVLW 84141A: MOVWF 4A141B: BCF 0A.4141C: BCF 03.5141D: CALL 142141E: BSF 0A.4141F: BCF 03.11420: MOVF 5C,W1421: BSF 03.51422: MOVWF 4D1423: BCF 03.51424: MOVF 5B,W1425: BSF 03.51426: MOVWF 4C1427: BCF 03.51428: MOVF 5A,W1429: BSF 03.5142A: MOVWF 4B142B: BCF 03.5142C: MOVF 59,W142D: BSF 03.5142E: MOVWF 4A142F: MOVF 7A,W1430: MOVWF 511431: MOVF 79,W1432: MOVWF 501433: MOVF 78,W1434: MOVWF 4F1435: MOVF 77,W1436: MOVWF 4E1437: BCF 0A.41438: BCF 03.51439: CALL 2C7143A: BSF 0A.4143B: MOVF 7A,W143C: MOVWF 64143D: MOVF 79,W143E: MOVWF 63143F: MOVF 78,W1440: MOVWF 621441: MOVF 77,W1442: MOVWF 61.................... return a;1443: MOVF 61,W1444: MOVWF 771445: MOVF 62,W1446: MOVWF 781447: MOVF 63,W1448: MOVWF 791449: MOVF 64,W144A: MOVWF 7A.................... }........................................ float hra (float lst) //vstupem je den v roce.................... {.................... lst=(rad(15))*(lst-12);*145B: CLRF 6E145C: CLRF 6D145D: MOVLW 70145E: MOVWF 6C145F: MOVLW 821460: MOVWF 6B1461: BCF 0A.41462: CALL 2851463: BSF 0A.41464: MOVF 77,W1465: MOVWF 5D1466: MOVF 78,W1467: MOVWF 5E1468: MOVF 79,W1469: MOVWF 5F146A: MOVF 7A,W146B: MOVWF 60146C: CLRF 62146D: MOVF 04,W146E: MOVWF 61146F: BCF 62.01470: BTFSC 03.71471: BSF 62.01472: BSF 03.11473: MOVF 5C,W1474: BSF 03.51475: MOVWF 4D1476: BCF 03.51477: MOVF 5B,W1478: BSF 03.51479: MOVWF 4C147A: BCF 03.5147B: MOVF 5A,W147C: BSF 03.5147D: MOVWF 4B147E: BCF 03.5147F: MOVF 59,W1480: BSF 03.51481: MOVWF 4A1482: CLRF 511483: CLRF 501484: MOVLW 401485: MOVWF 4F1486: MOVLW 821487: MOVWF 4E1488: BCF 0A.41489: BCF 03.5148A: CALL 2C7148B: BSF 0A.4148C: MOVF 61,W148D: MOVWF 04148E: BCF 03.7148F: BTFSC 62.01490: BSF 03.71491: MOVF 60,W1492: BSF 03.51493: MOVWF 4D1494: BCF 03.51495: MOVF 5F,W1496: BSF 03.51497: MOVWF 4C1498: BCF 03.51499: MOVF 5E,W149A: BSF 03.5149B: MOVWF 4B149C: BCF 03.5149D: MOVF 5D,W149E: BSF 03.5149F: MOVWF 4A14A0: MOVF 7A,W14A1: MOVWF 5114A2: MOVF 79,W14A3: MOVWF 5014A4: MOVF 78,W14A5: MOVWF 4F14A6: MOVF 77,W14A7: MOVWF 4E14A8: BCF 0A.414A9: BCF 03.514AA: CALL 20E14AB: BSF 0A.414AC: MOVF 7A,W14AD: MOVWF 5C14AE: MOVF 79,W14AF: MOVWF 5B14B0: MOVF 78,W14B1: MOVWF 5A14B2: MOVF 77,W14B3: MOVWF 59.................... return lst;14B4: MOVF 59,W14B5: MOVWF 7714B6: MOVF 5A,W14B7: MOVWF 7814B8: MOVF 5B,W14B9: MOVWF 7914BA: MOVF 5C,W14BB: MOVWF 7A........................................ }........................................ void poziceSL(int m, int d, int h, int min, int gmt, float sirka, float delka) //vstupem je mesic, den, hodina, minuty, GMT, zemepisna sirka ve stupnich.................... {*1000: MOVF 27,W1001: MOVWF 591002: MOVLW 3C1003: MOVWF 5A1004: BCF 0A.41005: CALL 01B1006: BSF 0A.41007: MOVF 78,W1008: ADDWF 26,W1009: BSF 03.5100A: CLRF 4B100B: MOVWF 4A100C: BCF 0A.4100D: BCF 03.5100E: CALL 030100F: BSF 0A.41010: MOVF 7A,W1011: MOVWF 581012: MOVF 79,W1013: MOVWF 571014: MOVF 78,W1015: MOVWF 561016: MOVF 77,W1017: MOVWF 55.................... float den1;.................... float ele,azi,deklin, lstm1, eot1, tc1, lst1, hra1;.................... float lt = h+(min/60);........................................ den1=(float) den(m,d);1018: MOVF 24,W1019: MOVWF 59101A: CLRF 5B101B: MOVF 25,W101C: MOVWF 5A*10F0: MOVF 79,W10F1: BSF 03.510F2: MOVWF 4B10F3: MOVF 78,W10F4: MOVWF 4A10F5: BCF 0A.410F6: BCF 03.510F7: CALL 03010F8: BSF 0A.410F9: MOVF 7A,W10FA: MOVWF 3410FB: MOVF 79,W10FC: MOVWF 3310FD: MOVF 78,W10FE: MOVWF 3210FF: MOVF 77,W1100: MOVWF 31.................... deklin=deklinace(den1);1101: MOVF 34,W1102: MOVWF 5C1103: MOVF 33,W1104: MOVWF 5B1105: MOVF 32,W1106: MOVWF 5A1107: MOVF 31,W1108: MOVWF 59*11B3: MOVF 7A,W11B4: MOVWF 4011B5: MOVF 79,W11B6: MOVWF 3F11B7: MOVF 78,W11B8: MOVWF 3E11B9: MOVF 77,W11BA: MOVWF 3D.................... lstm1=lstm(gmt);11BB: MOVF 28,W11BC: MOVWF 59*1203: MOVF 7A,W1204: MOVWF 441205: MOVF 79,W1206: MOVWF 431207: MOVF 78,W1208: MOVWF 421209: MOVF 77,W120A: MOVWF 41.................... eot1=eot(den1);120B: MOVF 34,W120C: MOVWF 5C120D: MOVF 33,W120E: MOVWF 5B120F: MOVF 32,W1210: MOVWF 5A1211: MOVF 31,W1212: MOVWF 59*1349: MOVF 7A,W134A: MOVWF 48134B: MOVF 79,W134C: MOVWF 47134D: MOVF 78,W134E: MOVWF 46134F: MOVF 77,W1350: MOVWF 45.................... tc1=tc(delka, lstm1, eot1);1351: MOVF 30,W1352: BSF 03.51353: MOVWF 491354: BCF 03.51355: MOVF 2F,W1356: BSF 03.51357: MOVWF 481358: BCF 03.51359: MOVF 2E,W135A: BSF 03.5135B: MOVWF 47135C: BCF 03.5135D: MOVF 2D,W135E: BSF 03.5135F: MOVWF 461360: BCF 0A.41361: BCF 03.51362: CALL 44E1363: BSF 0A.41364: MOVF 78,W1365: MOVWF 591366: MOVF 59,W1367: MOVWF 5A1368: MOVF 44,W1369: MOVWF 5E136A: MOVF 43,W136B: MOVWF 5D136C: MOVF 42,W136D: MOVWF 5C136E: MOVF 41,W136F: MOVWF 5B1370: MOVF 48,W1371: MOVWF 621372: MOVF 47,W1373: MOVWF 611374: MOVF 46,W1375: MOVWF 601376: MOVF 45,W1377: MOVWF 5F*13EE: MOVF 7A,W13EF: MOVWF 4C13F0: MOVF 79,W13F1: MOVWF 4B13F2: MOVF 78,W13F3: MOVWF 4A13F4: MOVF 77,W13F5: MOVWF 49.................... lst1=lst(lt,tc1);13F6: MOVF 58,W13F7: MOVWF 5C13F8: MOVF 57,W13F9: MOVWF 5B13FA: MOVF 56,W13FB: MOVWF 5A13FC: MOVF 55,W13FD: MOVWF 5913FE: MOVF 4C,W13FF: MOVWF 601400: MOVF 4B,W1401: MOVWF 5F1402: MOVF 4A,W1403: MOVWF 5E1404: MOVF 49,W1405: MOVWF 5D*144B: MOVF 7A,W144C: MOVWF 50144D: MOVF 79,W144E: MOVWF 4F144F: MOVF 78,W1450: MOVWF 4E1451: MOVF 77,W1452: MOVWF 4D.................... hra1=hra(lst1);1453: MOVF 50,W1454: MOVWF 5C1455: MOVF 4F,W1456: MOVWF 5B1457: MOVF 4E,W1458: MOVWF 5A1459: MOVF 4D,W145A: MOVWF 59*14BC: MOVF 7A,W14BD: MOVWF 5414BE: MOVF 79,W14BF: MOVWF 5314C0: MOVF 78,W14C1: MOVWF 5214C2: MOVF 77,W14C3: MOVWF 51........................................ sirka=rad(sirka);14C4: MOVF 2C,W14C5: MOVWF 6E14C6: MOVF 2B,W14C7: MOVWF 6D14C8: MOVF 2A,W14C9: MOVWF 6C14CA: MOVF 29,W14CB: MOVWF 6B14CC: BCF 0A.414CD: CALL 28514CE: BSF 0A.414CF: MOVF 7A,W14D0: MOVWF 2C14D1: MOVF 79,W14D2: MOVWF 2B14D3: MOVF 78,W14D4: MOVWF 2A14D5: MOVF 77,W14D6: MOVWF 29.................... ele=asin((sin(deklin)*sin(sirka))+(cos(deklin)*cos(sirka)*cos(hra1)));14D7: MOVF 40,W14D8: MOVWF 6E14D9: MOVF 3F,W14DA: MOVWF 6D14DB: MOVF 3E,W14DC: MOVWF 6C14DD: MOVF 3D,W14DE: MOVWF 6B14DF: BCF 0A.414E0: CALL 64414E1: BSF 0A.414E2: MOVF 77,W14E3: MOVWF 5914E4: MOVF 78,W14E5: MOVWF 5A14E6: MOVF 79,W14E7: MOVWF 5B14E8: MOVF 7A,W14E9: MOVWF 5C14EA: MOVF 2C,W14EB: MOVWF 6E14EC: MOVF 2B,W14ED: MOVWF 6D14EE: MOVF 2A,W14EF: MOVWF 6C14F0: MOVF 29,W14F1: MOVWF 6B14F2: BCF 0A.414F3: CALL 64414F4: BSF 0A.414F5: MOVF 5C,W14F6: BSF 03.514F7: MOVWF 4D14F8: BCF 03.514F9: MOVF 5B,W14FA: BSF 03.514FB: MOVWF 4C14FC: BCF 03.514FD: MOVF 5A,W14FE: BSF 03.514FF: MOVWF 4B1500: BCF 03.51501: MOVF 59,W1502: BSF 03.51503: MOVWF 4A1504: MOVF 7A,W1505: MOVWF 511506: MOVF 79,W1507: MOVWF 501508: MOVF 78,W1509: MOVWF 4F150A: MOVF 77,W150B: MOVWF 4E150C: BCF 0A.4150D: BCF 03.5150E: CALL 20E150F: BSF 0A.41510: MOVF 77,W1511: MOVWF 591512: MOVF 78,W1513: MOVWF 5A1514: MOVF 79,W1515: MOVWF 5B1516: MOVF 7A,W1517: MOVWF 5C1518: MOVF 40,W1519: MOVWF 76151A: MOVF 3F,W151B: MOVWF 75151C: MOVF 3E,W151D: MOVWF 74151E: MOVF 3D,W151F: MOVWF 731520: BCF 0A.41521: CALL 46F1522: BSF 0A.41523: MOVF 77,W1524: MOVWF 5D1525: MOVF 78,W1526: MOVWF 5E1527: MOVF 79,W1528: MOVWF 5F1529: MOVF 7A,W152A: MOVWF 60152B: MOVF 2C,W152C: MOVWF 76152D: MOVF 2B,W152E: MOVWF 75152F: MOVF 2A,W1530: MOVWF 741531: MOVF 29,W1532: MOVWF 731533: BCF 0A.41534: CALL 46F1535: BSF 0A.41536: MOVF 60,W1537: BSF 03.51538: MOVWF 4D1539: BCF 03.5153A: MOVF 5F,W153B: BSF 03.5153C: MOVWF 4C153D: BCF 03.5153E: MOVF 5E,W153F: BSF 03.51540: MOVWF 4B1541: BCF 03.51542: MOVF 5D,W1543: BSF 03.51544: MOVWF 4A1545: MOVF 7A,W1546: MOVWF 511547: MOVF 79,W1548: MOVWF 501549: MOVF 78,W154A: MOVWF 4F154B: MOVF 77,W154C: MOVWF 4E154D: BCF 0A.4154E: BCF 03.5154F: CALL 20E1550: BSF 0A.41551: MOVF 77,W1552: MOVWF 5D1553: MOVF 78,W1554: MOVWF 5E1555: MOVF 79,W1556: MOVWF 5F1557: MOVF 7A,W1558: MOVWF 601559: MOVF 54,W155A: MOVWF 76155B: MOVF 53,W155C: MOVWF 75155D: MOVF 52,W155E: MOVWF 74155F: MOVF 51,W1560: MOVWF 731561: BCF 0A.41562: CALL 46F1563: BSF 0A.41564: MOVF 60,W1565: BSF 03.51566: MOVWF 4D1567: BCF 03.51568: MOVF 5F,W1569: BSF 03.5156A: MOVWF 4C156B: BCF 03.5156C: MOVF 5E,W156D: BSF 03.5156E: MOVWF 4B156F: BCF 03.51570: MOVF 5D,W1571: BSF 03.51572: MOVWF 4A1573: MOVF 7A,W1574: MOVWF 511575: MOVF 79,W1576: MOVWF 501577: MOVF 78,W1578: MOVWF 4F1579: MOVF 77,W157A: MOVWF 4E157B: BCF 0A.4157C: BCF 03.5157D: CALL 20E157E: BSF 0A.4157F: CLRF 5E1580: MOVF 04,W1581: MOVWF 5D1582: BCF 5E.01583: BTFSC 03.71584: BSF 5E.01585: BCF 03.11586: MOVF 5C,W1587: BSF 03.51588: MOVWF 4D1589: BCF 03.5158A: MOVF 5B,W158B: BSF 03.5158C: MOVWF 4C158D: BCF 03.5158E: MOVF 5A,W158F: BSF 03.51590: MOVWF 4B1591: BCF 03.51592: MOVF 59,W1593: BSF 03.51594: MOVWF 4A1595: MOVF 7A,W1596: MOVWF 511597: MOVF 79,W1598: MOVWF 501599: MOVF 78,W159A: MOVWF 4F159B: MOVF 77,W159C: MOVWF 4E159D: BCF 0A.4159E: BCF 03.5159F: CALL 2C715A0: BSF 0A.415A1: MOVF 5D,W15A2: MOVWF 0415A3: BCF 03.715A4: BTFSC 5E.015A5: BSF 03.715A6: MOVF 77,W15A7: MOVWF 5915A8: MOVF 78,W15A9: MOVWF 5A15AA: MOVF 79,W15AB: MOVWF 5B15AC: MOVF 7A,W15AD: MOVWF 5C15AE: MOVF 5C,W15AF: MOVWF 6215B0: MOVF 5B,W15B1: MOVWF 6115B2: MOVF 5A,W15B3: MOVWF 6015B4: MOVF 59,W15B5: MOVWF 5F*15D4: MOVF 7A,W15D5: MOVWF 3815D6: MOVF 79,W15D7: MOVWF 3715D8: MOVF 78,W15D9: MOVWF 3615DA: MOVF 77,W15DB: MOVWF 35.................... azi = acos(((sin(deklin)*cos(sirka))-(cos(deklin)*sin(sirka)*cos(hra1)))/(cos(ele)));15DC: MOVF 40,W15DD: MOVWF 6E15DE: MOVF 3F,W15DF: MOVWF 6D15E0: MOVF 3E,W15E1: MOVWF 6C15E2: MOVF 3D,W15E3: MOVWF 6B15E4: BCF 0A.415E5: CALL 64415E6: BSF 0A.415E7: MOVF 77,W15E8: MOVWF 5915E9: MOVF 78,W15EA: MOVWF 5A15EB: MOVF 79,W15EC: MOVWF 5B15ED: MOVF 7A,W15EE: MOVWF 5C15EF: MOVF 2C,W15F0: MOVWF 7615F1: MOVF 2B,W15F2: MOVWF 7515F3: MOVF 2A,W15F4: MOVWF 7415F5: MOVF 29,W15F6: MOVWF 7315F7: BCF 0A.415F8: CALL 46F15F9: BSF 0A.415FA: MOVF 5C,W15FB: BSF 03.515FC: MOVWF 4D15FD: BCF 03.515FE: MOVF 5B,W15FF: BSF 03.51600: MOVWF 4C1601: BCF 03.51602: MOVF 5A,W1603: BSF 03.51604: MOVWF 4B1605: BCF 03.51606: MOVF 59,W1607: BSF 03.51608: MOVWF 4A1609: MOVF 7A,W160A: MOVWF 51160B: MOVF 79,W160C: MOVWF 50160D: MOVF 78,W160E: MOVWF 4F160F: MOVF 77,W1610: MOVWF 4E1611: BCF 0A.41612: BCF 03.51613: CALL 20E1614: BSF 0A.41615: MOVF 77,W1616: MOVWF 591617: MOVF 78,W1618: MOVWF 5A1619: MOVF 79,W161A: MOVWF 5B161B: MOVF 7A,W161C: MOVWF 5C161D: MOVF 40,W161E: MOVWF 76161F: MOVF 3F,W1620: MOVWF 751621: MOVF 3E,W1622: MOVWF 741623: MOVF 3D,W1624: MOVWF 731625: BCF 0A.41626: CALL 46F1627: BSF 0A.41628: MOVF 77,W1629: MOVWF 5D162A: MOVF 78,W162B: MOVWF 5E162C: MOVF 79,W162D: MOVWF 5F162E: MOVF 7A,W162F: MOVWF 601630: MOVF 2C,W1631: MOVWF 6E1632: MOVF 2B,W1633: MOVWF 6D1634: MOVF 2A,W1635: MOVWF 6C1636: MOVF 29,W1637: MOVWF 6B1638: BCF 0A.41639: CALL 644163A: BSF 0A.4163B: MOVF 60,W163C: BSF 03.5163D: MOVWF 4D163E: BCF 03.5163F: MOVF 5F,W1640: BSF 03.51641: MOVWF 4C1642: BCF 03.51643: MOVF 5E,W1644: BSF 03.51645: MOVWF 4B1646: BCF 03.51647: MOVF 5D,W1648: BSF 03.51649: MOVWF 4A164A: MOVF 7A,W164B: MOVWF 51164C: MOVF 79,W164D: MOVWF 50164E: MOVF 78,W164F: MOVWF 4F1650: MOVF 77,W1651: MOVWF 4E1652: BCF 0A.41653: BCF 03.51654: CALL 20E1655: BSF 0A.41656: MOVF 77,W1657: MOVWF 5D1658: MOVF 78,W1659: MOVWF 5E165A: MOVF 79,W165B: MOVWF 5F165C: MOVF 7A,W165D: MOVWF 60165E: MOVF 54,W165F: MOVWF 761660: MOVF 53,W1661: MOVWF 751662: MOVF 52,W1663: MOVWF 741664: MOVF 51,W1665: MOVWF 731666: BCF 0A.41667: CALL 46F1668: BSF 0A.41669: MOVF 60,W166A: BSF 03.5166B: MOVWF 4D166C: BCF 03.5166D: MOVF 5F,W166E: BSF 03.5166F: MOVWF 4C1670: BCF 03.51671: MOVF 5E,W1672: BSF 03.51673: MOVWF 4B1674: BCF 03.51675: MOVF 5D,W1676: BSF 03.51677: MOVWF 4A1678: MOVF 7A,W1679: MOVWF 51167A: MOVF 79,W167B: MOVWF 50167C: MOVF 78,W167D: MOVWF 4F167E: MOVF 77,W167F: MOVWF 4E1680: BCF 0A.41681: BCF 03.51682: CALL 20E1683: BSF 0A.41684: CLRF 5E1685: MOVF 04,W1686: MOVWF 5D1687: BCF 5E.01688: BTFSC 03.71689: BSF 5E.0168A: BSF 03.1168B: MOVF 5C,W168C: BSF 03.5168D: MOVWF 4D168E: BCF 03.5168F: MOVF 5B,W1690: BSF 03.51691: MOVWF 4C1692: BCF 03.51693: MOVF 5A,W1694: BSF 03.51695: MOVWF 4B1696: BCF 03.51697: MOVF 59,W1698: BSF 03.51699: MOVWF 4A169A: MOVF 7A,W169B: MOVWF 51169C: MOVF 79,W169D: MOVWF 50169E: MOVF 78,W169F: MOVWF 4F16A0: MOVF 77,W16A1: MOVWF 4E16A2: BCF 0A.416A3: BCF 03.516A4: CALL 2C716A5: BSF 0A.416A6: MOVF 5D,W16A7: MOVWF 0416A8: BCF 03.716A9: BTFSC 5E.016AA: BSF 03.716AB: MOVF 77,W16AC: MOVWF 5916AD: MOVF 78,W16AE: MOVWF 5A16AF: MOVF 79,W16B0: MOVWF 5B16B1: MOVF 7A,W16B2: MOVWF 5C16B3: MOVF 38,W16B4: MOVWF 7616B5: MOVF 37,W16B6: MOVWF 7516B7: MOVF 36,W16B8: MOVWF 7416B9: MOVF 35,W16BA: MOVWF 7316BB: BCF 0A.416BC: CALL 46F16BD: BSF 0A.416BE: MOVF 5C,W16BF: BSF 03.516C0: MOVWF 4916C1: BCF 03.516C2: MOVF 5B,W16C3: BSF 03.516C4: MOVWF 4816C5: BCF 03.516C6: MOVF 5A,W16C7: BSF 03.516C8: MOVWF 4716C9: BCF 03.516CA: MOVF 59,W16CB: BSF 03.516CC: MOVWF 4616CD: MOVF 7A,W16CE: MOVWF 4D16CF: MOVF 79,W16D0: MOVWF 4C16D1: MOVF 78,W16D2: MOVWF 4B16D3: MOVF 77,W16D4: MOVWF 4A16D5: BCF 0A.416D6: BCF 03.516D7: CALL 14216D8: BSF 0A.416D9: MOVF 77,W16DA: MOVWF 5916DB: MOVF 78,W16DC: MOVWF 5A16DD: MOVF 79,W16DE: MOVWF 5B16DF: MOVF 7A,W16E0: MOVWF 5C16E1: MOVF 5C,W16E2: MOVWF 6216E3: MOVF 5B,W16E4: MOVWF 6116E5: MOVF 5A,W16E6: MOVWF 6016E7: MOVF 59,W16E8: MOVWF 5F*1708: MOVF 7A,W1709: MOVWF 3C170A: MOVF 79,W170B: MOVWF 3B170C: MOVF 78,W170D: MOVWF 3A170E: MOVF 77,W170F: MOVWF 39........................................ //printf("Azimut: %6.3f\r\n", azi);.................... //printf("Elevce: %6.3f\r\n", ele);.................... ELEVACE=stupne(ele);1710: MOVF 38,W1711: MOVWF 5C1712: MOVF 37,W1713: MOVWF 5B1714: MOVF 36,W1715: MOVWF 5A1716: MOVF 35,W1717: MOVWF 591718: BCF 0A.41719: CALL 66F171A: BSF 0A.4171B: MOVF 78,W171C: MOVWF 23.................... AZIMUT= stupne(azi);171D: MOVF 3C,W171E: MOVWF 5C171F: MOVF 3B,W1720: MOVWF 5B1721: MOVF 3A,W1722: MOVWF 5A1723: MOVF 39,W1724: MOVWF 591725: BCF 0A.41726: CALL 66F1727: BSF 0A.41728: CLRF 7A1729: MOVF 78,W172A: MOVWF 21172B: MOVF 7A,W172C: MOVWF 22.................... if(hra1>0)172D: BSF 03.5172E: CLRF 49172F: CLRF 481730: CLRF 471731: CLRF 461732: BCF 03.51733: MOVF 54,W1734: BSF 03.51735: MOVWF 4D1736: BCF 03.51737: MOVF 53,W1738: BSF 03.51739: MOVWF 4C173A: BCF 03.5173B: MOVF 52,W173C: BSF 03.5173D: MOVWF 4B173E: BCF 03.5173F: MOVF 51,W1740: BSF 03.51741: MOVWF 4A1742: BCF 0A.41743: BCF 03.51744: CALL 40D1745: BSF 0A.41746: BTFSS 03.01747: GOTO 753.................... {.................... AZIMUT= 360-AZIMUT;1748: MOVF 21,W1749: SUBLW 68174A: MOVWF 21174B: MOVF 22,W174C: BTFSS 03.0174D: INCFSZ 22,W174E: GOTO 751174F: MOVLW 011750: GOTO 7521751: SUBLW 011752: MOVWF 22.................... }.................... }1753: BCF 0A.31754: BCF 0A.41755: GOTO 7B0 (RETURN)........................................ void main().................... {*0733: CLRF 040734: BCF 03.70735: MOVLW 1F0736: ANDWF 03,F0737: MOVLW 710738: BSF 03.50739: MOVWF 0F073A: MOVF 0F,W073B: BCF 03.5073C: BCF 20.7073D: MOVF 20,W073E: BSF 03.5073F: MOVWF 070740: BCF 03.50741: BSF 07.70742: BSF 03.50743: BSF 03.60744: MOVF 09,W0745: ANDLW C00746: MOVWF 090747: BCF 03.60748: BCF 1F.40749: BCF 1F.5074A: MOVLW 00074B: BSF 03.6074C: MOVWF 08074D: BCF 03.5074E: CLRF 07074F: CLRF 080750: CLRF 09........................................ setup_adc_ports(NO_ANALOGS|VSS_VDD);*0754: BSF 03.50755: BSF 03.60756: MOVF 09,W0757: ANDLW C00758: MOVWF 090759: BCF 03.6075A: BCF 1F.4075B: BCF 1F.5075C: MOVLW 00075D: BSF 03.6075E: MOVWF 08.................... setup_adc(ADC_CLOCK_DIV_2);075F: BCF 03.50760: BCF 03.60761: BCF 1F.60762: BCF 1F.70763: BSF 03.50764: BCF 1F.70765: BCF 03.50766: BSF 1F.0.................... setup_spi(SPI_SS_DISABLED);0767: BCF 14.50768: BCF 20.50769: MOVF 20,W076A: BSF 03.5076B: MOVWF 07076C: BCF 03.5076D: BSF 20.4076E: MOVF 20,W076F: BSF 03.50770: MOVWF 070771: BCF 03.50772: BCF 20.30773: MOVF 20,W0774: BSF 03.50775: MOVWF 070776: MOVLW 010777: BCF 03.50778: MOVWF 140779: MOVLW 00077A: BSF 03.5077B: MOVWF 14.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);077C: MOVF 01,W077D: ANDLW C7077E: IORLW 08077F: MOVWF 01.................... setup_timer_1(T1_DISABLED);0780: BCF 03.50781: CLRF 10.................... setup_timer_2(T2_DISABLED,0,1);0782: MOVLW 000783: MOVWF 780784: MOVWF 120785: MOVLW 000786: BSF 03.50787: MOVWF 12.................... setup_ccp1(CCP_OFF);0788: BCF 03.50789: BSF 20.2078A: MOVF 20,W078B: BSF 03.5078C: MOVWF 07078D: BCF 03.5078E: CLRF 17078F: BSF 03.50790: CLRF 1B0791: CLRF 1C0792: MOVLW 010793: MOVWF 1D.................... setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard0794: BCF 03.50795: BSF 03.60796: CLRF 070797: CLRF 080798: CLRF 09........................................ //TODO: User Code........................................ while(TRUE).................... {.................... //do promenne AZIMUT vlosti azimut a do ELEVACE elevaci slunce.................... poziceSL(11, 18, 14, 0, 0, 49, 14); //int mesic, den, hodina, minuta, odchylka èasu od GMT, sirka, delka0799: MOVLW 0B079A: BCF 03.6079B: MOVWF 24079C: MOVLW 12079D: MOVWF 25079E: MOVLW 0E079F: MOVWF 2607A0: CLRF 2707A1: CLRF 2807A2: CLRF 2C07A3: CLRF 2B07A4: MOVLW 4407A5: MOVWF 2A07A6: MOVLW 8407A7: MOVWF 2907A8: CLRF 3007A9: CLRF 2F07AA: MOVLW 6007AB: MOVWF 2E07AC: MOVLW 8207AD: MOVWF 2D07AE: BSF 0A.407AF: GOTO 00007B0: BCF 0A.4............................................................ printf("Azimut: %ld\r\n", AZIMUT);07B1: MOVLW 0D07B2: BSF 03.607B3: MOVWF 0D07B4: MOVLW 0007B5: MOVWF 0F07B6: BCF 03.007B7: MOVLW 0807B8: BCF 03.607B9: MOVWF 5C07BA: CALL 07307BB: MOVLW 1007BC: MOVWF 0407BD: MOVF 22,W07BE: MOVWF 5D07BF: MOVF 21,W07C0: MOVWF 5C07C1: CALL 0C207C2: MOVLW 0D07C3: MOVWF 6507C4: CALL 04F07C5: MOVLW 0A07C6: MOVWF 6507C7: CALL 04F.................... printf("Elevce: %d\r\n", ELEVACE);07C8: MOVLW 1407C9: BSF 03.607CA: MOVWF 0D07CB: MOVLW 0007CC: MOVWF 0F07CD: BCF 03.007CE: MOVLW 0807CF: BCF 03.607D0: MOVWF 5C07D1: CALL 07307D2: MOVF 23,W07D3: MOVWF 2407D4: MOVLW 1F07D5: MOVWF 2507D6: GOTO 6B607D7: MOVLW 0D07D8: MOVWF 6507D9: CALL 04F07DA: MOVLW 0A07DB: MOVWF 6507DC: CALL 04F.................... delay_ms(2000);07DD: MOVLW 0807DE: MOVWF 2407DF: MOVLW FA07E0: MOVWF 2507E1: GOTO 71D07E2: DECFSZ 24,F07E3: GOTO 7DF........................................ }07E4: BSF 03.607E5: GOTO 799.................................................................................................... }07E6: SLEEPConfiguration Fuses:Word 1: 2CF5 INTRC NOWDT NOPUT MCLR NOPROTECT NOCPD NOBROWNOUT IESO FCMEN NOLVP NODEBUGWord 2: 3FFF NOWRT BORV40