📄 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 D:\仿真\增量式模糊控制\AD.C
0001 .dbsym e adc_mux _adc_mux c
.area text(rom, con, rel)
0000 .dbfile D:\仿真\增量式模糊控制\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 13
0000 ;
0000 ; //WDR(); //看门狗计数清零
0000 ; //WDTCR=0x0F; //使能watchdog,并且,采用2048K分频,典型溢出时间5V时2.1S
0000 ; // ADCSRA=0X00;
0000 ; ADCSR = 0x00;
0000 2224 clr R2
0002 26B8 out 0x6,R2
0004 .dbline 15
0004 ; //ADMUX =(adc_mux&0x1f)|(1<<REFS0)|(1<<REFS1); //参考电压为内部2.56
0004 ; ADMUX =(adc_mux&0x1f)|(1<<REFS0); //参考电压为内部AVCC
0004 80910000 lds R24,_adc_mux
0008 8F71 andi R24,31
000A 8064 ori R24,64
000C 87B9 out 0x7,R24
000E .dbline 17
000E ; //ADMUX =(adc_mux&0x1f); //参考电压为引脚AREF
000E ; ADCSR=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1) ;//64分频
000E 8EEC ldi R24,206
0010 86B9 out 0x6,R24
0012 .dbline 18
0012 ; asm("sei");
0012 7894 sei
0014 .dbline 20
0014 ; //UBRRH = 25;
0014 ; UBRRL = 25;
0014 89E1 ldi R24,25
0016 89B9 out 0x9,R24
0018 .dbline 21
0018 ; UCSRB=0x18;
0018 88E1 ldi R24,24
001A 8AB9 out 0xa,R24
001C .dbline 22
001C ; UCSRC=0x86;
001C 86E8 ldi R24,134
001E 80BD out 0x20,R24
0020 .dbline -2
0020 L1:
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbend
.area vector(rom, abs)
.org 56
0038 0C941100 jmp _adc_isr
.area text(rom, con, rel)
0022 .dbfile D:\仿真\增量式模糊控制\AD.C
0022 .dbfunc e adc_isr _adc_isr fV
.even
0022 _adc_isr::
0022 8A93 st -y,R24
0024 8FB7 in R24,0x3f
0026 8A93 st -y,R24
0028 .dbline -1
0028 .dbline 34
0028 ; /*
0028 ; ADCSR = 0x00; //disable adc
0028 ; ADMUX = 0x00; //select adc input 0
0028 ; ACSR = 0x80;
0028 ; ADCSR = 0xEE;
0028 ; */
0028 ; }
0028 ; //ADC完成中断
0028 ; /******************************************************************************/
0028 ; #pragma interrupt_handler adc_isr:15
0028 ; void adc_isr(void)
0028 ; {
0028 .dbline 38
0028 ; //conversion complete, read value (int) using...
0028 ; // value=ADCL; //Read 8 low bits first (important)
0028 ; // value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
0028 ; ADMUX =(adc_mux&0x1f)|(1<<REFS0)|(1<<REFS1);
0028 80910000 lds R24,_adc_mux
002C 8F71 andi R24,31
002E 806C ori R24,192
0030 87B9 out 0x7,R24
0032 .dbline 39
0032 ; ADCSR|=(1<<ADSC);//启动AD转换
0032 369A sbi 0x6,6
0034 .dbline -2
0034 L2:
0034 8991 ld R24,y+
0036 8FBF out 0x3f,R24
0038 8991 ld R24,y+
003A .dbline 0 ; func end
003A 1895 reti
003C .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -