1 ; C Compiler for STM8 (COSMIC Software) 2 ; Parser V4.8.32 - 23 Mar 2010 3 ; Generator V4.3.4 - 23 Mar 2010 2696 bsct 2697 0000 _wdgtim: 2698 0000 78 dc.b 120 2699 0001 L3171__lc: 2700 0001 00 dc.b 0 2749 ; 27 unsigned short safeTask(void) 2749 ; 28 { 2751 switch .text 2752 0000 _safeTask: 2756 ; 29 _SS 2758 0000 b601 ld a,L3171__lc 2760 ; 37 WAITX(100); 2761 0002 a024 sub a,#36 2762 0004 2712 jreq L1671 2763 0006 a002 sub a,#2 2764 0008 270e jreq L1671 2765 000a 200c jra L1671 2766 000c L7571: 2767 ; 34 IWDG_KR = 0xAA; //ι¹·º¯Êý£¬·ÀÖ¹³ÌÐò¸´Î» 2769 000c 35aa50e0 mov _IWDG_KR,#170 2770 ; 35 WAITX(100); 2772 0010 35240001 mov L3171__lc,#36 2775 0014 ae0064 ldw x,#100 2778 0017 81 ret 2779 0018 L1671: 2780 ; 32 while(wdgtim != 0) 2782 0018 3d00 tnz _wdgtim 2783 001a 26f0 jrne L7571 2784 ; 37 WAITX(100); 2786 001c 35260001 mov L3171__lc,#38 2789 0020 ae0064 ldw x,#100 2792 0023 81 ret 2795 bsct 2796 0002 L5771__lc: 2797 0002 00 dc.b 0 2831 ; 43 unsigned short safeIot(void) 2831 ; 44 { 2832 switch .text 2833 0024 _safeIot: 2837 ; 45 _SS 2839 0024 b602 ld a,L5771__lc 2841 ; 54 WAITX(1000); 2842 0026 a033 sub a,#51 2843 0028 2712 jreq L1002 2844 002a a004 sub a,#4 2845 002c L7202: 2846 ; 48 if(wdgtim == 0){ 2848 002c 3d00 tnz _wdgtim 2849 002e 2610 jrne L3302 2850 ; 49 REST = 0; 2852 0030 72175000 bres _REST 2853 ; 50 WAITX(1000); 2855 0034 35330002 mov L5771__lc,#51 2858 0038 ae03e8 ldw x,#1000 2861 003b 81 ret 2862 003c L1002: 2863 ; 51 REST = 1; 2867 003c 72165000 bset _REST 2868 0040 L3302: 2869 ; 53 wdgtim --; 2871 0040 3a00 dec _wdgtim 2872 ; 54 WAITX(1000); 2874 0042 35370002 mov L5771__lc,#55 2877 0046 ae03e8 ldw x,#1000 2880 0049 81 ret 2883 bsct 2884 0003 _ntc_adc_val5: 2885 0003 00000000 dc.w 0,0 2886 0007 _ntc_adc_val6: 2887 0007 00000000 dc.w 0,0 2888 000b _ntc_r5: 2889 000b 00000000 dc.w 0,0 2890 000f _ntc_r6: 2891 000f 00000000 dc.w 0,0 2892 0013 L5402__lc: 2893 0013 00 dc.b 0 2932 ; 65 unsigned short getvbat(void) 2932 ; 66 { 2933 switch .text 2934 004a _getvbat: 2936 004a 5204 subw sp,#4 2937 00000004 OFST: set 4 2940 ; 67 _SS 2942 004c b613 ld a,L5402__lc 2943 004e a157 cp a,#87 2944 0050 2700 jreq L3702 2947 0052 L7402: 2948 0052 L3702: 2949 ; 70 stm8_data.volBat = (((getADCValue(4)*3.3)/1024)*12)*1000; 2951 0052 a604 ld a,#4 2952 0054 cd0000 call _getADCValue 2954 0057 cd0000 call c_uitof 2956 005a ae0014 ldw x,#L3012 2957 005d cd0000 call c_fmul 2959 0060 ae0010 ldw x,#L3112 2960 0063 cd0000 call c_fdiv 2962 0066 ae000c ldw x,#L3212 2963 0069 cd0000 call c_fmul 2965 006c ae0008 ldw x,#L3312 2966 006f cd0000 call c_fmul 2968 0072 cd0000 call c_ftoi 2970 0075 bf01 ldw _stm8_data+1,x 2971 ; 72 ntc_adc_val5 = (float)getADCValue(5); 2973 0077 a605 ld a,#5 2974 0079 cd0000 call _getADCValue 2976 007c cd0000 call c_uitof 2978 007f ae0003 ldw x,#_ntc_adc_val5 2979 0082 cd0000 call c_rtol 2981 ; 73 ntc_r5 = (5100*ntc_adc_val5)/(1024-ntc_adc_val5); 2983 0085 ae0400 ldw x,#1024 2984 0088 cd0000 call c_itof 2986 008b ae0003 ldw x,#_ntc_adc_val5 2987 008e cd0000 call c_fsub 2989 0091 96 ldw x,sp 2990 0092 1c0001 addw x,#OFST-3 2991 0095 cd0000 call c_rtol 2993 0098 ae0003 ldw x,#_ntc_adc_val5 2994 009b cd0000 call c_ltor 2996 009e ae0004 ldw x,#L3412 2997 00a1 cd0000 call c_fmul 2999 00a4 96 ldw x,sp 3000 00a5 1c0001 addw x,#OFST-3 3001 00a8 cd0000 call c_fdiv 3003 00ab ae000b ldw x,#_ntc_r5 3004 00ae cd0000 call c_rtol 3006 ; 74 if(ntc_r5 > 50000) 3008 00b1 9c rvf 3009 00b2 aec350 ldw x,#50000 3010 00b5 cd0000 call c_uitof 3012 00b8 96 ldw x,sp 3013 00b9 1c0001 addw x,#OFST-3 3014 00bc cd0000 call c_rtol 3016 00bf ae000b ldw x,#_ntc_r5 3017 00c2 cd0000 call c_ltor 3019 00c5 96 ldw x,sp 3020 00c6 1c0001 addw x,#OFST-3 3021 00c9 cd0000 call c_fcmp 3023 00cc 2d05 jrsle L7412 3024 ; 75 stm8_data.keep_tmp = 0; 3026 00ce 5f clrw x 3027 00cf bf05 ldw _stm8_data+5,x 3029 00d1 2028 jra L1512 3030 00d3 L7412: 3031 ; 77 stm8_data.keep_tmp = (int)(TempCalculate(ntc_r5,3470,1,5100)+0.5);//3950---3470 3033 00d3 ae13ec ldw x,#5100 3034 00d6 89 pushw x 3035 00d7 ae0001 ldw x,#1 3036 00da 89 pushw x 3037 00db ae0d8e ldw x,#3470 3038 00de 89 pushw x 3039 00df ae000b ldw x,#_ntc_r5 3040 00e2 cd0000 call c_ltor 3042 00e5 cd0000 call c_ftoi 3044 00e8 cd0000 call _TempCalculate 3046 00eb 5b06 addw sp,#6 3047 00ed cd0000 call c_itof 3049 00f0 ae0000 ldw x,#L7512 3050 00f3 cd0000 call c_fadd 3052 00f6 cd0000 call c_ftoi 3054 00f9 bf05 ldw _stm8_data+5,x 3055 00fb L1512: 3056 ; 79 ntc_adc_val6 = (float)getADCValue(6); 3058 00fb a606 ld a,#6 3059 00fd cd0000 call _getADCValue 3061 0100 cd0000 call c_uitof 3063 0103 ae0007 ldw x,#_ntc_adc_val6 3064 0106 cd0000 call c_rtol 3066 ; 80 ntc_r6 = (5100*ntc_adc_val6)/(1024-ntc_adc_val6); 3068 0109 ae0400 ldw x,#1024 3069 010c cd0000 call c_itof 3071 010f ae0007 ldw x,#_ntc_adc_val6 3072 0112 cd0000 call c_fsub 3074 0115 96 ldw x,sp 3075 0116 1c0001 addw x,#OFST-3 3076 0119 cd0000 call c_rtol 3078 011c ae0007 ldw x,#_ntc_adc_val6 3079 011f cd0000 call c_ltor 3081 0122 ae0004 ldw x,#L3412 3082 0125 cd0000 call c_fmul 3084 0128 96 ldw x,sp 3085 0129 1c0001 addw x,#OFST-3 3086 012c cd0000 call c_fdiv 3088 012f ae000f ldw x,#_ntc_r6 3089 0132 cd0000 call c_rtol 3091 ; 81 if(ntc_r6 > 50000) 3093 0135 9c rvf 3094 0136 aec350 ldw x,#50000 3095 0139 cd0000 call c_uitof 3097 013c 96 ldw x,sp 3098 013d 1c0001 addw x,#OFST-3 3099 0140 cd0000 call c_rtol 3101 0143 ae000f ldw x,#_ntc_r6 3102 0146 cd0000 call c_ltor 3104 0149 96 ldw x,sp 3105 014a 1c0001 addw x,#OFST-3 3106 014d cd0000 call c_fcmp 3108 0150 2d05 jrsle L3612 3109 ; 82 stm8_data.box_tmp = 0; 3111 0152 5f clrw x 3112 0153 bf03 ldw _stm8_data+3,x 3114 0155 2028 jra L7612 3115 0157 L3612: 3116 ; 84 stm8_data.box_tmp = (int)(TempCalculate(ntc_r6,3470,1,5100)+0.5);//3950---3470 3118 0157 ae13ec ldw x,#5100 3119 015a 89 pushw x 3120 015b ae0001 ldw x,#1 3121 015e 89 pushw x 3122 015f ae0d8e ldw x,#3470 3123 0162 89 pushw x 3124 0163 ae000f ldw x,#_ntc_r6 3125 0166 cd0000 call c_ltor 3127 0169 cd0000 call c_ftoi 3129 016c cd0000 call _TempCalculate 3131 016f 5b06 addw sp,#6 3132 0171 cd0000 call c_itof 3134 0174 ae0000 ldw x,#L7512 3135 0177 cd0000 call c_fadd 3137 017a cd0000 call c_ftoi 3139 017d bf03 ldw _stm8_data+3,x 3140 017f L7612: 3141 ; 86 WAITX(1000); 3143 017f 35570013 mov L5402__lc,#87 3146 0183 ae03e8 ldw x,#1000 3149 0186 5b04 addw sp,#4 3150 0188 81 ret 3151 0189 L1502: 3155 0189 ac520052 jpf L3702 3158 bsct 3159 0014 _turn_order: 3160 0014 00 dc.b 0 3161 0015 _turn_sec: 3162 0015 00 dc.b 0 3163 0016 _turn_flag: 3164 0016 00 dc.b 0 3165 0017 _up_dw_flag: 3166 0017 00 dc.b 0 3167 0018 _fsl_sec: 3168 0018 05 dc.b 5 3169 0019 _cnt: 3170 0019 0000 dc.w 0 3171 001b L5712__lc: 3172 001b 00 dc.b 0 3211 ; 123 unsigned short control_task(void) 3211 ; 124 { 3212 switch .text 3213 018d _control_task: 3217 ; 125 _SS 3219 018d b61b ld a,L5712__lc 3221 ; 196 WAITX(200); 3222 018f a08e sub a,#142 3223 0191 273a jreq L1022 3224 0193 a00f sub a,#15 3225 0195 2763 jreq L3022 3226 0197 a01b sub a,#27 3227 0199 2603 jrne L41 3228 019b cc024b jp L5022 3229 019e L41: 3230 019e a00d sub a,#13 3231 01a0 L3322: 3232 ; 129 if(turn_order == 1 && turn_flag == 0) 3234 01a0 b614 ld a,_turn_order 3235 01a2 a101 cp a,#1 3236 01a4 2678 jrne L7322 3238 01a6 3d16 tnz _turn_flag 3239 01a8 2674 jrne L7322 3240 ; 131 turn_flag = 1; 3242 01aa 35010016 mov _turn_flag,#1 3243 ; 132 if(TURN_IN == 0) 3245 btst _TURN_IN 3246 01b3 2526 jrult L1422 3247 ; 136 TURN =1; 3249 01b5 721a500a bset _TURN 3250 ; 137 cnt = 0; 3252 01b9 5f clrw x 3253 01ba bf19 ldw _cnt,x 3255 01bc 2016 jra L5422 3256 01be L3422: 3257 ; 140 cnt++; 3259 01be be19 ldw x,_cnt 3260 01c0 1c0001 addw x,#1 3261 01c3 bf19 ldw _cnt,x 3262 ; 141 WAITX(10); 3264 01c5 358e001b mov L5712__lc,#142 3267 01c9 ae000a ldw x,#10 3270 01cc 81 ret 3271 01cd L1022: 3272 ; 142 if(cnt > 200) break; 3276 01cd be19 ldw x,_cnt 3277 01cf a300c9 cpw x,#201 3278 01d2 2407 jruge L1422 3281 01d4 L5422: 3282 ; 138 while(TURN_IN == 0) 3284 btst _TURN_IN 3285 01d9 24e3 jruge L3422 3286 01db L1422: 3287 ; 146 if(TURN_IN == 1) 3289 btst _TURN_IN 3290 01e0 243a jruge L7522 3291 ; 150 TURN = 1; 3293 01e2 721a500a bset _TURN 3294 ; 151 cnt = 0; 3296 01e6 5f clrw x 3297 01e7 bf19 ldw _cnt,x 3299 01e9 2021 jra L3622 3300 01eb L1622: 3301 ; 155 cnt++; 3303 01eb be19 ldw x,_cnt 3304 01ed 1c0001 addw x,#1 3305 01f0 bf19 ldw _cnt,x 3306 ; 156 WAITX(1); 3308 01f2 359d001b mov L5712__lc,#157 3311 01f6 ae0001 ldw x,#1 3314 01f9 81 ret 3315 01fa L3022: 3316 ; 158 if(cnt > (turn_sec-2)*1000) break; 3320 01fa b615 ld a,_turn_sec 3321 01fc 5f clrw x 3322 01fd 97 ld xl,a 3323 01fe 90ae03e8 ldw y,#1000 3324 0202 cd0000 call c_imul 3326 0205 1d07d0 subw x,#2000 3327 0208 b319 cpw x,_cnt 3328 020a 2507 jrult L5622 3331 020c L3622: 3332 ; 153 while(TURN_IN == 1) 3334 btst _TURN_IN 3335 0211 25d8 jrult L1622 3336 0213 L5622: 3337 ; 160 cnt = 0; 3339 0213 5f clrw x 3340 0214 bf19 ldw _cnt,x 3341 ; 162 TURN = 0; 3343 0216 721b500a bres _TURN 3344 ; 163 turn_order = 0; 3346 021a 3f14 clr _turn_order 3347 021c L7522: 3348 ; 165 turn_flag = 0; 3350 021c 3f16 clr _turn_flag 3351 021e L7322: 3352 ; 169 if(turn_order == 7 && turn_flag == 0) 3354 021e b614 ld a,_turn_order 3355 0220 a107 cp a,#7 3356 0222 264c jrne L5132 3358 0224 3d16 tnz _turn_flag 3359 0226 2648 jrne L5132 3360 ; 172 if (TURN_IN0 == 1) 3362 btst _TURN_IN0 3363 022d 243d jruge L7722 3364 ; 175 turn_flag = 1; 3366 022f 35010016 mov _turn_flag,#1 3367 ; 177 TURN = 1; 3369 0233 721a500a bset _TURN 3370 ; 178 cnt = 0; 3372 0237 5f clrw x 3373 0238 bf19 ldw _cnt,x 3375 023a 201e jra L3032 3376 023c L1032: 3377 ; 182 cnt++; 3379 023c be19 ldw x,_cnt 3380 023e 1c0001 addw x,#1 3381 0241 bf19 ldw _cnt,x 3382 ; 183 WAITX(1); 3384 0243 35b8001b mov L5712__lc,#184 3387 0247 ae0001 ldw x,#1 3390 024a 81 ret 3391 024b L5022: 3392 ; 184 if(cnt > turn_sec*1000) break; 3396 024b b615 ld a,_turn_sec 3397 024d 5f clrw x 3398 024e 97 ld xl,a 3399 024f 90ae03e8 ldw y,#1000 3400 0253 cd0000 call c_imul 3402 0256 b319 cpw x,_cnt 3403 0258 2507 jrult L5032 3406 025a L3032: 3407 ; 180 while(TURN_IN0 == 1) 3409 btst _TURN_IN0 3410 025f 25db jrult L1032 3411 0261 L5032: 3412 ; 186 cnt = 0; 3414 0261 5f clrw x 3415 0262 bf19 ldw _cnt,x 3416 ; 188 TURN = 0; 3418 0264 721b500a bres _TURN 3419 ; 189 turn_order = 0; 3421 0268 3f14 clr _turn_order 3422 ; 190 turn_flag = 0; 3424 026a 3f16 clr _turn_flag 3425 026c L7722: 3426 ; 193 TURN = 0; 3428 026c 721b500a bres _TURN 3429 0270 L5132: 3430 ; 196 WAITX(200); 3432 0270 35c5001b mov L5712__lc,#197 3435 0274 ae00c8 ldw x,#200 3438 0277 81 ret 3441 bsct 3442 001c L1232__lc: 3443 001c 00 dc.b 0 3480 ; 202 unsigned short fsl_task(void) 3480 ; 203 { 3481 switch .text 3482 0278 _fsl_task: 3486 ; 204 _SS 3488 0278 b61c ld a,L1232__lc 3490 ; 230 WAITX(500); 3491 027a a0da sub a,#218 3492 027c 271d jreq L5232 3493 027e a005 sub a,#5 3494 0280 272f jreq L7232 3495 0282 a008 sub a,#8 3496 0284 L5532: 3497 ; 213 if(up_dw_flag != 0) 3499 0284 3d17 tnz _up_dw_flag 3500 0286 272e jreq L3732 3501 ; 215 TG_DW(); 3503 0288 cd0000 call _TG_DW 3505 ; 217 WAITX(fsl_sec * 1000); 3507 028b 35da001c mov L1232__lc,#218 3510 028f b618 ld a,_fsl_sec 3511 0291 5f clrw x 3512 0292 97 ld xl,a 3513 0293 90ae03e8 ldw y,#1000 3514 0297 cd0000 call c_imul 3518 029a 81 ret 3519 029b L5232: 3520 ; 219 TG_STOP(); 3524 029b cd0000 call _TG_STOP 3526 ; 221 TG_UP(); 3528 029e cd0000 call _TG_UP 3530 ; 222 WAITX(fsl_sec * 1000); 3532 02a1 35df001c mov L1232__lc,#223 3535 02a5 b618 ld a,_fsl_sec 3536 02a7 5f clrw x 3537 02a8 97 ld xl,a 3538 02a9 90ae03e8 ldw y,#1000 3539 02ad cd0000 call c_imul 3543 02b0 81 ret 3544 02b1 L7232: 3545 ; 224 TG_STOP(); 3549 02b1 cd0000 call _TG_STOP 3551 ; 225 up_dw_flag = 0; 3553 02b4 3f17 clr _up_dw_flag 3554 02b6 L3732: 3555 ; 230 WAITX(500); 3557 02b6 35e7001c mov L1232__lc,#231 3560 02ba ae01f4 ldw x,#500 3563 02bd 81 ret 3722 xdef _fsl_task 3723 xdef _control_task 3724 xdef _cnt 3725 xdef _fsl_sec 3726 xdef _up_dw_flag 3727 xdef _turn_flag 3728 xdef _turn_sec 3729 xdef _turn_order 3730 xdef _getvbat 3731 xref _TempCalculate 3732 xdef _ntc_r6 3733 xdef _ntc_r5 3734 xdef _ntc_adc_val6 3735 xdef _ntc_adc_val5 3736 xdef _safeIot 3737 xdef _safeTask 3738 xdef _wdgtim 3739 xref _TG_STOP 3740 xref _TG_DW 3741 xref _TG_UP 3742 switch .ubsct 3743 0000 _stm8_data: 3744 0000 000000000000 ds.b 7 3745 xdef _stm8_data 3746 xref _getADCValue 3747 .const: section .text 3748 0000 L7512: 3749 0000 3f000000 dc.w 16128,0 3750 0004 L3412: 3751 0004 459f6000 dc.w 17823,24576 3752 0008 L3312: 3753 0008 447a0000 dc.w 17530,0 3754 000c L3212: 3755 000c 41400000 dc.w 16704,0 3756 0010 L3112: 3757 0010 44800000 dc.w 17536,0 3758 0014 L3012: 3759 0014 40533333 dc.w 16467,13107 3760 xref.b c_x 3780 xref c_imul 3781 xref c_fadd 3782 xref c_fcmp 3783 xref c_fsub 3784 xref c_itof 3785 xref c_ltor 3786 xref c_rtol 3787 xref c_ftoi 3788 xref c_fdiv 3789 xref c_fmul 3790 xref c_uitof 3791 end