📄 12864.lis
字号:
017A E9F7 brne L41
017C .dbline 155
017C ; LCD12864_clear(); //清屏
017C B2DF xcall _LCD12864_clear
017E L44:
017E .dbline 156
017E L45:
017E .dbline 156
017E ; while(LCD12864_readBF());
017E B8DF xcall _LCD12864_readBF
0180 0023 tst R16
0182 E9F7 brne L44
0184 .dbline 157
0184 ; LCD12864_sendbyte(iCmd, LCDb_ENTRY); // 输入模式设定
0184 26E0 ldi R18,6
0186 0027 clr R16
0188 89DF xcall _LCD12864_sendbyte
018A .dbline -2
018A L37:
018A .dbline 0 ; func end
018A 0895 ret
018C .dbend
018C .dbfunc e LCD12864_opGDRAM _LCD12864_opGDRAM fV
018C ; i -> R20
018C ; x -> R22,R23
018C ; j -> R10
018C ; ptGDRAM -> R12,R13
.even
018C _LCD12864_opGDRAM::
018C 0E940000 xcall push_gset4
0190 6801 movw R12,R16
0192 .dbline -1
0192 .dbline 166
0192 ; }
0192 ; /*******************************************
0192 ; 函数名称: LCD12864_opGDRAM
0192 ; 功 能: 向GDRAM写入数据,并显示(完成绘图功能)
0192 ; 参 数: ptGDRAM--GDRAM数据指针
0192 ; 返回值 : 无
0192 ; /********************************************/
0192 ; void LCD12864_opGDRAM(const uchar *ptGDRAM)
0192 ; {
0192 .dbline 168
0192 ; uchar i,j;
0192 ; uint x=0;
0192 6627 clr R22
0194 7727 clr R23
0196 L48:
0196 .dbline 169
0196 L49:
0196 .dbline 169
0196 ; while(LCD12864_readBF()); //读忙标志
0196 ACDF xcall _LCD12864_readBF
0198 0023 tst R16
019A E9F7 brne L48
019C .dbline 170
019C ; LCD12864_sendbyte(iCmd,LCDb_EXTCMD1); //扩充指令集,并关闭绘图显示
019C 24E3 ldi R18,52
019E 0027 clr R16
01A0 7DDF xcall _LCD12864_sendbyte
01A2 .dbline 172
01A2 ; //写入并显示上半屏幕
01A2 ; for(i=0;i<32;i++) //行地址计数
01A2 4427 clr R20
01A4 2DC0 xjmp L54
01A6 L51:
01A6 .dbline 173
01A6 ; {
01A6 .dbline 174
01A6 ; for(j=0;j<8;j++) //列地址计数
01A6 AA24 clr R10
01A8 27C0 xjmp L58
01AA L55:
01AA .dbline 175
01AA .dbline 176
01AA 242F mov R18,R20
01AC 2068 ori R18,128
01AE 0027 clr R16
01B0 75DF xcall _LCD12864_sendbyte
01B2 .dbline 177
01B2 0AE0 ldi R16,10
01B4 10E0 ldi R17,0
01B6 24DF xcall _Delayus
01B8 .dbline 178
01B8 2A2D mov R18,R10
01BA 2068 ori R18,128
01BC 0027 clr R16
01BE 6EDF xcall _LCD12864_sendbyte
01C0 .dbline 179
01C0 0AE0 ldi R16,10
01C2 10E0 ldi R17,0
01C4 1DDF xcall _Delayus
01C6 .dbline 180
01C6 1B01 movw R2,R22
01C8 6F5F subi R22,255 ; offset = 1
01CA 7F4F sbci R23,255
01CC F101 movw R30,R2
01CE EC0D add R30,R12
01D0 FD1D adc R31,R13
01D2 2491 lpm R18,Z
01D4 01E0 ldi R16,1
01D6 62DF xcall _LCD12864_sendbyte
01D8 .dbline 181
01D8 0AE0 ldi R16,10
01DA 10E0 ldi R17,0
01DC 11DF xcall _Delayus
01DE .dbline 182
01DE 1B01 movw R2,R22
01E0 6F5F subi R22,255 ; offset = 1
01E2 7F4F sbci R23,255
01E4 F101 movw R30,R2
01E6 EC0D add R30,R12
01E8 FD1D adc R31,R13
01EA 2491 lpm R18,Z
01EC 01E0 ldi R16,1
01EE 56DF xcall _LCD12864_sendbyte
01F0 .dbline 183
01F0 0AE0 ldi R16,10
01F2 10E0 ldi R17,0
01F4 05DF xcall _Delayus
01F6 .dbline 184
01F6 L56:
01F6 .dbline 174
01F6 A394 inc R10
01F8 L58:
01F8 .dbline 174
01F8 8A2D mov R24,R10
01FA 8830 cpi R24,8
01FC B0F2 brlo L55
01FE .dbline 185
01FE L52:
01FE .dbline 172
01FE 4395 inc R20
0200 L54:
0200 .dbline 172
0200 4032 cpi R20,32
0202 08F4 brsh X1
0204 D0CF xjmp L51
0206 X1:
0206 .dbline 187
0206 ; {
0206 ; LCD12864_sendbyte(iCmd,0x80|i);//输入行地址
0206 ; Delayus(10);
0206 ; LCD12864_sendbyte(iCmd,0x80|j);//输入列地址
0206 ; Delayus(10);
0206 ; LCD12864_sendbyte(iDat,ptGDRAM[x++]); //输入高位字节数据
0206 ; Delayus(10);
0206 ; LCD12864_sendbyte(iDat,ptGDRAM[x++]); //输入低位字节数据
0206 ; Delayus(10);
0206 ; }
0206 ; }
0206 ; //写入并显示下半屏幕
0206 ; for(i=0;i<32;i++)
0206 4427 clr R20
0208 2EC0 xjmp L62
020A L59:
020A .dbline 188
020A ; {
020A .dbline 189
020A ; for(j=8;j<16;j++)
020A 88E0 ldi R24,8
020C A82E mov R10,R24
020E 27C0 xjmp L66
0210 L63:
0210 .dbline 190
0210 .dbline 191
0210 242F mov R18,R20
0212 2068 ori R18,128
0214 0027 clr R16
0216 42DF xcall _LCD12864_sendbyte
0218 .dbline 192
0218 0AE0 ldi R16,10
021A 10E0 ldi R17,0
021C F1DE xcall _Delayus
021E .dbline 193
021E 2A2D mov R18,R10
0220 2068 ori R18,128
0222 0027 clr R16
0224 3BDF xcall _LCD12864_sendbyte
0226 .dbline 194
0226 0AE0 ldi R16,10
0228 10E0 ldi R17,0
022A EADE xcall _Delayus
022C .dbline 195
022C 1B01 movw R2,R22
022E 6F5F subi R22,255 ; offset = 1
0230 7F4F sbci R23,255
0232 F101 movw R30,R2
0234 EC0D add R30,R12
0236 FD1D adc R31,R13
0238 2491 lpm R18,Z
023A 01E0 ldi R16,1
023C 2FDF xcall _LCD12864_sendbyte
023E .dbline 196
023E 0AE0 ldi R16,10
0240 10E0 ldi R17,0
0242 DEDE xcall _Delayus
0244 .dbline 197
0244 1B01 movw R2,R22
0246 6F5F subi R22,255 ; offset = 1
0248 7F4F sbci R23,255
024A F101 movw R30,R2
024C EC0D add R30,R12
024E FD1D adc R31,R13
0250 2491 lpm R18,Z
0252 01E0 ldi R16,1
0254 23DF xcall _LCD12864_sendbyte
0256 .dbline 198
0256 0AE0 ldi R16,10
0258 10E0 ldi R17,0
025A D2DE xcall _Delayus
025C .dbline 199
025C L64:
025C .dbline 189
025C A394 inc R10
025E L66:
025E .dbline 189
025E 8A2D mov R24,R10
0260 8031 cpi R24,16
0262 B0F2 brlo L63
0264 .dbline 200
0264 L60:
0264 .dbline 187
0264 4395 inc R20
0266 L62:
0266 .dbline 187
0266 4032 cpi R20,32
0268 08F4 brsh X2
026A CFCF xjmp L59
026C X2:
026C .dbline 201
026C ; {
026C ; LCD12864_sendbyte(iCmd,0x80|i);//输入行地址
026C ; Delayus(10);
026C ; LCD12864_sendbyte(iCmd,0x80|j);//输入列地址
026C ; Delayus(10);
026C ; LCD12864_sendbyte(iDat,ptGDRAM[x++]); //输入高位字节数据
026C ; Delayus(10);
026C ; LCD12864_sendbyte(iDat,ptGDRAM[x++]); //输入低位字节数据
026C ; Delayus(10);
026C ; }
026C ; }
026C ; Delayus(10);
026C 0AE0 ldi R16,10
026E 10E0 ldi R17,0
0270 C7DE xcall _Delayus
0272 .dbline 202
0272 ; LCD12864_sendbyte(iCmd,LCDb_EXTCMD2); //打开绘图显示
0272 26E3 ldi R18,54
0274 0027 clr R16
0276 12DF xcall _LCD12864_sendbyte
0278 .dbline 203
0278 ; LCD12864_sendbyte(iCmd,LCDb_BASCMD); //还原回基本指令集模式
0278 20E3 ldi R18,48
027A 0027 clr R16
027C 0FDF xcall _LCD12864_sendbyte
027E .dbline -2
027E L47:
027E 0E940000 xcall pop_gset4
0282 .dbline 0 ; func end
0282 0895 ret
0284 .dbsym r i 20 c
0284 .dbsym r x 22 i
0284 .dbsym r j 10 c
0284 .dbsym r ptGDRAM 12 pkc
0284 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -