1 ; C Compiler for STM8 (COSMIC Software) 2 ; Parser V4.8.32 - 23 Mar 2010 3 ; Generator V4.3.4 - 23 Mar 2010 2727 ; 29 void IIC_Init(void) { 2729 switch .text 2730 0000 _IIC_Init: 2734 ; 35 I2C_CR1 = 0x00; 2736 0000 725f5210 clr _I2C_CR1 2737 ; 37 I2C_FREQR = 8; 2739 0004 35085212 mov _I2C_FREQR,#8 2740 ; 40 I2C_CCRL = 40; 2742 0008 3528521b mov _I2C_CCRL,#40 2743 ; 41 I2C_CCRH = 0; 2745 000c 725f521c clr _I2C_CCRH 2746 ; 43 I2C_TRISER = 9; 2748 0010 3509521d mov _I2C_TRISER,#9 2749 ; 45 I2C_CR1 = 0x01; 2751 0014 35015210 mov _I2C_CR1,#1 2752 ; 47 I2C_OARL = (SLAVE_ADDRESS << 1); 2754 0018 35a25213 mov _I2C_OARL,#162 2755 ; 48 I2C_OARH |= 0x40; 2757 001c 721c5214 bset _I2C_OARH,#6 2758 ; 50 I2C_CR2 |= 1 << 2; 2760 0020 72145211 bset _I2C_CR2,#2 2761 ; 52 I2C_ITR = 0x07; 2763 0024 3507521a mov _I2C_ITR,#7 2764 ; 53 } 2767 0028 81 ret 2838 ; 62 int TempCalculate(uint Rv,int B,int Revise,int BasicRx) 2838 ; 63 { 2839 switch .text 2840 0029 _TempCalculate: 2842 0029 89 pushw x 2843 002a 5208 subw sp,#8 2844 00000008 OFST: set 8 2847 ; 66 Rx = Rv * 1.0 / BasicRx; 2849 002c 1e11 ldw x,(OFST+9,sp) 2850 002e cd0000 call c_itof 2852 0031 96 ldw x,sp 2853 0032 1c0001 addw x,#OFST-7 2854 0035 cd0000 call c_rtol 2856 0038 1e09 ldw x,(OFST+1,sp) 2857 003a cd0000 call c_uitof 2859 003d ae000c ldw x,#L7671 2860 0040 cd0000 call c_fmul 2862 0043 96 ldw x,sp 2863 0044 1c0001 addw x,#OFST-7 2864 0047 cd0000 call c_fdiv 2866 004a 96 ldw x,sp 2867 004b 1c0005 addw x,#OFST-3 2868 004e cd0000 call c_rtol 2870 ; 68 Rx = log(Rx); 2872 0051 1e07 ldw x,(OFST-1,sp) 2873 0053 89 pushw x 2874 0054 1e07 ldw x,(OFST-1,sp) 2875 0056 89 pushw x 2876 0057 cd0000 call _log 2878 005a 5b04 addw sp,#4 2879 005c 96 ldw x,sp 2880 005d 1c0005 addw x,#OFST-3 2881 0060 cd0000 call c_rtol 2883 ; 70 Rx = Rx / B; 2885 0063 1e0d ldw x,(OFST+5,sp) 2886 0065 cd0000 call c_itof 2888 0068 96 ldw x,sp 2889 0069 1c0005 addw x,#OFST-3 2890 006c cd0000 call c_fgdiv 2892 ; 71 Rx = 1/(Rx+0.003354); 2894 006f 96 ldw x,sp 2895 0070 1c0005 addw x,#OFST-3 2896 0073 cd0000 call c_ltor 2898 0076 ae0008 ldw x,#L7771 2899 0079 cd0000 call c_fadd 2901 007c 96 ldw x,sp 2902 007d 1c0001 addw x,#OFST-7 2903 0080 cd0000 call c_rtol 2905 0083 a601 ld a,#1 2906 0085 cd0000 call c_ctof 2908 0088 96 ldw x,sp 2909 0089 1c0001 addw x,#OFST-7 2910 008c cd0000 call c_fdiv 2912 008f 96 ldw x,sp 2913 0090 1c0005 addw x,#OFST-3 2914 0093 cd0000 call c_rtol 2916 ; 74 Rx = Rx - 273.13; 2918 0096 ae0004 ldw x,#L7002 2919 0099 cd0000 call c_ltor 2921 009c 96 ldw x,sp 2922 009d 1c0005 addw x,#OFST-3 2923 00a0 cd0000 call c_fgsub 2925 ; 75 Rx = Rx + Revise; 2927 00a3 1e0f ldw x,(OFST+7,sp) 2928 00a5 cd0000 call c_itof 2930 00a8 96 ldw x,sp 2931 00a9 1c0005 addw x,#OFST-3 2932 00ac cd0000 call c_fgadd 2934 ; 77 return (int)(Rx+0.5); 2936 00af 96 ldw x,sp 2937 00b0 1c0005 addw x,#OFST-3 2938 00b3 cd0000 call c_ltor 2940 00b6 ae0000 ldw x,#L7102 2941 00b9 cd0000 call c_fadd 2943 00bc cd0000 call c_ftoi 2947 00bf 5b0a addw sp,#10 2948 00c1 81 ret 3003 ; 89 void i2c_send(uchar *dat,uchar len){ 3004 switch .text 3005 00c2 _i2c_send: 3007 00c2 89 pushw x 3008 00c3 88 push a 3009 00000001 OFST: set 1 3012 ; 91 dat_len = len; 3014 00c4 7b06 ld a,(OFST+5,sp) 3015 00c6 b723 ld _dat_len,a 3016 ; 92 for(i=0;i