📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile E:\数据采集作业\ADC0809+AVR/0809.h
.dbfunc e delayms _delayms fV
; j -> R20,R21
; i -> R16,R17
.even
_delayms::
rcall push_gset1
.dbline -1
.dbline 11
; //ICC-AVR application builder : 2007-8-31 下午 06:40:58
; // Target : M8
; // Crystal: 4.0000Mhz
;
; #include <iom8v.h>
; #include <macros.h>
; #include "0809.h"
; #include "SPIshow.h"
; void port_init(void)
; {
; PORTB = 0x00;
.dbline 13
; DDRB = 0xff;
; PORTC = 0x00; //m103 output only
rjmp L5
L2:
.dbline 14
; DDRC = 0x00;
ldi R20,4000
ldi R21,15
rjmp L9
L6:
.dbline 15
L7:
.dbline 14
subi R20,1
sbci R21,0
L9:
.dbline 14
cpi R20,0
cpc R20,R21
brne L6
X0:
L3:
.dbline 13
subi R16,1
sbci R17,0
L5:
.dbline 13
cpi R16,0
cpc R16,R17
brne L2
X1:
.dbline -2
L1:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r j 20 i
.dbsym r i 16 i
.dbend
.dbfunc e ADC0909 _ADC0909 fI
; data -> y+0
; channel -> R10
.even
_ADC0909::
rcall push_gset3
mov R10,R16
sbiw R28,4
.dbline -1
.dbline 20
; PORTD = 0xff;
; DDRD = 0x00;
; }
;
; //call this routine to initialize all peripherals
; void init_devices(void)
.dbline 22
; {
; //stop errant interrupts until set up
clr R2
out 0x11,R2
.dbline 23
; CLI(); //disable all interrupts
in R24,0x17
ori R24,7
out 0x17,R24
.dbline 24
; port_init();
in R24,0x18
andi R24,248
out 0x18,R24
.dbline 43
; spi_init();
;
; MCUCR = 0x00;
; GICR = 0x00;
; TIMSK = 0x00; //timer interrupt sources
; SEI(); //re-enable interrupts
; //all peripherals are now initialized
; }
;
; void main(void)
; {
; unsigned long su;
; init_devices();
; while(1)
; {
; su=ADC0909(0);
; process(su,data);
; display(data);
; delayms(100);
ldi R24,5
out 0x14,R24
.dbline 45
; }
; }
in R24,0x15
andi R24,250
out 0x15,R24
.dbline 47
; }
; }
sbi 0x15,0
.dbline 48
; }
in R24,0x15
andi R24,254
out 0x15,R24
L11:
.dbline 51
.dbline 52
.dbline 53
L12:
.dbline 50
; }
; }
sbis 0x13,1
rjmp L11
.dbline 54
; }
; }
; }
; }
sbi 0x15,2
.dbline 55
; }
in R2,0x10
clr R3
clr R4
clr R5
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
.dbline 56
; }
in R24,0x15
andi R24,251
out 0x15,R24
.dbline 57
; }
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
ldi R20,16
ldi R21,39
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
rcall empy32u
ldi R20,255
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R23
st -y,R22
st -y,R21
st -y,R20
rcall div32u
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
.dbline 58
; }
movw R30,R28
ldd R16,z+0
ldd R17,z+1
.dbline -2
L10:
adiw R28,4
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym l data 0 l
.dbsym r channel 10 c
.dbend
.area data(ram, con, rel)
.dbfile E:\数据采集作业\ADC0809+AVR/0809.h
_table::
.blkb 2
.area idata
.byte 192,249
.area data(ram, con, rel)
.dbfile E:\数据采集作业\ADC0809+AVR/0809.h
.blkb 2
.area idata
.byte 164,176
.area data(ram, con, rel)
.dbfile E:\数据采集作业\ADC0809+AVR/0809.h
.blkb 2
.area idata
.byte 153,146
.area data(ram, con, rel)
.dbfile E:\数据采集作业\ADC0809+AVR/0809.h
.blkb 2
.area idata
.byte 130,248
.area data(ram, con, rel)
.dbfile E:\数据采集作业\ADC0809+AVR/0809.h
.blkb 2
.area idata
.byte 128,144
.area data(ram, con, rel)
.dbfile E:\数据采集作业\ADC0809+AVR/0809.h
.dbfile E:\数据采集作业\ADC0809+AVR/SPIshow.h
.dbsym e table _table A[10:10]c
_data::
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile E:\数据采集作业\ADC0809+AVR/SPIshow.h
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile E:\数据采集作业\ADC0809+AVR/SPIshow.h
.dbsym e data _data A[4:4]c
.area text(rom, con, rel)
.dbfile E:\数据采集作业\ADC0809+AVR/SPIshow.h
.dbfunc e process _process fV
; p -> R10,R11
; i -> y+6
.even
_process::
rcall push_arg4
rcall push_gset3
ldd R10,y+10
ldd R11,y+11
.dbline -1
.dbline 15
.dbline 16
ldi R20,232
ldi R21,3
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
rcall div32u
movw R30,R10
std z+0,R16
.dbline 17
ldi R20,232
ldi R21,3
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
rcall mod32u
movw R30,R28
std z+6,R16
std z+7,R17
std z+8,R18
std z+9,R19
.dbline 18
ldi R20,100
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
rcall div32u
movw R30,R10
std z+1,R16
.dbline 19
ldi R20,100
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
rcall mod32u
movw R30,R28
std z+6,R16
std z+7,R17
std z+8,R18
std z+9,R19
.dbline 20
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
rcall div32u
movw R30,R10
std z+2,R16
.dbline 21
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
rcall mod32u
movw R30,R28
std z+6,R16
std z+7,R17
std z+8,R18
std z+9,R19
.dbline 22
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
movw R30,R10
std z+3,R2
.dbline -2
L14:
rcall pop_gset3
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r p 10 pc
.dbsym l i 6 l
.dbend
.dbfunc e spi_init _spi_init fV
.even
_spi_init::
.dbline -1
.dbline 29
.dbline 31
in R24,0x17
ori R24,40
out 0x17,R24
.dbline 32
ldi R24,95
out 0xd,R24
.dbline 33
clr R2
out 0xe,R2
.dbline -2
L15:
.dbline 0 ; func end
ret
.dbend
.dbfunc e send _send fV
; data -> R16
.even
_send::
.dbline -1
.dbline 38
.dbline 40
out 0xf,R16
L17:
.dbline 42
L18:
.dbline 41
sbis 0xe,7
rjmp L17
.dbline -2
L16:
.dbline 0 ; func end
ret
.dbsym r data 16 c
.dbend
.dbfunc e display _display fV
; i -> R20
; p -> R22,R23
.even
_display::
rcall push_gset2
movw R22,R16
.dbline -1
.dbline 46
.dbline 48
ldi R20,3
rjmp L24
L21:
.dbline 49
.dbline 50
mov R2,R20
clr R3
subi R20,1
mov R30,R2
clr R31
add R30,R22
adc R31,R23
ldd R30,z+0
clr R31
ldi R24,<_table
ldi R25,>_table
add R30,R24
adc R31,R25
ldd R16,z+0
rcall _send
.dbline 51
L22:
.dbline 48
L24:
.dbline 48
cpi R20,255
brne L21
.dbline -2
L20:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r p 22 pc
.dbend
.dbfile E:\数据采集作业\ADC0809+AVR\main.c
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 10
.dbline 11
clr R2
out 0x18,R2
.dbline 12
ldi R24,255
out 0x17,R24
.dbline 13
out 0x15,R2
.dbline 14
out 0x14,R2
.dbline 15
out 0x12,R24
.dbline 16
out 0x11,R2
.dbline -2
L25:
.dbline 0 ; func end
ret
.dbend
.dbfunc e init_devices _init_devices fV
.even
_init_devices::
.dbline -1
.dbline 21
.dbline 23
cli
.dbline 24
rcall _port_init
.dbline 25
rcall _spi_init
.dbline 27
clr R2
out 0x35,R2
.dbline 28
out 0x3b,R2
.dbline 29
out 0x39,R2
.dbline 30
sei
.dbline -2
L26:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; su -> y+2
.even
_main::
sbiw R28,6
.dbline -1
.dbline 35
.dbline 37
rcall _init_devices
rjmp L29
L28:
.dbline 39
.dbline 40
clr R16
rcall _ADC0909
movw R2,R16
clr R4
sbrc R3,7
com R4
clr R5
sbrc R4,7
com R5
movw R30,R28
std z+2,R2
std z+3,R3
std z+4,R4
std z+5,R5
.dbline 41
ldi R24,<_data
ldi R25,>_data
std y+1,R25
std y+0,R24
movw R30,R28
ldd R16,z+2
ldd R17,z+3
ldd R18,z+4
ldd R19,z+5
rcall _process
.dbline 42
ldi R16,<_data
ldi R17,>_data
rcall _display
.dbline 43
ldi R16,100
ldi R17,0
rcall _delayms
.dbline 44
L29:
.dbline 38
rjmp L28
X2:
.dbline -2
L27:
adiw R28,6
.dbline 0 ; func end
ret
.dbsym l su 2 l
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -