📄 adc.lst
字号:
25F DE15 RCALL _s_ms
(0233) pBuffer++;
260 5F4F SUBI R20,0xFF
261 4F5F SBCI R21,0xFF
262 94AA DEC R10
263 20AA TST R10
264 F711 BNE 0x0247
265 940C 035A JMP pop_xgsetF03C
_main:
ten_4 --> Y,+5
adc_h1 --> R12
adc_l1 --> R10
adc_h0 --> R12
adc_l0 --> R10
ten_1 --> R20
adc_data1 --> R12
adc_data0 --> R20
ten_2 --> R22
ten_3 --> R10
i --> R20
267 9724 SBIW R28,4
FILE: C:\DOCUME~1\wdd\桌面\模数转换\ADC.c
(0001) #include<iom128v.h>
(0002) #include"1602.h"
(0003) #define uchar unsigned char
(0004) #define uint unsigned int
(0005)
(0006) uchar adc_0[]={"ADC_0: . V"};
(0007) uchar adc_1[]={"ADC_1: . V"};
(0008)
(0009)
(0010)
(0011)
(0012)
(0013) //ADC测试
(0014) //主函数
(0015) main()
(0016) {
(0017) uchar ten_1,ten_2,ten_3,ten_4,i;
(0018) uint adc_data0,adc_l0,adc_h0,adc_data1,adc_l1,adc_h1;
(0019) DDRA=0xff;
268 EF8F LDI R24,0xFF
269 BB8A OUT 0x1A,R24
(0020) PORTA=0x00;
26A 2422 CLR R2
26B BA2B OUT 0x1B,R2
(0021) DDRB=0xff;
26C BB87 OUT 0x17,R24
(0022) DDRD=0xff;
26D BB81 OUT 0x11,R24
(0023) PORTD=0x00;
26E BA22 OUT 0x12,R2
(0024) DDRF=0x00;
26F 9220 0061 STS 0x0061,R2
(0025) PORTF=0x00;
271 9220 0062 STS 0x0062,R2
(0026) DDRG=0xff;
273 9380 0064 STS 0x0064,R24
(0027) PORTG=0xff;
275 9380 0065 STS 0x0065,R24
(0028)
(0029) LcdInit(); //1602初始化
277 DE6D RCALL _LcdInit
(0030) WriteChar(1,2,11,adc_0);
278 E080 LDI R24,0
279 E091 LDI R25,1
27A 839B STD Y+3,R25
27B 838A STD Y+2,R24
27C E08B LDI R24,0xB
27D E090 LDI R25,0
27E 8399 STD Y+1,R25
27F 8388 STD Y+0,R24
280 E022 LDI R18,2
281 E001 LDI R16,1
282 DFA3 RCALL _WriteChar
(0031) WriteChar(2,2,11,adc_1);
283 E08C LDI R24,0xC
284 E091 LDI R25,1
285 839B STD Y+3,R25
286 838A STD Y+2,R24
287 E08B LDI R24,0xB
288 E090 LDI R25,0
289 8399 STD Y+1,R25
28A 8388 STD Y+0,R24
28B E022 LDI R18,2
28C E002 LDI R16,2
28D DF98 RCALL _WriteChar
28E C08B RJMP 0x031A
(0032) while(1)
(0033) {
(0034) //取ADC_0
(0035) ADCSRA=0x00;
28F 2422 CLR R2
290 B826 OUT 0x06,R2
(0036) ADMUX=0x40;
291 E480 LDI R24,0x40
292 B987 OUT 0x07,R24
(0037) ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|0x07; //128分频
293 EE87 LDI R24,0xE7
294 B986 OUT 0x06,R24
(0038) s_ms(500); //延时很重要
295 EF04 LDI R16,0xF4
296 E011 LDI R17,1
297 DDDD RCALL _s_ms
(0039) adc_l0=ADCL;
298 B0A4 IN R10,0x04
299 24BB CLR R11
(0040) adc_h0=ADCH;
29A B0C5 IN R12,0x05
29B 24DD CLR R13
(0041) adc_data0=adc_h0<<8|adc_l0;
29C 01A6 MOVW R20,R12
29D 2F54 MOV R21,R20
29E 2744 CLR R20
29F 294A OR R20,R10
2A0 295B OR R21,R11
(0042) adc_data0=adc_data0>>1;
2A1 9556 LSR R21
2A2 9547 ROR R20
(0043) adc_data0-=35; //修正
2A3 5243 SUBI R20,0x23
2A4 4050 SBCI R21,0
(0044) //取ADC_1
(0045) ADCSRA=0x00;
2A5 2422 CLR R2
2A6 B826 OUT 0x06,R2
(0046) ADMUX=0x41;
2A7 E481 LDI R24,0x41
2A8 B987 OUT 0x07,R24
(0047) ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|0x07; //128分频
2A9 EE87 LDI R24,0xE7
2AA B986 OUT 0x06,R24
(0048) s_ms(500); //延时很重要
2AB EF04 LDI R16,0xF4
2AC E011 LDI R17,1
2AD DDC7 RCALL _s_ms
(0049) adc_l1=ADCL;
2AE B0A4 IN R10,0x04
2AF 24BB CLR R11
(0050) adc_h1=ADCH;
2B0 B0C5 IN R12,0x05
2B1 24DD CLR R13
(0051) adc_data1=adc_h1<<8|adc_l1;
2B2 0116 MOVW R2,R12
2B3 2C32 MOV R3,R2
2B4 2422 CLR R2
2B5 282A OR R2,R10
2B6 283B OR R3,R11
2B7 0161 MOVW R12,R2
(0052) adc_data1=adc_data1>>1;
2B8 94D6 LSR R13
2B9 94C7 ROR R12
(0053) adc_data1-=35; //修正
2BA 01C6 MOVW R24,R12
2BB 9783 SBIW R24,0x23
2BC 016C MOVW R12,R24
(0054)
(0055)
(0056) //显示ADC0
(0057) ten_3=(adc_data0)/100;
2BD E624 LDI R18,0x64
2BE E030 LDI R19,0
2BF 018A MOVW R16,R20
2C0 940E 031F CALL div16u
2C2 2EA0 MOV R10,R16
(0058) ten_2=(adc_data0-(ten_3*100))/10;
2C3 E684 LDI R24,0x64
2C4 9D8A MUL R24,R10
2C5 018A MOVW R16,R20
2C6 1900 SUB R16,R0
2C7 0911 SBC R17,R1
2C8 E02A LDI R18,0xA
2C9 E030 LDI R19,0
2CA 940E 031F CALL div16u
2CC 2F60 MOV R22,R16
(0059) ten_1=adc_data0-(ten_3*100)-ten_2*10;
2CD E684 LDI R24,0x64
2CE 9D8A MUL R24,R10
2CF 011A MOVW R2,R20
2D0 1820 SUB R2,R0
2D1 0831 SBC R3,R1
2D2 E08A LDI R24,0xA
2D3 9F86 MUL R24,R22
2D4 1820 SUB R2,R0
2D5 0831 SBC R3,R1
2D6 2D42 MOV R20,R2
(0060) ten_1+=0x30;
2D7 5D40 SUBI R20,0xD0
(0061) ten_2+=0x30;
2D8 5D60 SUBI R22,0xD0
(0062) ten_3+=0x30;
2D9 2D8A MOV R24,R10
2DA 5D80 SUBI R24,0xD0
2DB 2EA8 MOV R10,R24
(0063) WriteNum(1,8,(ten_3));
2DC 82A8 STD Y+0,R10
2DD E028 LDI R18,0x8
2DE E001 LDI R16,1
2DF DF12 RCALL _WriteNum
(0064) WriteNum(1,10,(ten_2));
2E0 8368 STD Y+0,R22
2E1 E02A LDI R18,0xA
2E2 E001 LDI R16,1
2E3 DF0E RCALL _WriteNum
(0065) WriteNum(1,11,(ten_1));
2E4 8348 STD Y+0,R20
2E5 E02B LDI R18,0xB
2E6 E001 LDI R16,1
2E7 DF0A RCALL _WriteNum
(0066) //显示ADC1
(0067) ten_3=(adc_data1)/100;
2E8 E624 LDI R18,0x64
2E9 E030 LDI R19,0
2EA 0186 MOVW R16,R12
2EB 940E 031F CALL div16u
2ED 2EA0 MOV R10,R16
(0068) ten_2=(adc_data1-(ten_3*100))/10;
2EE E684 LDI R24,0x64
2EF 9D8A MUL R24,R10
2F0 0186 MOVW R16,R12
2F1 1900 SUB R16,R0
2F2 0911 SBC R17,R1
2F3 E02A LDI R18,0xA
2F4 E030 LDI R19,0
2F5 940E 031F CALL div16u
2F7 2F60 MOV R22,R16
(0069) ten_1=adc_data1-(ten_3*100)-ten_2*10;
2F8 E684 LDI R24,0x64
2F9 9D8A MUL R24,R10
2FA 2D4C MOV R20,R12
2FB 1940 SUB R20,R0
2FC 0951 SBC R21,R1
2FD E08A LDI R24,0xA
2FE 9F86 MUL R24,R22
2FF 1940 SUB R20,R0
300 0951 SBC R21,R1
(0070) ten_1+=0x30;
301 5D40 SUBI R20,0xD0
(0071) ten_2+=0x30;
302 5D60 SUBI R22,0xD0
(0072) ten_3+=0x30;
303 2D8A MOV R24,R10
304 5D80 SUBI R24,0xD0
305 2EA8 MOV R10,R24
(0073) WriteNum(2,8,(ten_3));
306 82A8 STD Y+0,R10
307 E028 LDI R18,0x8
308 E002 LDI R16,2
309 DEE8 RCALL _WriteNum
(0074) WriteNum(2,10,(ten_2));
30A 8368 STD Y+0,R22
30B E02A LDI R18,0xA
30C E002 LDI R16,2
30D DEE4 RCALL _WriteNum
(0075) WriteNum(2,11,(ten_1));
30E 8348 STD Y+0,R20
30F E02B LDI R18,0xB
310 E002 LDI R16,2
311 DEE0 RCALL _WriteNum
(0076)
(0077) for(i=0;i<18;i++)
312 2744 CLR R20
313 C004 RJMP 0x0318
(0078) {
(0079) s_ms(60000);
FILE: <library>
314 E600 LDI R16,0x60
315 EE1A LDI R17,0xEA
316 DD5E RCALL _s_ms
317 9543 INC R20
318 3142 CPI R20,0x12
319 F3D0 BCS 0x0314
31A CF74 RJMP 0x028F
31B 9624 ADIW R28,4
31C 9508 RET
mod16u:
31D 9468 BSET 6
31E C001 RJMP xdiv16u
div16u:
31F 94E8 BCLR 6
xdiv16u:
320 92EA ST R14,-Y
321 92FA ST R15,-Y
322 938A ST R24,-Y
323 24EE CLR R14
324 24FF CLR R15
325 E180 LDI R24,0x10
326 0F00 LSL R16
327 1F11 ROL R17
328 1CEE ROL R14
329 1CFF ROL R15
32A 16E2 CP R14,R18
32B 06F3 CPC R15,R19
32C F018 BCS 0x0330
32D 1AE2 SUB R14,R18
32E 0AF3 SBC R15,R19
32F 9503 INC R16
330 958A DEC R24
331 F7A1 BNE 0x0326
332 F416 BRTC 0x0335
333 2D0E MOV R16,R14
334 2D1F MOV R17,R15
335 9189 LD R24,Y+
336 90F9 LD R15,Y+
337 90E9 LD R14,Y+
338 9508 RET
push_xgsetF000:
339 937A ST R23,-Y
33A 936A ST R22,-Y
33B 935A ST R21,-Y
33C 934A ST R20,-Y
33D 9508 RET
pop_xgsetF000:
33E 9149 LD R20,Y+
33F 9159 LD R21,Y+
340 9169 LD R22,Y+
341 9179 LD R23,Y+
342 9508 RET
push_xgsetF00C:
343 937A ST R23,-Y
344 936A ST R22,-Y
345 935A ST R21,-Y
346 934A ST R20,-Y
347 92BA ST R11,-Y
348 92AA ST R10,-Y
349 9508 RET
pop_xgsetF00C:
34A 90A9 LD R10,Y+
34B 90B9 LD R11,Y+
34C 9149 LD R20,Y+
34D 9159 LD R21,Y+
34E 9169 LD R22,Y+
34F 9179 LD R23,Y+
350 9508 RET
push_xgsetF03C:
351 937A ST R23,-Y
352 936A ST R22,-Y
353 935A ST R21,-Y
354 934A ST R20,-Y
355 92DA ST R13,-Y
356 92CA ST R12,-Y
357 92BA ST R11,-Y
358 92AA ST R10,-Y
359 9508 RET
pop_xgsetF03C:
35A 90A9 LD R10,Y+
35B 90B9 LD R11,Y+
35C 90C9 LD R12,Y+
35D 90D9 LD R13,Y+
35E 9149 LD R20,Y+
35F 9159 LD R21,Y+
360 9169 LD R22,Y+
361 9179 LD R23,Y+
362 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -