📄 adc.lis
字号:
006E .dbline -2
006E L5:
006E 0E940000 xcall pop_gset1
0072 .dbline 0 ; func end
0072 0895 ret
0074 .dbsym r adc_data 20 i
0074 .dbsym r adc_port 16 c
0074 .dbend
0074 .dbfunc e uart_transmit _uart_transmit fV
0074 ; data -> R16
.even
0074 _uart_transmit::
0074 .dbline -1
0074 .dbline 125
0074 ; }
0074 ;
0074 ; void uart_transmit( unsigned char data )
0074 ; {
0074 L10:
0074 .dbline 127
0074 L11:
0074 .dbline 127
0074 ; /* 等待发送缓冲器为空 */
0074 ; while ( !( UCSRA & (1<<UDRE)) );
0074 5D9B sbis 0xb,5
0076 FECF rjmp L10
0078 .dbline 129
0078 ; /* 将数据放入缓冲器,发送数据 */
0078 ; UDR = data;
0078 0CB9 out 0xc,R16
007A .dbline -2
007A L9:
007A .dbline 0 ; func end
007A 0895 ret
007C .dbsym r data 16 c
007C .dbend
007C .dbfunc e delay _delay fV
007C ; j -> y+4
007C ; i -> y+0
007C ; a -> y+12
.even
007C _delay::
007C 0E940000 xcall push_arg4
0080 0E940000 xcall push_gset2
0084 2897 sbiw R28,8
0086 .dbline -1
0086 .dbline 133
0086 ; }
0086 ;
0086 ; void delay(unsigned long a)
0086 ; {
0086 .dbline 135
0086 40E0 ldi R20,0
0088 50E0 ldi R21,0
008A 60E0 ldi R22,0
008C 70E0 ldi R23,0
008E FE01 movw R30,R28
0090 4083 std z+0,R20
0092 5183 std z+1,R21
0094 6283 std z+2,R22
0096 7383 std z+3,R23
0098 12C0 xjmp L17
009A L14:
009A .dbline 135
009A L15:
009A .dbline 135
009A 41E0 ldi R20,1
009C 50E0 ldi R21,0
009E 60E0 ldi R22,0
00A0 70E0 ldi R23,0
00A2 FE01 movw R30,R28
00A4 2080 ldd R2,z+0
00A6 3180 ldd R3,z+1
00A8 4280 ldd R4,z+2
00AA 5380 ldd R5,z+3
00AC 240E add R2,R20
00AE 351E adc R3,R21
00B0 461E adc R4,R22
00B2 571E adc R5,R23
00B4 FE01 movw R30,R28
00B6 2082 std z+0,R2
00B8 3182 std z+1,R3
00BA 4282 std z+2,R4
00BC 5382 std z+3,R5
00BE L17:
00BE .dbline 135
00BE ; unsigned long i,j;
00BE ; for(i = 0; i < a; i ++);
00BE FE01 movw R30,R28
00C0 2484 ldd R2,z+12
00C2 3584 ldd R3,z+13
00C4 4684 ldd R4,z+14
00C6 5784 ldd R5,z+15
00C8 FE01 movw R30,R28
00CA 6080 ldd R6,z+0
00CC 7180 ldd R7,z+1
00CE 8280 ldd R8,z+2
00D0 9380 ldd R9,z+3
00D2 6214 cp R6,R2
00D4 7304 cpc R7,R3
00D6 8404 cpc R8,R4
00D8 9504 cpc R9,R5
00DA F8F2 brlo L14
00DC .dbline 136
00DC ; {for (j = 0; j < a; j ++)
00DC .dbline 136
00DC 40E0 ldi R20,0
00DE 50E0 ldi R21,0
00E0 60E0 ldi R22,0
00E2 70E0 ldi R23,0
00E4 FE01 movw R30,R28
00E6 4483 std z+4,R20
00E8 5583 std z+5,R21
00EA 6683 std z+6,R22
00EC 7783 std z+7,R23
00EE 12C0 xjmp L21
00F0 L18:
00F0 .dbline 137
00F0 .dbline 137
00F0 L19:
00F0 .dbline 136
00F0 41E0 ldi R20,1
00F2 50E0 ldi R21,0
00F4 60E0 ldi R22,0
00F6 70E0 ldi R23,0
00F8 FE01 movw R30,R28
00FA 2480 ldd R2,z+4
00FC 3580 ldd R3,z+5
00FE 4680 ldd R4,z+6
0100 5780 ldd R5,z+7
0102 240E add R2,R20
0104 351E adc R3,R21
0106 461E adc R4,R22
0108 571E adc R5,R23
010A FE01 movw R30,R28
010C 2482 std z+4,R2
010E 3582 std z+5,R3
0110 4682 std z+6,R4
0112 5782 std z+7,R5
0114 L21:
0114 .dbline 136
0114 FE01 movw R30,R28
0116 2484 ldd R2,z+12
0118 3584 ldd R3,z+13
011A 4684 ldd R4,z+14
011C 5784 ldd R5,z+15
011E FE01 movw R30,R28
0120 6480 ldd R6,z+4
0122 7580 ldd R7,z+5
0124 8680 ldd R8,z+6
0126 9780 ldd R9,z+7
0128 6214 cp R6,R2
012A 7304 cpc R7,R3
012C 8404 cpc R8,R4
012E 9504 cpc R9,R5
0130 F8F2 brlo L18
0132 .dbline 138
0132 ; {}
0132 ; }
0132 .dbline -2
0132 L13:
0132 2896 adiw R28,8
0134 0E940000 xcall pop_gset2
0138 2496 adiw R28,4
013A .dbline 0 ; func end
013A 0895 ret
013C .dbsym l j 4 l
013C .dbsym l i 0 l
013C .dbsym l a 12 l
013C .dbend
013C .dbfunc e main _main fV
013C ; volt -> y+0
013C ; adc_tmp -> R10
.even
013C _main::
013C 2497 sbiw R28,4
013E .dbline -1
013E .dbline 142
013E ; }
013E ;
013E ; void main(void)
013E ; { unsigned long volt;
013E .dbline 144
013E ; unsigned char adc_tmp;
013E ; init_devices();
013E 7DDF xcall _init_devices
0140 .dbline 146
0140 ;
0140 ; DDRA = 0x00; //设置A口为不带上拉输入;
0140 2224 clr R2
0142 2ABA out 0x1a,R2
0144 .dbline 147
0144 ; PORTA= 0x00;
0144 2BBA out 0x1b,R2
0146 .dbline 148
0146 ; DDRD = 0xff; //设置C口为输出口;
0146 8FEF ldi R24,255
0148 81BB out 0x11,R24
014A .dbline 149
014A ; PORTD= 0xff;
014A 82BB out 0x12,R24
014C .dbline 151
014C ; //DDRD = 0xff;
014C ; DDRD = (1<<PIN_TXD); //TXD为输出
014C 82E0 ldi R24,2
014E 81BB out 0x11,R24
0150 .dbline 152
0150 ; PORTD =0xFF;
0150 8FEF ldi R24,255
0152 82BB out 0x12,R24
0154 .dbline 155
0154 ;
0154 ;
0154 ; ADMUX = Vref_type; //选择第一通道ADC0;
0154 80E6 ldi R24,96
0156 87B9 out 0x7,R24
0158 .dbline 156
0158 ; ADCSRA = 0x84; //自由转换模式;启动A/D转换;
0158 84E8 ldi R24,132
015A 86B9 out 0x6,R24
015C .dbline 157
015C ; delay(10000); //延时待系统稳定;
015C 00E1 ldi R16,16
015E 17E2 ldi R17,39
0160 20E0 ldi R18,0
0162 30E0 ldi R19,0
0164 8BDF xcall _delay
0166 09C0 xjmp L24
0168 L23:
0168 .dbline 159
0168 .dbline 162
0168 01E0 ldi R16,1
016A 71DF xcall _read_adc
016C A02E mov R10,R16
016E .dbline 164
016E 82DF xcall _uart_transmit
0170 .dbline 165
0170 00E5 ldi R16,80
0172 13EC ldi R17,195
0174 20E0 ldi R18,0
0176 30E0 ldi R19,0
0178 81DF xcall _delay
017A .dbline 168
017A L24:
017A .dbline 158
017A F6CF xjmp L23
017C X0:
017C .dbline -2
017C L22:
017C 2496 adiw R28,4
017E .dbline 0 ; func end
017E 0895 ret
0180 .dbsym l volt 0 l
0180 .dbsym r adc_tmp 10 c
0180 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -