📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile E:\avr\1602测试程序\main.c
.dbfunc e init_devices _init_devices fV
.even
_init_devices::
.dbline -1
.dbline 6
; #include <iom16v.h>
; #include "lcd.h"
; #include "delay.h"
;
; void init_devices( void )
; {
.dbline 7
; LCD_init();
xcall _LCD_init
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; tmp_f -> y+9
; i -> y+5
.even
_main::
sbiw R28,13
.dbline -1
.dbline 11
; }
;
; void main( void )
; {
.dbline 12
; long int i = 0;
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
std y+5,R20
std y+6,R21
std y+7,R22
std y+8,R23
.dbline 13
; float tmp_f = 0.00;
ldi R16,<L3
ldi R17,>L3
xcall lpm32
std y+9,R16
std y+10,R17
std y+11,R18
std y+12,R19
.dbline 14
; init_devices(); //目标版初始化
xcall _init_devices
.dbline 16
;
; LCD_write_string( 1, 4, "TEST LCD" ); //写字符串
ldi R24,<L4
ldi R25,>L4
std y+1,R25
std y+0,R24
ldi R18,4
ldi R16,1
xcall _LCD_write_string
.dbline 17
; delay_ns( 1 ); //延时1S
ldi R16,1
xcall _delay_ns
.dbline 18
; LCD_write_string( 1, 0, " " ); //清第一行数据
ldi R24,<L5
ldi R25,>L5
std y+1,R25
std y+0,R24
clr R18
ldi R16,1
xcall _LCD_write_string
.dbline 20
;
; for( i = 0; i < 1234; i++ ) //显示整数,小数
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
std y+5,R20
std y+6,R21
std y+7,R22
std y+8,R23
L6:
.dbline 21
; {
.dbline 22
; LCD_write_datalongint( 2, 1, i ); //显示正整数 i
ldd R2,y+5
ldd R3,y+6
ldd R4,y+7
ldd R5,y+8
std y+0,R2
std y+1,R3
std y+2,R4
std y+3,R5
ldi R18,1
ldi R16,2
xcall _LCD_write_datalongint
.dbline 23
; LCD_write_datalongint( 1, 0, i*(-1) ); //显示负整数 -i
ldd R2,y+5
ldd R3,y+6
ldd R4,y+7
ldd R5,y+8
ldi R20,255
ldi R21,255
ldi R22,255
ldi R23,255
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32s
std y+0,R16
std y+1,R17
std y+2,R18
std y+3,R19
clr R18
ldi R16,1
xcall _LCD_write_datalongint
.dbline 24
; delay_nms( 10 );
ldi R16,10
ldi R17,0
xcall _delay_nms
.dbline 26
;
; tmp_f = 1.234 * i;
ldi R16,<L10
ldi R17,>L10
xcall lpm32
movw R2,R16
movw R4,R18
ldd R16,y+5
ldd R17,y+6
ldd R18,y+7
ldd R19,y+8
xcall long2fp
st -y,R19
st -y,R18
st -y,R17
st -y,R16
movw R16,R2
movw R18,R4
xcall fpmule2
std y+9,R16
std y+10,R17
std y+11,R18
std y+12,R19
.dbline 27
; LCD_write_datafloat( 2, 8, tmp_f, 2 ); //显示正浮点数tmp_f, 小数位2位
ldi R24,2
std y+4,R24
ldd R2,y+9
ldd R3,y+10
ldd R4,y+11
ldd R5,y+12
std y+0,R2
std y+1,R3
std y+2,R4
std y+3,R5
ldi R18,8
ldi R16,2
xcall _LCD_write_datafloat
.dbline 28
; LCD_write_datafloat( 1, 7, tmp_f*(-1), 2 ); //显示负浮点数-tmp_f, 小数位2位
ldi R24,2
std y+4,R24
ldi R16,<L11
ldi R17,>L11
xcall lpm32
movw R24,R28
adiw R24,9
st -y,R25
st -y,R24
xcall fpmule1
std y+0,R16
std y+1,R17
std y+2,R18
std y+3,R19
ldi R18,7
ldi R16,1
xcall _LCD_write_datafloat
.dbline 30
;
; if( i == 1233 )
ldi R20,209
ldi R21,4
ldi R22,0
ldi R23,0
ldd R2,y+5
ldd R3,y+6
ldd R4,y+7
ldd R5,y+8
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brne L12
X0:
.dbline 31
; {
.dbline 32
; LCD_write_string( 1, 0, " " ); //清第一行数据
ldi R24,<L5
ldi R25,>L5
std y+1,R25
std y+0,R24
clr R18
ldi R16,1
xcall _LCD_write_string
.dbline 33
; LCD_write_string( 2, 0, " " ); //清第二行数据
ldi R24,<L5
ldi R25,>L5
std y+1,R25
std y+0,R24
clr R18
ldi R16,2
xcall _LCD_write_string
.dbline 34
; i = 0;
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
std y+5,R20
std y+6,R21
std y+7,R22
std y+8,R23
.dbline 35
; }
L12:
.dbline 36
; }
L7:
.dbline 20
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
ldd R2,y+5
ldd R3,y+6
ldd R4,y+7
ldd R5,y+8
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
std y+5,R2
std y+6,R3
std y+7,R4
std y+8,R5
.dbline 20
ldi R20,210
ldi R21,4
ldi R22,0
ldi R23,0
ldd R2,y+5
ldd R3,y+6
ldd R4,y+7
ldd R5,y+8
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brge X2
xjmp L6
X2:
X1:
.dbline -2
L2:
.dbline 0 ; func end
adiw R28,13
ret
.dbsym l tmp_f 9 D
.dbsym l i 5 L
.dbend
.area lit(rom, con, rel)
L11:
.word 0x0,0xbf80
L10:
.word 0xf3b6,0x3f9d
.area data(ram, con, rel)
.dbfile E:\avr\1602测试程序\main.c
L5:
.blkb 25
.area idata
.byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
.byte 32,32,32,32,32,32,32,32,0
.area data(ram, con, rel)
.dbfile E:\avr\1602测试程序\main.c
L4:
.blkb 9
.area idata
.byte 'T,'E,'S,'T,32,'L,'C,'D,0
.area data(ram, con, rel)
.dbfile E:\avr\1602测试程序\main.c
.area lit(rom, con, rel)
L3:
.word 0x0,0x0
; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -