📄 adc.lis
字号:
.module ADC.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC/delay.h
0000 .dbfunc e DelayUS _DelayUS fV
0000 ; time -> R16,R17
.even
0000 _DelayUS::
0000 .dbline -1
0000 .dbline 9
0000 ; //内部晶振 8M
0000 ; #include <ioM16v.h>
0000 ; #include <macros.h>
0000 ; #include"delay.h"
0000 ;
0000 ;
0000 ;
0000 ;
0000 ; /*------宏定义------*/
0000 02C0 xjmp L3
0002 L2:
0002 .dbline 11
0002 0150 subi R16,1
0004 1040 sbci R17,0
0006 L3:
0006 .dbline 10
0006 ; #define uchar unsigned char
0006 81E0 ldi R24,1
0008 90E0 ldi R25,0
000A 8017 cp R24,R16
000C 9107 cpc R25,R17
000E C8F3 brlo L2
0010 .dbline -2
0010 L1:
0010 .dbline 0 ; func end
0010 0895 ret
0012 .dbsym r time 16 i
0012 .dbend
0012 .dbfunc e DelayMS _DelayMS fV
0012 ; i -> R20,R21
0012 ; time -> R16,R17
.even
0012 _DelayMS::
0012 0E940000 xcall push_gset1
0016 .dbline -1
0016 .dbline 20
0016 ; #define uint unsigned int
0016 ; uchar led_date[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//数码管段位
0016 ; uchar led_seg[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//数码管片选
0016 ; uchar vol,vol1=0,vol2=0,i;
0016 ;
0016 ; //端口初始化
0016 ; void port_init(void)
0016 ; {
0016 ; PORTA = 0x00;//设置端口数据和方向
0016 ; DDRA = 0x00;
0016 09C0 xjmp L7
0018 L6:
0018 .dbline 23
0018 ; PORTB = 0x00;
0018 ; DDRB = 0xFF;
0018 ; PORTC = 0x00;
0018 .dbline 24
0018 ; DDRC = 0x00;
0018 41E0 ldi R20,1
001A 50E0 ldi R21,0
001C 02C0 xjmp L12
001E L9:
001E .dbline 25
001E L10:
001E .dbline 24
001E 4F5F subi R20,255 ; offset = 1
0020 5F4F sbci R21,255
0022 L12:
0022 .dbline 24
0022 4637 cpi R20,118
0024 E4E0 ldi R30,4
0026 5E07 cpc R21,R30
0028 D0F3 brlo L9
002A .dbline 26
002A L7:
002A .dbline 22
002A 1801 movw R2,R16
002C 0150 subi R16,1
002E 1040 sbci R17,0
0030 2220 tst R2
0032 91F7 brne L6
0034 3320 tst R3
0036 81F7 brne L6
0038 X0:
0038 .dbline -2
0038 L5:
0038 0E940000 xcall pop_gset1
003C .dbline 0 ; func end
003C 0895 ret
003E .dbsym r i 20 i
003E .dbsym r time 16 i
003E .dbend
.area data(ram, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC/delay.h
0000 _led_date::
0000 .blkb 2
.area idata
0000 C0F9 .byte 192,249
.area data(ram, con, rel)
0002 .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC/delay.h
0002 .blkb 2
.area idata
0002 A4B0 .byte 164,176
.area data(ram, con, rel)
0004 .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC/delay.h
0004 .blkb 2
.area idata
0004 9992 .byte 153,146
.area data(ram, con, rel)
0006 .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC/delay.h
0006 .blkb 2
.area idata
0006 82F8 .byte 130,248
.area data(ram, con, rel)
0008 .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC/delay.h
0008 .blkb 2
.area idata
0008 8090 .byte 128,144
.area data(ram, con, rel)
000A .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC/delay.h
000A .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
000A .dbsym e led_date _led_date A[10:10]c
000A _led_seg::
000A .blkb 2
.area idata
000A FEFD .byte 254,253
.area data(ram, con, rel)
000C .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
000C .blkb 2
.area idata
000C FBF7 .byte 251,247
.area data(ram, con, rel)
000E .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
000E .blkb 2
.area idata
000E EFDF .byte 239,223
.area data(ram, con, rel)
0010 .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
0010 .blkb 2
.area idata
0010 BF7F .byte 191,127
.area data(ram, con, rel)
0012 .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
0012 .dbsym e led_seg _led_seg A[8:8]c
0012 _vol1::
0012 .blkb 1
.area idata
0012 00 .byte 0
.area data(ram, con, rel)
0013 .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
0013 .dbsym e vol1 _vol1 c
0013 _vol2::
0013 .blkb 1
.area idata
0013 00 .byte 0
.area data(ram, con, rel)
0014 .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
0014 .dbsym e vol2 _vol2 c
.area text(rom, con, rel)
003E .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
003E .dbfunc e port_init _port_init fV
.even
003E _port_init::
003E .dbline -1
003E .dbline 18
003E .dbline 19
003E 2224 clr R2
0040 2BBA out 0x1b,R2
0042 .dbline 20
0042 2ABA out 0x1a,R2
0044 .dbline 21
0044 28BA out 0x18,R2
0046 .dbline 22
0046 8FEF ldi R24,255
0048 87BB out 0x17,R24
004A .dbline 23
004A 25BA out 0x15,R2
004C .dbline 24
004C 24BA out 0x14,R2
004E .dbline 25
004E ; PORTD = 0x00;
004E 22BA out 0x12,R2
0050 .dbline 26
0050 ; DDRD = 0xFF;
0050 81BB out 0x11,R24
0052 .dbline -2
0052 L13:
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbend
0054 .dbfunc e adc_init _adc_init fV
.even
0054 _adc_init::
0054 .dbline -1
0054 .dbline 31
0054 ; }
0054 ;
0054 ;
0054 ; void adc_init(void)
0054 ; {
0054 .dbline 33
0054 ; //adc转换初始化
0054 ; ADCSRA = 0x00; //禁止AD转换
0054 2224 clr R2
0056 26B8 out 0x6,R2
0058 .dbline 34
0058 ; ADMUX = 0xe0;//ADC0单端输入,2.56V片内基准电源,转换结果左对齐
0058 80EE ldi R24,224
005A 87B9 out 0x7,R24
005C .dbline 35
005C ; SFIOR |= 0x00;//自动触发源禁止
005C 20B6 in R2,0x30
005E 20BE out 0x30,R2
0060 .dbline 36
0060 ; ACSR = 0x80; //禁止模拟比较器
0060 80E8 ldi R24,128
0062 88B9 out 0x8,R24
0064 .dbline 37
0064 ; ADCSRA = 0x8F;//ADC使能,中断使能,128分频
0064 8FE8 ldi R24,143
0066 86B9 out 0x6,R24
0068 .dbline -2
0068 L14:
0068 .dbline 0 ; func end
0068 0895 ret
006A .dbend
006A .dbfunc e adc_calc _adc_calc fi
006A ; voltage -> R10,R11
006A ; value -> y+0
.even
006A _adc_calc::
006A 0E940000 xcall push_gset3
006E 2497 sbiw R28,4
0070 .dbline -1
0070 .dbline 42
0070 ; }
0070 ;
0070 ;
0070 ; unsigned int adc_calc(void)
0070 ; {
0070 .dbline 44
0070 ; //计算实际电压
0070 ; unsigned long value=0;
0070 40E0 ldi R20,0
0072 50E0 ldi R21,0
0074 60E0 ldi R22,0
0076 70E0 ldi R23,0
0078 FE01 movw R30,R28
007A 4083 std z+0,R20
007C 5183 std z+1,R21
007E 6283 std z+2,R22
0080 7383 std z+3,R23
0082 .dbline 45
0082 ; unsigned int voltage=0; //电压单位为(mV)
0082 AA24 clr R10
0084 BB24 clr R11
0086 .dbline 46
0086 ; value=ADCL>>6; //首先读低位
0086 26E0 ldi R18,6
0088 30E0 ldi R19,0
008A 04B1 in R16,0x4
008C 1127 clr R17
008E 0E940000 xcall asr16
0092 1801 movw R2,R16
0094 4424 clr R4
0096 37FC sbrc R3,7
0098 4094 com R4
009A 5524 clr R5
009C 47FC sbrc R4,7
009E 5094 com R5
00A0 FE01 movw R30,R28
00A2 2082 std z+0,R2
00A4 3182 std z+1,R3
00A6 4282 std z+2,R4
00A8 5382 std z+3,R5
00AA .dbline 47
00AA ; value|=(int)ADCH << 2; //然后读高位
00AA 25B0 in R2,0x5
00AC 3324 clr R3
00AE 220C lsl R2
00B0 331C rol R3
00B2 220C lsl R2
00B4 331C rol R3
00B6 4424 clr R4
00B8 37FC sbrc R3,7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -