📄 adc.lis
字号:
.area text(rom, con, rel)
030C .dbfile D:\实验程序\模数转换\adc_1602\ADC.c
030C .dbfunc e main _main fI
030C ; adc_h1 -> <dead>
030C ; adc_l1 -> <dead>
030C ; ten_4 -> <dead>
030C ; adc_h0 -> R12,R13
030C ; adc_l0 -> R10,R11
030C ; adc_data1 -> R20,R21
030C ; ten_1 -> R10
030C ; ten_2 -> R12
030C ; adc_data0 -> R22,R23
030C ; ten_3 -> R14
030C ; i -> R20
.even
030C _main::
030C 2497 sbiw R28,4
030E .dbline -1
030E .dbline 13
030E ; #include<iom16v.h>
030E ; #include <macros.h>
030E ; #include"1602.h"
030E ; #define uchar unsigned char
030E ; #define uint unsigned int
030E ;
030E ; uchar adc_0[]={"ADC_0: . V"};
030E ; uchar adc_1[]={"ADC_1: . V"};
030E ;
030E ; //ADC测试,使用1602显示ADC0和ADC1的值
030E ; //主函数
030E ; main()
030E ; {
030E .dbline 18
030E ; uchar ten_1,ten_2,ten_3,ten_4,i;
030E ; uint adc_data0,adc_l0,adc_h0,adc_data1,adc_l1,adc_h1;
030E ;
030E ; //初始化端口
030E ; DDRA=0xf0;
030E 80EF ldi R24,240
0310 8ABB out 0x1a,R24
0312 .dbline 19
0312 ; PORTA=0x00;
0312 2224 clr R2
0314 2BBA out 0x1b,R2
0316 .dbline 20
0316 ; DDRB=0x00;
0316 27BA out 0x17,R2
0318 .dbline 21
0318 ; DDRD=0xff;
0318 8FEF ldi R24,255
031A 81BB out 0x11,R24
031C .dbline 22
031C ; PORTD=0x00;
031C 22BA out 0x12,R2
031E .dbline 24
031E ; //1602初始化
031E ; LcdInit();
031E C0DE xcall _LcdInit
0320 .dbline 25
0320 ; WriteChar(1,2,11,adc_0);
0320 80E0 ldi R24,<_adc_0
0322 90E0 ldi R25,>_adc_0
0324 9B83 std y+3,R25
0326 8A83 std y+2,R24
0328 8BE0 ldi R24,11
032A 90E0 ldi R25,0
032C 9983 std y+1,R25
032E 8883 std y+0,R24
0330 22E0 ldi R18,2
0332 01E0 ldi R16,1
0334 BADF xcall _WriteChar
0336 .dbline 26
0336 ; WriteChar(2,2,11,adc_1);
0336 80E0 ldi R24,<_adc_1
0338 90E0 ldi R25,>_adc_1
033A 9B83 std y+3,R25
033C 8A83 std y+2,R24
033E 8BE0 ldi R24,11
0340 90E0 ldi R25,0
0342 9983 std y+1,R25
0344 8883 std y+0,R24
0346 22E0 ldi R18,2
0348 02E0 ldi R16,2
034A AFDF xcall _WriteChar
034C 88C0 xjmp L46
034E L45:
034E .dbline 29
034E ;
034E ; while(1)
034E ; {
034E .dbline 31
034E ; //取ADC_0
034E ; ADCSR=0x00;
034E 2224 clr R2
0350 26B8 out 0x6,R2
0352 .dbline 32
0352 ; ADMUX=0x40;
0352 80E4 ldi R24,64
0354 87B9 out 0x7,R24
0356 .dbline 33
0356 ; ADCSR=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|0x07; //128分频,连续转换
0356 87EE ldi R24,231
0358 86B9 out 0x6,R24
035A .dbline 34
035A ; s_ms(500); //延时很重要,给出转换的时间
035A 04EF ldi R16,500
035C 11E0 ldi R17,1
035E 50DE xcall _s_ms
0360 .dbline 35
0360 ; adc_l0=ADCL;
0360 A4B0 in R10,0x4
0362 BB24 clr R11
0364 .dbline 36
0364 ; adc_h0=ADCH;
0364 C5B0 in R12,0x5
0366 DD24 clr R13
0368 .dbline 37
0368 ; adc_data0=adc_h0<<8|adc_l0;
0368 B601 movw R22,R12
036A 762F mov R23,R22
036C 6627 clr R22
036E 6A29 or R22,R10
0370 7B29 or R23,R11
0372 .dbline 38
0372 ; adc_data0=adc_data0>>1; //放弃一位的精度
0372 7695 lsr R23
0374 6795 ror R22
0376 .dbline 39
0376 ; adc_data0-=35; //修正
0376 6352 subi R22,35
0378 7040 sbci R23,0
037A .dbline 51
037A ;
037A ; //取ADC_1
037A ; //ADCSR=0x00;
037A ; //ADMUX=0x41;
037A ; //ADCSR=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|0x07;
037A ; //s_ms(500);
037A ; //adc_l1=ADCL;
037A ; //adc_h1=ADCH;
037A ; //adc_data1=adc_h1<<8|adc_l1;
037A ; //adc_data1=adc_data1>>1;
037A ; //adc_data1-=35;
037A ; adc_data1=500;
037A 44EF ldi R20,500
037C 51E0 ldi R21,1
037E .dbline 54
037E ;
037E ; //显示ADC0
037E ; ten_3=(adc_data0)/100;
037E 24E6 ldi R18,100
0380 30E0 ldi R19,0
0382 8B01 movw R16,R22
0384 0E940000 xcall div16u
0388 E02E mov R14,R16
038A .dbline 55
038A ; ten_2=(adc_data0-(ten_3*100))/10;
038A 84E6 ldi R24,100
038C 8E9D mul R24,R14
038E 8B01 movw R16,R22
0390 0019 sub R16,R0
0392 1109 sbc R17,R1
0394 2AE0 ldi R18,10
0396 30E0 ldi R19,0
0398 0E940000 xcall div16u
039C C02E mov R12,R16
039E .dbline 56
039E ; ten_1=adc_data0-(ten_3*100)-ten_2*10;
039E 84E6 ldi R24,100
03A0 8E9D mul R24,R14
03A2 A62E mov R10,R22
03A4 A018 sub R10,R0
03A6 B108 sbc R11,R1
03A8 8AE0 ldi R24,10
03AA 8C9D mul R24,R12
03AC A018 sub R10,R0
03AE B108 sbc R11,R1
03B0 .dbline 57
03B0 ; WriteNum(1,8,(ten_3));
03B0 2E2C mov R2,R14
03B2 3324 clr R3
03B4 3982 std y+1,R3
03B6 2882 std y+0,R2
03B8 28E0 ldi R18,8
03BA 30E0 ldi R19,0
03BC 01E0 ldi R16,1
03BE 10E0 ldi R17,0
03C0 2CDF xcall _WriteNum
03C2 .dbline 58
03C2 ; WriteNum(1,10,(ten_2));
03C2 2C2C mov R2,R12
03C4 3324 clr R3
03C6 3982 std y+1,R3
03C8 2882 std y+0,R2
03CA 2AE0 ldi R18,10
03CC 30E0 ldi R19,0
03CE 01E0 ldi R16,1
03D0 10E0 ldi R17,0
03D2 23DF xcall _WriteNum
03D4 .dbline 59
03D4 ; WriteNum(1,11,(ten_1));
03D4 2A2C mov R2,R10
03D6 3324 clr R3
03D8 3982 std y+1,R3
03DA 2882 std y+0,R2
03DC 2BE0 ldi R18,11
03DE 30E0 ldi R19,0
03E0 01E0 ldi R16,1
03E2 10E0 ldi R17,0
03E4 1ADF xcall _WriteNum
03E6 .dbline 62
03E6 ;
03E6 ; //显示ADC1
03E6 ; ten_3=(adc_data1)/100;
03E6 24E6 ldi R18,100
03E8 30E0 ldi R19,0
03EA 8A01 movw R16,R20
03EC 0E940000 xcall div16u
03F0 E02E mov R14,R16
03F2 .dbline 63
03F2 ; ten_2=(adc_data1-(ten_3*100))/10;
03F2 84E6 ldi R24,100
03F4 8E9D mul R24,R14
03F6 8A01 movw R16,R20
03F8 0019 sub R16,R0
03FA 1109 sbc R17,R1
03FC 2AE0 ldi R18,10
03FE 30E0 ldi R19,0
0400 0E940000 xcall div16u
0404 C02E mov R12,R16
0406 .dbline 64
0406 ; ten_1=adc_data1-(ten_3*100)-ten_2*10;
0406 84E6 ldi R24,100
0408 8E9D mul R24,R14
040A A42E mov R10,R20
040C A018 sub R10,R0
040E B108 sbc R11,R1
0410 8AE0 ldi R24,10
0412 8C9D mul R24,R12
0414 A018 sub R10,R0
0416 B108 sbc R11,R1
0418 .dbline 65
0418 ; WriteNum(2,8,(ten_3));
0418 2E2C mov R2,R14
041A 3324 clr R3
041C 3982 std y+1,R3
041E 2882 std y+0,R2
0420 28E0 ldi R18,8
0422 30E0 ldi R19,0
0424 02E0 ldi R16,2
0426 10E0 ldi R17,0
0428 F8DE xcall _WriteNum
042A .dbline 66
042A ; WriteNum(2,10,(ten_2));
042A 2C2C mov R2,R12
042C 3324 clr R3
042E 3982 std y+1,R3
0430 2882 std y+0,R2
0432 2AE0 ldi R18,10
0434 30E0 ldi R19,0
0436 02E0 ldi R16,2
0438 10E0 ldi R17,0
043A EFDE xcall _WriteNum
043C .dbline 67
043C ; WriteNum(2,11,(ten_1));
043C 2A2C mov R2,R10
043E 3324 clr R3
0440 3982 std y+1,R3
0442 2882 std y+0,R2
0444 2BE0 ldi R18,11
0446 30E0 ldi R19,0
0448 02E0 ldi R16,2
044A 10E0 ldi R17,0
044C E6DE xcall _WriteNum
044E .dbline 69
044E ;
044E ; for(i=0;i<18;i++)
044E 4427 clr R20
0450 04C0 xjmp L51
0452 L48:
0452 .dbline 70
0452 ; {
0452 .dbline 71
0452 ; s_ms(60000);
0452 00E6 ldi R16,60000
0454 1AEE ldi R17,234
0456 D4DD xcall _s_ms
0458 .dbline 72
0458 ; }
0458 L49:
0458 .dbline 69
0458 4395 inc R20
045A L51:
045A .dbline 69
045A 4231 cpi R20,18
045C D0F3 brlo L48
045E X11:
045E .dbline 73
045E ; }
045E L46:
045E .dbline 28
045E 77CF xjmp L45
0460 X12:
0460 .dbline -2
0460 L44:
0460 .dbline 0 ; func end
0460 2496 adiw R28,4
0462 0895 ret
0464 .dbsym l adc_h1 5 i
0464 .dbsym l adc_l1 5 i
0464 .dbsym l ten_4 5 c
0464 .dbsym r adc_h0 12 i
0464 .dbsym r adc_l0 10 i
0464 .dbsym r adc_data1 20 i
0464 .dbsym r ten_1 10 c
0464 .dbsym r ten_2 12 c
0464 .dbsym r adc_data0 22 i
0464 .dbsym r ten_3 14 c
0464 .dbsym r i 20 c
0464 .dbend
0464 ; }
0464 ;
0464 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -