📄 st7920.lis
字号:
034A DBDF xcall _ClearArea
034C .dbline -2
034C L58:
034C .dbline 0 ; func end
034C 2596 adiw R28,5
034E C990 ld R12,y+
0350 A990 ld R10,y+
0352 0895 ret
0354 .dbsym l y1 9 c
0354 .dbsym l x1 7 c
0354 .dbsym r y0 12 c
0354 .dbsym r x0 10 c
0354 .dbend
0354 .dbfunc e PicClear1 _PicClear1 fV
0354 ; COUNT3 -> R20
0354 ; LCD_X -> R22
0354 ; LCD_Y -> R10
0354 ; COUNT2 -> R12
0354 ; COUNT1 -> R14
.even
0354 _PicClear1::
0354 0E940000 xcall push_xgsetF0FC
0358 .dbline -1
0358 .dbline 205
0358 ; }
0358 ;
0358 ; /**********************液晶文字显示相关程序END*************/
0358 ;
0358 ;
0358 ; /**********************显示图形子程序START******************/
0358 ; void PicClear1(void)
0358 ; {
0358 .dbline 207
0358 ; uchar COUNT3,COUNT2,COUNT1,LCD_X,LCD_Y;
0358 ; COUNT3=0X02;
0358 42E0 ldi R20,2
035A .dbline 208
035A ; LCD_X=0X80;
035A 60E8 ldi R22,128
035C .dbline 209
035C ; for (;COUNT3!=0;COUNT3--)
035C 16C0 xjmp L63
035E L60:
035E .dbline 210
035E ; {
035E .dbline 211
035E ; LCD_Y=0X80;
035E 80E8 ldi R24,128
0360 A82E mov R10,R24
0362 .dbline 212
0362 ; COUNT2=0X20;//32
0362 80E2 ldi R24,32
0364 C82E mov R12,R24
0366 .dbline 213
0366 ; for (;COUNT2!=0;COUNT2--)
0366 0DC0 xjmp L67
0368 L64:
0368 .dbline 214
0368 ; {
0368 .dbline 215
0368 ; COUNT1=0X10;//16
0368 80E1 ldi R24,16
036A E82E mov R14,R24
036C .dbline 216
036C ; SetGraphicAddr(LCD_X,LCD_Y);
036C 2A2D mov R18,R10
036E 062F mov R16,R22
0370 01DF xcall _SetGraphicAddr
0372 .dbline 217
0372 ; for (;COUNT1!=0;COUNT1--)
0372 03C0 xjmp L71
0374 L68:
0374 .dbline 218
0374 ; {
0374 .dbline 219
0374 ; WriteData(0);
0374 0027 clr R16
0376 B9DE xcall _WriteData
0378 .dbline 220
0378 ; }
0378 L69:
0378 .dbline 217
0378 EA94 dec R14
037A L71:
037A .dbline 217
037A EE20 tst R14
037C D9F7 brne L68
037E X16:
037E .dbline 221
037E ; LCD_Y+=1;
037E A394 inc R10
0380 .dbline 222
0380 ; }
0380 L65:
0380 .dbline 213
0380 CA94 dec R12
0382 L67:
0382 .dbline 213
0382 CC20 tst R12
0384 89F7 brne L64
0386 X17:
0386 .dbline 223
0386 ; LCD_X=0X88;
0386 68E8 ldi R22,136
0388 .dbline 224
0388 ; }
0388 L61:
0388 .dbline 209
0388 4A95 dec R20
038A L63:
038A .dbline 209
038A 4423 tst R20
038C 41F7 brne L60
038E X18:
038E .dbline -2
038E L59:
038E .dbline 0 ; func end
038E 0C940000 xjmp pop_xgsetF0FC
0392 .dbsym r COUNT3 20 c
0392 .dbsym r LCD_X 22 c
0392 .dbsym r LCD_Y 10 c
0392 .dbsym r COUNT2 12 c
0392 .dbsym r COUNT1 14 c
0392 .dbend
0392 .dbfunc e Draw_Pic _Draw_Pic fV
0392 ; temp_y -> R20
0392 ; temp_x -> R22
0392 ; i -> R10
0392 ; j -> R14
0392 ; Draw -> y+10
0392 ; y -> R10
0392 ; x -> R12
.even
0392 _Draw_Pic::
0392 0E940000 xcall push_xgsetF0FC
0396 A22E mov R10,R18
0398 C02E mov R12,R16
039A .dbline -1
039A .dbline 241
039A ; // send_com(0x36);
039A ; // send_com(0x30); //可省
039A ; }
039A ;
039A ; /********************************************************************
039A ; 函 数 名:Draw_Pic 128*64
039A ; 入口参数:x,y,*Draw
039A ; 出口参数:无
039A ; 建立日期:2007年8月26日
039A ; 修改日期:
039A ; 函数作用:
039A ; 说 明:
039A ; ********************************************************************/
039A ; /*************************************************/
039A ;
039A ; void Draw_Pic(uchar x, uchar y, const uchar *Draw)
039A ; {
039A .dbline 243
039A ; uchar i, j, temp_x, temp_y; //
039A ; temp_x = x; //
039A 6C2D mov R22,R12
039C .dbline 244
039C ; temp_y = y; //
039C 4A2D mov R20,R10
039E .dbline 245
039E ; temp_x |= 0x80; //
039E 6068 ori R22,128
03A0 .dbline 246
03A0 ; temp_y |= 0x80; //
03A0 4068 ori R20,128
03A2 .dbline 247
03A2 ; WriteCommand(0x01);//清屏
03A2 01E0 ldi R16,1
03A4 8EDE xcall _WriteCommand
03A6 .dbline 248
03A6 ; Delayus(200); //清屏需要时间 1ms左右
03A6 08EC ldi R16,200
03A8 10E0 ldi R17,0
03AA 20E0 ldi R18,0
03AC 30E0 ldi R19,0
03AE 28DE xcall _Delayus
03B0 .dbline 249
03B0 ; WriteCommand(0x36);
03B0 06E3 ldi R16,54
03B2 87DE xcall _WriteCommand
03B4 .dbline 250
03B4 ; for(i=0;i<32;i++ ) //上半屏32行
03B4 AA24 clr R10
03B6 16C0 xjmp L76
03B8 L73:
03B8 .dbline 251
03B8 ; {
03B8 .dbline 252
03B8 ; WriteCommand(temp_y++); //设置绘图区的Y地址坐标0
03B8 242E mov R2,R20
03BA 4F5F subi R20,255 ; addi 1
03BC 022D mov R16,R2
03BE 81DE xcall _WriteCommand
03C0 .dbline 253
03C0 ; WriteCommand(temp_x); //设置绘图区的X地址坐标0
03C0 062F mov R16,R22
03C2 7FDE xcall _WriteCommand
03C4 .dbline 254
03C4 ; for(j=0;j<16;j++) //
03C4 EE24 clr R14
03C6 0AC0 xjmp L80
03C8 L77:
03C8 .dbline 255
03C8 ; {
03C8 .dbline 256
03C8 ; WriteData(*Draw++);
03C8 2A84 ldd R2,y+10
03CA 3B84 ldd R3,y+11
03CC C101 movw R24,R2
03CE 0196 adiw R24,1
03D0 9B87 std y+11,R25
03D2 8A87 std y+10,R24
03D4 F101 movw R30,R2
03D6 0491 lpm R16,Z
03D8 88DE xcall _WriteData
03DA .dbline 257
03DA ; }
03DA L78:
03DA .dbline 254
03DA E394 inc R14
03DC L80:
03DC .dbline 254
03DC 8E2D mov R24,R14
03DE 8031 cpi R24,16
03E0 98F3 brlo L77
03E2 X19:
03E2 .dbline 258
03E2 ; }
03E2 L74:
03E2 .dbline 250
03E2 A394 inc R10
03E4 L76:
03E4 .dbline 250
03E4 8A2D mov R24,R10
03E6 8032 cpi R24,32
03E8 38F3 brlo L73
03EA X20:
03EA .dbline 260
03EA ;
03EA ; temp_x = 0x88; //
03EA 68E8 ldi R22,136
03EC .dbline 261
03EC ; temp_y = 0x80; //
03EC 40E8 ldi R20,128
03EE .dbline 262
03EE ; j = 0; //
03EE EE24 clr R14
03F0 .dbline 263
03F0 ; for(;i<64;i++ )
03F0 16C0 xjmp L84
03F2 L81:
03F2 .dbline 264
03F2 ; {
03F2 .dbline 266
03F2 ;
03F2 ; WriteCommand(temp_y++); //设置绘图区的Y地址坐标0
03F2 C42E mov R12,R20
03F4 4F5F subi R20,255 ; addi 1
03F6 0C2D mov R16,R12
03F8 64DE xcall _WriteCommand
03FA .dbline 267
03FA ; WriteCommand(temp_x); //设置绘图区的X地址坐标0
03FA 062F mov R16,R22
03FC 62DE xcall _WriteCommand
03FE .dbline 268
03FE ; for(j=0;j<16;j++)
03FE EE24 clr R14
0400 0AC0 xjmp L88
0402 L85:
0402 .dbline 269
0402 ; {
0402 .dbline 270
0402 ; WriteData(*Draw++);
0402 CA84 ldd R12,y+10
0404 DB84 ldd R13,y+11
0406 C601 movw R24,R12
0408 0196 adiw R24,1
040A 9B87 std y+11,R25
040C 8A87 std y+10,R24
040E F601 movw R30,R12
0410 0491 lpm R16,Z
0412 6BDE xcall _WriteData
0414 .dbline 271
0414 ; }
0414 L86:
0414 .dbline 268
0414 E394 inc R14
0416 L88:
0416 .dbline 268
0416 8E2D mov R24,R14
0418 8031 cpi R24,16
041A 98F3 brlo L85
041C X21:
041C .dbline 272
041C ; }
041C L82:
041C .dbline 263
041C A394 inc R10
041E L84:
041E .dbline 263
041E 8A2D mov R24,R10
0420 8034 cpi R24,64
0422 38F3 brlo L81
0424 X22:
0424 .dbline 273
0424 ; WriteCommand(0x30);//基本指令集,,绘图显示OFF
0424 00E3 ldi R16,48
0426 4DDE xcall _WriteCommand
0428 .dbline -2
0428 L72:
0428 .dbline 0 ; func end
0428 0C940000 xjmp pop_xgsetF0FC
042C .dbsym r temp_y 20 c
042C .dbsym r temp_x 22 c
042C .dbsym r i 10 c
042C .dbsym r j 14 c
042C .dbsym l Draw 10 pkc
042C .dbsym r y 10 c
042C .dbsym r x 12 c
042C .dbend
042C ; }
042C ; /**********************显示图形子程序END******************/
042C ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -