📄 12864.s
字号:
.module _12864.c
.area text(rom, con, rel)
.dbfile E:\PQ-1A\我的AVR\12864LLY/lcd12864.h
.dbfunc e lcd12864_init _lcd12864_init fV
.even
_lcd12864_init::
.dbline -1
.dbline 25
; #include <iom1 28v.h>
; #include <macros.h>
; #include "lcd12864.h"
; #include "pic.h"
;
; #define uchar unsigned char
; #define uint unsigned int
;
;
; void main()
; {
; uint s=387;
; CLI(); //禁止全局中断 原始定义为#asm(“cli”)
; lcd12864_init();
; clear_disp_pic();//液晶画图清屏程序
; // lcd12864_init();
; /* line1 = "检测到障碍物";
; line2 = " 距离:";*/
; while(1)
; {
; disp_pic(mmy);
; delay_ms(3000);
; //delay_ms(3000);
; clear_disp_pic();
; //delay_ms(10);
.dbline 26
; delay_ms(10);
in R24,0x14
ori R24,21
out 0x14,R24
.dbline 27
; line1=" LLY FG ";
clr R2
out 0x15,R2
.dbline 28
; line2=" 周望 加油!!";
lds R24,100
ori R24,4
sts 100,R24
.dbline 30
; line3="南华创新实验室";
; line4="团结 努力 拼搏 ";
lds R24,101
andi R24,251
sts 101,R24
.dbline 31
; display(); // 液晶整行显示函数程序
ldi R16,6
ldi R17,0
xcall _delay_ms
.dbline 33
; /* 函数名称 :con_disp
; * 功能描述 :当ee=0xff时,在x0,y0处反白显示x个字.
ldi R16,48
ldi R17,0
xcall _write_com
.dbline 34
; 当ee=0x00时,在x0,y0处取消反白显示x个字.*/
ldi R16,1
ldi R17,0
xcall _write_com
.dbline 35
; con_disp(0xff,0x95,0x90,3);
ldi R16,6
ldi R17,0
xcall _delay_ms
.dbline 36
; delay_ms(3000);
ldi R16,12
ldi R17,0
xcall _write_com
.dbline 37
; con_disp(0x00,0x95,0x90,2);
ldi R16,5
ldi R17,0
.dbline -2
.dbline 38
; delay_ms(3000);
L1:
.dbline 0 ; func end
xjmp _delay_ms
.dbend
.dbfunc e clear_dis _clear_dis fV
.even
_clear_dis::
.dbline -1
.dbline 42
; clear_dis();
; delay_ms(10);
; disp_pic(tupian);
; delay_ms(3000);
.dbline 43
; clear_dis(); //清屏,地址指针指向00H
ldi R16,48
ldi R17,0
xcall _write_com
.dbline 44
; lcd_writexy(1,0,"互相学习共同努力");//指定位置写文字
ldi R16,1
ldi R17,0
xcall _write_com
.dbline 45
; lcd_writexy(2,0,"明德博学求事至远");
ldi R16,10
ldi R17,0
.dbline -2
.dbline 46
; lcd_writexy(3,1,"南华创新实验室");
L2:
.dbline 0 ; func end
xjmp _delay_ms
.dbend
.dbfunc e write_byte _write_byte fV
; i -> R20
; word -> R16
.even
_write_byte::
xcall push_gset1
.dbline -1
.dbline 54
; lcd_writexy(4,1,"2009年02月24日");
; delay_ms(3000);
; delay_ms(3000);
; clear_dis(); /*清屏,地址指针指向00H
; display();
; write_com(0x94);
; write_data((s%1000/100)+0x30);
; write_data((s%100/10)+0x30);
.dbline 56
; write_data((s%10)+0x30);*/
; }
clr R20
xjmp L7
L4:
.dbline 57
;
.dbline 58
;
cbi 0x15,4
.dbline 59
; }
sbrs R16,7
rjmp L8
.dbline 59
sbi 0x15,2
xjmp L9
L8:
.dbline 60
; }
cbi 0x15,2
L9:
.dbline 61
lsl R16
.dbline 62
sbi 0x15,4
.dbline 63
cbi 0x15,4
.dbline 64
L5:
.dbline 56
inc R20
L7:
.dbline 56
cpi R20,8
brlo L4
.dbline -2
.dbline 65
; }
; }
; }
; }
; }
L3:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r word 16 c
.dbend
.dbfunc e write_com _write_com fV
; com -> R20
.even
_write_com::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 71
; }
; }
; }
; }
; }
; }
.dbline 72
; }
sbi 0x15,0
.dbline 73
; }
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 74
; }
ldi R16,248
xcall _write_byte
.dbline 75
; }
mov R16,R20
andi R16,240
xcall _write_byte
.dbline 76
; }
mov R16,R20
andi R16,#0x0F
swap R16
andi R16,240
xcall _write_byte
.dbline 77
; }
cbi 0x15,0
.dbline -2
.dbline 78
; }
L10:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r com 20 c
.dbend
.dbfunc e write_data _write_data fV
; data -> R20
.even
_write_data::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 84
; }
; }
; }
; }
; }
; }
.dbline 85
; }
sbi 0x15,0
.dbline 86
; }
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 87
; }
ldi R16,250
xcall _write_byte
.dbline 88
; }
mov R16,R20
andi R16,240
xcall _write_byte
.dbline 89
; }
mov R16,R20
andi R16,#0x0F
swap R16
andi R16,240
xcall _write_byte
.dbline 90
; }
cbi 0x15,0
.dbline -2
.dbline 91
; }
L11:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r data 20 c
.dbend
.dbfunc e lcd_writexy _lcd_writexy fV
; str -> R20,R21
; y -> R22
; x -> R10
.even
_lcd_writexy::
xcall push_gset3
mov R22,R18
mov R10,R16
ldd R20,y+6
ldd R21,y+7
.dbline -1
.dbline 95
; }
; }
; }
; }
.dbline 96
; }
clr R11
movw R24,R10
cpi R24,1
ldi R30,0
cpc R25,R30
breq L16
cpi R24,2
ldi R30,0
cpc R25,R30
breq L17
cpi R24,3
ldi R30,0
cpc R25,R30
breq L18
cpi R24,4
ldi R30,0
cpc R25,R30
breq L19
xjmp L21
X0:
.dbline 97
; }
L16:
.dbline 98
; }
mov R16,R22
subi R16,128 ; addi 128
xcall _write_com
.dbline 98
xjmp L21
L17:
.dbline 99
; }
mov R16,R22
subi R16,112 ; addi 144
xcall _write_com
.dbline 99
xjmp L21
L18:
.dbline 100
; }
mov R16,R22
subi R16,120 ; addi 136
xcall _write_com
.dbline 100
xjmp L21
L19:
.dbline 101
; }
mov R16,R22
subi R16,104 ; addi 152
xcall _write_com
.dbline 101
xjmp L21
L20:
.dbline 105
.dbline 106
movw R30,R20
ldd R16,z+0
xcall _write_data
.dbline 107
subi R20,255 ; offset = 1
sbci R21,255
.dbline 108
L21:
.dbline 104
; }
; }
; }
movw R30,R20
ldd R2,z+0
tst R2
brne L20
.dbline -2
.dbline 109
; }
; }
; }
; }
; }
L12:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r str 20 pc
.dbsym r y 22 c
.dbsym r x 10 c
.dbend
.dbfunc e display _display fV
.even
_display::
.dbline -1
.dbline 116
; }
; }
; }
; }
; }
; }
; }
.dbline 117
; }
ldi R16,128
xcall _write_com
xjmp L25
L24:
.dbline 119
.dbline 120
lds R30,_line1
lds R31,_line1+1
ldd R16,z+0
xcall _write_data
.dbline 121
lds R24,_line1
lds R25,_line1+1
adiw R24,1
sts _line1+1,R25
sts _line1,R24
.dbline 122
L25:
.dbline 118
; }
lds R30,_line1
lds R31,_line1+1
ldd R2,z+0
tst R2
brne L24
.dbline 124
; }
; }
; }
; }
; }
; }
ldi R16,144
xcall _write_com
xjmp L28
L27:
.dbline 126
.dbline 127
lds R30,_line2
lds R31,_line2+1
ldd R16,z+0
xcall _write_data
.dbline 128
lds R24,_line2
lds R25,_line2+1
adiw R24,1
sts _line2+1,R25
sts _line2,R24
.dbline 129
L28:
.dbline 125
; }
lds R30,_line2
lds R31,_line2+1
ldd R2,z+0
tst R2
brne L27
.dbline 131
; }
; }
; }
; }
; }
; }
ldi R16,136
xcall _write_com
xjmp L31
L30:
.dbline 133
.dbline 134
lds R30,_line3
lds R31,_line3+1
ldd R16,z+0
xcall _write_data
.dbline 135
lds R24,_line3
lds R25,_line3+1
adiw R24,1
sts _line3+1,R25
sts _line3,R24
.dbline 136
L31:
.dbline 132
; }
lds R30,_line3
lds R31,_line3+1
ldd R2,z+0
tst R2
brne L30
.dbline 138
; }
; }
; }
; }
; }
; }
ldi R16,152
xcall _write_com
xjmp L34
L33:
.dbline 140
.dbline 141
lds R30,_line4
lds R31,_line4+1
ldd R16,z+0
xcall _write_data
.dbline 142
lds R24,_line4
lds R25,_line4+1
adiw R24,1
sts _line4+1,R25
sts _line4,R24
.dbline 143
L34:
.dbline 139
; }
lds R30,_line4
lds R31,_line4+1
ldd R2,z+0
tst R2
brne L33
.dbline 144
; }
; }
; }
; }
; }
ldi R24,<L36
ldi R25,>L36
sts _line1+1,R25
sts _line1,R24
.dbline 145
; }
sts _line2+1,R25
sts _line2,R24
.dbline 146
; }
sts _line3+1,R25
sts _line3,R24
.dbline 147
; }
sts _line4+1,R25
sts _line4,R24
.dbline -2
.dbline 148
; }
L23:
.dbline 0 ; func end
ret
.dbend
.dbfunc e clear_disp_pic _clear_disp_pic fV
; j -> R20
; i -> R22
.even
_clear_disp_pic::
xcall push_gset2
.dbline -1
.dbline 156
; }
; }
; }
; }
; }
; }
; }
; }
.dbline 157
; }
clr R20
.dbline 158
; }
xjmp L41
L38:
.dbline 159
; }
.dbline 160
; }
clr R22
xjmp L45
L42:
.dbline 161
.dbline 162
ldi R16,52
xcall _write_com
.dbline 163
mov R16,R20
subi R16,128 ; addi 128
xcall _write_com
.dbline 164
mov R16,R22
subi R16,128 ; addi 128
xcall _write_com
.dbline 165
ldi R16,48
xcall _write_com
.dbline 166
clr R16
xcall _write_data
.dbline 167
clr R16
xcall _write_data
.dbline 168
L43:
.dbline 160
inc R22
L45:
.dbline 160
cpi R22,16
brlo L42
.dbline 169
L39:
.dbline 158
inc R20
L41:
.dbline 158
cpi R20,32
brlo L38
.dbline -2
.dbline 170
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
L37:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r j 20 c
.dbsym r i 22 c
.dbend
.dbfunc e disp_pic _disp_pic fV
; j -> R20
; i -> R22
; img -> R10,R11
.even
_disp_pic::
xcall push_gset3
movw R10,R16
.dbline -1
.dbline 176
; }
; }
; }
; }
; }
; }
.dbline 178
; }
; }
clr R20
xjmp L50
L47:
.dbline 179
; }
.dbline 180
; }
clr R22
xjmp L54
L51:
.dbline 181
.dbline 182
ldi R16,52
xcall _write_com
.dbline 183
mov R16,R20
subi R16,128 ; addi 128
xcall _write_com
.dbline 184
mov R16,R22
subi R16,128 ; addi 128
xcall _write_com
.dbline 185
ldi R16,48
xcall _write_com
.dbline 186
ldi R24,2
mul R24,R22
movw R2,R0
ldi R24,16
mul R24,R20
movw R30,R0
add R30,R2
adc R31,R3
add R30,R10
adc R31,R11
lpm R16,Z
xcall _write_data
.dbline 187
ldi R24,2
mul R24,R22
movw R2,R0
ldi R24,16
mul R24,R20
movw R30,R0
add R30,R2
adc R31,R3
add R30,R10
adc R31,R11
adiw R30,1
lpm R16,Z
xcall _write_data
.dbline 188
L52:
.dbline 180
inc R22
L54:
.dbline 180
cpi R22,8
brlo L51
.dbline 189
L48:
.dbline 178
inc R20
L50:
.dbline 178
cpi R20,32
brsh X1
xjmp L47
X1:
.dbline 190
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
ldi R20,32
xjmp L58
L55:
.dbline 191
; }
.dbline 192
; }
clr R22
xjmp L62
L59:
.dbline 193
.dbline 194
ldi R16,52
xcall _write_com
.dbline 195
mov R16,R20
subi R16,128 ; addi 128
subi R16,32
xcall _write_com
.dbline 196
mov R16,R22
subi R16,120 ; addi 136
xcall _write_com
.dbline 197
ldi R16,48
xcall _write_com
.dbline 198
ldi R24,2
mul R24,R22
movw R2,R0
ldi R24,16
mul R24,R20
movw R30,R0
add R30,R2
adc R31,R3
add R30,R10
adc R31,R11
lpm R16,Z
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -