📄 1602六线接法练习.s
字号:
.module _1602六线接法练习.c
.area text(rom, con, rel)
.dbfile D:\M16开发板实验教程\icc-avr\lcd1602test/1602.h
.dbfunc e LCD_init _LCD_init fV
.even
_LCD_init::
.dbline -1
.dbline 30
; #include <iom16v.h>
; #include <macros.h>
; #include "1602.h"
;
;
; void main(void)
; {
; LCD_init(); //initialize lcd1602
; while(1)
; {
; clear(); //clear lcd1602
; delay_nms(10);
; LCD_write_string(0,0," ATmega 16 BOARD"); //write the string on the first
; //line at the first address
; LCD_write_string(1,1," dushibiao ");
; delay_nms(5000);
; clear();
; delay_nms(10);
; LCD_write_string(0,0,"Stduy follow me");
; LCD_write_string(0,1,"You will secceed");
; delay_nms(5000);
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 31
; }
in R24,0x1a
ori R24,240
out 0x1a,R24
.dbline 32
; }
sbi 0x1a,3
.dbline 33
; }
sbi 0x1a,2
.dbline 34
; }
ldi R16,15
ldi R17,0
xcall _delay_nms
.dbline 35
; }
clr R18
clr R19
ldi R16,40
ldi R17,0
xcall _LCD_write_char
.dbline 36
; }
ldi R16,15
ldi R17,0
xcall _delay_nms
.dbline 37
; }
clr R18
clr R19
ldi R16,12
ldi R17,0
xcall _LCD_write_char
.dbline 38
; }
ldi R16,15
ldi R17,0
xcall _delay_nms
.dbline 39
; }
clr R18
clr R19
ldi R16,1
ldi R17,0
xcall _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
; X -> R22
.even
_LCD_write_string::
xcall push_gset3
mov R10,R18
mov R22,R16
ldd R20,y+6
ldd R21,y+7
.dbline -1
.dbline 49
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 50
; }
mov R18,R10
mov R16,R22
xcall _LCD_set_xy
xjmp L4
L3:
.dbline 53
.dbline 54
movw R30,R20
ldd R18,z+0
clr R19
clr R16
clr R17
xcall _LCD_write_char
.dbline 55
subi R20,255 ; offset = 1
sbci R21,255
.dbline 56
L4:
.dbline 52
; }
; }
movw R30,R20
ldd R2,z+0
tst R2
brne L3
.dbline -2
L2:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r s 20 pc
.dbsym r Y 10 c
.dbsym r X 22 c
.dbend
.dbfunc e LCD_set_xy _LCD_set_xy fV
; address -> R20
; y -> R20
; x -> R22
.even
_LCD_set_xy::
xcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 65
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 67
; }
; }
tst R20
brne L7
.dbline 67
mov R20,R22
subi R20,128 ; addi 128
xjmp L8
L7:
.dbline 69
; }
; }
mov R20,R22
subi R20,64 ; addi 192
L8:
.dbline 70
; }
clr R18
clr R19
mov R16,R20
clr R17
xcall _LCD_write_char
.dbline -2
L6:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r address 20 c
.dbsym r y 20 c
.dbsym r x 22 c
.dbend
.dbfunc e LCD_en_write _LCD_en_write fV
.even
_LCD_en_write::
.dbline -1
.dbline 76
; }
; }
; }
; }
; }
; }
.dbline 77
; }
sbi 0x1b,3
.dbline 78
; }
ldi R16,5
ldi R17,0
xcall _delay_nus
.dbline 79
; }
cbi 0x1b,3
.dbline -2
L9:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LCD_write_char _LCD_write_char fV
; data_temp -> R22,R23
; command_temp -> R20,R21
; data -> R12,R13
; command -> R10,R11
.even
_LCD_write_char::
xcall push_gset4
movw R12,R18
movw R10,R16
.dbline -1
.dbline 88
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 90
; }
; }
movw R20,R10
.dbline 91
; }
movw R22,R12
.dbline 92
; }
ldi R16,25
ldi R17,0
xcall _delay_nus
.dbline 93
; }
cpi R20,0
cpc R20,R21
brne L11
X0:
.dbline 94
; }
.dbline 95
; }
sbi 0x1b,2
.dbline 96
; }
in R24,0x1b
andi R24,15
out 0x1b,R24
.dbline 97
; }
movw R24,R22
andi R24,240
andi R25,0
in R2,0x1b
clr R3
or R2,R24
or R3,R25
out 0x1b,R2
.dbline 98
; }
xcall _LCD_en_write
.dbline 99
; }
lsl R22
rol R23
lsl R22
rol R23
lsl R22
rol R23
lsl R22
rol R23
.dbline 100
; }
in R24,0x1b
andi R24,15
out 0x1b,R24
.dbline 101
; }
movw R24,R22
andi R24,240
andi R25,0
in R2,0x1b
clr R3
or R2,R24
or R3,R25
out 0x1b,R2
.dbline 102
; }
xcall _LCD_en_write
.dbline 103
; }
xjmp L12
L11:
.dbline 105
.dbline 106
cbi 0x1b,2
.dbline 107
in R24,0x1b
andi R24,15
out 0x1b,R24
.dbline 108
movw R24,R20
andi R24,240
andi R25,0
in R2,0x1b
clr R3
or R2,R24
or R3,R25
out 0x1b,R2
.dbline 109
xcall _LCD_en_write
.dbline 110
lsl R20
rol R21
lsl R20
rol R21
lsl R20
rol R21
lsl R20
rol R21
.dbline 111
in R24,0x1b
andi R24,15
out 0x1b,R24
.dbline 112
movw R24,R20
andi R24,240
andi R25,0
in R2,0x1b
clr R3
or R2,R24
or R3,R25
out 0x1b,R2
.dbline 113
xcall _LCD_en_write
.dbline 114
L12:
.dbline -2
L10:
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r data_temp 22 i
.dbsym r command_temp 20 i
.dbsym r data 12 i
.dbsym r command 10 i
.dbend
.dbfunc e clear _clear fV
; i -> R20
.even
_clear::
xcall push_gset1
.dbline -1
.dbline 120
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 122
; }
; }
clr R18
clr R16
xcall _LCD_set_xy
.dbline 123
; }
clr R20
xjmp L17
L14:
.dbline 124
ldi R18,32
ldi R19,0
clr R16
clr R17
xcall _LCD_write_char
L15:
.dbline 123
inc R20
L17:
.dbline 123
cpi R20,16
brlo L14
.dbline 125
; }
; }
ldi R18,1
clr R16
xcall _LCD_set_xy
.dbline 126
; }
clr R20
xjmp L21
L18:
.dbline 127
ldi R18,32
ldi R19,0
clr R16
clr R17
xcall _LCD_write_char
L19:
.dbline 126
inc R20
L21:
.dbline 126
cpi R20,16
brlo L18
.dbline -2
L13:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.dbfile D:\M16开发板实验教程\icc-avr\lcd1602test\1602六线接法练习.c
.dbfunc e main _main fV
.even
_main::
sbiw R28,2
.dbline -1
.dbline 7
.dbline 8
xcall _LCD_init
xjmp L24
L23:
.dbline 10
.dbline 11
xcall _clear
.dbline 12
ldi R16,10
ldi R17,0
xcall _delay_nms
.dbline 13
ldi R24,<L26
ldi R25,>L26
std y+1,R25
std y+0,R24
clr R18
clr R16
xcall _LCD_write_string
.dbline 15
ldi R24,<L27
ldi R25,>L27
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,1
xcall _LCD_write_string
.dbline 16
ldi R16,5000
ldi R17,19
xcall _delay_nms
.dbline 17
xcall _clear
.dbline 18
ldi R16,10
ldi R17,0
xcall _delay_nms
.dbline 19
ldi R24,<L28
ldi R25,>L28
std y+1,R25
std y+0,R24
clr R18
clr R16
xcall _LCD_write_string
.dbline 20
ldi R24,<L29
ldi R25,>L29
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
xcall _LCD_write_string
.dbline 21
ldi R16,5000
ldi R17,19
xcall _delay_nms
.dbline 22
L24:
.dbline 9
xjmp L23
X1:
.dbline -2
L22:
adiw R28,2
.dbline 0 ; func end
ret
.dbend
.area data(ram, con, rel)
.dbfile D:\M16开发板实验教程\icc-avr\lcd1602test\1602六线接法练习.c
L29:
.blkb 17
.area idata
.byte 'Y,'o,'u,32,'w,'i,'l,'l,32,'s,'e,'c,'c,'e,'e,'d
.byte 0
.area data(ram, con, rel)
.dbfile D:\M16开发板实验教程\icc-avr\lcd1602test\1602六线接法练习.c
L28:
.blkb 16
.area idata
.byte 'S,'t,'d,'u,'y,32,'f,'o,'l,'l,'o,'w,32,'m,'e,0
.area data(ram, con, rel)
.dbfile D:\M16开发板实验教程\icc-avr\lcd1602test\1602六线接法练习.c
L27:
.blkb 13
.area idata
.byte 32,32,'d,'u,'s,'h,'i,'b,'i,'a,'o,32,0
.area data(ram, con, rel)
.dbfile D:\M16开发板实验教程\icc-avr\lcd1602test\1602六线接法练习.c
L26:
.blkb 17
.area idata
.byte 32,'A,'T,'m,'e,'g,'a,32,49,54,32,'B,'O,'A,'R,'D
.byte 0
.area data(ram, con, rel)
.dbfile D:\M16开发板实验教程\icc-avr\lcd1602test\1602六线接法练习.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -