⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc.lis

📁 单片机A/D模数转换 C语言编写 源程序。
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00BA                   .dbend
 00BA                   .dbfunc e Init_adc _Init_adc fV
                        .even
 00BA           _Init_adc::
 00BA                   .dbline -1
 00BA                   .dbline 133
 00BA           ; }
 00BA           ; /************************************************
 00BA           ; 函 数 名:    adc_Init()
 00BA           ; 功    能:    ADC初始化函数
 00BA           ; 输入参数:     /
 00BA           ; 输出参数:    /
 00BA           ; 描    述:    设置片内模数转换器ADC的一些参数
 00BA           ; ***********************************************/
 00BA           ; void Init_adc(void)
 00BA           ; {
 00BA                   .dbline 134
 00BA           ;       ADMUX = 0b11000000; //内参2.56V参考电压源、右对齐、选择0通道(单输入,无增益)。
 00BA 80EC              ldi R24,192
 00BC 87B9              out 0x7,R24
 00BE                   .dbline 136
 00BE           ;       //多工选择寄存器ADMUX
 00BE           ;       ADCSRA = 0b11101011; //ADC使能、启动转换、自由转换、中断使能、8分频。
 00BE 8BEE              ldi R24,235
 00C0 86B9              out 0x6,R24
 00C2                   .dbline -2
 00C2           L23:
 00C2                   .dbline 0 ; func end
 00C2 0895              ret
 00C4                   .dbend
 00C4                   .dbfunc e adc_convert _adc_convert fi
 00C4           ;          temp1 -> R18,R19
 00C4           ;          temp2 -> R16,R17
                        .even
 00C4           _adc_convert::
 00C4                   .dbline -1
 00C4                   .dbline 147
 00C4           ;       //控制和状态寄存器A,ADCSRA
 00C4           ; }
 00C4           ; /************************************************
 00C4           ; 函 数 名:    adc_convert()
 00C4           ; 功    能:    A/D转换函数
 00C4           ; 输入参数:     /
 00C4           ; 输出参数:    /
 00C4           ; 描    述:    读取采样获得的10位数据
 00C4           ; ***********************************************/
 00C4           ; uint adc_convert(void)
 00C4           ; {
 00C4                   .dbline 149
 00C4           ;       uint temp1,temp2;
 00C4           ;       temp1 = (uint)ADCL;        //必须先读低字节
 00C4 24B1              in R18,0x4
 00C6 3327              clr R19
 00C8                   .dbline 150
 00C8           ;       temp2 = (uint)ADCH;
 00C8 05B1              in R16,0x5
 00CA 1127              clr R17
 00CC                   .dbline 151
 00CC           ;       temp2 = (temp2<<8) + temp1;    //左移8位
 00CC 1801              movw R2,R16
 00CE 322C              mov R3,R2
 00D0 2224              clr R2
 00D2 220E              add R2,R18
 00D4 331E              adc R3,R19
 00D6 8101              movw R16,R2
 00D8                   .dbline 152
 00D8           ;       return (temp2);
 00D8                   .dbline -2
 00D8           L24:
 00D8                   .dbline 0 ; func end
 00D8 0895              ret
 00DA                   .dbsym r temp1 18 i
 00DA                   .dbsym r temp2 16 i
 00DA                   .dbend
 00DA                   .dbfunc e process _process fV
 00DA           ;              j -> R22
 00DA           ;              i -> R20,R21
                        .even
 00DA           _process::
 00DA 00D0              rcall push_gset2
 00DC 622F              mov R22,R18
 00DE A801              movw R20,R16
 00E0                   .dbline -1
 00E0                   .dbline 163
 00E0           ; }
 00E0           ; /********************************************************
 00E0           ;   子程序名:   process()
 00E0           ;   输入参数:   数据处理函数
 00E0           ;   输出参数:   /
 00E0           ;   描    述:   
 00E0           ;   数据格式:   
 00E0           ;   输出数据:   数据处理函数,将转换的值转换为4位BCD码。
 00E0           ; ********************************************************/
 00E0           ; void process (uint i ,uchar j)
 00E0           ; {
 00E0                   .dbline 164
 00E0           ;        if (0 == j)
 00E0 6623              tst R22
 00E2 09F0              breq X0
 00E4 2AC0              rjmp L26
 00E6           X0:
 00E6                   .dbline 165
 00E6           ;        {
 00E6                   .dbline 166
 00E6           ;            buf[10] = i/1000 + '0';   i=i%1000;
 00E6 28EE              ldi R18,1000
 00E8 33E0              ldi R19,3
 00EA 8A01              movw R16,R20
 00EC 00D0              rcall div16u
 00EE C801              movw R24,R16
 00F0 C096              adiw R24,48
 00F2 80930A00          sts _buf+10,R24
 00F6                   .dbline 166
 00F6 28EE              ldi R18,1000
 00F8 33E0              ldi R19,3
 00FA 8A01              movw R16,R20
 00FC 00D0              rcall mod16u
 00FE A801              movw R20,R16
 0100                   .dbline 167
 0100           ;                buf[12] = i/100 + '0';   i=i%100;
 0100 24E6              ldi R18,100
 0102 30E0              ldi R19,0
 0104 00D0              rcall div16u
 0106 C801              movw R24,R16
 0108 C096              adiw R24,48
 010A 80930C00          sts _buf+12,R24
 010E                   .dbline 167
 010E 24E6              ldi R18,100
 0110 30E0              ldi R19,0
 0112 8A01              movw R16,R20
 0114 00D0              rcall mod16u
 0116 A801              movw R20,R16
 0118                   .dbline 168
 0118           ;                buf[13] = i/10 + '0';   i=i%10;
 0118 2AE0              ldi R18,10
 011A 30E0              ldi R19,0
 011C 00D0              rcall div16u
 011E C801              movw R24,R16
 0120 C096              adiw R24,48
 0122 80930D00          sts _buf+13,R24
 0126                   .dbline 168
 0126 2AE0              ldi R18,10
 0128 30E0              ldi R19,0
 012A 8A01              movw R16,R20
 012C 00D0              rcall mod16u
 012E A801              movw R20,R16
 0130                   .dbline 169
 0130           ;                buf[14] = i + '0';
 0130 CA01              movw R24,R20
 0132 C096              adiw R24,48
 0134 80930E00          sts _buf+14,R24
 0138                   .dbline 170
 0138           ;        }
 0138 29C0              rjmp L27
 013A           L26:
 013A                   .dbline 172
 013A                   .dbline 173
 013A 28EE              ldi R18,1000
 013C 33E0              ldi R19,3
 013E 8A01              movw R16,R20
 0140 00D0              rcall div16u
 0142 C801              movw R24,R16
 0144 C096              adiw R24,48
 0146 80931A00          sts _buf+26,R24
 014A                   .dbline 173
 014A 28EE              ldi R18,1000
 014C 33E0              ldi R19,3
 014E 8A01              movw R16,R20
 0150 00D0              rcall mod16u
 0152 A801              movw R20,R16
 0154                   .dbline 174
 0154 24E6              ldi R18,100
 0156 30E0              ldi R19,0
 0158 00D0              rcall div16u
 015A C801              movw R24,R16
 015C C096              adiw R24,48
 015E 80931C00          sts _buf+28,R24
 0162                   .dbline 174
 0162 24E6              ldi R18,100
 0164 30E0              ldi R19,0
 0166 8A01              movw R16,R20
 0168 00D0              rcall mod16u
 016A A801              movw R20,R16
 016C                   .dbline 175
 016C 2AE0              ldi R18,10
 016E 30E0              ldi R19,0
 0170 00D0              rcall div16u
 0172 C801              movw R24,R16
 0174 C096              adiw R24,48
 0176 80931D00          sts _buf+29,R24
 017A                   .dbline 175
 017A 2AE0              ldi R18,10
 017C 30E0              ldi R19,0
 017E 8A01              movw R16,R20
 0180 00D0              rcall mod16u
 0182 A801              movw R20,R16
 0184                   .dbline 176
 0184 CA01              movw R24,R20
 0186 C096              adiw R24,48
 0188 80931E00          sts _buf+30,R24
 018C                   .dbline 177
 018C           L27:
 018C                   .dbline -2
 018C           L25:
 018C 00D0              rcall pop_gset2
 018E                   .dbline 0 ; func end
 018E 0895              ret
 0190                   .dbsym r j 22 c
 0190                   .dbsym r i 20 i
 0190                   .dbend
                        .area lit(rom, con, rel)
 0000           L37:
 0000 2020202077656C636F6D652120202020  .byte 32,32,32,32,'w,'e,'l,'c,'o,'m,'e,33,32,32,32,32
 0010 20207777772E6974736E2E636E212020  .byte 32,32,'w,'w,'w,46,'i,'t,'s,'n,46,'c,'n,33,32,32
 0020 00                .byte 0
                        .area text(rom, con, rel)
 0190                   .dbfile E:\iccavr代码\实验7_片内模数转换器adc\adc.c
 0190                   .dbfunc e main _main fV
 0190           ;        buflogo -> y+0
                        .even
 0190           _main::
 0190 A197              sbiw R28,33
 0192                   .dbline -1
 0192                   .dbline 181
 0192           ;        else
 0192           ;        {
 0192           ;            buf[26] = i/1000 + '0';   i=i%1000;
 0192           ;                buf[28] = i/100 + '0';   i=i%100;
 0192           ;                buf[29] = i/10 + '0';   i=i%10;
 0192           ;                buf[30] = i + '0';
 0192           ;        }
 0192           ; }
 0192           ; //*****************主程序**********************************
 0192           ; void main (void)
 0192           ; {
 0192                   .dbline 182
 0192           ;        uchar buflogo[]="    welcome!      www.itsn.cn!  ";
 0192 80E0              ldi R24,<L37
 0194 90E0              ldi R25,>L37
 0196 FE01              movw R30,R28
 0198 01E2              ldi R16,33
 019A 10E0              ldi R17,0
 019C FA93              st -y,R31
 019E EA93              st -y,R30
 01A0 9A93              st -y,R25
 01A2 8A93              st -y,R24
 01A4 00D0              rcall asgncblk
 01A6                   .dbline 184
 01A6           ; 
 01A6           ;      Init_mcu();       //单片机初始化
 01A6 82DF              rcall _Init_mcu
 01A8                   .dbline 185
 01A8           ;        Init_lcd();        //lcd初始化
 01A8 58DF              rcall _Init_lcd
 01AA                   .dbline 186
 01AA           ;        Init_adc();        //adc初始化
 01AA 87DF              rcall _Init_adc
 01AC                   .dbline 188
 01AC           ;        
 01AC           ;        display_lcd(buflogo);  //显示LOGO
 01AC 8E01              movw R16,R28
 01AE 60DF              rcall _display_lcd
 01B0                   .dbline 189
 01B0           ;        DelaymS(300);    //长延迟
 01B0 0CE2              ldi R16,300
 01B2 11E0              ldi R17,1
 01B4 25DF              rcall _DelaymS
 01B6                   .dbline 190
 01B6           ;        display_lcd(buf);  //刷新显示一屏
 01B6 00E0              ldi R16,<_buf
 01B8 10E0              ldi R17,>_buf
 01BA 5ADF              rcall _display_lcd
 01BC 35C0              rjmp L39
 01BE           L38:
 01BE                   .dbline 193
 01BE                   .dbline 196
 01BE 80EC              ldi R24,192
 01C0 87B9              out 0x7,R24
 01C2                   .dbline 197
 01C2 8BEE              ldi R24,235
 01C4 86B9              out 0x6,R24
 01C6                   .dbline 198
 01C6 05E0              ldi R16,5
 01C8 10E0              ldi R17,0
 01CA 1ADF              rcall _DelaymS
 01CC                   .dbline 199
 01CC 7BDF              rcall _adc_convert
 01CE 1801              movw R2,R16
 01D0 2227              clr R18
 01D2 05E0              ldi R16,5
 01D4 10E0              ldi R17,0
 01D6 2F93              push R18
 01D8 3F93              push R19
 01DA 9101              movw R18,R2
 01DC 00D0              rcall empy16s
 01DE 1801              movw R2,R16
 01E0 3F91              pop R19
 01E2 2F91              pop R18
 01E4 3694              lsr R3
 01E6 2794              ror R2
 01E8 8101              movw R16,R2
 01EA 77DF              rcall _process
 01EC                   .dbline 200
 01EC 8BE6              ldi R24,107
 01EE 86B9              out 0x6,R24
 01F0                   .dbline 202
 01F0 81EC              ldi R24,193
 01F2 87B9              out 0x7,R24
 01F4                   .dbline 203
 01F4 8BEE              ldi R24,235
 01F6 86B9              out 0x6,R24
 01F8                   .dbline 204
 01F8 05E0              ldi R16,5
 01FA 10E0              ldi R17,0
 01FC 01DF              rcall _DelaymS
 01FE                   .dbline 205
 01FE 62DF              rcall _adc_convert
 0200 1801              movw R2,R16
 0202 21E0              ldi R18,1
 0204 05E0              ldi R16,5
 0206 10E0              ldi R17,0
 0208 2F93              push R18
 020A 3F93              push R19
 020C 9101              movw R18,R2
 020E 00D0              rcall empy16s
 0210 1801              movw R2,R16
 0212 3F91              pop R19
 0214 2F91              pop R18
 0216 3694              lsr R3
 0218 2794              ror R2
 021A 8101              movw R16,R2
 021C 5EDF              rcall _process
 021E                   .dbline 206
 021E 8BE6              ldi R24,107
 0220 86B9              out 0x6,R24
 0222                   .dbline 208
 0222 00E0              ldi R16,<_buf
 0224 10E0              ldi R17,>_buf
 0226 24DF              rcall _display_lcd
 0228                   .dbline 209
 0228           L39:
 0228                   .dbline 192
 0228 CACF              rjmp L38
 022A           X1:
 022A                   .dbline -2
 022A           L36:
 022A A196              adiw R28,33
 022C                   .dbline 0 ; func end
 022C 0895              ret
 022E                   .dbsym l buflogo 0 A[33:33]c
 022E                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -