1 ; C Compiler for STM8 (COSMIC Software) 2 ; Parser V4.8.32 - 23 Mar 2010 3 ; Generator V4.3.4 - 23 Mar 2010 2684 bsct 2685 0000 _wdgtim: 2686 0000 78 dc.b 120 2687 0001 L7071__lc: 2688 0001 00 dc.b 0 2737 ; 27 unsigned short safeTask(void) 2737 ; 28 { 2739 switch .text 2740 0000 _safeTask: 2744 ; 29 _SS 2746 0000 b601 ld a,L7071__lc 2748 ; 37 WAITX(100); 2749 0002 a024 sub a,#36 2750 0004 2712 jreq L5571 2751 0006 a002 sub a,#2 2752 0008 270e jreq L5571 2753 000a 200c jra L5571 2754 000c L3571: 2755 ; 34 IWDG_KR = 0xAA; //ι¹·º¯Êý£¬·ÀÖ¹³ÌÐò¸´Î» 2757 000c 35aa50e0 mov _IWDG_KR,#170 2758 ; 35 WAITX(100); 2760 0010 35240001 mov L7071__lc,#36 2763 0014 ae0064 ldw x,#100 2766 0017 81 ret 2767 0018 L5571: 2768 ; 32 while(wdgtim != 0) 2770 0018 3d00 tnz _wdgtim 2771 001a 26f0 jrne L3571 2772 ; 37 WAITX(100); 2774 001c 35260001 mov L7071__lc,#38 2777 0020 ae0064 ldw x,#100 2780 0023 81 ret 2783 bsct 2784 0002 L1771__lc: 2785 0002 00 dc.b 0 2819 ; 43 unsigned short safeIot(void) 2819 ; 44 { 2820 switch .text 2821 0024 _safeIot: 2825 ; 45 _SS 2827 0024 b602 ld a,L1771__lc 2829 ; 54 WAITX(1000); 2830 0026 a033 sub a,#51 2831 0028 2712 jreq L5771 2832 002a a004 sub a,#4 2833 002c L3202: 2834 ; 48 if(wdgtim == 0){ 2836 002c 3d00 tnz _wdgtim 2837 002e 2610 jrne L7202 2838 ; 49 REST = 0; 2840 0030 72175000 bres _REST 2841 ; 50 WAITX(1000); 2843 0034 35330002 mov L1771__lc,#51 2846 0038 ae03e8 ldw x,#1000 2849 003b 81 ret 2850 003c L5771: 2851 ; 51 REST = 1; 2855 003c 72165000 bset _REST 2856 0040 L7202: 2857 ; 53 wdgtim --; 2859 0040 3a00 dec _wdgtim 2860 ; 54 WAITX(1000); 2862 0042 35370002 mov L1771__lc,#55 2865 0046 ae03e8 ldw x,#1000 2868 0049 81 ret 2871 bsct 2872 0003 _ntc_adc_val5: 2873 0003 00000000 dc.w 0,0 2874 0007 _ntc_adc_val6: 2875 0007 00000000 dc.w 0,0 2876 000b _ntc_r5: 2877 000b 00000000 dc.w 0,0 2878 000f _ntc_r6: 2879 000f 00000000 dc.w 0,0 2880 0013 L1402__lc: 2881 0013 00 dc.b 0 2920 ; 65 unsigned short getvbat(void) 2920 ; 66 { 2921 switch .text 2922 004a _getvbat: 2924 004a 5204 subw sp,#4 2925 00000004 OFST: set 4 2928 ; 67 _SS 2930 004c b613 ld a,L1402__lc 2931 004e a157 cp a,#87 2932 0050 2700 jreq L7602 2935 0052 L3402: 2936 0052 L7602: 2937 ; 70 stm8_data.volBat = (((getADCValue(4)*3.3)/1024)*12)*1000; 2939 0052 a604 ld a,#4 2940 0054 cd0000 call _getADCValue 2942 0057 cd0000 call c_uitof 2944 005a ae0014 ldw x,#L7702 2945 005d cd0000 call c_fmul 2947 0060 ae0010 ldw x,#L7012 2948 0063 cd0000 call c_fdiv 2950 0066 ae000c ldw x,#L7112 2951 0069 cd0000 call c_fmul 2953 006c ae0008 ldw x,#L7212 2954 006f cd0000 call c_fmul 2956 0072 cd0000 call c_ftoi 2958 0075 bf01 ldw _stm8_data+1,x 2959 ; 72 ntc_adc_val5 = (float)getADCValue(5); 2961 0077 a605 ld a,#5 2962 0079 cd0000 call _getADCValue 2964 007c cd0000 call c_uitof 2966 007f ae0003 ldw x,#_ntc_adc_val5 2967 0082 cd0000 call c_rtol 2969 ; 73 ntc_r5 = (5100*ntc_adc_val5)/(1024-ntc_adc_val5); 2971 0085 ae0400 ldw x,#1024 2972 0088 cd0000 call c_itof 2974 008b ae0003 ldw x,#_ntc_adc_val5 2975 008e cd0000 call c_fsub 2977 0091 96 ldw x,sp 2978 0092 1c0001 addw x,#OFST-3 2979 0095 cd0000 call c_rtol 2981 0098 ae0003 ldw x,#_ntc_adc_val5 2982 009b cd0000 call c_ltor 2984 009e ae0004 ldw x,#L7312 2985 00a1 cd0000 call c_fmul 2987 00a4 96 ldw x,sp 2988 00a5 1c0001 addw x,#OFST-3 2989 00a8 cd0000 call c_fdiv 2991 00ab ae000b ldw x,#_ntc_r5 2992 00ae cd0000 call c_rtol 2994 ; 74 if(ntc_r5 > 50000) 2996 00b1 9c rvf 2997 00b2 aec350 ldw x,#50000 2998 00b5 cd0000 call c_uitof 3000 00b8 96 ldw x,sp 3001 00b9 1c0001 addw x,#OFST-3 3002 00bc cd0000 call c_rtol 3004 00bf ae000b ldw x,#_ntc_r5 3005 00c2 cd0000 call c_ltor 3007 00c5 96 ldw x,sp 3008 00c6 1c0001 addw x,#OFST-3 3009 00c9 cd0000 call c_fcmp 3011 00cc 2d05 jrsle L3412 3012 ; 75 stm8_data.keep_tmp = 0; 3014 00ce 5f clrw x 3015 00cf bf05 ldw _stm8_data+5,x 3017 00d1 2028 jra L5412 3018 00d3 L3412: 3019 ; 77 stm8_data.keep_tmp = (int)(TempCalculate(ntc_r5,3470,1,5100)+0.5);//3950---3470 3021 00d3 ae13ec ldw x,#5100 3022 00d6 89 pushw x 3023 00d7 ae0001 ldw x,#1 3024 00da 89 pushw x 3025 00db ae0d8e ldw x,#3470 3026 00de 89 pushw x 3027 00df ae000b ldw x,#_ntc_r5 3028 00e2 cd0000 call c_ltor 3030 00e5 cd0000 call c_ftoi 3032 00e8 cd0000 call _TempCalculate 3034 00eb 5b06 addw sp,#6 3035 00ed cd0000 call c_itof 3037 00f0 ae0000 ldw x,#L3512 3038 00f3 cd0000 call c_fadd 3040 00f6 cd0000 call c_ftoi 3042 00f9 bf05 ldw _stm8_data+5,x 3043 00fb L5412: 3044 ; 79 ntc_adc_val6 = (float)getADCValue(6); 3046 00fb a606 ld a,#6 3047 00fd cd0000 call _getADCValue 3049 0100 cd0000 call c_uitof 3051 0103 ae0007 ldw x,#_ntc_adc_val6 3052 0106 cd0000 call c_rtol 3054 ; 80 ntc_r6 = (5100*ntc_adc_val6)/(1024-ntc_adc_val6); 3056 0109 ae0400 ldw x,#1024 3057 010c cd0000 call c_itof 3059 010f ae0007 ldw x,#_ntc_adc_val6 3060 0112 cd0000 call c_fsub 3062 0115 96 ldw x,sp 3063 0116 1c0001 addw x,#OFST-3 3064 0119 cd0000 call c_rtol 3066 011c ae0007 ldw x,#_ntc_adc_val6 3067 011f cd0000 call c_ltor 3069 0122 ae0004 ldw x,#L7312 3070 0125 cd0000 call c_fmul 3072 0128 96 ldw x,sp 3073 0129 1c0001 addw x,#OFST-3 3074 012c cd0000 call c_fdiv 3076 012f ae000f ldw x,#_ntc_r6 3077 0132 cd0000 call c_rtol 3079 ; 81 if(ntc_r6 > 50000) 3081 0135 9c rvf 3082 0136 aec350 ldw x,#50000 3083 0139 cd0000 call c_uitof 3085 013c 96 ldw x,sp 3086 013d 1c0001 addw x,#OFST-3 3087 0140 cd0000 call c_rtol 3089 0143 ae000f ldw x,#_ntc_r6 3090 0146 cd0000 call c_ltor 3092 0149 96 ldw x,sp 3093 014a 1c0001 addw x,#OFST-3 3094 014d cd0000 call c_fcmp 3096 0150 2d05 jrsle L7512 3097 ; 82 stm8_data.box_tmp = 0; 3099 0152 5f clrw x 3100 0153 bf03 ldw _stm8_data+3,x 3102 0155 2028 jra L3612 3103 0157 L7512: 3104 ; 84 stm8_data.box_tmp = (int)(TempCalculate(ntc_r6,3470,1,5100)+0.5);//3950---3470 3106 0157 ae13ec ldw x,#5100 3107 015a 89 pushw x 3108 015b ae0001 ldw x,#1 3109 015e 89 pushw x 3110 015f ae0d8e ldw x,#3470 3111 0162 89 pushw x 3112 0163 ae000f ldw x,#_ntc_r6 3113 0166 cd0000 call c_ltor 3115 0169 cd0000 call c_ftoi 3117 016c cd0000 call _TempCalculate 3119 016f 5b06 addw sp,#6 3120 0171 cd0000 call c_itof 3122 0174 ae0000 ldw x,#L3512 3123 0177 cd0000 call c_fadd 3125 017a cd0000 call c_ftoi 3127 017d bf03 ldw _stm8_data+3,x 3128 017f L3612: 3129 ; 86 WAITX(1000); 3131 017f 35570013 mov L1402__lc,#87 3134 0183 ae03e8 ldw x,#1000 3137 0186 5b04 addw sp,#4 3138 0188 81 ret 3139 0189 L5402: 3143 0189 ac520052 jpf L7602 3146 bsct 3147 0014 _turn_order: 3148 0014 00 dc.b 0 3149 0015 _turn_sec: 3150 0015 00 dc.b 0 3151 0016 _turn_flag: 3152 0016 00 dc.b 0 3153 0017 _up_dw_flag: 3154 0017 00 dc.b 0 3155 0018 _fsl_sec: 3156 0018 05 dc.b 5 3157 0019 _cnt: 3158 0019 0000 dc.w 0 3159 001b L1712__lc: 3160 001b 00 dc.b 0 3199 ; 123 unsigned short control_task(void) 3199 ; 124 { 3200 switch .text 3201 018d _control_task: 3205 ; 126 _SS 3207 018d b61b ld a,L1712__lc 3209 ; 191 WAITX(200); 3210 018f a08e sub a,#142 3211 0191 273b jreq L5712 3212 0193 a00e sub a,#14 3213 0195 2765 jreq L7712 3214 0197 a019 sub a,#25 3215 0199 2603 jrne L41 3216 019b cc024e jp L1022 3217 019e L41: 3218 019e a00b sub a,#11 3219 01a0 L7222: 3220 ; 130 if(turn_order == 1 && turn_flag == 0) 3222 01a0 b614 ld a,_turn_order 3223 01a2 a101 cp a,#1 3224 01a4 267a jrne L3322 3226 01a6 3d16 tnz _turn_flag 3227 01a8 2676 jrne L3322 3228 ; 132 turn_flag = 1; 3230 01aa 35010016 mov _turn_flag,#1 3231 ; 133 if(TURN_IN == 0) 3233 btst _TURN_IN 3234 01b3 2527 jrult L5322 3235 ; 136 TIM2_PWM(1); 3237 01b5 a601 ld a,#1 3238 01b7 cd0000 call _TIM2_PWM 3240 ; 137 cnt = 0; 3242 01ba 5f clrw x 3243 01bb bf19 ldw _cnt,x 3245 01bd 2016 jra L1422 3246 01bf L7322: 3247 ; 140 cnt++; 3249 01bf be19 ldw x,_cnt 3250 01c1 1c0001 addw x,#1 3251 01c4 bf19 ldw _cnt,x 3252 ; 141 WAITX(10); 3254 01c6 358e001b mov L1712__lc,#142 3257 01ca ae000a ldw x,#10 3260 01cd 81 ret 3261 01ce L5712: 3262 ; 142 if(cnt > 200) break; 3266 01ce be19 ldw x,_cnt 3267 01d0 a300c9 cpw x,#201 3268 01d3 2407 jruge L5322 3271 01d5 L1422: 3272 ; 138 while(TURN_IN == 0) 3274 btst _TURN_IN 3275 01da 24e3 jruge L7322 3276 01dc L5322: 3277 ; 146 if(TURN_IN == 1) 3279 btst _TURN_IN 3280 01e1 243b jruge L3522 3281 ; 149 TIM2_PWM(1); 3283 01e3 a601 ld a,#1 3284 01e5 cd0000 call _TIM2_PWM 3286 ; 150 cnt = 0; 3288 01e8 5f clrw x 3289 01e9 bf19 ldw _cnt,x 3291 01eb 2021 jra L7522 3292 01ed L5522: 3293 ; 154 cnt++; 3295 01ed be19 ldw x,_cnt 3296 01ef 1c0001 addw x,#1 3297 01f2 bf19 ldw _cnt,x 3298 ; 155 WAITX(1); 3300 01f4 359c001b mov L1712__lc,#156 3303 01f8 ae0001 ldw x,#1 3306 01fb 81 ret 3307 01fc L7712: 3308 ; 157 if(cnt > (turn_sec-2)*1000) break; 3312 01fc b615 ld a,_turn_sec 3313 01fe 5f clrw x 3314 01ff 97 ld xl,a 3315 0200 90ae03e8 ldw y,#1000 3316 0204 cd0000 call c_imul 3318 0207 1d07d0 subw x,#2000 3319 020a b319 cpw x,_cnt 3320 020c 2507 jrult L1622 3323 020e L7522: 3324 ; 152 while(TURN_IN == 1) 3326 btst _TURN_IN 3327 0213 25d8 jrult L5522 3328 0215 L1622: 3329 ; 159 cnt = 0; 3331 0215 5f clrw x 3332 0216 bf19 ldw _cnt,x 3333 ; 160 TIM2_PWM(0); 3335 0218 4f clr a 3336 0219 cd0000 call _TIM2_PWM 3338 ; 161 turn_order = 0; 3340 021c 3f14 clr _turn_order 3341 021e L3522: 3342 ; 163 turn_flag = 0; 3344 021e 3f16 clr _turn_flag 3345 0220 L3322: 3346 ; 167 if(turn_order == 7 && turn_flag == 0) 3348 0220 b614 ld a,_turn_order 3349 0222 a107 cp a,#7 3350 0224 2649 jrne L1132 3352 0226 3d16 tnz _turn_flag 3353 0228 2645 jrne L1132 3354 ; 170 if (TURN_IN0 == 1) 3356 btst _TURN_IN0 3357 022f 243e jruge L1132 3358 ; 173 turn_flag = 1; 3360 0231 35010016 mov _turn_flag,#1 3361 ; 174 TIM2_PWM(1); 3363 0235 a601 ld a,#1 3364 0237 cd0000 call _TIM2_PWM 3366 ; 175 cnt = 0; 3368 023a 5f clrw x 3369 023b bf19 ldw _cnt,x 3371 023d 201e jra L7722 3372 023f L5722: 3373 ; 179 cnt++; 3375 023f be19 ldw x,_cnt 3376 0241 1c0001 addw x,#1 3377 0244 bf19 ldw _cnt,x 3378 ; 180 WAITX(1); 3380 0246 35b5001b mov L1712__lc,#181 3383 024a ae0001 ldw x,#1 3386 024d 81 ret 3387 024e L1022: 3388 ; 181 if(cnt > turn_sec*1000) break; 3392 024e b615 ld a,_turn_sec 3393 0250 5f clrw x 3394 0251 97 ld xl,a 3395 0252 90ae03e8 ldw y,#1000 3396 0256 cd0000 call c_imul 3398 0259 b319 cpw x,_cnt 3399 025b 2507 jrult L1032 3402 025d L7722: 3403 ; 177 while(TURN_IN0 == 1) 3405 btst _TURN_IN0 3406 0262 25db jrult L5722 3407 0264 L1032: 3408 ; 183 cnt = 0; 3410 0264 5f clrw x 3411 0265 bf19 ldw _cnt,x 3412 ; 184 TIM2_PWM(0); 3414 0267 4f clr a 3415 0268 cd0000 call _TIM2_PWM 3417 ; 185 turn_order = 0; 3419 026b 3f14 clr _turn_order 3420 ; 186 turn_flag = 0; 3422 026d 3f16 clr _turn_flag 3423 026f L1132: 3424 ; 191 WAITX(200); 3426 026f 35c0001b mov L1712__lc,#192 3429 0273 ae00c8 ldw x,#200 3432 0276 81 ret 3435 bsct 3436 001c L5132__lc: 3437 001c 00 dc.b 0 3474 ; 197 unsigned short fsl_task(void) 3474 ; 198 { 3475 switch .text 3476 0277 _fsl_task: 3480 ; 199 _SS 3482 0277 b61c ld a,L5132__lc 3484 ; 225 WAITX(500); 3485 0279 a0d5 sub a,#213 3486 027b 271d jreq L1232 3487 027d a005 sub a,#5 3488 027f 272f jreq L3232 3489 0281 a008 sub a,#8 3490 0283 L1532: 3491 ; 208 if(up_dw_flag != 0) 3493 0283 3d17 tnz _up_dw_flag 3494 0285 272e jreq L7632 3495 ; 210 TG_DW(); 3497 0287 cd0000 call _TG_DW 3499 ; 212 WAITX(fsl_sec * 1000); 3501 028a 35d5001c mov L5132__lc,#213 3504 028e b618 ld a,_fsl_sec 3505 0290 5f clrw x 3506 0291 97 ld xl,a 3507 0292 90ae03e8 ldw y,#1000 3508 0296 cd0000 call c_imul 3512 0299 81 ret 3513 029a L1232: 3514 ; 214 TG_STOP(); 3518 029a cd0000 call _TG_STOP 3520 ; 216 TG_UP(); 3522 029d cd0000 call _TG_UP 3524 ; 217 WAITX(fsl_sec * 1000); 3526 02a0 35da001c mov L5132__lc,#218 3529 02a4 b618 ld a,_fsl_sec 3530 02a6 5f clrw x 3531 02a7 97 ld xl,a 3532 02a8 90ae03e8 ldw y,#1000 3533 02ac cd0000 call c_imul 3537 02af 81 ret 3538 02b0 L3232: 3539 ; 219 TG_STOP(); 3543 02b0 cd0000 call _TG_STOP 3545 ; 220 up_dw_flag = 0; 3547 02b3 3f17 clr _up_dw_flag 3548 02b5 L7632: 3549 ; 225 WAITX(500); 3551 02b5 35e2001c mov L5132__lc,#226 3554 02b9 ae01f4 ldw x,#500 3557 02bc 81 ret 3716 xdef _fsl_task 3717 xdef _control_task 3718 xdef _cnt 3719 xdef _fsl_sec 3720 xdef _up_dw_flag 3721 xdef _turn_flag 3722 xdef _turn_sec 3723 xdef _turn_order 3724 xdef _getvbat 3725 xref _TempCalculate 3726 xdef _ntc_r6 3727 xdef _ntc_r5 3728 xdef _ntc_adc_val6 3729 xdef _ntc_adc_val5 3730 xdef _safeIot 3731 xdef _safeTask 3732 xdef _wdgtim 3733 xref _TG_STOP 3734 xref _TG_DW 3735 xref _TG_UP 3736 xref _TIM2_PWM 3737 switch .ubsct 3738 0000 _stm8_data: 3739 0000 000000000000 ds.b 7 3740 xdef _stm8_data 3741 xref _getADCValue 3742 .const: section .text 3743 0000 L3512: 3744 0000 3f000000 dc.w 16128,0 3745 0004 L7312: 3746 0004 459f6000 dc.w 17823,24576 3747 0008 L7212: 3748 0008 447a0000 dc.w 17530,0 3749 000c L7112: 3750 000c 41400000 dc.w 16704,0 3751 0010 L7012: 3752 0010 44800000 dc.w 17536,0 3753 0014 L7702: 3754 0014 40533333 dc.w 16467,13107 3755 xref.b c_x 3775 xref c_imul 3776 xref c_fadd 3777 xref c_fcmp 3778 xref c_fsub 3779 xref c_itof 3780 xref c_ltor 3781 xref c_rtol 3782 xref c_ftoi 3783 xref c_fdiv 3784 xref c_fmul 3785 xref c_uitof 3786 end