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

📄 ac10-2.lis

📁 AVR学习资料
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0172           ; /****************************************************/
 0172           ; void adc_init(void) 
 0172           ; {
 0172                   .dbline 64
 0172           ;  ADMUX = 0x07; 
 0172 87E0              ldi R24,7
 0174 87B9              out 0x7,R24
 0176                   .dbline 65
 0176           ;  ACSR  = 0x80; 
 0176 80E8              ldi R24,128
 0178 88B9              out 0x8,R24
 017A                   .dbline 66
 017A           ;  ADCSR = 0xE9; 
 017A 89EE              ldi R24,233
 017C 86B9              out 0x6,R24
 017E                   .dbline -2
 017E           L18:
 017E                   .dbline 0 ; func end
 017E 0895              ret
 0180                   .dbend
                        .area vector(rom, abs)
                        .org 56
 0038 0C94C000          jmp _adc_isr
                        .area text(rom, con, rel)
 0180                   .dbfile d:\MYDOCU~1\ac10-2\ac10-2.c
 0180                   .dbfunc e adc_isr _adc_isr fV
                        .even
 0180           _adc_isr::
 0180 2A92              st -y,R2
 0182 3A92              st -y,R3
 0184 4A92              st -y,R4
 0186 5A92              st -y,R5
 0188 8A93              st -y,R24
 018A 2FB6              in R2,0x3f
 018C 2A92              st -y,R2
 018E                   .dbline -1
 018E                   .dbline 71
 018E           ; }
 018E           ; /****************************************************/
 018E           ; #pragma interrupt_handler adc_isr:15 
 018E           ; void adc_isr(void)
 018E           ; {
 018E                   .dbline 73
 018E           ;  //conversion complete, read value (int) using...
 018E           ;   value=ADCL;            
 018E 24B0              in R2,0x4
 0190 3324              clr R3
 0192 30920500          sts _value+1,R3
 0196 20920400          sts _value,R2
 019A                   .dbline 74
 019A           ;   value|=(int)ADCH << 8; 
 019A 25B0              in R2,0x5
 019C 3324              clr R3
 019E 322C              mov R3,R2
 01A0 2224              clr R2
 01A2 40900400          lds R4,_value
 01A6 50900500          lds R5,_value+1
 01AA 4228              or R4,R2
 01AC 5328              or R5,R3
 01AE 50920500          sts _value+1,R5
 01B2 40920400          sts _value,R4
 01B6                   .dbline 75
 01B6           ;   flag=1;     
 01B6 81E0              ldi R24,1
 01B8 80930000          sts _flag,R24
 01BC                   .dbline -2
 01BC           L19:
 01BC 2990              ld R2,y+
 01BE 2FBE              out 0x3f,R2
 01C0 8991              ld R24,y+
 01C2 5990              ld R5,y+
 01C4 4990              ld R4,y+
 01C6 3990              ld R3,y+
 01C8 2990              ld R2,y+
 01CA                   .dbline 0 ; func end
 01CA 1895              reti
 01CC                   .dbend
 01CC                   .dbfunc e init_devices _init_devices fV
                        .even
 01CC           _init_devices::
 01CC                   .dbline -1
 01CC                   .dbline 79
 01CC           ; }
 01CC           ; /***************************************/
 01CC           ; void init_devices(void) 
 01CC           ; {
 01CC                   .dbline 80
 01CC           ;  port_init(); 
 01CC 19DF              xcall _port_init
 01CE                   .dbline 81
 01CE           ;  timer0_init();       
 01CE 23DF              xcall _timer0_init
 01D0                   .dbline 82
 01D0           ;  timer1_init();       
 01D0 BEDF              xcall _timer1_init
 01D2                   .dbline 83
 01D2           ;  adc_init();  
 01D2 CFDF              xcall _adc_init
 01D4                   .dbline 84
 01D4           ;  TIMSK = 0x05; 
 01D4 85E0              ldi R24,5
 01D6 89BF              out 0x39,R24
 01D8                   .dbline 85
 01D8           ;  SREG=0x80; 
 01D8 80E8              ldi R24,128
 01DA 8FBF              out 0x3f,R24
 01DC                   .dbline -2
 01DC           L20:
 01DC                   .dbline 0 ; func end
 01DC 0895              ret
 01DE                   .dbend
 01DE                   .dbfunc e delay _delay fV
 01DE           ;              i -> R20,R21
 01DE           ;              j -> R22,R23
 01DE           ;              k -> R16,R17
                        .even
 01DE           _delay::
 01DE 0E940000          xcall push_gset2
 01E2                   .dbline -1
 01E2                   .dbline 89
 01E2           ; }
 01E2           ; /***************************************/
 01E2           ; void delay(uint k) 
 01E2           ; {
 01E2                   .dbline 91
 01E2           ; uint i,j;
 01E2           ;        for(i=0;i<k;i++)
 01E2 4427              clr R20
 01E4 5527              clr R21
 01E6 0BC0              xjmp L25
 01E8           L22:
 01E8                   .dbline 92
 01E8           ;        {       
 01E8                   .dbline 93
 01E8 6627              clr R22
 01EA 7727              clr R23
 01EC 02C0              xjmp L29
 01EE           L26:
 01EE                   .dbline 93
 01EE           L27:
 01EE                   .dbline 93
 01EE 6F5F              subi R22,255  ; offset = 1
 01F0 7F4F              sbci R23,255
 01F2           L29:
 01F2                   .dbline 93
 01F2 6C38              cpi R22,140
 01F4 E0E0              ldi R30,0
 01F6 7E07              cpc R23,R30
 01F8 D0F3              brlo L26
 01FA                   .dbline 94
 01FA           L23:
 01FA                   .dbline 91
 01FA 4F5F              subi R20,255  ; offset = 1
 01FC 5F4F              sbci R21,255
 01FE           L25:
 01FE                   .dbline 91
 01FE 4017              cp R20,R16
 0200 5107              cpc R21,R17
 0202 90F3              brlo L22
 0204                   .dbline -2
 0204           L21:
 0204 0E940000          xcall pop_gset2
 0208                   .dbline 0 ; func end
 0208 0895              ret
 020A                   .dbsym r i 20 i
 020A                   .dbsym r j 22 i
 020A                   .dbsym r k 16 i
 020A                   .dbend
 020A                   .dbfunc e conv _conv fi
 020A           ;              y -> R10,R11
 020A           ;              x -> y+0
 020A           ;              i -> R10,R11
                        .even
 020A           _conv::
 020A 0E940000          xcall push_gset3
 020E 5801              movw R10,R16
 0210 2497              sbiw R28,4
 0212                   .dbline -1
 0212                   .dbline 98
 0212           ;        for(j=0;j<140;j++); 
 0212           ;        }
 0212           ; }
 0212           ; /******************************************/
 0212           ; uint conv(uint i) 
 0212           ; {
 0212                   .dbline 101
 0212           ; long x;       
 0212           ; uint y; 
 0212           ; x=(5000*(long)i)/1023; 
 0212 1501              movw R2,R10
 0214 4424              clr R4
 0216 5524              clr R5
 0218 48E8              ldi R20,136
 021A 53E1              ldi R21,19
 021C 60E0              ldi R22,0
 021E 70E0              ldi R23,0
 0220 5A92              st -y,R5
 0222 4A92              st -y,R4
 0224 3A92              st -y,R3
 0226 2A92              st -y,R2
 0228 8A01              movw R16,R20
 022A 9B01              movw R18,R22
 022C 0E940000          xcall empy32s
 0230 4FEF              ldi R20,255
 0232 53E0              ldi R21,3
 0234 60E0              ldi R22,0
 0236 70E0              ldi R23,0
 0238 7A93              st -y,R23
 023A 6A93              st -y,R22
 023C 5A93              st -y,R21
 023E 4A93              st -y,R20
 0240 0E940000          xcall div32s
 0244 FE01              movw R30,R28
 0246 0083              std z+0,R16
 0248 1183              std z+1,R17
 024A 2283              std z+2,R18
 024C 3383              std z+3,R19
 024E                   .dbline 102
 024E           ; y=(uint)x;    
 024E FE01              movw R30,R28
 0250 A080              ldd R10,z+0
 0252 B180              ldd R11,z+1
 0254                   .dbline 103
 0254           ; return y;     
 0254 8501              movw R16,R10
 0256                   .dbline -2
 0256           L30:
 0256 2496              adiw R28,4
 0258 0E940000          xcall pop_gset3
 025C                   .dbline 0 ; func end
 025C 0895              ret
 025E                   .dbsym r y 10 i
 025E                   .dbsym l x 0 L
 025E                   .dbsym r i 10 i
 025E                   .dbend
 025E                   .dbfunc e main _main fV
                        .even
 025E           _main::
 025E                   .dbline -1
 025E                   .dbline 107
 025E           ; } 
 025E           ; /******************************************/
 025E           ; void main(void)       
 025E           ; {                                     
 025E                   .dbline 108
 025E           ; init_devices();               
 025E B6DF              xcall _init_devices
 0260 2BC0              xjmp L33
 0262           L32:
 0262                   .dbline 110
 0262           ;   while(1)    
 0262           ;   {
 0262                   .dbline 111
 0262           ;               if(flag==1) 
 0262 80910000          lds R24,_flag
 0266 8130              cpi R24,1
 0268 21F5              brne L35
 026A                   .dbline 112
 026A           ;               {
 026A                   .dbline 113
 026A           ;               dis_val=conv(value); 
 026A 00910400          lds R16,_value
 026E 10910500          lds R17,_value+1
 0272 CBDF              xcall _conv
 0274 10930300          sts _dis_val+1,R17
 0278 00930200          sts _dis_val,R16
 027C                   .dbline 114
 027C           ;                 if(dis_val<2000){OUT2_1;OUT1_0;} 
 027C 003D              cpi R16,208
 027E E7E0              ldi R30,7
 0280 1E07              cpc R17,R30
 0282 28F4              brsh L37
 0284                   .dbline 114
 0284                   .dbline 114
 0284 C19A              sbi 0x18,1
 0286                   .dbline 114
 0286 88B3              in R24,0x18
 0288 8E7F              andi R24,254
 028A 88BB              out 0x18,R24
 028C                   .dbline 114
 028C 0FC0              xjmp L38
 028E           L37:
 028E                   .dbline 115
 028E           ;                 else if(dis_val<3000){OUT1_1;OUT2_1;} 
 028E 80910200          lds R24,_dis_val
 0292 90910300          lds R25,_dis_val+1
 0296 883B              cpi R24,184
 0298 EBE0              ldi R30,11
 029A 9E07              cpc R25,R30
 029C 18F4              brsh L39
 029E                   .dbline 115
 029E                   .dbline 115
 029E C09A              sbi 0x18,0
 02A0                   .dbline 115
 02A0 C19A              sbi 0x18,1
 02A2                   .dbline 115
 02A2 04C0              xjmp L40
 02A4           L39:
 02A4                   .dbline 116
 02A4           ;                 else {OUT2_0;OUT1_1;} 
 02A4                   .dbline 116
 02A4 88B3              in R24,0x18
 02A6 8D7F              andi R24,253
 02A8 88BB              out 0x18,R24
 02AA                   .dbline 116
 02AA C09A              sbi 0x18,0
 02AC                   .dbline 116
 02AC           L40:
 02AC           L38:
 02AC                   .dbline 117
 02AC           ;               flag=0;                 
 02AC 2224              clr R2
 02AE 20920000          sts _flag,R2
 02B2                   .dbline 118
 02B2           ;               }
 02B2           L35:
 02B2                   .dbline 119
 02B2 0AE0              ldi R16,10
 02B4 10E0              ldi R17,0
 02B6 93DF              xcall _delay
 02B8                   .dbline 120
 02B8           L33:
 02B8                   .dbline 109
 02B8 D4CF              xjmp L32
 02BA           X4:
 02BA                   .dbline -2
 02BA           L31:
 02BA                   .dbline 0 ; func end
 02BA 0895              ret
 02BC                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile d:\MYDOCU~1\ac10-2\ac10-2.c
 0000           _flag::
 0000                   .blkb 1
 0001                   .dbsym e flag _flag c
 0001           _i::
 0001                   .blkb 1
 0002                   .dbsym e i _i c
 0002           _dis_val::
 0002                   .blkb 2
 0004                   .dbsym e dis_val _dis_val i
 0004           _value::
 0004                   .blkb 2
 0006                   .dbsym e value _value i

⌨️ 快捷键说明

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