📄 adc.lis
字号:
.module ADC.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\wdd\桌面\模数转换\ADC.c
0000 .dbfile C:\DOCUME~1\wdd\桌面\模数转换\1602.h
0000 .dbfunc e s_ms _s_ms fV
0000 ; ms -> R16,R17
.even
0000 _s_ms::
0000 .dbline -1
0000 .dbline 9
0000 ; #include<iom128v.h>
0000 ; #include"1602.h"
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; uchar adc_0[]={"ADC_0: . V"};
0000 ; uchar adc_1[]={"ADC_1: . V"};
0000 ;
0000 ;
0000 .dbline 10
0000 ;
0000 02C0 xjmp L5
0002 L2:
0002 .dbline 10
0002 L3:
0002 .dbline 10
0002 0150 subi R16,1
0004 1040 sbci R17,0
0006 L5:
0006 .dbline 10
0006 81E0 ldi R24,1
0008 90E0 ldi R25,0
000A 8017 cp R24,R16
000C 9107 cpc R25,R17
000E C8F3 brlo L2
0010 X0:
0010 .dbline -2
0010 L1:
0010 .dbline 0 ; func end
0010 0895 ret
0012 .dbsym r ms 16 i
0012 .dbend
0012 .dbfunc e busy _busy fV
0012 ; temp -> R20
.even
0012 _busy::
0012 4A93 st -y,R20
0014 .dbline -1
0014 .dbline 15
0014 ;
0014 ;
0014 ; //ADC测试
0014 ; //主函数
0014 ; main()
0014 .dbline 17
0014 ; {
0014 ; uchar ten_1,ten_2,ten_3,ten_4,i;
0014 04EF ldi R16,500
0016 11E0 ldi R17,1
0018 F3DF xcall _s_ms
001A .dbline 18
001A ; uint adc_data0,adc_l0,adc_h0,adc_data1,adc_l1,adc_h1;
001A 80916500 lds R24,101
001E 8E7F andi R24,254
0020 80936500 sts 101,R24
0024 .dbline 19
0024 ; DDRA=0xff;
0024 04EF ldi R16,500
0026 11E0 ldi R17,1
0028 EBDF xcall _s_ms
002A .dbline 20
002A ; PORTA=0x00;
002A 80916500 lds R24,101
002E 8260 ori R24,2
0030 80936500 sts 101,R24
0034 .dbline 21
0034 ; DDRB=0xff;
0034 04EF ldi R16,500
0036 11E0 ldi R17,1
0038 E3DF xcall _s_ms
003A 22C0 xjmp L8
003C L7:
003C .dbline 23
003C ; DDRD=0xff;
003C ; PORTD=0x00;
003C .dbline 24
003C ; DDRF=0x00;
003C 80916500 lds R24,101
0040 8460 ori R24,4
0042 80936500 sts 101,R24
0046 .dbline 25
0046 ; PORTF=0x00;
0046 04EF ldi R16,500
0048 11E0 ldi R17,1
004A DADF xcall _s_ms
004C .dbline 26
004C ; DDRG=0xff;
004C 2224 clr R2
004E 2ABA out 0x1a,R2
0050 .dbline 27
0050 ; PORTG=0xff;
0050 8FEF ldi R24,255
0052 8BBB out 0x1b,R24
0054 .dbline 28
0054 ;
0054 04EF ldi R16,500
0056 11E0 ldi R17,1
0058 D3DF xcall _s_ms
005A .dbline 29
005A ; LcdInit(); //1602初始化
005A 49B3 in R20,0x19
005C 4078 andi R20,128
005E .dbline 30
005E ; WriteChar(1,2,11,adc_0);
005E 04EF ldi R16,500
0060 11E0 ldi R17,1
0062 CEDF xcall _s_ms
0064 .dbline 31
0064 ; WriteChar(2,2,11,adc_1);
0064 8FEF ldi R24,255
0066 8ABB out 0x1a,R24
0068 .dbline 32
0068 ; while(1)
0068 8BBB out 0x1b,R24
006A .dbline 33
006A ; {
006A 04EF ldi R16,500
006C 11E0 ldi R17,1
006E C8DF xcall _s_ms
0070 .dbline 34
0070 ; //取ADC_0
0070 80916500 lds R24,101
0074 8B7F andi R24,251
0076 80936500 sts 101,R24
007A .dbline 35
007A ; ADCSRA=0x00;
007A 04EF ldi R16,500
007C 11E0 ldi R17,1
007E C0DF xcall _s_ms
0080 .dbline 36
0080 ; ADMUX=0x40;
0080 L8:
0080 .dbline 22
0080 4423 tst R20
0082 E1F6 brne L7
0084 X1:
0084 .dbline -2
0084 L6:
0084 .dbline 0 ; func end
0084 4991 ld R20,y+
0086 0895 ret
0088 .dbsym r temp 20 c
0088 .dbend
0088 .dbfunc e writecom _writecom fV
0088 ; com -> R10
.even
0088 _writecom::
0088 AA92 st -y,R10
008A A02E mov R10,R16
008C .dbline -1
008C .dbline 41
008C ; ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|0x07; //128分频
008C ; s_ms(500); //延时很重要
008C ; adc_l0=ADCL;
008C ; adc_h0=ADCH;
008C ; adc_data0=adc_h0<<8|adc_l0;
008C .dbline 42
008C ; adc_data0=adc_data0>>1;
008C C2DF xcall _busy
008E .dbline 43
008E ; adc_data0-=35; //修正
008E 04EF ldi R16,500
0090 11E0 ldi R17,1
0092 B6DF xcall _s_ms
0094 .dbline 44
0094 ; //取ADC_1
0094 80916500 lds R24,101
0098 8E7F andi R24,254
009A 80936500 sts 101,R24
009E .dbline 45
009E ; ADCSRA=0x00;
009E 04EF ldi R16,500
00A0 11E0 ldi R17,1
00A2 AEDF xcall _s_ms
00A4 .dbline 46
00A4 ; ADMUX=0x41;
00A4 80916500 lds R24,101
00A8 8D7F andi R24,253
00AA 80936500 sts 101,R24
00AE .dbline 47
00AE ; ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|0x07; //128分频
00AE 04EF ldi R16,500
00B0 11E0 ldi R17,1
00B2 A6DF xcall _s_ms
00B4 .dbline 48
00B4 ; s_ms(500); //延时很重要
00B4 80916500 lds R24,101
00B8 8460 ori R24,4
00BA 80936500 sts 101,R24
00BE .dbline 49
00BE ; adc_l1=ADCL;
00BE 04EF ldi R16,500
00C0 11E0 ldi R17,1
00C2 9EDF xcall _s_ms
00C4 .dbline 50
00C4 ; adc_h1=ADCH;
00C4 ABBA out 0x1b,R10
00C6 .dbline 51
00C6 ; adc_data1=adc_h1<<8|adc_l1;
00C6 04EF ldi R16,500
00C8 11E0 ldi R17,1
00CA 9ADF xcall _s_ms
00CC .dbline 52
00CC ; adc_data1=adc_data1>>1;
00CC 80916500 lds R24,101
00D0 8B7F andi R24,251
00D2 80936500 sts 101,R24
00D6 .dbline 53
00D6 ; adc_data1-=35; //修正
00D6 04EF ldi R16,500
00D8 11E0 ldi R17,1
00DA 92DF xcall _s_ms
00DC .dbline -2
00DC L10:
00DC .dbline 0 ; func end
00DC A990 ld R10,y+
00DE 0895 ret
00E0 .dbsym r com 10 c
00E0 .dbend
00E0 .dbfunc e LcdInit _LcdInit fV
.even
00E0 _LcdInit::
00E0 .dbline -1
00E0 .dbline 58
00E0 ;
00E0 ;
00E0 ; //显示ADC0
00E0 ; ten_3=(adc_data0)/100;
00E0 ; ten_2=(adc_data0-(ten_3*100))/10;
00E0 .dbline 59
00E0 ; ten_1=adc_data0-(ten_3*100)-ten_2*10;
00E0 08E3 ldi R16,56
00E2 D2DF xcall _writecom
00E4 .dbline 60
00E4 ; ten_1+=0x30;
00E4 08EE ldi R16,1000
00E6 13E0 ldi R17,3
00E8 8BDF xcall _s_ms
00EA .dbline 61
00EA ; ten_2+=0x30;
00EA 01E0 ldi R16,1
00EC CDDF xcall _writecom
00EE .dbline 62
00EE ; ten_3+=0x30;
00EE 00E1 ldi R16,10000
00F0 17E2 ldi R17,39
00F2 86DF xcall _s_ms
00F4 .dbline 63
00F4 ; WriteNum(1,8,(ten_3));
00F4 08EE ldi R16,1000
00F6 13E0 ldi R17,3
00F8 83DF xcall _s_ms
00FA .dbline 64
00FA ; WriteNum(1,10,(ten_2));
00FA 08EE ldi R16,1000
00FC 13E0 ldi R17,3
00FE 80DF xcall _s_ms
0100 .dbline 65
0100 ; WriteNum(1,11,(ten_1));
0100 08EE ldi R16,1000
0102 13E0 ldi R17,3
0104 7DDF xcall _s_ms
0106 .dbline 66
0106 ; //显示ADC1
0106 08EE ldi R16,1000
0108 13E0 ldi R17,3
010A 7ADF xcall _s_ms
010C .dbline 67
010C ; ten_3=(adc_data1)/100;
010C 08EE ldi R16,1000
010E 13E0 ldi R17,3
0110 77DF xcall _s_ms
0112 .dbline 68
0112 ; ten_2=(adc_data1-(ten_3*100))/10;
0112 08EE ldi R16,1000
0114 13E0 ldi R17,3
0116 74DF xcall _s_ms
0118 .dbline 69
0118 ; ten_1=adc_data1-(ten_3*100)-ten_2*10;
0118 02E0 ldi R16,2
011A B6DF xcall _writecom
011C .dbline 70
011C ; ten_1+=0x30;
011C 08EE ldi R16,1000
011E 13E0 ldi R17,3
0120 6FDF xcall _s_ms
0122 .dbline 71
0122 ; ten_2+=0x30;
0122 06E0 ldi R16,6
0124 B1DF xcall _writecom
0126 .dbline 72
0126 ; ten_3+=0x30;
0126 08EE ldi R16,1000
0128 13E0 ldi R17,3
012A 6ADF xcall _s_ms
012C .dbline 73
012C ; WriteNum(2,8,(ten_3));
012C 0CE0 ldi R16,12
012E ACDF xcall _writecom
0130 .dbline 74
0130 ; WriteNum(2,10,(ten_2));
0130 08EE ldi R16,1000
0132 13E0 ldi R17,3
0134 65DF xcall _s_ms
0136 .dbline 75
0136 ; WriteNum(2,11,(ten_1));
0136 08E3 ldi R16,56
0138 A7DF xcall _writecom
013A .dbline 76
013A ;
013A 08EE ldi R16,1000
013C 13E0 ldi R17,3
013E 60DF xcall _s_ms
0140 .dbline -2
0140 L11:
0140 .dbline 0 ; func end
0140 0895 ret
0142 .dbend
0142 .dbfunc e writedata _writedata fV
0142 ; data -> R10
.even
0142 _writedata::
0142 AA92 st -y,R10
0144 A02E mov R10,R16
0146 .dbline -1
0146 .dbline 81
0146 ; for(i=0;i<18;i++)
0146 ; {
0146 ; s_ms(60000);
0146 ; }
0146 ; }
0146 .dbline 82
0146 ; }
0146 65DF xcall _busy
0148 .dbline 83
0148 ;
0148 04EF ldi R16,500
014A 11E0 ldi R17,1
014C 59DF xcall _s_ms
014E .dbline 84
014E ;
014E 80916500 lds R24,101
0152 8160 ori R24,1
0154 80936500 sts 101,R24
0158 .dbline 85
0158 04EF ldi R16,500
015A 11E0 ldi R17,1
015C 51DF xcall _s_ms
015E .dbline 86
015E 80916500 lds R24,101
0162 8D7F andi R24,253
0164 80936500 sts 101,R24
0168 .dbline 87
0168 04EF ldi R16,500
016A 11E0 ldi R17,1
016C 49DF xcall _s_ms
016E .dbline 88
016E 80916500 lds R24,101
0172 8460 ori R24,4
0174 80936500 sts 101,R24
0178 .dbline 89
0178 04EF ldi R16,500
017A 11E0 ldi R17,1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -