1 ; C Compiler for STM8 (COSMIC Software) 2 ; Parser V4.8.32 - 23 Mar 2010 3 ; Generator V4.3.4 - 23 Mar 2010 2739 ; 29 void IIC_Init(void) { 2741 switch .text 2742 0000 _IIC_Init: 2746 ; 35 I2C_CR1 = 0x00; 2748 0000 725f5210 clr _I2C_CR1 2749 ; 37 I2C_FREQR = 8; 2751 0004 35085212 mov _I2C_FREQR,#8 2752 ; 40 I2C_CCRL = 40; 2754 0008 3528521b mov _I2C_CCRL,#40 2755 ; 41 I2C_CCRH = 0; 2757 000c 725f521c clr _I2C_CCRH 2758 ; 43 I2C_TRISER = 9; 2760 0010 3509521d mov _I2C_TRISER,#9 2761 ; 45 I2C_CR1 = 0x01; 2763 0014 35015210 mov _I2C_CR1,#1 2764 ; 47 I2C_OARL = (SLAVE_ADDRESS << 1); 2766 0018 35a25213 mov _I2C_OARL,#162 2767 ; 48 I2C_OARH |= 0x40; 2769 001c 721c5214 bset _I2C_OARH,#6 2770 ; 50 I2C_CR2 |= 1 << 2; 2772 0020 72145211 bset _I2C_CR2,#2 2773 ; 52 I2C_ITR = 0x07; 2775 0024 3507521a mov _I2C_ITR,#7 2776 ; 53 } 2779 0028 81 ret 2850 ; 62 int TempCalculate(uint Rv,int B,int Revise,int BasicRx) 2850 ; 63 { 2851 switch .text 2852 0029 _TempCalculate: 2854 0029 89 pushw x 2855 002a 5208 subw sp,#8 2856 00000008 OFST: set 8 2859 ; 66 Rx = Rv * 1.0 / BasicRx; 2861 002c 1e11 ldw x,(OFST+9,sp) 2862 002e cd0000 call c_itof 2864 0031 96 ldw x,sp 2865 0032 1c0001 addw x,#OFST-7 2866 0035 cd0000 call c_rtol 2868 0038 1e09 ldw x,(OFST+1,sp) 2869 003a cd0000 call c_uitof 2871 003d ae000c ldw x,#L3771 2872 0040 cd0000 call c_fmul 2874 0043 96 ldw x,sp 2875 0044 1c0001 addw x,#OFST-7 2876 0047 cd0000 call c_fdiv 2878 004a 96 ldw x,sp 2879 004b 1c0005 addw x,#OFST-3 2880 004e cd0000 call c_rtol 2882 ; 68 Rx = log(Rx); 2884 0051 1e07 ldw x,(OFST-1,sp) 2885 0053 89 pushw x 2886 0054 1e07 ldw x,(OFST-1,sp) 2887 0056 89 pushw x 2888 0057 cd0000 call _log 2890 005a 5b04 addw sp,#4 2891 005c 96 ldw x,sp 2892 005d 1c0005 addw x,#OFST-3 2893 0060 cd0000 call c_rtol 2895 ; 70 Rx = Rx / B; 2897 0063 1e0d ldw x,(OFST+5,sp) 2898 0065 cd0000 call c_itof 2900 0068 96 ldw x,sp 2901 0069 1c0005 addw x,#OFST-3 2902 006c cd0000 call c_fgdiv 2904 ; 71 Rx = 1/(Rx+0.003354); 2906 006f 96 ldw x,sp 2907 0070 1c0005 addw x,#OFST-3 2908 0073 cd0000 call c_ltor 2910 0076 ae0008 ldw x,#L3002 2911 0079 cd0000 call c_fadd 2913 007c 96 ldw x,sp 2914 007d 1c0001 addw x,#OFST-7 2915 0080 cd0000 call c_rtol 2917 0083 a601 ld a,#1 2918 0085 cd0000 call c_ctof 2920 0088 96 ldw x,sp 2921 0089 1c0001 addw x,#OFST-7 2922 008c cd0000 call c_fdiv 2924 008f 96 ldw x,sp 2925 0090 1c0005 addw x,#OFST-3 2926 0093 cd0000 call c_rtol 2928 ; 74 Rx = Rx - 273.13; 2930 0096 ae0004 ldw x,#L3102 2931 0099 cd0000 call c_ltor 2933 009c 96 ldw x,sp 2934 009d 1c0005 addw x,#OFST-3 2935 00a0 cd0000 call c_fgsub 2937 ; 75 Rx = Rx + Revise; 2939 00a3 1e0f ldw x,(OFST+7,sp) 2940 00a5 cd0000 call c_itof 2942 00a8 96 ldw x,sp 2943 00a9 1c0005 addw x,#OFST-3 2944 00ac cd0000 call c_fgadd 2946 ; 77 return (int)(Rx+0.5); 2948 00af 96 ldw x,sp 2949 00b0 1c0005 addw x,#OFST-3 2950 00b3 cd0000 call c_ltor 2952 00b6 ae0000 ldw x,#L3202 2953 00b9 cd0000 call c_fadd 2955 00bc cd0000 call c_ftoi 2959 00bf 5b0a addw sp,#10 2960 00c1 81 ret 3015 ; 89 void i2c_send(uchar *dat,uchar len){ 3016 switch .text 3017 00c2 _i2c_send: 3019 00c2 89 pushw x 3020 00c3 88 push a 3021 00000001 OFST: set 1 3024 ; 91 dat_len = len; 3026 00c4 7b06 ld a,(OFST+5,sp) 3027 00c6 b723 ld _dat_len,a 3028 ; 92 for(i=0;i