📄 adc.ls
字号:
1 ; C Compiler for ST7 (COSMIC Software)
2 ; Generator V4.4a - 17 Dec 2001
3 ; Optimizer V4.2g - 21 Dec 2001
65 ; 44 u16 ADC_Get_10bits(u8 Channel)
65 ; 45 {
66 .text: section .text,new
68 xref.b _ADC_Get_10bits$L
69 0000 _ADC_Get_10bits:
71 0000 b700 ld _ADC_Get_10bits$L,a
73 ; 49 result = 0;
75 0002 3ffe clr _ADC_Get_10bits$L-2
76 0004 3fff clr _ADC_Get_10bits$L-1
77 ; 51 ADCDRH; // clear EOC bit in case of...
79 0006 b600 ld a,_ADCDRH
80 ; 54 while (!ValBit(ADCCSR,EOC)); // wait till end of conversion
83 0008 b600 ld a,_ADC_Get_10bits$L
84 000a b700 ld _ADCCSR,a
86 000c L34:
89 000c 0f00fd btjf _ADCCSR,#7,L34
90 ; 55 ADCDRH; // and ignore 1st result
92 000f b600 ld a,_ADCDRH
93 ; 57 for (i=0;i<=7;i++) // take 8 samples
95 0011 3ffd clr _ADC_Get_10bits$L-3
96 0013 L75:
97 ; 59 while (!ValBit(ADCCSR,EOC)); // wait till end of conversion
99 0013 0f00fd btjf _ADCCSR,#7,L75
100 ; 60 result += ADCDRL;
102 0016 b600 ld a,_ADCDRL
103 0018 bbff add a,_ADC_Get_10bits$L-1
104 001a b7ff ld _ADC_Get_10bits$L-1,a
105 001c 2402 jrnc L6
106 001e 3cfe inc _ADC_Get_10bits$L-2
107 0020 L6:
108 ; 61 result += (u16)(ADCDRH << 2); // clear EOC bit
110 0020 b600 ld a,_ADCDRH
111 0022 ae04 ld x,#4
112 0024 42 mul x,a
113 0025 b7fc ld _ADC_Get_10bits$L-4,a
114 0027 bffb ld _ADC_Get_10bits$L-5,x
115 0029 b6ff ld a,_ADC_Get_10bits$L-1
116 002b bbfc add a,_ADC_Get_10bits$L-4
117 002d b7ff ld _ADC_Get_10bits$L-1,a
118 002f b6fe ld a,_ADC_Get_10bits$L-2
119 0031 b9fb adc a,_ADC_Get_10bits$L-5
120 0033 b7fe ld _ADC_Get_10bits$L-2,a
121 ; 57 for (i=0;i<=7;i++) // take 8 samples
123 0035 3cfd inc _ADC_Get_10bits$L-3
126 0037 b6fd ld a,_ADC_Get_10bits$L-3
127 0039 a108 cp a,#8
128 003b 25d6 jrult L75
129 ; 64 ClrBit(ADCCSR,ADON); // shutdown ADC peripheral
131 003d 1900 bres _ADCCSR,#4
132 ; 66 result = result >> 3; // div/8 -> smooth result
134 003f 34fe srl _ADC_Get_10bits$L-2
135 0041 36ff rrc _ADC_Get_10bits$L-1
136 0043 34fe srl _ADC_Get_10bits$L-2
137 0045 36ff rrc _ADC_Get_10bits$L-1
138 0047 34fe srl _ADC_Get_10bits$L-2
139 0049 36ff rrc _ADC_Get_10bits$L-1
140 ; 67 return (result);
142 004b b6ff ld a,_ADC_Get_10bits$L-1
143 004d befe ld x,_ADC_Get_10bits$L-2
146 004f 81 ret
199 ; 79 u8 ADC_Get_8bits(u8 Channel)
199 ; 80 {
200 .text: section .text,new
202 xref.b _ADC_Get_8bits$L
203 0000 _ADC_Get_8bits:
205 0000 b700 ld _ADC_Get_8bits$L,a
207 ; 84 result = 0;
209 0002 3ffd clr _ADC_Get_8bits$L-3
210 0004 3ffe clr _ADC_Get_8bits$L-2
211 ; 86 ADCDRH; // clear EOC bit in case of...
213 0006 b600 ld a,_ADCDRH
214 ; 89 while (!ValBit(ADCCSR,EOC)); // wait till end of conversion
217 0008 b600 ld a,_ADC_Get_8bits$L
218 000a b700 ld _ADCCSR,a
220 000c L511:
223 000c 0f00fd btjf _ADCCSR,#7,L511
224 ; 90 ADCDRH; // and ignore 1st result
226 000f b600 ld a,_ADCDRH
227 ; 92 for (i=0;i<=7;i++) // take 8 samples
229 0011 3fff clr _ADC_Get_8bits$L-1
230 0013 L131:
231 ; 94 while (!ValBit(ADCCSR,EOC)); // wait till end of conversion
233 0013 0f00fd btjf _ADCCSR,#7,L131
234 ; 95 result += ADCDRH; // clear EOC bit
236 0016 b600 ld a,_ADCDRH
237 0018 bbfe add a,_ADC_Get_8bits$L-2
238 001a b7fe ld _ADC_Get_8bits$L-2,a
239 001c 2402 jrnc L21
240 001e 3cfd inc _ADC_Get_8bits$L-3
241 0020 L21:
242 ; 92 for (i=0;i<=7;i++) // take 8 samples
244 0020 3cff inc _ADC_Get_8bits$L-1
247 0022 b6ff ld a,_ADC_Get_8bits$L-1
248 0024 a108 cp a,#8
249 0026 25eb jrult L131
250 ; 98 ClrBit(ADCCSR,ADON); // shutdown ADC peripheral
252 0028 1900 bres _ADCCSR,#4
253 ; 100 result = result >> 3; // div/8 -> smooth result
255 002a 34fd srl _ADC_Get_8bits$L-3
256 002c 36fe rrc _ADC_Get_8bits$L-2
257 002e 34fd srl _ADC_Get_8bits$L-3
258 0030 36fe rrc _ADC_Get_8bits$L-2
259 0032 34fd srl _ADC_Get_8bits$L-3
260 0034 36fe rrc _ADC_Get_8bits$L-2
261 ; 101 return ((u8)result);
263 0036 b6fe ld a,_ADC_Get_8bits$L-2
266 0038 81 ret
289 ; 112 u8 Get_RV1(void)
289 ; 113 {
290 .text: section .text,new
291 0000 _Get_RV1:
294 ; 114 return(ADC_Get_8bits(CONVERT_AIN13));
296 0000 a61d ld a,#29
300 0002 cc0000 jp _ADC_Get_8bits
323 ; 117 u8 Get_RV2(void)
323 ; 118 {
324 .text: section .text,new
325 0000 _Get_RV2:
328 ; 119 return(ADC_Get_8bits(CONVERT_AIN11));
330 0000 a61b ld a,#27
334 0002 cc0000 jp _ADC_Get_8bits
357 ; 122 u8 Get_RV3(void)
357 ; 123 {
358 .text: section .text,new
359 0000 _Get_RV3:
362 ; 124 return(ADC_Get_8bits(CONVERT_AIN7));
364 0000 a617 ld a,#23
368 0002 cc0000 jp _ADC_Get_8bits
392 ; 138 BOOL Get_Temperature(void)
392 ; 139 {
393 .text: section .text,new
394 0000 _Get_Temperature:
397 ; 140 if (ADC_Get_8bits(CONVERT_AIN0) >= NTC_THRESHOLD) return(TRUE);
399 0000 a610 ld a,#16
400 0002 cd0000 call _ADC_Get_8bits
402 0005 a16e cp a,#110
403 0007 2503 jrult L571
406 0009 a601 ld a,#1
409 000b 81 ret
410 000c L571:
411 ; 141 else if ( (ADC_Get_8bits(CONVERT_AIN0) >= (NTC_THRESHOLD - NTC_HYSTERIS)) // wait for the temperature
411 ; 142 && ValBit(Power_Motor_Status,OverHeat) ) return(TRUE); // to go back to normal operation
413 000c a610 ld a,#16
414 000e cd0000 call _ADC_Get_8bits
416 0011 a166 cp a,#102
417 0013 250a jrult L102
419 0015 c60000 ld a,_Power_Motor_Status
420 0018 a501 bcp a,#1
421 001a 2703 jreq L102
424 001c a601 ld a,#1
427 001e 81 ret
428 001f L102:
429 ; 143 else return(FALSE);
431 001f 4f clr a
434 0020 81 ret
458 ; 158 BOOL Get_HVBus(void)
458 ; 159 {
459 .text: section .text,new
460 0000 _Get_HVBus:
463 ; 160 if (ADC_Get_10bits(CONVERT_AIN1) >= HVBUS_THRESHOLD) return(TRUE);
465 0000 a611 ld a,#17
466 0002 cd0000 call _ADC_Get_10bits
468 0005 a0e8 sub a,#232
469 0007 9f ld a,x
470 0008 a203 sbc a,#3
471 000a 2503 jrult L512
474 000c a601 ld a,#1
477 000e 81 ret
478 000f L512:
479 ; 161 else if ( (ADC_Get_10bits(CONVERT_AIN1) >= (HVBUS_THRESHOLD - HVBUS_HYSTERIS)) // wait for the voltage
479 ; 162 && ValBit(Power_Motor_Status,OverVoltage) ) return(TRUE); // to go back to normal operation
481 000f a611 ld a,#17
482 0011 cd0000 call _ADC_Get_10bits
484 0014 a0d5 sub a,#213
485 0016 9f ld a,x
486 0017 a203 sbc a,#3
487 0019 250a jrult L122
489 001b c60000 ld a,_Power_Motor_Status
490 001e a504 bcp a,#4
491 0020 2703 jreq L122
494 0022 a601 ld a,#1
497 0024 81 ret
498 0025 L122:
499 ; 163 else return(FALSE);
501 0025 4f clr a
504 0026 81 ret
516 xref _Power_Motor_Status
517 xdef _Get_HVBus
518 xdef _Get_Temperature
519 xdef _Get_RV3
520 xdef _Get_RV2
521 xdef _Get_RV1
522 xdef _ADC_Get_8bits
523 xdef _ADC_Get_10bits
524 xref.b _ADCDRL
525 xref.b _ADCDRH
526 xref.b _ADCCSR
545 end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -