📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile F:\avrprojs\lcd_block/lcd.h
.dbfunc e LCD_init _LCD_init fV
.even
_LCD_init::
.dbline -1
.dbline 22
; #include "lcd.h"
; #include "uart.h"
; void uart0_rx_isr();
; int i,j;
; /*
; #pragma interrupt_handler uart0_rx_isr:19
; void uart0_rx_isr(void)
; {
;
; unsigned char c;
; c=UDR0;
; LCD_display_char(0,0,c);
; if(i>=15)
; {
; i=0;
; j=j+1;
; if(j>=4)
; {
; j=0;
; LCD_write_char(0x01,0);
; }
; }
.dbline 23
;
ldi R16,2
ldi R17,0
rcall _delay_nms
.dbline 24
; //uart has received a character in UDR
clr R18
clr R19
ldi R16,56
ldi R17,0
rcall _LCD_write_char
.dbline 26
; }
; */
ldi R16,6
ldi R17,0
rcall _delay_nms
.dbline 27
; void main(void)
clr R18
clr R19
ldi R16,56
ldi R17,0
rcall _LCD_write_char
.dbline 29
; {
; unsigned char c,c_temp;
ldi R16,2
ldi R17,0
rcall _delay_nms
.dbline 30
; init_devices();
clr R18
clr R19
ldi R16,56
ldi R17,0
rcall _LCD_write_char
.dbline 32
; LCD_init();
; uart0_init();
clr R18
clr R19
ldi R16,56
ldi R17,0
rcall _LCD_write_char
.dbline 33
; j=3;
ldi R16,2
ldi R17,0
rcall _delay_nms
.dbline 34
; i=12;
clr R18
clr R19
ldi R16,1
ldi R17,0
rcall _LCD_write_char
.dbline 35
; LCD_write_char(0x01,0);
ldi R16,2
ldi R17,0
rcall _delay_nms
.dbline 36
; // LCD_display_char(5,2,'8');
clr R18
clr R19
ldi R16,8
ldi R17,0
rcall _LCD_write_char
.dbline 37
;
ldi R16,1
ldi R17,0
rcall _delay_nms
.dbline 39
; LCD_write_string(4,0,"Wellcome");
; LCD_write_string(0,1,"www.OURAVR.com!");
clr R18
clr R19
ldi R16,6
ldi R17,0
rcall _LCD_write_char
.dbline 40
; LCD_write_string(0,2,"happy new year!");
ldi R16,1
ldi R17,0
rcall _delay_nms
.dbline 43
; LCD_write_string(0,3,"amork:everfriend");
; delay_nms(5000);
; LCD_write_char(0x01,0);
clr R18
clr R19
ldi R16,12
ldi R17,0
rcall _LCD_write_char
.dbline 45
; while(1) //for循环
; {
clr R18
clr R19
ldi R16,1
ldi R17,0
rcall _LCD_write_char
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LCD_write_string _LCD_write_string fV
; s -> R20,R21
; Y -> R10,R11
; X -> R22,R23
.even
_LCD_write_string::
rcall push_gset3
movw R10,R18
movw R22,R16
ldd R20,y+6
ldd R21,y+7
.dbline -1
.dbline 50
; LCD_write_string(4,0,"Wellcome");
; //LCD_write_string(0,1,"www.OURAVR.com!");
; LCD_write_string(0,1,"happy new year!");
;
; c_temp=uart_rec();
.dbline 51
; LCD_display_char(i,j,c_temp);
movw R18,R10
movw R16,R22
rcall _LCD_set_xy
rjmp L4
L3:
.dbline 54
.dbline 55
movw R30,R20
ldd R18,z+0
clr R19
clr R16
clr R17
rcall _LCD_write_char
.dbline 56
subi R20,255 ; offset = 1
sbci R21,255
.dbline 57
L4:
.dbline 53
; i=i+1;
; if(i>=16)
movw R30,R20
ldd R2,z+0
tst R2
brne L3
.dbline -2
L2:
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r s 20 pc
.dbsym r Y 10 I
.dbsym r X 22 I
.dbend
.dbfunc e LCD_set_xy _LCD_set_xy fV
; address -> R20
; y -> R22,R23
; x -> R20,R21
.even
_LCD_set_xy::
rcall push_gset2
movw R22,R18
movw R20,R16
.dbline -1
.dbline 62
; {
; i=0;
; j=j+1;
; if(j>=4)
; {
; j=2;
; LCD_write_char(0x01,0);
; }
; }
.dbline 65
;
;
; }
ldi R16,100
ldi R17,0
rcall _delay_nus
.dbline 66
; }
andi R20,15
andi R21,0
.dbline 67
; }
cpi R22,0
cpc R22,R23
breq L9
X0:
cpi R22,1
ldi R30,0
cpc R23,R30
breq L10
cpi R22,2
ldi R30,0
cpc R23,R30
breq L11
cpi R22,3
ldi R30,0
cpc R23,R30
breq L12
rjmp L8
X1:
.dbline 68
; }
L9:
.dbline 70
; }
; }
.dbline 71
; }
rjmp L8
L10:
.dbline 73
; }
; }
subi R20,192 ; addi 64
.dbline 74
; }
rjmp L8
L11:
.dbline 76
; }
; }
subi R20,240 ; addi 16
.dbline 77
; }
rjmp L8
L12:
.dbline 79
; }
; }
subi R20,176 ; addi 80
.dbline 80
; }
.dbline 82
; }
; }
L8:
.dbline 84
; }
; }
ori R20,128
.dbline 85
; }
clr R18
clr R19
mov R16,R20
clr R17
rcall _LCD_write_char
.dbline -2
L6:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r address 20 c
.dbsym r y 22 I
.dbsym r x 20 I
.dbend
.dbfunc e LCD_en_write _LCD_en_write fV
.even
_LCD_en_write::
.dbline -1
.dbline 91
; }
; }
; }
; }
; }
; }
.dbline 92
; }
sbi 0xb,4
.dbline 93
; }
ldi R16,1
ldi R17,0
rcall _delay_nus
.dbline 94
; }
cbi 0xb,4
.dbline -2
L13:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LCD_display_char _LCD_display_char fV
; data -> y+4
; y -> R22,R23
; x -> R20,R21
.even
_LCD_display_char::
rcall push_gset2
movw R22,R18
movw R20,R16
.dbline -1
.dbline 97
; }
; }
; }
.dbline 98
; }
movw R18,R22
movw R16,R20
rcall _LCD_set_xy
.dbline 99
; }
ldd R18,y+4
clr R19
clr R16
clr R17
rcall _LCD_write_char
.dbline -2
L14:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l data 4 c
.dbsym r y 22 I
.dbsym r x 20 I
.dbend
.dbfunc e LCD_write_char _LCD_write_char fV
; data -> R22,R23
; command -> R20,R21
.even
_LCD_write_char::
rcall push_gset2
movw R22,R18
movw R20,R16
.dbline -1
.dbline 103
; }
; }
; }
; }
.dbline 105
; }
; }
ldi R16,16
ldi R17,0
rcall _delay_nus
.dbline 106
; }
cpi R20,0
cpc R20,R21
brne L16
X2:
.dbline 107
; }
.dbline 108
; }
sbi 0xb,3
.dbline 109
; }
cbi 0xb,4
.dbline 110
; }
out 0x5,R22
.dbline 111
; }
sbi 0xb,4
.dbline 113
; }
; }
ldi R16,50
ldi R17,0
rcall _delay_nus
.dbline 114
; }
cbi 0xb,4
.dbline 115
; }
rjmp L17
L16:
.dbline 117
.dbline 118
cbi 0xb,3
.dbline 119
cbi 0xb,4
.dbline 120
out 0x5,R20
.dbline 121
sbi 0xb,4
.dbline 123
ldi R16,50
ldi R17,0
rcall _delay_nus
.dbline 124
cbi 0xb,4
.dbline 125
L17:
.dbline -2
L15:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r data 22 i
.dbsym r command 20 i
.dbend
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 129
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 130
; }
ldi R24,27
out 0x5,R24
.dbline 131
; }
ldi R24,255
out 0x4,R24
.dbline 132
; }
ldi R24,3
out 0x8,R24
.dbline 133
; }
out 0x7,R24
.dbline 134
; }
clr R2
out 0xb,R2
.dbline 135
; }
ldi R24,24
out 0xa,R24
.dbline -2
L18:
.dbline 0 ; func end
ret
.dbend
.dbfunc e init_devices _init_devices fV
.even
_init_devices::
.dbline -1
.dbline 140
; }
; }
; }
; }
; }
.dbline 142
; }
; }
rcall _port_init
.dbline -2
L19:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delay_1us _delay_1us fV
.even
_delay_1us::
.dbline -1
.dbline 151
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 152
; }
nop
.dbline -2
L20:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delay_nus _delay_nus fV
; i -> R20,R21
; n -> R22,R23
.even
_delay_nus::
rcall push_gset2
movw R22,R16
.dbline -1
.dbline 156
; }
; }
; }
; }
.dbline 157
; }
clr R20
clr R21
.dbline 158
; }
rjmp L25
L22:
.dbline 159
rcall _delay_1us
L23:
.dbline 158
subi R20,255 ; offset = 1
sbci R21,255
L25:
.dbline 158
cp R20,R22
cpc R21,R23
brlo L22
.dbline -2
L21:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r n 22 i
.dbend
.dbfunc e delay_1ms _delay_1ms fV
; i -> R16,R17
.even
_delay_1ms::
.dbline -1
.dbline 163
; }
; }
; }
; }
; }
.dbline 165
clr R16
clr R17
rjmp L30
L27:
.dbline 165
L28:
.dbline 165
subi R16,255 ; offset = 1
sbci R17,255
L30:
.dbline 165
; }
; }
cpi R16,114
ldi R30,0
cpc R17,R30
brlo L27
.dbline -2
L26:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.dbfunc e delay_nms _delay_nms fV
; i -> R20,R21
; n -> R22,R23
.even
_delay_nms::
rcall push_gset2
movw R22,R16
.dbline -1
.dbline 169
; }
; }
; }
; }
.dbline 170
; }
clr R20
clr R21
.dbline 171
; }
rjmp L35
L32:
.dbline 172
rcall _delay_1ms
L33:
.dbline 171
subi R20,255 ; offset = 1
sbci R21,255
L35:
.dbline 171
cp R20,R22
cpc R21,R23
brlo L32
.dbline -2
L31:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r n 22 i
.dbend
.dbfile F:\avrprojs\lcd_block/uart.h
.dbfunc e delay _delay fV
; i -> y+0
.even
_delay::
rcall push_gset2
sbiw R28,4
.dbline -1
.dbline 10
.dbline 12
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
std z+0,R20
std z+1,R21
std z+2,R22
std z+3,R23
rjmp L40
L37:
.dbline 12
L38:
.dbline 12
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
L40:
.dbline 12
ldi R20,134
ldi R21,43
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brlo L37
.dbline -2
L36:
adiw R28,4
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l i 0 l
.dbend
.dbfunc e uart0_init _uart0_init fV
.even
_uart0_init::
.dbline -1
.dbline 19
.dbline 20
clr R2
sts 193,R2
.dbline 21
sts 192,R2
.dbline 22
ldi R24,6
sts 194,R24
.dbline 23
ldi R24,51
sts 196,R24
.dbline 24
sts 197,R2
.dbline 25
ldi R24,152
sts 193,R24
.dbline -2
L41:
.dbline 0 ; func end
ret
.dbend
.dbfunc e uart_send _uart_send fV
; c -> R16
.even
_uart_send::
.dbline -1
.dbline 29
.dbline 31
sts 198,R16
L43:
.dbline 32
L44:
.dbline 32
lds R2,192
sbrs R2,6
rjmp L43
.dbline -2
L42:
.dbline 0 ; func end
ret
.dbsym r c 16 c
.dbend
.dbfunc e uart_rec _uart_rec fc
.even
_uart_rec::
.dbline -1
.dbline 36
L47:
.dbline 37
L48:
.dbline 37
lds R2,192
sbrs R2,7
rjmp L47
.dbline 38
lds R16,198
.dbline -2
L46:
.dbline 0 ; func end
ret
.dbend
.dbfile F:\avrprojs\lcd_block\main.c
.dbfunc e main _main fV
; c -> <dead>
; c_temp -> R20
.even
_main::
sbiw R28,2
.dbline -1
.dbline 28
.dbline 30
rcall _init_devices
.dbline 31
rcall _LCD_init
.dbline 32
rcall _uart0_init
.dbline 33
ldi R24,3
ldi R25,0
sts _j+1,R25
sts _j,R24
.dbline 34
ldi R24,12
sts _i+1,R25
sts _i,R24
.dbline 35
clr R18
clr R19
ldi R16,1
ldi R17,0
rcall _LCD_write_char
.dbline 38
ldi R24,<L51
ldi R25,>L51
std y+1,R25
std y+0,R24
clr R18
clr R19
ldi R16,4
ldi R17,0
rcall _LCD_write_string
.dbline 39
ldi R24,<L52
ldi R25,>L52
std y+1,R25
std y+0,R24
ldi R18,1
ldi R19,0
clr R16
clr R17
rcall _LCD_write_string
.dbline 40
ldi R24,<L53
ldi R25,>L53
std y+1,R25
std y+0,R24
ldi R18,2
ldi R19,0
clr R16
clr R17
rcall _LCD_write_string
.dbline 41
ldi R24,<L54
ldi R25,>L54
std y+1,R25
std y+0,R24
ldi R18,3
ldi R19,0
clr R16
clr R17
rcall _LCD_write_string
.dbline 42
ldi R16,5000
ldi R17,19
rcall _delay_nms
.dbline 43
clr R18
clr R19
ldi R16,1
ldi R17,0
rcall _LCD_write_char
rjmp L56
L55:
.dbline 45
.dbline 46
ldi R24,<L51
ldi R25,>L51
std y+1,R25
std y+0,R24
clr R18
clr R19
ldi R16,4
ldi R17,0
rcall _LCD_write_string
.dbline 48
ldi R24,<L53
ldi R25,>L53
std y+1,R25
std y+0,R24
ldi R18,1
ldi R19,0
clr R16
clr R17
rcall _LCD_write_string
.dbline 50
rcall _uart_rec
mov R20,R16
.dbline 51
std y+0,R20
lds R18,_j
lds R19,_j+1
lds R16,_i
lds R17,_i+1
rcall _LCD_display_char
.dbline 52
lds R24,_i
lds R25,_i+1
adiw R24,1
sts _i+1,R25
sts _i,R24
.dbline 53
cpi R24,16
ldi R30,0
cpc R25,R30
brlt L58
.dbline 54
.dbline 55
clr R2
clr R3
sts _i+1,R3
sts _i,R2
.dbline 56
lds R24,_j
lds R25,_j+1
adiw R24,1
sts _j+1,R25
sts _j,R24
.dbline 57
cpi R24,4
ldi R30,0
cpc R25,R30
brlt L60
.dbline 58
.dbline 59
ldi R24,2
ldi R25,0
sts _j+1,R25
sts _j,R24
.dbline 60
clr R18
clr R19
ldi R16,1
ldi R17,0
rcall _LCD_write_char
.dbline 61
L60:
.dbline 62
L58:
.dbline 65
L56:
.dbline 44
rjmp L55
X3:
.dbline -2
L50:
adiw R28,2
.dbline 0 ; func end
ret
.dbsym l c 3 c
.dbsym r c_temp 20 c
.dbend
.area bss(ram, con, rel)
.dbfile F:\avrprojs\lcd_block\main.c
_j::
.blkb 2
.dbsym e j _j I
_i::
.blkb 2
.dbsym e i _i I
.area data(ram, con, rel)
.dbfile F:\avrprojs\lcd_block\main.c
L54:
.blkb 17
.area idata
.byte 'a,'m,'o,'r,'k,58,'e,'v,'e,'r,'f,'r,'i,'e,'n,'d
.byte 0
.area data(ram, con, rel)
.dbfile F:\avrprojs\lcd_block\main.c
L53:
.blkb 16
.area idata
.byte 'h,'a,'p,'p,'y,32,'n,'e,'w,32,'y,'e,'a,'r,33,0
.area data(ram, con, rel)
.dbfile F:\avrprojs\lcd_block\main.c
L52:
.blkb 16
.area idata
.byte 'w,'w,'w,46,'O,'U,'R,'A,'V,'R,46,'c,'o,'m,33,0
.area data(ram, con, rel)
.dbfile F:\avrprojs\lcd_block\main.c
L51:
.blkb 9
.area idata
.byte 'W,'e,'l,'l,'c,'o,'m,'e,0
.area data(ram, con, rel)
.dbfile F:\avrprojs\lcd_block\main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -