| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- 1 ; C Compiler for STM8 (COSMIC Software)
- 2 ; Parser V4.8.32 - 23 Mar 2010
- 3 ; Generator V4.3.4 - 23 Mar 2010
- 2738 ; 6 void TIM1_INIT(void)
- 2738 ; 7 {
- 2740 switch .text
- 2741 0000 _TIM1_INIT:
- 2745 ; 9 CLK_PCKENR1 |= 0x80;
- 2747 0000 721e50c7 bset _CLK_PCKENR1,#7
- 2748 ; 11 TIM1_PSCRH = 0x00; //定时器1预分频系数为1
- 2750 0004 725f5260 clr _TIM1_PSCRH
- 2751 ; 12 TIM1_PSCRL = 0x00;
- 2753 0008 725f5261 clr _TIM1_PSCRL
- 2754 ; 14 TIM1_ARRH = 0x00;//0320,10K
- 2756 000c 725f5262 clr _TIM1_ARRH
- 2757 ; 15 TIM1_ARRL = 0x10;//
- 2759 0010 35105263 mov _TIM1_ARRL,#16
- 2760 ; 19 TIM1_CNTRH = 0;
- 2762 0014 725f525e clr _TIM1_CNTRH
- 2763 ; 20 TIM1_CNTRL = 0;
- 2765 0018 725f525f clr _TIM1_CNTRL
- 2766 ; 31 TIM1_CR1 |= 1<<7;//允许重装,使能定时器
- 2768 001c 721e5250 bset _TIM1_CR1,#7
- 2769 ; 32 TIM1_CR1 |= 1<<4;//选择向下计数模式
- 2771 0020 72185250 bset _TIM1_CR1,#4
- 2772 ; 33 TIM1_CR1 &= ~(1<<0);//使能计数器
- 2774 0024 72115250 bres _TIM1_CR1,#0
- 2775 ; 34 }
- 2778 0028 81 ret
- 2781 bsct
- 2782 0000 _tmp:
- 2783 0000 00 dc.b 0
- 2806 ; 38 @far @interrupt void TIM1_UPD_IRQ(void)
- 2806 ; 39 {
- 2808 switch .text
- 2809 0029 f_TIM1_UPD_IRQ:
- 2813 ; 43 tmp = TIM1_SR1&0x01;
- 2815 0029 c65255 ld a,_TIM1_SR1
- 2816 002c a401 and a,#1
- 2817 002e b700 ld _tmp,a
- 2818 ; 45 }
- 2821 0030 80 iret
- 2860 ; 47 void _delay_us(int time)
- 2860 ; 48 {
- 2862 switch .text
- 2863 0031 __delay_us:
- 2865 0031 89 pushw x
- 2866 00000000 OFST: set 0
- 2869 ; 54 TIM1_ARRH = 0x00;//
- 2871 0032 725f5262 clr _TIM1_ARRH
- 2872 ; 55 TIM1_ARRL = 0x10;//
- 2874 0036 35105263 mov _TIM1_ARRL,#16
- 2875 ; 58 TIM1_CNTRH = 0;
- 2877 003a 725f525e clr _TIM1_CNTRH
- 2878 ; 59 TIM1_CNTRL = 0;
- 2880 003e 725f525f clr _TIM1_CNTRL
- 2881 ; 62 TIM1_CR1 = 0x01;
- 2883 0042 35015250 mov _TIM1_CR1,#1
- 2885 0046 2004 jra L3671
- 2886 0048 L7571:
- 2887 ; 66 TIM1_SR1 = 0x00;
- 2889 0048 725f5255 clr _TIM1_SR1
- 2890 004c L3671:
- 2891 ; 63 while(time--)
- 2893 004c 1e01 ldw x,(OFST+1,sp)
- 2894 004e 1d0001 subw x,#1
- 2895 0051 1f01 ldw (OFST+1,sp),x
- 2896 0053 1c0001 addw x,#1
- 2897 0056 a30000 cpw x,#0
- 2898 0059 26ed jrne L7571
- 2899 ; 68 TIM1_CR1 = 0x00;
- 2901 005b 725f5250 clr _TIM1_CR1
- 2902 ; 69 }
- 2905 005f 85 popw x
- 2906 0060 81 ret
- 2946 ; 71 void _delay_50us(int time)
- 2946 ; 72 {
- 2947 switch .text
- 2948 0061 __delay_50us:
- 2950 0061 89 pushw x
- 2951 00000000 OFST: set 0
- 2954 ; 74 TIM1_ARRH = 0x03;
- 2956 0062 35035262 mov _TIM1_ARRH,#3
- 2957 ; 75 TIM1_ARRL = 0x20;
- 2959 0066 35205263 mov _TIM1_ARRL,#32
- 2960 ; 77 TIM1_CNTRH = 0;
- 2962 006a 725f525e clr _TIM1_CNTRH
- 2963 ; 78 TIM1_CNTRL = 0;
- 2965 006e 725f525f clr _TIM1_CNTRL
- 2966 ; 82 TIM1_CR1 |= 1<<0;//使能计数器
- 2968 0072 72105250 bset _TIM1_CR1,#0
- 2970 0076 2004 jra L7002
- 2971 0078 L5002:
- 2972 ; 86 TIM1_SR1 = 0x00;
- 2974 0078 725f5255 clr _TIM1_SR1
- 2975 007c L7002:
- 2976 ; 83 while(time--)
- 2978 007c 1e01 ldw x,(OFST+1,sp)
- 2979 007e 1d0001 subw x,#1
- 2980 0081 1f01 ldw (OFST+1,sp),x
- 2981 0083 1c0001 addw x,#1
- 2982 0086 a30000 cpw x,#0
- 2983 0089 26ed jrne L5002
- 2984 ; 89 TIM1_CR1 &= ~(1<<0);
- 2986 008b 72115250 bres _TIM1_CR1,#0
- 2987 ; 90 }
- 2990 008f 85 popw x
- 2991 0090 81 ret
- 3031 ; 92 void _delay_1ms(int time)
- 3031 ; 93 {
- 3032 switch .text
- 3033 0091 __delay_1ms:
- 3037 ; 95 TIM1_ARRH = 0x3e;
- 3039 0091 353e5262 mov _TIM1_ARRH,#62
- 3040 ; 96 TIM1_ARRL = 0x80;
- 3042 0095 35805263 mov _TIM1_ARRL,#128
- 3043 ; 98 TIM1_CNTRH = 0;
- 3045 0099 725f525e clr _TIM1_CNTRH
- 3046 ; 99 TIM1_CNTRL = 0;
- 3048 009d 725f525f clr _TIM1_CNTRL
- 3049 ; 105 TIM1_CR1 &= ~(1<<0);//使能计数器
- 3051 00a1 72115250 bres _TIM1_CR1,#0
- 3052 ; 109 TIM1_SR1 = 0x00;
- 3054 00a5 725f5255 clr _TIM1_SR1
- 3055 ; 112 TIM1_CR1 &= ~(1<<0);
- 3057 00a9 72115250 bres _TIM1_CR1,#0
- 3058 ; 113 }
- 3061 00ad 81 ret
- 3102 ; 119 void TIM1_PWM_INIT(void)
- 3102 ; 120 {
- 3103 switch .text
- 3104 00ae _TIM1_PWM_INIT:
- 3108 ; 122 PC6_DDR = 1; //PC6配置为输出
- 3110 00ae 721c500c bset _PC6_DDR
- 3111 ; 123 PC6_CR1 = 1; //推挽输出
- 3113 00b2 721c500d bset _PC6_CR1
- 3114 ; 124 PC6_CR2 = 1; //高速输出
- 3116 00b6 721c500e bset _PC6_CR2
- 3117 ; 127 PC7_DDR = 1; //PC7配置为输出
- 3119 00ba 721e500c bset _PC7_DDR
- 3120 ; 128 PC7_CR1 = 1; //推挽输出
- 3122 00be 721e500d bset _PC7_CR1
- 3123 ; 129 PC7_CR2 = 1; //高速输出
- 3125 00c2 721e500e bset _PC7_CR2
- 3126 ; 169 TIM1_CR1 &= ~BIT(0); //关闭TIM1
- 3128 00c6 72115250 bres _TIM1_CR1,#0
- 3129 ; 171 TIM1_PSCRH = 0;
- 3131 00ca 725f5260 clr _TIM1_PSCRH
- 3132 ; 172 TIM1_PSCRL = 0; //不分频8MHz
- 3134 00ce 725f5261 clr _TIM1_PSCRL
- 3135 ; 175 TIM1_ARRH = 0X1f;
- 3137 00d2 351f5262 mov _TIM1_ARRH,#31
- 3138 ; 176 TIM1_ARRL = 0X40; //8MHz/1k = 8000==0x1f 4000--0fa0
- 3140 00d6 35405263 mov _TIM1_ARRL,#64
- 3141 ; 178 TIM1_CR1 |= BIT(7); //使能ARP,边沿对齐,向上计数
- 3143 00da 721e5250 bset _TIM1_CR1,#7
- 3144 ; 179 TIM1_EGR |= BIT(0); //更新TIM1,使PSC有效
- 3146 00de 72105257 bset _TIM1_EGR,#0
- 3147 ; 180 TIM1_EGR |= 0x20; //重新初始化TIM1
- 3149 00e2 721a5257 bset _TIM1_EGR,#5
- 3150 ; 189 TIM1_CCR1H = 0X09; //2500---占空比25/80---13v
- 3152 00e6 35095265 mov _TIM1_CCR1H,#9
- 3153 ; 190 TIM1_CCR1L = 0Xc4;
- 3155 00ea 35c45266 mov _TIM1_CCR1L,#196
- 3156 ; 194 TIM1_CCMR1 = 0X68; //配置TIM1_CH1为PWM1模式输出
- 3158 00ee 35685258 mov _TIM1_CCMR1,#104
- 3159 ; 204 TIM1_CCR2H = 0X09;
- 3161 00f2 35095267 mov _TIM1_CCR2H,#9
- 3162 ; 205 TIM1_CCR2L = 0Xc4; //2500---占空比25/80---13v
- 3164 00f6 35c45268 mov _TIM1_CCR2L,#196
- 3165 ; 209 TIM1_CCMR2 = 0X68; //配置TIM1_CH2为PWM1模式输出
- 3167 00fa 35685259 mov _TIM1_CCMR2,#104
- 3168 ; 219 }
- 3171 00fe 81 ret
- 3197 ; 221 void TG_UP(void)
- 3197 ; 222 {
- 3198 switch .text
- 3199 00ff _TG_UP:
- 3203 ; 223 TIM1_CCER1 |= BIT(0); //Enable TIM1_CH1 channel
- 3205 00ff 7210525c bset _TIM1_CCER1,#0
- 3206 ; 225 TIM1_BKR |= BIT(7); //
- 3208 0103 721e526d bset _TIM1_BKR,#7
- 3209 ; 226 TIM1_CR1 |= BIT(0); //使能TIM1
- 3211 0107 72105250 bset _TIM1_CR1,#0
- 3212 ; 227 }
- 3215 010b 81 ret
- 3241 ; 229 void TG_DW(void)
- 3241 ; 230 {
- 3242 switch .text
- 3243 010c _TG_DW:
- 3247 ; 232 TIM1_CCER1 |= BIT(4); //Enable TIM1_CH2 channel
- 3249 010c 7218525c bset _TIM1_CCER1,#4
- 3250 ; 233 TIM1_BKR |= BIT(7); //
- 3252 0110 721e526d bset _TIM1_BKR,#7
- 3253 ; 234 TIM1_CR1 |= BIT(0); //使能TIM1
- 3255 0114 72105250 bset _TIM1_CR1,#0
- 3256 ; 235 }
- 3259 0118 81 ret
- 3285 ; 237 void TG_STOP(void)
- 3285 ; 238 {
- 3286 switch .text
- 3287 0119 _TG_STOP:
- 3291 ; 239 TIM1_BKR = 7; //
- 3293 0119 3507526d mov _TIM1_BKR,#7
- 3294 ; 240 TIM1_CR1 &= ~BIT(0); //关闭TIM1
- 3296 011d 72115250 bres _TIM1_CR1,#0
- 3297 ; 241 TIM1_CCER1 = 0; //disable TIM1_CH1 channel
- 3299 0121 725f525c clr _TIM1_CCER1
- 3300 ; 242 }
- 3303 0125 81 ret
- 3327 xdef f_TIM1_UPD_IRQ
- 3328 xdef _tmp
- 3329 xdef _TG_STOP
- 3330 xdef _TG_DW
- 3331 xdef _TG_UP
- 3332 xdef _TIM1_PWM_INIT
- 3333 xdef __delay_1ms
- 3334 xdef __delay_50us
- 3335 xdef __delay_us
- 3336 xdef _TIM1_INIT
- 3355 end
|