📄 adc.lis
字号:
.module ADC.c
.area data(ram, con, rel)
0000 _adc_rel::
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile G:\Mega8程序\TCXO评估板\Main\ADC.c
0002 .dbsym e adc_rel _adc_rel i
0002 _adc_mux::
0002 .blkb 1
.area idata
0002 00 .byte 0
.area data(ram, con, rel)
0003 .dbfile G:\Mega8程序\TCXO评估板\Main\ADC.c
0003 .dbsym e adc_mux _adc_mux c
.area text(rom, con, rel)
0000 .dbfile G:\Mega8程序\TCXO评估板\Main\ADC.c
0000 .dbfunc e adc_init _adc_init fV
.even
0000 _adc_init::
0000 .dbline -1
0000 .dbline 7
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #define Vref 4995//参考电压值
0000 ; unsigned int adc_rel=0;//AD转换结果
0000 ; unsigned char adc_mux=0;//AD通道,默认为0通道
0000 ; void adc_init(void)//ADC初始化,并启动AD转换
0000 ; {DDRC=0x00;
0000 .dbline 7
0000 2224 clr R2
0002 24BA out 0x14,R2
0004 .dbline 8
0004 ; PORTC=0x00;
0004 25BA out 0x15,R2
0006 .dbline 9
0006 ; ADCSRA = 0x00;
0006 26B8 out 0x6,R2
0008 .dbline 11
0008 ; //状态控制寄存器复位
0008 ; ADMUX =(1<<REFS0)|(adc_mux&0x0f);
0008 80910200 lds R24,_adc_mux
000C 8F70 andi R24,15
000E 8064 ori R24,64
0010 87B9 out 0x7,R24
0012 .dbline 13
0012 ; //选择内部AVCC为基准,并选取当前转换通道(转换为0~7)
0012 ; ACSR =(1<<ACD);
0012 80E8 ldi R24,128
0014 88B9 out 0x8,R24
0016 .dbline 15
0016 ; //关闭模拟比较器(使用ADC时必须关断)
0016 ; ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1) ;
0016 8EEC ldi R24,206
0018 86B9 out 0x6,R24
001A .dbline -2
001A L1:
001A .dbline 0 ; func end
001A 0895 ret
001C .dbend
.area vector(rom, abs)
.org 28
001C 0EC0 rjmp _adc_isr
.area text(rom, con, rel)
001C .dbfile G:\Mega8程序\TCXO评估板\Main\ADC.c
001C .dbfunc e adc_isr _adc_isr fV
.even
001C _adc_isr::
001C 8A93 st -y,R24
001E 9A93 st -y,R25
0020 8FB7 in R24,0x3f
0022 8A93 st -y,R24
0024 .dbline -1
0024 .dbline 20
0024 ; //允许AD转换,启动AD转换,开启AD转换中断,64预分频
0024 ; }
0024 ; #pragma interrupt_handler adc_isr:iv_ADC //ADC完成中断
0024 ; void adc_isr(void)
0024 ; {adc_rel=ADC&0x3ff;
0024 .dbline 20
0024 84B1 in R24,0x4
0026 95B1 in R25,0x5
0028 9370 andi R25,3
002A 90930100 sts _adc_rel+1,R25
002E 80930000 sts _adc_rel,R24
0032 .dbline 22
0032 ; //摒除高位数据,10位转换
0032 ; ADMUX=(1<<REFS0)|(adc_mux&0x0f);
0032 80910200 lds R24,_adc_mux
0036 8F70 andi R24,15
0038 8064 ori R24,64
003A 87B9 out 0x7,R24
003C .dbline 24
003C ; //选择内部AVCC为基准,并选取当前转换通道(转换为0~7)
003C ; ADCSRA|=(1<<ADSC);
003C 369A sbi 0x6,6
003E .dbline -2
003E L2:
003E 8991 ld R24,y+
0040 8FBF out 0x3f,R24
0042 9991 ld R25,y+
0044 8991 ld R24,y+
0046 .dbline 0 ; func end
0046 1895 reti
0048 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -