📄 lcd.s
字号:
ldd R17,y+12
cp R0,R16
cpc R1,R17
brsh L53
.dbline 171
; {x=x1;x1=x2;x2=x;}
.dbline 171
movw R12,R16
.dbline 171
std y+12,R1
std y+11,R0
.dbline 171
std y+16,R13
std y+15,R12
.dbline 171
L53:
.dbline 172
ldd R12,y+11
ldd R13,y+12
xjmp L58
L55:
.dbline 172
ldi R24,1
std y+0,R24
mov R18,R14
mov R16,R12
push R6
push R7
xcall _draw_point
pop R7
pop R6
L56:
.dbline 172
movw R24,R12
adiw R24,1
movw R12,R24
L58:
.dbline 172
; for ( x=x1;x<=x2;x++ ) draw_point(x,y,1);
ldd R0,y+15
ldd R1,y+16
cp R0,R12
cpc R1,R13
brsh L55
.dbline 173
; }
xjmp L52
L51:
.dbline 175
; else
; {
.dbline 176
; if(x2>=x1){temp=1;d_x=x2-x1;}
ldd R0,y+15
ldd R1,y+16
ldd R16,y+11
ldd R17,y+12
cp R0,R16
cpc R1,R17
brlo L59
.dbline 176
.dbline 176
ldi R20,1
.dbline 176
movw R22,R0
movw R0,R16
sub R22,R16
sbc R23,R17
.dbline 176
xjmp L60
L59:
.dbline 177
; else d_x=x1-x2;
ldd R22,y+11
ldd R23,y+12
ldd R0,y+15
ldd R1,y+16
sub R22,R0
sbc R23,R1
L60:
.dbline 178
; x=x1;y=y1; draw_point(x,y,1);
ldd R12,y+11
ldd R13,y+12
.dbline 178
ldd R14,y+13
ldd R15,y+14
.dbline 178
ldi R24,1
std y+0,R24
mov R18,R14
mov R16,R12
push R6
push R7
xcall _draw_point
pop R7
pop R6
.dbline 179
; if(temp&&(d_y<=d_x))
tst R20
brne X2
xjmp L61
X2:
cp R22,R10
cpc R23,R11
brsh X3
xjmp L61
X3:
xjmp L64
L63:
.dbline 181
; while(x!=x2)
; {if(err<0){x=x+1;err=err+(y2-y);}
.dbline 181
movw R24,R6
cpi R24,0
ldi R30,0
cpc R25,R30
brge L66
.dbline 181
.dbline 181
movw R24,R12
adiw R24,1
movw R12,R24
.dbline 181
ldd R2,y+17
ldd R3,y+18
sub R2,R14
sbc R3,R15
add R6,R2
adc R7,R3
.dbline 181
xjmp L67
L66:
.dbline 182
; else {x=x+1;y=y+1;err=err+(y2-y)-(x2-x);
.dbline 182
movw R24,R12
adiw R24,1
movw R12,R24
.dbline 182
movw R24,R14
adiw R24,1
movw R14,R24
.dbline 182
ldd R2,y+17
ldd R3,y+18
sub R2,R24
sbc R3,R25
movw R4,R6
add R4,R2
adc R5,R3
ldd R2,y+15
ldd R3,y+16
sub R2,R12
sbc R3,R13
sub R4,R2
sbc R5,R3
movw R6,R4
.dbline 183
; }
L67:
.dbline 184
ldi R24,1
std y+0,R24
mov R18,R14
mov R16,R12
push R6
push R7
xcall _draw_point
pop R7
pop R6
.dbline 185
L64:
.dbline 180
ldd R0,y+15
ldd R1,y+16
cp R12,R0
cpc R13,R1
brne L63
xjmp L62
L61:
.dbline 186
; draw_point(x,y,1);
; }
; else if(temp&&(d_y>d_x))
tst R20
brne X4
xjmp L68
X4:
cp R22,R10
cpc R23,R11
brsh L68
xjmp L71
L70:
.dbline 188
; while(y!=y2)
; {d_x=x2-x;d_y=y2-y;
.dbline 188
ldd R22,y+15
ldd R23,y+16
sub R22,R12
sbc R23,R13
.dbline 188
ldd R10,y+17
ldd R11,y+18
sub R10,R14
sbc R11,R15
.dbline 189
; if(err<0){x=x+1;y=y+1;err=err+d_y-d_x;}
movw R24,R6
cpi R24,0
ldi R30,0
cpc R25,R30
brge L73
.dbline 189
.dbline 189
movw R24,R12
adiw R24,1
movw R12,R24
.dbline 189
movw R24,R14
adiw R24,1
movw R14,R24
.dbline 189
movw R2,R6
add R2,R10
adc R3,R11
sub R2,R22
sbc R3,R23
movw R6,R2
.dbline 189
xjmp L74
L73:
.dbline 190
; else {y=y+1;err=err-d_x;}
.dbline 190
movw R24,R14
adiw R24,1
movw R14,R24
.dbline 190
sub R6,R22
sbc R7,R23
.dbline 190
L74:
.dbline 191
ldi R24,1
std y+0,R24
mov R18,R14
mov R16,R12
push R6
push R7
xcall _draw_point
pop R7
pop R6
.dbline 192
L71:
.dbline 187
ldd R0,y+17
ldd R1,y+18
cp R14,R0
cpc R15,R1
brne L70
xjmp L69
L68:
.dbline 193
; draw_point(x,y,1);
; }
; else if(!temp&&(d_y<=d_x))
tst R20
breq X5
xjmp L75
X5:
cp R22,R10
cpc R23,R11
brsh X6
xjmp L75
X6:
xjmp L78
L77:
.dbline 195
; while(x!=x2)
; {d_x=x-x2;d_y=y2-y;
.dbline 195
movw R22,R12
ldd R0,y+15
ldd R1,y+16
sub R22,R0
sbc R23,R1
.dbline 195
ldd R10,y+17
ldd R11,y+18
sub R10,R14
sbc R11,R15
.dbline 196
; if(err<0){x=x-1;err=err+d_y;}
movw R24,R6
cpi R24,0
ldi R30,0
cpc R25,R30
brge L80
.dbline 196
.dbline 196
movw R24,R12
sbiw R24,1
movw R12,R24
.dbline 196
add R6,R10
adc R7,R11
.dbline 196
xjmp L81
L80:
.dbline 197
; else {x=x-1;y=y+1;err=err+d_y-d_x;}
.dbline 197
movw R24,R12
sbiw R24,1
movw R12,R24
.dbline 197
movw R24,R14
adiw R24,1
movw R14,R24
.dbline 197
movw R2,R6
add R2,R10
adc R3,R11
sub R2,R22
sbc R3,R23
movw R6,R2
.dbline 197
L81:
.dbline 198
ldi R24,1
std y+0,R24
mov R18,R14
mov R16,R12
push R6
push R7
xcall _draw_point
pop R7
pop R6
.dbline 199
L78:
.dbline 194
ldd R0,y+15
ldd R1,y+16
cp R12,R0
cpc R13,R1
brne L77
xjmp L76
L75:
.dbline 200
; draw_point(x,y,1);
; }
; else if(!temp &&(d_y>d_x))
tst R20
breq X7
xjmp L82
X7:
cp R22,R10
cpc R23,R11
brsh L82
xjmp L85
L84:
.dbline 202
; while(y!=y2)
; {d_x=x-x2;d_y=y2-y;
.dbline 202
movw R22,R12
ldd R0,y+15
ldd R1,y+16
sub R22,R0
sbc R23,R1
.dbline 202
ldd R10,y+17
ldd R11,y+18
sub R10,R14
sbc R11,R15
.dbline 203
; if(err<0){x=x-1;y=y+1;err=err+d_y-d_x;}
movw R24,R6
cpi R24,0
ldi R30,0
cpc R25,R30
brge L87
.dbline 203
.dbline 203
movw R24,R12
sbiw R24,1
movw R12,R24
.dbline 203
movw R24,R14
adiw R24,1
movw R14,R24
.dbline 203
movw R2,R6
add R2,R10
adc R3,R11
sub R2,R22
sbc R3,R23
movw R6,R2
.dbline 203
xjmp L88
L87:
.dbline 204
; else {y=y+1;err=err-d_x;}
.dbline 204
movw R24,R14
adiw R24,1
movw R14,R24
.dbline 204
sub R6,R22
sbc R7,R23
.dbline 204
L88:
.dbline 205
ldi R24,1
std y+0,R24
mov R18,R14
mov R16,R12
push R6
push R7
xcall _draw_point
pop R7
pop R6
.dbline 206
L85:
.dbline 201
ldd R0,y+17
ldd R1,y+18
cp R14,R0
cpc R15,R1
brne L84
L82:
L76:
L69:
L62:
.dbline 207
L52:
.dbline -2
L48:
adiw R28,1
xcall pop_gset5
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r temp 20 c
.dbsym r d_x 22 i
.dbsym r d_y 10 i
.dbsym r err 6 I
.dbsym r y 14 i
.dbsym r x 12 i
.dbsym l y2 17 i
.dbsym l x2 15 i
.dbsym l y1 13 i
.dbsym l x1 11 i
.dbend
.dbfunc e lcm_init _lcm_init fV
.even
_lcm_init::
.dbline -1
.dbline 217
; draw_point(x,y,1);
; }
; }
; }
;
; /***********************************************/
; /*液晶初始化程序
; 输入数据:无
; 输出:无
; 修改时间:2007-5-26
; /**********************************************/
; void lcm_init(void)
; {
.dbline 218
; wr_com(0x30);
ldi R16,48
xcall _wr_com
.dbline 219
; delay(80);
ldi R16,80
ldi R17,0
xcall _delay
.dbline 220
; wr_com(0x30);
ldi R16,48
xcall _wr_com
.dbline 221
; delay(80);
ldi R16,80
ldi R17,0
xcall _delay
.dbline 222
; wr_com(0x0c);
ldi R16,12
xcall _wr_com
.dbline 223
; delay(80);
ldi R16,80
ldi R17,0
xcall _delay
.dbline 224
; wr_com(0x01);
ldi R16,1
xcall _wr_com
.dbline 225
; delay(80);
ldi R16,80
ldi R17,0
xcall _delay
.dbline 226
; wr_com(0x60);
ldi R16,96
xcall _wr_com
.dbline 227
; delay(80);
ldi R16,80
ldi R17,0
xcall _delay
.dbline 228
; clear_all();
xcall _clear_all
.dbline -2
L89:
.dbline 0 ; func end
ret
.dbend
.dbfunc e clear_all _clear_all fV
.even
_clear_all::
.dbline -1
.dbline 231
; }
; void clear_all(void)
; {
.dbline 232
; wr_com(0x01);//清屏
ldi R16,1
xcall _wr_com
.dbline 233
; delay(80);
ldi R16,80
ldi R17,0
xcall _delay
.dbline 234
; wr_com(0x34);//清屏
ldi R16,52
xcall _wr_com
.dbline 235
; delay(80);
ldi R16,80
ldi R17,0
xcall _delay
.dbline 236
; wr_com(0x30);//清屏
ldi R16,48
xcall _wr_com
.dbline 237
; delay(80);
ldi R16,80
ldi R17,0
xcall _delay
.dbline -2
L90:
.dbline 0 ; func end
ret
.dbend
.dbfunc e display _display fV
.even
_display::
.dbline -1
.dbline 241
; }
; //*******************整行显示******************/
; void display(void)
; {
.dbline 242
; wr_com(0x80);
ldi R16,128
xcall _wr_com
xjmp L93
L92:
.dbline 244
.dbline 245
lds R30,_line1
lds R31,_line1+1
ldd R16,z+0
xcall _wr_date
.dbline 246
lds R24,_line1
lds R25,_line1+1
adiw R24,1
sts _line1+1,R25
sts _line1,R24
.dbline 247
L93:
.dbline 243
; while(*line1!=0x00)
lds R30,_line1
lds R31,_line1+1
ldd R2,z+0
tst R2
brne L92
.dbline 248
; {
; wr_date(*line1);
; line1++;
; }
; wr_com(0x90);
ldi R16,144
xcall _wr_com
xjmp L96
L95:
.dbline 250
.dbline 251
lds R30,_line2
lds R31,_line2+1
ldd R16,z+0
xcall _wr_date
.dbline 252
lds R24,_line2
lds R25,_line2+1
adiw R24,1
sts _line2+1,R25
sts _line2,R24
.dbline 253
L96:
.dbline 249
; while(*line2!=0x00)
lds R30,_line2
lds R31,_line2+1
ldd R2,z+0
tst R2
brne L95
.dbline 254
; {
; wr_date(*line2);
; line2++;
; }
; wr_com(0x88);
ldi R16,136
xcall _wr_com
xjmp L99
L98:
.dbline 256
.dbline 257
lds R30,_line3
lds R31,_line3+1
ldd R16,z+0
xcall _wr_date
.dbline 258
lds R24,_line3
lds R25,_line3+1
adiw R24,1
sts _line3+1,R25
sts _line3,R24
.dbline 259
L99:
.dbline 255
; while(*line3!=0x00)
lds R30,_line3
lds R31,_line3+1
ldd R2,z+0
tst R2
brne L98
.dbline 260
; {
; wr_date(*line3);
; line3++;
; }
; wr_com(0x9d);
ldi R16,157
xcall _wr_com
xjmp L102
L101:
.dbline 262
.dbline 263
lds R30,_line4
lds R31,_line4+1
ldd R16,z+0
xcall _wr_date
.dbline 264
lds R24,_line4
lds R25,_line4+1
adiw R24,1
sts _line4+1,R25
sts _line4,R24
.dbline 265
L102:
.dbline 261
lds R30,_line4
lds R31,_line4+1
ldd R2,z+0
clr R3
mov R24,R2
cpi R24,0
brlo L104
ldi R24,60
cp R24,R2
brsh L101
L104:
.dbline -2
L91:
.dbline 0 ; func end
ret
.dbend
.dbfunc e system_init _system_init fV
.even
_system_init::
.dbline -1
.dbline 270
; while(*line4>=0&&*line4<=60)
; {
; wr_date(*line4);
; line4++;
; }
; }
;
; /************************系统初始化start*****************/
; void system_init(void)
; {
.dbline 271
; line1="";
ldi R24,<L106
ldi R25,>L106
sts _line1+1,R25
sts _line1,R24
.dbline 272
; line2="";
sts _line2+1,R25
sts _line2,R24
.dbline 273
; line3="";
sts _line3+1,R25
sts _line3,R24
.dbline 274
; line4="";
ldi R24,<L106
ldi R25,>L106
sts _line4+1,R25
sts _line4,R24
.dbline 275
; lcm_init();
xcall _lcm_init
.dbline -2
L105:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile D:\icc_work\LCD波形显示\Lcd.c
_line4::
.blkb 2
.dbsym e line4 _line4 pc
_line3::
.blkb 2
.dbsym e line3 _line3 pc
_line2::
.blkb 2
.dbsym e line2 _line2 pc
_line1::
.blkb 2
.dbsym e line1 _line1 pc
.area data(ram, con, rel)
.dbfile D:\icc_work\LCD波形显示\Lcd.c
L106:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\icc_work\LCD波形显示\Lcd.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -