timer1.ls 10 KB

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