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

📄 adc.lis

📁 AVR mega16系列单片机开发程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 019A                   .dbline 75
 019A           ;      case 5:LCD_write_char( X, 1, '5'); break;  
 019A 85E3              ldi R24,53
 019C 8883              std y+0,R24
 019E 21E0              ldi R18,1
 01A0 042F              mov R16,R20
 01A2 0E940000          xcall _LCD_write_char
 01A6                   .dbline 75
 01A6 1BC0              xjmp L13
 01A8           L21:
 01A8                   .dbline 76
 01A8           ;      case 6:LCD_write_char( X, 1, '6'); break;  
 01A8 86E3              ldi R24,54
 01AA 8883              std y+0,R24
 01AC 21E0              ldi R18,1
 01AE 042F              mov R16,R20
 01B0 0E940000          xcall _LCD_write_char
 01B4                   .dbline 76
 01B4 14C0              xjmp L13
 01B6           L22:
 01B6                   .dbline 77
 01B6           ;      case 7:LCD_write_char( X, 1, '7'); break;  
 01B6 87E3              ldi R24,55
 01B8 8883              std y+0,R24
 01BA 21E0              ldi R18,1
 01BC 042F              mov R16,R20
 01BE 0E940000          xcall _LCD_write_char
 01C2                   .dbline 77
 01C2 0DC0              xjmp L13
 01C4           L23:
 01C4                   .dbline 78
 01C4           ;      case 8:LCD_write_char( X, 1, '8'); break;
 01C4 88E3              ldi R24,56
 01C6 8883              std y+0,R24
 01C8 21E0              ldi R18,1
 01CA 042F              mov R16,R20
 01CC 0E940000          xcall _LCD_write_char
 01D0                   .dbline 78
 01D0 06C0              xjmp L13
 01D2           L24:
 01D2                   .dbline 79
 01D2           ;      case 9:LCD_write_char( X, 1, '9'); break; 
 01D2 89E3              ldi R24,57
 01D4 8883              std y+0,R24
 01D6 21E0              ldi R18,1
 01D8 042F              mov R16,R20
 01DA 0E940000          xcall _LCD_write_char
 01DE                   .dbline 79
 01DE           L12:
 01DE           L13:
 01DE                   .dbline -2
 01DE           L11:
 01DE 2196              adiw R28,1
 01E0 0E940000          xcall pop_gset2
 01E4                   .dbline 0 ; func end
 01E4 0895              ret
 01E6                   .dbsym r data 22 c
 01E6                   .dbsym r X 20 c
 01E6                   .dbend
 01E6                   .dbfunc e Analog_transfor _Analog_transfor fV
 01E6           ;             x5 -> R20,R21
 01E6           ;             x4 -> R22,R23
 01E6           ;             x3 -> R22,R23
 01E6           ;             x2 -> R22,R23
 01E6           ;             x1 -> R22,R23
 01E6           ;         value2 -> R20,R21
 01E6           ;         result -> R20,R21
                        .even
 01E6           _Analog_transfor::
 01E6 0E940000          xcall push_gset2
 01EA 2597              sbiw R28,5
 01EC                   .dbline -1
 01EC                   .dbline 85
 01EC           ;     }
 01EC           ; } 
 01EC           ;     
 01EC           ; 
 01EC           ; void Analog_transfor(void)                             //在液晶的第二行显示对应的输入模拟电压值
 01EC           ; {
 01EC                   .dbline 89
 01EC           ;  uint value2;
 01EC           ;  uint result;
 01EC           ;  uint x1,x2,x3,x4,x5;
 01EC           ;  value2 = value;                                 //由于选择的转化方式为右对齐,因此在此处
 01EC 40910000          lds R20,_value
 01F0 50910100          lds R21,_value+1
 01F4                   .dbline 91
 01F4           ;                                                       //需要右移2位以取得准确的数字量。                                                                   
 01F4           ;  result=(value2*2.56/1024)*10000;                               //以下为数字处理部分,可作为AD转换的通用处理模块
 01F4 00E0              ldi R16,<L28
 01F6 10E0              ldi R17,>L28
 01F8 0E940000          xcall lpm32
 01FC 3A93              st -y,R19
 01FE 2A93              st -y,R18
 0200 1A93              st -y,R17
 0202 0A93              st -y,R16
 0204 00E0              ldi R16,<L29
 0206 10E0              ldi R17,>L29
 0208 0E940000          xcall lpm32
 020C 3A93              st -y,R19
 020E 2A93              st -y,R18
 0210 1A93              st -y,R17
 0212 0A93              st -y,R16
 0214 00E0              ldi R16,<L30
 0216 10E0              ldi R17,>L30
 0218 0E940000          xcall lpm32
 021C 3A93              st -y,R19
 021E 2A93              st -y,R18
 0220 1A93              st -y,R17
 0222 0A93              st -y,R16
 0224 8A01              movw R16,R20
 0226 1695              lsr R17
 0228 0795              ror R16
 022A 0E940000          xcall int2fp
 022E 3A93              st -y,R19
 0230 2A93              st -y,R18
 0232 1A93              st -y,R17
 0234 0A93              st -y,R16
 0236 0E940000          xcall empy32fs
 023A 8A01              movw R16,R20
 023C 0170              andi R16,1
 023E 1070              andi R17,0
 0240 0E940000          xcall int2fp
 0244 3A93              st -y,R19
 0246 2A93              st -y,R18
 0248 1A93              st -y,R17
 024A 0A93              st -y,R16
 024C 0E940000          xcall add32fs
 0250 0E940000          xcall empy32fs
 0254 00E0              ldi R16,<L31
 0256 10E0              ldi R17,>L31
 0258 0E940000          xcall lpm32
 025C 3A93              st -y,R19
 025E 2A93              st -y,R18
 0260 1A93              st -y,R17
 0262 0A93              st -y,R16
 0264 0E940000          xcall div32fs
 0268 0E940000          xcall empy32f
 026C FE01              movw R30,R28
 026E 0183              std z+1,R16
 0270 1283              std z+2,R17
 0272 2383              std z+3,R18
 0274 3483              std z+4,R19
 0276 FE01              movw R30,R28
 0278 2180              ldd R2,z+1
 027A 3280              ldd R3,z+2
 027C 4380              ldd R4,z+3
 027E 5480              ldd R5,z+4
 0280 5A92              st -y,R5
 0282 4A92              st -y,R4
 0284 3A92              st -y,R3
 0286 2A92              st -y,R2
 0288 00E0              ldi R16,<L32
 028A 10E0              ldi R17,>L32
 028C 0E940000          xcall lpm32
 0290 3A93              st -y,R19
 0292 2A93              st -y,R18
 0294 1A93              st -y,R17
 0296 0A93              st -y,R16
 0298 0E940000          xcall cmp32f
 029C CCF0              brlt L26
 029E FE01              movw R30,R28
 02A0 2180              ldd R2,z+1
 02A2 3280              ldd R3,z+2
 02A4 4380              ldd R4,z+3
 02A6 5480              ldd R5,z+4
 02A8 5A92              st -y,R5
 02AA 4A92              st -y,R4
 02AC 3A92              st -y,R3
 02AE 2A92              st -y,R2
 02B0 00E0              ldi R16,<L32
 02B2 10E0              ldi R17,>L32
 02B4 0E940000          xcall lpm32
 02B8 3A93              st -y,R19
 02BA 2A93              st -y,R18
 02BC 1A93              st -y,R17
 02BE 0A93              st -y,R16
 02C0 0E940000          xcall sub32f
 02C4 0E940000          xcall fp2int
 02C8 B801              movw R22,R16
 02CA 6050              subi R22,0  ; offset = 32768
 02CC 7048              sbci R23,128
 02CE 08C0              xjmp L27
 02D0           L26:
 02D0 FE01              movw R30,R28
 02D2 0181              ldd R16,z+1
 02D4 1281              ldd R17,z+2
 02D6 2381              ldd R18,z+3
 02D8 3481              ldd R19,z+4
 02DA 0E940000          xcall fp2int
 02DE B801              movw R22,R16
 02E0           L27:
 02E0 AB01              movw R20,R22
 02E2                   .dbline 93
 02E2           ;                         
 02E2           ;  x1=result/10000;                   Analog_display(0,x1);                                   
 02E2 20E1              ldi R18,10000
 02E4 37E2              ldi R19,39
 02E6 8A01              movw R16,R20
 02E8 0E940000          xcall div16u
 02EC B801              movw R22,R16
 02EE                   .dbline 93
 02EE 262F              mov R18,R22
 02F0 0027              clr R16
 02F2 F8DE              xcall _Analog_display
 02F4                   .dbline 94
 02F4           ;                                     LCD_write_char(1,1,'.');
 02F4 8EE2              ldi R24,46
 02F6 8883              std y+0,R24
 02F8 21E0              ldi R18,1
 02FA 01E0              ldi R16,1
 02FC 0E940000          xcall _LCD_write_char
 0300                   .dbline 95
 0300           ;  x2=(result/1000)%10;               Analog_display(2,x2);
 0300 28EE              ldi R18,1000
 0302 33E0              ldi R19,3
 0304 8A01              movw R16,R20
 0306 0E940000          xcall div16u
 030A 2AE0              ldi R18,10
 030C 30E0              ldi R19,0
 030E 0E940000          xcall mod16u
 0312 B801              movw R22,R16
 0314                   .dbline 95
 0314 262F              mov R18,R22
 0316 02E0              ldi R16,2
 0318 E5DE              xcall _Analog_display
 031A                   .dbline 96
 031A           ;  x3=(result/100)%100%10;            Analog_display(3,x3);
 031A 24E6              ldi R18,100
 031C 30E0              ldi R19,0
 031E 8A01              movw R16,R20
 0320 0E940000          xcall div16u
 0324 24E6              ldi R18,100
 0326 30E0              ldi R19,0
 0328 0E940000          xcall mod16u
 032C 2AE0              ldi R18,10
 032E 30E0              ldi R19,0
 0330 0E940000          xcall mod16u
 0334 B801              movw R22,R16
 0336                   .dbline 96
 0336 262F              mov R18,R22
 0338 03E0              ldi R16,3
 033A D4DE              xcall _Analog_display
 033C                   .dbline 97
 033C           ;  x4=(result/10)%1000%10;            Analog_display(4,x4);
 033C 2AE0              ldi R18,10
 033E 30E0              ldi R19,0
 0340 8A01              movw R16,R20
 0342 0E940000          xcall div16u
 0346 28EE              ldi R18,1000
 0348 33E0              ldi R19,3
 034A 0E940000          xcall mod16u
 034E 2AE0              ldi R18,10
 0350 30E0              ldi R19,0
 0352 0E940000          xcall mod16u
 0356 B801              movw R22,R16
 0358                   .dbline 97
 0358 262F              mov R18,R22
 035A 04E0              ldi R16,4
 035C C3DE              xcall _Analog_display
 035E                   .dbline 98
 035E           ;  x5=(result%1000)%100%10;           Analog_display(5,x5);
 035E 28EE              ldi R18,1000
 0360 33E0              ldi R19,3
 0362 8A01              movw R16,R20
 0364 0E940000          xcall mod16u
 0368 24E6              ldi R18,100
 036A 30E0              ldi R19,0
 036C 0E940000          xcall mod16u
 0370 2AE0              ldi R18,10
 0372 30E0              ldi R19,0
 0374 0E940000          xcall mod16u
 0378 A801              movw R20,R16
 037A                   .dbline 98
 037A 242F              mov R18,R20
 037C 05E0              ldi R16,5
 037E B2DE              xcall _Analog_display
 0380                   .dbline -2
 0380           L25:
 0380 2596              adiw R28,5
 0382 0E940000          xcall pop_gset2
 0386                   .dbline 0 ; func end
 0386 0895              ret
 0388                   .dbsym r x5 20 i
 0388                   .dbsym r x4 22 i
 0388                   .dbsym r x3 22 i
 0388                   .dbsym r x2 22 i
 0388                   .dbsym r x1 22 i
 0388                   .dbsym r value2 20 i
 0388                   .dbsym r result 20 i
 0388                   .dbend
 0388                   .dbfunc e init_devices _init_devices fV
                        .even
 0388           _init_devices::
 0388                   .dbline -1
 0388                   .dbline 102
 0388           ; }
 0388           ;     
 0388           ; void init_devices(void)
 0388           ; {
 0388                   .dbline 104
 0388           ; 
 0388           ;  CLI();                                       //禁止所有中断                                   
 0388 F894              cli
 038A                   .dbline 105
 038A           ;  adc_init();
 038A 3ADE              xcall _adc_init
 038C                   .dbline 106
 038C           ;  Bit_transfor();                              //数字量显示
 038C 7BDE              xcall _Bit_transfor
 038E                   .dbline 107
 038E           ;  Analog_transfor();                           //模拟量显示
 038E 2BDF              xcall _Analog_transfor
 0390                   .dbline 108
 0390           ;  MCUCR = 0x00;
 0390 2224              clr R2
 0392 25BE              out 0x35,R2
 0394                   .dbline 109
 0394           ;  SREG = 0X80;                                 //允许中断发生
 0394 80E8              ldi R24,128
 0396 8FBF              out 0x3f,R24
 0398                   .dbline 110
 0398           ;  GICR  = 0x00;
 0398 2BBE              out 0x3b,R2
 039A                   .dbline 111
 039A           ;  TIMSK = 0x00;                                
 039A 29BE              out 0x39,R2
 039C                   .dbline 112
 039C           ;  SEI();                                       //重新开启所有中断
 039C 7894              sei
 039E                   .dbline -2
 039E           L33:
 039E                   .dbline 0 ; func end
 039E 0895              ret
 03A0                   .dbend
 03A0                   .dbfunc e main _main fV
                        .even
 03A0           _main::
 03A0                   .dbline -1
 03A0                   .dbline 118
 03A0           ;  
 03A0           ; }
 03A0           ;  
 03A0           ; 
 03A0           ; void main(void)
 03A0           ; {  
 03A0                   .dbline 119
 03A0           ;  init_devices();
 03A0 F3DF              xcall _init_devices
 03A2           L35:
 03A2                   .dbline 120
 03A2           L36:
 03A2                   .dbline 120
 03A2 FFCF              xjmp L35
 03A4           X12:
 03A4                   .dbline -2
 03A4           L34:
 03A4                   .dbline 0 ; func end
 03A4 0895              ret
 03A6                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\尤虎\程序设计\AVR单片机\MAGE16\ADCAND~1\adc.c
 0000           _value::
 0000                   .blkb 2
 0002                   .dbsym e value _value I
                        .area lit(rom, con, rel)
 0000           L32:
 0000 00000047          .word 0x0,0x4700
 0004           L31:
 0004 00008044          .word 0x0,0x4480
 0008           L30:
 0008 00000040          .word 0x0,0x4000
 000C           L29:
 000C 0AD72340          .word 0xd70a,0x4023
 0010           L28:
 0010 00401C46          .word 0x4000,0x461c

⌨️ 快捷键说明

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