📄 ad.lis
字号:
.module AD.C
.area data(ram, con, rel)
0000 _adc_mux::
0000 .blkb 1
.area idata
0000 01 .byte 1
.area data(ram, con, rel)
0001 .dbfile E:\仿真\ADC\AD.C
0001 .dbsym e adc_mux _adc_mux c
.area text(rom, con, rel)
0000 .dbfile E:\仿真\ADC\AD.C
0000 .dbfunc e init_adc _init_adc fV
.even
0000 _init_adc::
0000 .dbline -1
0000 .dbline 8
0000 ; //#define AD_C
0000 ; #include "includes.h"
0000 ; unsigned char adc_mux = 0x01 ;
0000 ;
0000 ; /******************************************************************************/
0000 ; /******************************************************************************/
0000 ; void init_adc(void)
0000 ; {
0000 .dbline 12
0000 ; //WDR(); //看门狗计数清零
0000 ; //WDTCR=0x0F; //使能watchdog,并且,采用2048K分频,典型溢出时间5V时2.1S
0000 ; // ADCSRA=0X00;
0000 ; ADCSRA = 0x00;
0000 2224 clr R2
0002 26B8 out 0x6,R2
0004 .dbline 13
0004 ; ADMUX =(adc_mux&0x1f)|(1<<REFS0)|(1<<REFS1); //参考电压为内部2.56
0004 80910000 lds R24,_adc_mux
0008 8F71 andi R24,31
000A 806C ori R24,192
000C 87B9 out 0x7,R24
000E .dbline 16
000E ; //ADMUX =(adc_mux&0x1f)|(1<<REFS0); //参考电压为内部AVCC
000E ; //ADMUX =(adc_mux&0x1f); //参考电压为引脚AREF
000E ; ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1) ;//64分频
000E 8EEC ldi R24,206
0010 86B9 out 0x6,R24
0012 .dbline 17
0012 ; asm("sei");
0012 7894 sei
0014 .dbline 18
0014 ; UBRRH = 25;
0014 89E1 ldi R24,25
0016 80BD out 0x20,R24
0018 .dbline 19
0018 ; UBRRL = 25;
0018 89B9 out 0x9,R24
001A .dbline 20
001A ; UCSRB=0x18;
001A 88E1 ldi R24,24
001C 8AB9 out 0xa,R24
001E .dbline 21
001E ; UCSRC=0x86;
001E 86E8 ldi R24,134
0020 80BD out 0x20,R24
0022 .dbline -2
0022 L1:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
.area vector(rom, abs)
.org 56
0038 0C941200 jmp _adc_isr
.area text(rom, con, rel)
0024 .dbfile E:\仿真\ADC\AD.C
0024 .dbfunc e adc_isr _adc_isr fV
.even
0024 _adc_isr::
0024 8A93 st -y,R24
0026 8FB7 in R24,0x3f
0028 8A93 st -y,R24
002A .dbline -1
002A .dbline 34
002A ; }
002A ;
002A ; /******************************************************************************/
002A ;
002A ; /******************************************************************************/
002A ; //ADC完成中断
002A ; //#pragma vector = interrupt_handler adc_isr:iv_ADC
002A ; // define the interrupt handler
002A ;
002A ; //#pragma vector=ADC_vect __interrupt void adc_isr( void )
002A ; #pragma interrupt_handler adc_isr:15
002A ; void adc_isr(void)
002A ; {
002A .dbline 35
002A ; ADMUX =(adc_mux&0x1f)|(1<<REFS0)|(1<<REFS1);
002A 80910000 lds R24,_adc_mux
002E 8F71 andi R24,31
0030 806C ori R24,192
0032 87B9 out 0x7,R24
0034 .dbline 36
0034 ; ADCSRA|=(1<<ADSC);//启动AD转换
0034 369A sbi 0x6,6
0036 .dbline -2
0036 L2:
0036 8991 ld R24,y+
0038 8FBF out 0x3f,R24
003A 8991 ld R24,y+
003C .dbline 0 ; func end
003C 1895 reti
003E .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -