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

📄 test.lis

📁 较新的adc+lcd1602代码
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0330           ;   DDRA&=~(BIT(PA0)|BIT(PA1));
 0330 8AB3              in R24,0x1a
 0332 8C7F              andi R24,252
 0334 8ABB              out 0x1a,R24
 0336                   .dbline 9
 0336           ;   ACSR=0x80; 
 0336 80E8              ldi R24,128
 0338 88B9              out 0x8,R24
 033A                   .dbline 10
 033A           ;   ADMUX=(0<<REFS1)|(1<<REFS0)|adc_channel; 
 033A 802F              mov R24,R16
 033C 8064              ori R24,64
 033E 87B9              out 0x7,R24
 0340                   .dbline 11
 0340           ;   ADCSRA=(1<<ADEN)|(0<<ADSC)|(0<<ADIE)|(0<<ADPS2)|(0<<ADPS1)|(0<<ADPS0); 
 0340 80E8              ldi R24,128
 0342 86B9              out 0x6,R24
 0344                   .dbline -2
 0344           L57:
 0344                   .dbline 0 ; func end
 0344 0895              ret
 0346                   .dbsym r adc_channel 16 c
 0346                   .dbend
 0346                   .dbfunc e GetAdcValue _GetAdcValue fi
 0346           ;              i -> R20
 0346           ;      adc_value -> R10,R11
 0346           ;           temp -> R12,R13
 0346           ;    adc_channel -> R12
                        .even
 0346           _GetAdcValue::
 0346 0E940000          xcall push_xgset303C
 034A C02E              mov R12,R16
 034C                   .dbline -1
 034C                   .dbline 18
 034C           ; }
 034C           ; 
 034C           ; /******************************************************
 034C           ; **             取通道adc_channel的ADC值              **
 034C           ; ******************************************************/
 034C           ; unsigned int GetAdcValue(unsigned char adc_channel) 
 034C           ; { 
 034C                   .dbline 19
 034C           ;  unsigned int adc_value=0; //定义全局变量来存储ADC值
 034C AA24              clr R10
 034E BB24              clr R11
 0350                   .dbline 23
 0350           ;  unsigned int temp; 
 0350           ;  unsigned char i; 
 0350           ; 
 0350           ;  adc_init(adc_channel); 
 0350 0C2D              mov R16,R12
 0352 EBDF              xcall _adc_init
 0354                   .dbline 24
 0354           ;  delay_nms(30); 
 0354 0EE1              ldi R16,30
 0356 10E0              ldi R17,0
 0358 6EDE              xcall _delay_nms
 035A                   .dbline 26
 035A           ;  
 035A           ;  for(i=0;i<19;i++) 
 035A 4427              clr R20
 035C 10C0              xjmp L62
 035E           L59:
 035E                   .dbline 27
 035E           ;  { 
 035E                   .dbline 28
 035E           ;   ADCSRA|=(1<<ADSC); 
 035E 369A              sbi 0x6,6
 0360           L63:
 0360                   .dbline 29
 0360           ;   while((ADCSRA&0x10)==0); 
 0360           L64:
 0360                   .dbline 29
 0360 349B              sbis 0x6,4
 0362 FECF              rjmp L63
 0364           X11:
 0364                   .dbline 30
 0364           ;   temp=ADCL; 
 0364 C4B0              in R12,0x4
 0366 DD24              clr R13
 0368                   .dbline 31
 0368           ;   temp|=(int)ADCH<<8; 
 0368 25B0              in R2,0x5
 036A 3324              clr R3
 036C 322C              mov R3,R2
 036E 2224              clr R2
 0370 C228              or R12,R2
 0372 D328              or R13,R3
 0374                   .dbline 32
 0374           ;   adc_value=adc_value+temp; 
 0374 AC0C              add R10,R12
 0376 BD1C              adc R11,R13
 0378                   .dbline 33
 0378           ;   ADCSR|=(0<<ADSC);
 0378 26B0              in R2,0x6
 037A 26B8              out 0x6,R2
 037C                   .dbline 34
 037C           ;  } 
 037C           L60:
 037C                   .dbline 26
 037C 4395              inc R20
 037E           L62:
 037E                   .dbline 26
 037E 4331              cpi R20,19
 0380 70F3              brlo L59
 0382           X12:
 0382                   .dbline 36
 0382           ; 
 0382           ;  adc_value=adc_value/19;
 0382 23E1              ldi R18,19
 0384 30E0              ldi R19,0
 0386 8501              movw R16,R10
 0388 0E940000          xcall div16u
 038C 5801              movw R10,R16
 038E                   .dbline 37
 038E           ;  return adc_value; 
 038E                   .dbline -2
 038E           L58:
 038E                   .dbline 0 ; func end
 038E 0C940000          xjmp pop_xgset303C
 0392                   .dbsym r i 20 c
 0392                   .dbsym r adc_value 10 i
 0392                   .dbsym r temp 12 i
 0392                   .dbsym r adc_channel 12 c
 0392                   .dbend
 0392                   .dbfile D:\iccavr\mega16\11\10bit_adc\test.c
 0392                   .dbfunc e init_devices _init_devices fV
                        .even
 0392           _init_devices::
 0392                   .dbline -1
 0392                   .dbline 13
 0392           ; //ICC-AVR application builder : 2008-11-4 12:53:50
 0392           ; // Target : M16
 0392           ; // Crystal: 8.0000Mhz
 0392           ; 
 0392           ; #include <iom16v.h>
 0392           ; #include <macros.h>
 0392           ; 
 0392           ; #include "delay.h"
 0392           ; #include "lcd1602.h"
 0392           ; #include "adc.h"
 0392           ; //call this routine to initialize all peripherals
 0392           ; void init_devices(void)
 0392           ; {
 0392                   .dbline 15
 0392           ;  //stop errant interrupts until set up
 0392           ;  CLI(); //disable all interrupts
 0392 F894              cli
 0394                   .dbline 16
 0394           ;  LCD_init();
 0394 5FDE              xcall _LCD_init
 0396                   .dbline 17
 0396           ;  PORTD|=BIT(PD7);
 0396 979A              sbi 0x12,7
 0398                   .dbline 18
 0398           ;  DDRD|=BIT(PD7);
 0398 8F9A              sbi 0x11,7
 039A                   .dbline 20
 039A           ;  
 039A           ;  MCUCR = 0x00;
 039A 2224              clr R2
 039C 25BE              out 0x35,R2
 039E                   .dbline 21
 039E           ;  GICR  = 0x00;
 039E 2BBE              out 0x3b,R2
 03A0                   .dbline 22
 03A0           ;  TIMSK = 0x00; //timer interrupt sources
 03A0 29BE              out 0x39,R2
 03A2                   .dbline 23
 03A2           ;  SEI(); //re-enable interrupts
 03A2 7894              sei
 03A4                   .dbline -2
 03A4           L66:
 03A4                   .dbline 0 ; func end
 03A4 0895              ret
 03A6                   .dbend
 03A6                   .dbfunc e main _main fV
 03A6           ;           adc1 -> R10,R11
 03A6           ;           adc0 -> R10,R11
                        .even
 03A6           _main::
 03A6 2297              sbiw R28,2
 03A8                   .dbline -1
 03A8                   .dbline 29
 03A8           ;  //all peripherals are now initialized
 03A8           ; }
 03A8           ; 
 03A8           ; //
 03A8           ; void main(void)
 03A8           ; {
 03A8                   .dbline 31
 03A8           ;  unsigned int adc0,adc1;
 03A8           ;  init_devices();
 03A8 F4DF              xcall _init_devices
 03AA                   .dbline 33
 03AA           ;  //insert your functional code here...
 03AA           ;  LCD_write_string(0,0,"10_Bit ADC Test!");
 03AA 80E0              ldi R24,<L68
 03AC 90E0              ldi R25,>L68
 03AE 9983              std y+1,R25
 03B0 8883              std y+0,R24
 03B2 2227              clr R18
 03B4 0027              clr R16
 03B6 F3DE              xcall _LCD_write_string
 03B8                   .dbline 34
 03B8           ;  delay_nms(2000);
 03B8 00ED              ldi R16,2000
 03BA 17E0              ldi R17,7
 03BC 3CDE              xcall _delay_nms
 03BE                   .dbline 35
 03BE           ;  LCD_write_string(0,0," ADC0:      V   ");
 03BE 80E0              ldi R24,<L69
 03C0 90E0              ldi R25,>L69
 03C2 9983              std y+1,R25
 03C4 8883              std y+0,R24
 03C6 2227              clr R18
 03C8 0027              clr R16
 03CA E9DE              xcall _LCD_write_string
 03CC                   .dbline 36
 03CC           ;  LCD_write_string(0,1," ADC1:      V   ");
 03CC 80E0              ldi R24,<L70
 03CE 90E0              ldi R25,>L70
 03D0 9983              std y+1,R25
 03D2 8883              std y+0,R24
 03D4 21E0              ldi R18,1
 03D6 0027              clr R16
 03D8 E2DE              xcall _LCD_write_string
 03DA 10C0              xjmp L72
 03DC           L71:
 03DC                   .dbline 38
 03DC           ;  while(1)
 03DC           ;  {
 03DC                   .dbline 39
 03DC           ;   adc0=GetAdcValue(0);
 03DC 0027              clr R16
 03DE B3DF              xcall _GetAdcValue
 03E0 5801              movw R10,R16
 03E2                   .dbline 40
 03E2           ;   LCD_write_adc(7,0,adc0);
 03E2 B982              std y+1,R11
 03E4 A882              std y+0,R10
 03E6 2227              clr R18
 03E8 07E0              ldi R16,7
 03EA 44DF              xcall _LCD_write_adc
 03EC                   .dbline 42
 03EC           ;   
 03EC           ;   adc1=GetAdcValue(1);
 03EC 01E0              ldi R16,1
 03EE ABDF              xcall _GetAdcValue
 03F0 5801              movw R10,R16
 03F2                   .dbline 43
 03F2           ;   LCD_write_adc(7,1,adc1);
 03F2 B982              std y+1,R11
 03F4 A882              std y+0,R10
 03F6 21E0              ldi R18,1
 03F8 07E0              ldi R16,7
 03FA 3CDF              xcall _LCD_write_adc
 03FC                   .dbline 44
 03FC           ;  }
 03FC           L72:
 03FC                   .dbline 37
 03FC EFCF              xjmp L71
 03FE           X13:
 03FE                   .dbline -2
 03FE           L67:
 03FE                   .dbline 0 ; func end
 03FE 2296              adiw R28,2
 0400 0895              ret
 0402                   .dbsym r adc1 10 i
 0402                   .dbsym r adc0 10 i
 0402                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile D:\iccavr\mega16\11\10bit_adc\test.c
 0000           L70:
 0000                   .blkb 17
                        .area idata
 0000 20414443313A20202020202056202020  .byte 32,'A,'D,'C,49,58,32,32,32,32,32,32,'V,32,32,32
 0010 00                .byte 0
                        .area data(ram, con, rel)
 0011                   .dbfile D:\iccavr\mega16\11\10bit_adc\test.c
 0011           L69:
 0011                   .blkb 17
                        .area idata
 0011 20414443303A20202020202056202020  .byte 32,'A,'D,'C,48,58,32,32,32,32,32,32,'V,32,32,32
 0021 00                .byte 0
                        .area data(ram, con, rel)
 0022                   .dbfile D:\iccavr\mega16\11\10bit_adc\test.c
 0022           L68:
 0022                   .blkb 17
                        .area idata
 0022 31305F42697420414443205465737421  .byte 49,48,95,'B,'i,'t,32,'A,'D,'C,32,'T,'e,'s,'t,33
 0032 00                .byte 0
                        .area data(ram, con, rel)
 0033                   .dbfile D:\iccavr\mega16\11\10bit_adc\test.c
                        .area lit(rom, con, rel)
 0000           L48:
 0000 2DB29D40          .word 0xb22d,0x409d
 0004           ; }
 0004           ; 

⌨️ 快捷键说明

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