📄 lcd12864.lis
字号:
00E4 ; }
00E4 ; }
00E4 ; if (x < x1) { /*地址进入左半屏范围*/
00E4 4617 cp R20,R22
00E6 50F4 brsh L31
00E8 .dbline 122
00E8 .dbline 123
00E8 ; LCD1_write_com(y | 0xB8);
00E8 0A2D mov R16,R10
00EA 086B ori R16,184
00EC B3DF xcall _LCD1_write_com
00EE .dbline 124
00EE ; LCD1_write_com(x | 0x40);
00EE 042F mov R16,R20
00F0 0064 ori R16,64
00F2 B0DF xcall _LCD1_write_com
00F4 .dbline 125
00F4 ; }
00F4 03C0 xjmp L31
00F6 L30:
00F6 .dbline 126
00F6 .dbline 127
00F6 0027 clr R16
00F8 CDDF xcall _LCD1_write_data
00FA .dbline 128
00FA 4395 inc R20
00FC .dbline 129
00FC L31:
00FC .dbline 126
00FC ; while (x < x1) {
00FC 4617 cp R20,R22
00FE D8F3 brlo L30
0100 .dbline 132
0100 ; LCD1_write_data(0x00);
0100 ; x ++;
0100 ; }
0100 ;
0100 ; /*清除低位*/
0100 ; x = x0;
0100 4C2D mov R20,R12
0102 .dbline 133
0102 ; if (x < 63) { /*地址在左半屏范围内*/
0102 4F33 cpi R20,63
0104 78F4 brsh L36
0106 .dbline 133
0106 .dbline 134
0106 ; LCD0_write_com((y+1) | 0xB8);
0106 0A2D mov R16,R10
0108 0F5F subi R16,255 ; addi 1
010A 086B ori R16,184
010C 93DF xcall _LCD0_write_com
010E .dbline 135
010E ; LCD0_write_com(x | 0x40);
010E 042F mov R16,R20
0110 0064 ori R16,64
0112 90DF xcall _LCD0_write_com
0114 .dbline 136
0114 ; }
0114 07C0 xjmp L36
0116 L35:
0116 .dbline 137
0116 ; while (x < x1) {
0116 .dbline 138
0116 ; LCD0_write_data(0x00);
0116 0027 clr R16
0118 ADDF xcall _LCD0_write_data
011A .dbline 139
011A ; x ++;
011A 4395 inc R20
011C .dbline 140
011C ; if (x > 63) { /*判断地址是否越界*/
011C 8FE3 ldi R24,63
011E 8417 cp R24,R20
0120 08F4 brsh L38
0122 .dbline 140
0122 .dbline 141
0122 ; break;
0122 02C0 xjmp L37
0124 L38:
0124 .dbline 143
0124 L36:
0124 .dbline 137
0124 4617 cp R20,R22
0126 B8F3 brlo L35
0128 L37:
0128 .dbline 144
0128 ; }
0128 ; }
0128 ; if (x < x1) { /*地址进入左半屏范围*/
0128 4617 cp R20,R22
012A 58F4 brsh L43
012C .dbline 144
012C .dbline 145
012C ; LCD1_write_com((y+1) | 0xB8);
012C 0A2D mov R16,R10
012E 0F5F subi R16,255 ; addi 1
0130 086B ori R16,184
0132 90DF xcall _LCD1_write_com
0134 .dbline 146
0134 ; LCD1_write_com(x | 0x40);
0134 042F mov R16,R20
0136 0064 ori R16,64
0138 8DDF xcall _LCD1_write_com
013A .dbline 147
013A ; }
013A 03C0 xjmp L43
013C L42:
013C .dbline 148
013C .dbline 149
013C 0027 clr R16
013E AADF xcall _LCD1_write_data
0140 .dbline 150
0140 4395 inc R20
0142 .dbline 151
0142 L43:
0142 .dbline 148
0142 ; while (x < x1) {
0142 4617 cp R20,R22
0144 D8F3 brlo L42
0146 .dbline -2
0146 L20:
0146 0E940000 xcall pop_gset4
014A .dbline 0 ; func end
014A 0895 ret
014C .dbsym r x 20 c
014C .dbsym r y 10 c
014C .dbsym r x1 22 c
014C .dbsym r x0 12 c
014C .dbend
014C .dbfunc e disp_char _disp_char fV
014C ; q -> R20,R21
014C ; i -> R22
014C ; ascii -> y+8
014C ; y -> R12
014C ; x -> R10
.even
014C _disp_char::
014C 0E940000 xcall push_gset4
0150 C22E mov R12,R18
0152 A02E mov R10,R16
0154 .dbline -1
0154 .dbline 155
0154 ; LCD1_write_data(0x00);
0154 ; x ++;
0154 ; }
0154 ; }
0154 ;
0154 ; /*在指定位置显示一个ASCII 字符*/
0154 ; void disp_char(unsigned char x, unsigned char y, unsigned char ascii) {
0154 .dbline 157
0154 ;
0154 ; unsigned char i = 0x00;
0154 6627 clr R22
0156 .dbline 161
0156 ; const unsigned char *q; /*取字库指针*/
0156 ;
0156 ;
0156 ; ascii -= 0x20;
0156 8885 ldd R24,y+8
0158 8052 subi R24,32
015A 8887 std y+8,R24
015C .dbline 162
015C ; q = &ENGLISH_FONT[ascii * 16]; /*定位指针地址*/
015C 80E1 ldi R24,16
015E 0884 ldd R0,y+8
0160 809D mul R24,R0
0162 A001 movw R20,R0
0164 80E0 ldi R24,<_ENGLISH_FONT
0166 90E0 ldi R25,>_ENGLISH_FONT
0168 480F add R20,R24
016A 591F adc R21,R25
016C .dbline 165
016C ;
016C ; /*显示高8位*/
016C ; i = 0x00;
016C .dbline 166
016C ; if (x < 64) { /*地址在左半屏范围内*/
016C 8A2D mov R24,R10
016E 8034 cpi R24,64
0170 A0F4 brsh L46
0172 .dbline 166
0172 .dbline 167
0172 ; LCD0_write_com(y | 0xB8);
0172 0C2D mov R16,R12
0174 086B ori R16,184
0176 5EDF xcall _LCD0_write_com
0178 .dbline 168
0178 ; LCD0_write_com(x | 0x40);
0178 0A2D mov R16,R10
017A 0064 ori R16,64
017C 5BDF xcall _LCD0_write_com
017E 0BC0 xjmp L49
0180 L48:
0180 .dbline 169
0180 ; while (i < 8) {
0180 .dbline 170
0180 ; LCD0_write_data(*q);
0180 FA01 movw R30,R20
0182 0491 lpm R16,Z
0184 77DF xcall _LCD0_write_data
0186 .dbline 171
0186 ; q ++;
0186 4F5F subi R20,255 ; offset = 1
0188 5F4F sbci R21,255
018A .dbline 172
018A ; x ++;
018A A394 inc R10
018C .dbline 173
018C ; i ++;
018C 6395 inc R22
018E .dbline 174
018E ; if (x > 63) { /*判断地址是否越界*/
018E 8FE3 ldi R24,63
0190 8A15 cp R24,R10
0192 08F4 brsh L51
0194 .dbline 174
0194 .dbline 175
0194 ; break;
0194 02C0 xjmp L50
0196 L51:
0196 .dbline 177
0196 L49:
0196 .dbline 169
0196 6830 cpi R22,8
0198 98F3 brlo L48
019A L50:
019A .dbline 178
019A ; }
019A ; }
019A ; }
019A L46:
019A .dbline 179
019A ; if (i < 8) { /*地址进入左半屏范围*/
019A 6830 cpi R22,8
019C 80F4 brsh L53
019E .dbline 179
019E .dbline 180
019E ; LCD1_write_com(y | 0xB8);
019E 0C2D mov R16,R12
01A0 086B ori R16,184
01A2 58DF xcall _LCD1_write_com
01A4 .dbline 181
01A4 ; LCD1_write_com(x | 0x40);
01A4 0A2D mov R16,R10
01A6 0064 ori R16,64
01A8 55DF xcall _LCD1_write_com
01AA 07C0 xjmp L56
01AC L55:
01AC .dbline 182
01AC .dbline 183
01AC FA01 movw R30,R20
01AE 0491 lpm R16,Z
01B0 71DF xcall _LCD1_write_data
01B2 .dbline 184
01B2 4F5F subi R20,255 ; offset = 1
01B4 5F4F sbci R21,255
01B6 .dbline 185
01B6 A394 inc R10
01B8 .dbline 186
01B8 6395 inc R22
01BA .dbline 187
01BA L56:
01BA .dbline 182
01BA ; while (i < 8) {
01BA 6830 cpi R22,8
01BC B8F3 brlo L55
01BE .dbline 188
01BE ; LCD1_write_data(*q);
01BE ; q ++;
01BE ; x ++;
01BE ; i ++;
01BE ; }
01BE ; }
01BE L53:
01BE .dbline 191
01BE ;
01BE ; /*显示低8位*/
01BE ; i = 0x00;
01BE 6627 clr R22
01C0 .dbline 192
01C0 ; x -= 8;
01C0 8A2D mov R24,R10
01C2 8850 subi R24,8
01C4 A82E mov R10,R24
01C6 .dbline 193
01C6 ; if (x < 64) { /*地址在左半屏范围内*/
01C6 8034 cpi R24,64
01C8 A8F4 brsh L58
01CA .dbline 193
01CA .dbline 194
01CA ; LCD0_write_com((y+1) | 0xB8);
01CA 0C2D mov R16,R12
01CC 0F5F subi R16,255 ; addi 1
01CE 086B ori R16,184
01D0 31DF xcall _LCD0_write_com
01D2 .dbline 195
01D2 ; LCD0_write_com(x | 0x40);
01D2 0A2D mov R16,R10
01D4 0064 ori R16,64
01D6 2EDF xcall _LCD0_write_com
01D8 0BC0 xjmp L61
01DA L60:
01DA .dbline 196
01DA ; while (i < 8) {
01DA .dbline 197
01DA ; LCD0_write_data(*q);
01DA FA01 movw R30,R20
01DC 0491 lpm R16,Z
01DE 4ADF xcall _LCD0_write_data
01E0 .dbline 198
01E0 ; q ++;
01E0 4F5F subi R20,255 ; offset = 1
01E2 5F4F sbci R21,255
01E4 .dbline 199
01E4 ; x ++;
01E4 A394 inc R10
01E6 .dbline 200
01E6 ; i ++;
01E6 6395 inc R22
01E8 .dbline 201
01E8 ; if (x > 63) { /*判断地址是否越界*/
01E8 8FE3 ldi R24,63
01EA 8A15 cp R24,R10
01EC 08F4 brsh L63
01EE .dbline 201
01EE .dbline 202
01EE ; break;
01EE 02C0 xjmp L62
01F0 L63:
01F0 .dbline 204
01F0 L61:
01F0 .dbline 196
01F0 6830 cpi R22,8
01F2 98F3 brlo L60
01F4 L62:
01F4 .dbline 205
01F4 ; }
01F4 ; }
01F4 ; }
01F4 L58:
01F4 .dbline 206
01F4 ; if (i < 8) { /*地址进入左半屏范围*/
01F4 6830 cpi R22,8
01F6 88F4 brsh L65
01F8 .dbline 206
01F8 .dbline 207
01F8 ; LCD1_write_com((y+1) | 0xB8);
01F8 0C2D mov R16,R12
01FA 0F5F subi R16,255 ; addi 1
01FC 086B ori R16,184
01FE 2ADF xcall _LCD1_write_com
0200 .dbline 208
0200 ; LCD1_write_com(x | 0x40);
0200 0A2D mov R16,R10
0202 0064 ori R16,64
0204 27DF xcall _LCD1_write_com
0206 07C0 xjmp L68
0208 L67:
0208 .dbline 209
0208 .dbline 210
0208 FA01 movw R30,R20
020A 0491 lpm R16,Z
020C 43DF xcall _LCD1_write_data
020E .dbline 211
020E 4F5F subi R20,255 ; offset = 1
0210 5F4F sbci R21,255
0212 .dbline 212
0212 A394 inc R10
0214 .dbline 213
0214 6395 inc R22
0216 .dbline 214
0216 L68:
0216 .dbline 209
0216 ; while (i < 8) {
0216 6830 cpi R22,8
0218 B8F3 brlo L67
021A .dbline 215
021A ; LCD1_write_data(*q);
021A ; q ++;
021A ; x ++;
021A ; i ++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -