📄 lcd.s
字号:
xcall push_gset4
mov R10,R18
mov R12,R16
.dbline -1
.dbline 145
; }
;
;
;
; void Clear_DDRAM(unsigned char c_page_start,unsigned char c_page_end)
; {
.dbline 148
; unsigned char i,j;
; unsigned char start_page; //用于存放清除的起始页数
; unsigned char c_column_msb=0x10,c_column_lsb=0x04; //清除的起始列为第4列
ldi R20,16
.dbline 148
ldi R20,4
.dbline 150
;
; start_page = Gen_Page(c_page_start); //取得清除的起始页地址
mov R16,R12
xcall _Gen_Page
mov R22,R16
.dbline 151
; for(j=c_page_start;j<=c_page_end;j++)
mov R20,R12
xjmp L11
L8:
.dbline 152
; {
.dbline 153
; Send_Command(0x10); //从第4列开始清除LCD显示的数据
ldi R16,16
xcall _Send_Command
.dbline 154
; Send_Command(0x04);
ldi R16,4
xcall _Send_Command
.dbline 155
; Send_Command(start_page); //清除位置在第start_page页
mov R16,R22
xcall _Send_Command
.dbline 156
; for(i=0;i<=127;i++)
clr R12
xjmp L15
L12:
.dbline 157
.dbline 158
clr R16
xcall _Send_Byte
.dbline 159
L13:
.dbline 156
inc R12
L15:
.dbline 156
ldi R24,127
cp R24,R12
brsh L12
.dbline 160
inc R22
.dbline 161
L9:
.dbline 151
inc R20
L11:
.dbline 151
cp R10,R20
brsh L8
.dbline -2
L7:
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r c_column_lsb 20 c
.dbsym r c_column_msb 20 c
.dbsym r start_page 22 c
.dbsym r j 20 c
.dbsym r i 12 c
.dbsym r c_page_end 10 c
.dbsym r c_page_start 12 c
.dbend
.dbfunc e Bmp8x8 _Bmp8x8 fV
; i -> R20
; pdata -> R22,R23
; column -> R20
; page -> R10
.even
_Bmp8x8::
xcall push_gset3
mov R20,R18
mov R10,R16
ldd R22,y+6
ldd R23,y+7
.dbline -1
.dbline 169
; {
; Send_Byte(WHITE); //清除页内所有列显示的数据
; }
; start_page++; //清除下一页数据
; }
; }
;
; //////////////////////////////////////////////////////////////////////////
; //绘制一个8*8大小的位图
; //////////////////////////////////////////////////////////////////////////
; void Bmp8x8(unsigned char page,unsigned char column,const unsigned char
; *pdata)
; {
.dbline 172
; unsigned char i;
;
; Send_Command(Gen_Page(page)); //送页地址
mov R16,R10
xcall _Gen_Page
xcall _Send_Command
.dbline 173
; Send_Command(Gen_Column_LSB(column)); //送低4位地址
mov R16,R20
xcall _Gen_Column_LSB
xcall _Send_Command
.dbline 174
; Send_Command(Gen_Column_MSB(column)); //送高4位地址
mov R16,R20
xcall _Gen_Column_MSB
xcall _Send_Command
.dbline 175
; for(i=0;i<=7;i++) //水平宽度为8列
clr R20
xjmp L20
L17:
.dbline 176
.dbline 177
movw R30,R22
lpm R16,Z
xcall _Send_Byte
.dbline 178
subi R22,255 ; offset = 1
sbci R23,255
.dbline 179
L18:
.dbline 175
inc R20
L20:
.dbline 175
ldi R24,7
cp R24,R20
brsh L17
.dbline -2
L16:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r pdata 22 pkc
.dbsym r column 20 c
.dbsym r page 10 c
.dbend
.dbfunc e Bmp8x16 _Bmp8x16 fV
; j -> R20
; i -> R14
; pdata -> R10,R11
; column -> R12
; page -> R22
.even
_Bmp8x16::
xcall push_gset5
mov R12,R18
mov R22,R16
ldd R10,y+10
ldd R11,y+11
.dbline -1
.dbline 186
; {
; Send_Byte(*pdata);
; pdata++;
; }
; }
; //////////////////////////////////////////////////////////////////////////
; //绘制一个8*16大小的位图
; //////////////////////////////////////////////////////////////////////////
; void Bmp8x16(unsigned char page,unsigned char column,const unsigned char
; *pdata)
; {
.dbline 190
; unsigned char i;
; unsigned char j;
;
; for(j=0;j<=1;j++)
clr R20
xjmp L25
L22:
.dbline 191
; {
.dbline 192
; Send_Command(Gen_Page(page));
mov R16,R22
xcall _Gen_Page
xcall _Send_Command
.dbline 193
; Send_Command(Gen_Column_LSB(column));
mov R16,R12
xcall _Gen_Column_LSB
xcall _Send_Command
.dbline 194
; Send_Command(Gen_Column_MSB(column));
mov R16,R12
xcall _Gen_Column_MSB
xcall _Send_Command
.dbline 195
; for(i=0;i<=7;i++)
clr R14
xjmp L29
L26:
.dbline 196
.dbline 197
movw R30,R10
lpm R16,Z
xcall _Send_Byte
.dbline 198
movw R24,R10
adiw R24,1
movw R10,R24
.dbline 199
L27:
.dbline 195
inc R14
L29:
.dbline 195
ldi R24,7
cp R24,R14
brsh L26
.dbline 200
inc R22
.dbline 201
L23:
.dbline 190
inc R20
L25:
.dbline 190
ldi R24,1
cp R24,R20
brsh L22
.dbline -2
L21:
xcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r j 20 c
.dbsym r i 14 c
.dbsym r pdata 10 pkc
.dbsym r column 12 c
.dbsym r page 22 c
.dbend
.dbfunc e Bmp8x16_rev _Bmp8x16_rev fV
; j -> R20
; i -> R14
; pdata -> R10,R11
; column -> R12
; page -> R22
.even
_Bmp8x16_rev::
xcall push_gset5
mov R12,R18
mov R22,R16
ldd R10,y+10
ldd R11,y+11
.dbline -1
.dbline 209
; {
; Send_Byte(*pdata);
; pdata++;
; }
; page++;
; }
; }
;
; //////////////////////////////////////////////////////////////////////////
; //绘制一个反白显示8*16大小的位图
; //////////////////////////////////////////////////////////////////////////
; void Bmp8x16_rev(unsigned char page,unsigned char column,const unsigned char
; *pdata)
; {
.dbline 213
; unsigned char i;
; unsigned char j;
;
; for(j=0;j<=1;j++)
clr R20
xjmp L34
L31:
.dbline 214
; {
.dbline 215
; Send_Command(Gen_Page(page));
mov R16,R22
xcall _Gen_Page
xcall _Send_Command
.dbline 216
; Send_Command(Gen_Column_LSB(column));
mov R16,R12
xcall _Gen_Column_LSB
xcall _Send_Command
.dbline 217
; Send_Command(Gen_Column_MSB(column));
mov R16,R12
xcall _Gen_Column_MSB
xcall _Send_Command
.dbline 218
; for(i=0;i<=7;i++)
clr R14
xjmp L38
L35:
.dbline 219
.dbline 220
movw R30,R10
lpm R16,Z
com R16
xcall _Send_Byte
.dbline 221
movw R24,R10
adiw R24,1
movw R10,R24
.dbline 222
L36:
.dbline 218
inc R14
L38:
.dbline 218
ldi R24,7
cp R24,R14
brsh L35
.dbline 223
inc R22
.dbline 224
L32:
.dbline 213
inc R20
L34:
.dbline 213
ldi R24,1
cp R24,R20
brsh L31
.dbline -2
L30:
xcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r j 20 c
.dbsym r i 14 c
.dbsym r pdata 10 pkc
.dbsym r column 12 c
.dbsym r page 22 c
.dbend
.dbfunc e Draw_NtoArab _Draw_NtoArab fV
; number -> y+8
; column -> R22
; page -> R20
.even
_Draw_NtoArab::
xcall push_gset3
mov R22,R18
mov R20,R16
sbiw R28,2
.dbline -1
.dbline 231
; {
; Send_Byte(~(*pdata));
; pdata++;
; }
; page++;
; }
; }
;
; //////////////////////////////////////////////////////////////////////
; //数值大小与阿拉伯数字之间的转换显示
; //////////////////////////////////////////////////////////////////////
; void Draw_NtoArab(unsigned char page,unsigned char column,unsigned char number)
; {
.dbline 232
; switch(number)
ldd R10,y+8
clr R11
tst R10
brne X0
tst R11
brne X2
xjmp L43
X2:
X0:
movw R24,R10
cpi R24,1
ldi R30,0
cpc R25,R30
brne X3
xjmp L44
X3:
cpi R24,2
ldi R30,0
cpc R25,R30
brne X4
xjmp L45
X4:
cpi R24,3
ldi R30,0
cpc R25,R30
brne X5
xjmp L46
X5:
cpi R24,4
ldi R30,0
cpc R25,R30
brne X6
xjmp L47
X6:
cpi R24,5
ldi R30,0
cpc R25,R30
brne X7
xjmp L48
X7:
cpi R24,6
ldi R30,0
cpc R25,R30
brne X8
xjmp L49
X8:
cpi R24,7
ldi R30,0
cpc R25,R30
brne X9
xjmp L50
X9:
cpi R24,8
ldi R30,0
cpc R25,R30
brne X10
xjmp L51
X10:
cpi R24,9
ldi R30,0
cpc R25,R30
brne X11
xjmp L52
X11:
xjmp L40
X1:
.dbline 233
; {
L43:
.dbline 235
; case 0x00:
; {
.dbline 236
; Bmp8x16(page,column,arab_0);
ldi R24,<_arab_0
ldi R25,>_arab_0
std y+1,R25
std y+0,R24
mov R18,R22
mov R16,R20
xcall _Bmp8x16
.dbline 237
; break;
xjmp L41
L44:
.dbline 240
; }
; case 0x01:
; {
.dbline 241
; Bmp8x16(page,column,arab_1);
ldi R24,<_arab_1
ldi R25,>_arab_1
std y+1,R25
std y+0,R24
mov R18,R22
mov R16,R20
xcall _Bmp8x16
.dbline 242
; break;
xjmp L41
L45:
.dbline 246
;
; }
; case 0x02:
; {
.dbline 247
; Bmp8x16(page,column,arab_2);
ldi R24,<_arab_2
ldi R25,>_arab_2
std y+1,R25
std y+0,R24
mov R18,R22
mov R16,R20
xcall _Bmp8x16
.dbline 248
; break;
xjmp L41
L46:
.dbline 251
; }
; case 0x03:
; {
.dbline 252
; Bmp8x16(page,column,arab_3);
ldi R24,<_arab_3
ldi R25,>_arab_3
std y+1,R25
std y+0,R24
mov R18,R22
mov R16,R20
xcall _Bmp8x16
.dbline 253
; break;
xjmp L41
L47:
.dbline 256
; }
; case 0x04:
; {
.dbline 257
; Bmp8x16(page,column,arab_4);
ldi R24,<_arab_4
ldi R25,>_arab_4
std y+1,R25
std y+0,R24
mov R18,R22
mov R16,R20
xcall _Bmp8x16
.dbline 258
; break;
xjmp L41
L48:
.dbline 261
; }
; case 0x05:
; {
.dbline 262
; Bmp8x16(page,column,arab_5);
ldi R24,<_arab_5
ldi R25,>_arab_5
std y+1,R25
std y+0,R24
mov R18,R22
mov R16,R20
xcall _Bmp8x16
.dbline 263
; break;
xjmp L41
L49:
.dbline 266
; }
; case 0x06:
; {
.dbline 267
; Bmp8x16(page,column,arab_6);
ldi R24,<_arab_6
ldi R25,>_arab_6
std y+1,R25
std y+0,R24
mov R18,R22
mov R16,R20
xcall _Bmp8x16
.dbline 268
; break;
xjmp L41
L50:
.dbline 271
; }
; case 0x07:
; {
.dbline 272
; Bmp8x16(page,column,arab_7);
ldi R24,<_arab_7
ldi R25,>_arab_7
std y+1,R25
std y+0,R24
mov R18,R22
mov R16,R20
xcall _Bmp8x16
.dbline 273
; break;
xjmp L41
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -