📄 3310_5110lcd.lis
字号:
00F6 ; p=s;
00F6 4E89 ldd R20,y+22
00F8 5F89 ldd R21,y+23
00FA .dbline 137
00FA ; LCD_set_XY(X,Y); //设置初始位置
00FA 2C85 ldd R18,y+12
00FC 0A85 ldd R16,y+10
00FE B6DF xcall _LCD_set_XY
0100 .dbline 139
0100 ;
0100 ; for (i=0;i<num;)
0100 6627 clr R22
0102 30C0 xjmp L21
0104 L18:
0104 .dbline 140
0104 ; {
0104 .dbline 141
0104 ; for (n=0; n<ch_with*2; n++) //写一个汉字
0104 AA24 clr R10
0106 21C0 xjmp L25
0108 L22:
0108 .dbline 142
0108 ; {
0108 .dbline 143
0108 ; if (n==ch_with) //写汉字的下半部分
0108 0E84 ldd R0,y+14
010A A014 cp R10,R0
010C 79F4 brne L26
010E .dbline 144
010E ; {
010E .dbline 145
010E ; if (i==0) LCD_set_XY(X,Y+1);
010E 6623 tst R22
0110 29F4 brne L28
0112 .dbline 145
0112 2C85 ldd R18,y+12
0114 2F5F subi R18,255 ; addi 1
0116 0A85 ldd R16,y+10
0118 A9DF xcall _LCD_set_XY
011A 08C0 xjmp L29
011C L28:
011C .dbline 147
011C ; else
011C ; LCD_set_XY((X+(ch_with+row)*i),Y+1);
011C 2C85 ldd R18,y+12
011E 2F5F subi R18,255 ; addi 1
0120 2E84 ldd R2,y+14
0122 2C0C add R2,R12
0124 269E mul R2,R22
0126 0A85 ldd R16,y+10
0128 000D add R16,R0
012A A0DF xcall _LCD_set_XY
012C L29:
012C .dbline 148
012C ; }
012C L26:
012C .dbline 149
012C 21E0 ldi R18,1
012E 2E2C mov R2,R14
0130 260E add R2,R22
0132 88E1 ldi R24,24
0134 829D mul R24,R2
0136 1001 movw R2,R0
0138 240E add R2,R20
013A 351E adc R3,R21
013C EA2D mov R30,R10
013E FF27 clr R31
0140 E20D add R30,R2
0142 F31D adc R31,R3
0144 0081 ldd R16,z+0
0146 15D1 xcall _LCD_write_byte
0148 .dbline 150
0148 L23:
0148 .dbline 141
0148 A394 inc R10
014A L25:
014A .dbline 141
014A 82E0 ldi R24,2
014C 0E84 ldd R0,y+14
014E 809D mul R24,R0
0150 A014 cp R10,R0
0152 D0F2 brlo L22
0154 .dbline 151
0154 6395 inc R22
0156 .dbline 152
0156 2C85 ldd R18,y+12
0158 2E84 ldd R2,y+14
015A 2C0C add R2,R12
015C 269E mul R2,R22
015E 0A85 ldd R16,y+10
0160 000D add R16,R0
0162 84DF xcall _LCD_set_XY
0164 .dbline 153
0164 L19:
0164 .dbline 139
0164 L21:
0164 .dbline 139
0164 0888 ldd R0,y+16
0166 6015 cp R22,R0
0168 68F2 brlo L18
016A .dbline -2
016A L17:
016A 0E940000 xcall pop_gset5
016E 2496 adiw R28,4
0170 .dbline 0 ; func end
0170 0895 ret
0172 .dbsym r p 20 pA[24:24]c
0172 .dbsym r i 22 c
0172 .dbsym r n 10 c
0172 .dbsym l s 22 pA[24:24]c
0172 .dbsym r row 12 c
0172 .dbsym r line 14 c
0172 .dbsym l num 16 c
0172 .dbsym l ch_with 14 c
0172 .dbsym l Y 12 c
0172 .dbsym l X 10 c
0172 .dbend
.area lit(rom, con, rel)
0228 L31:
0228 00 .byte 0
0229 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0265 00000000000000000000 .word 0,0,0,0,0
026F 00000000000000000000 .word 0,0,0,0,0
0279 000000 .byte 0,0,0
027C L32:
027C 00 .byte 0
027D 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
02B9 00000000000000000000 .word 0,0,0,0,0
02C3 00000000000000000000 .word 0,0,0,0,0
02CD 000000 .byte 0,0,0
.area text(rom, con, rel)
0172 .dbfile D:\avrvi\democode\5110_综合演示\source\lib\3310_5110LCD.c
0172 .dbfunc e LCD_move_chinese_string _LCD_move_chinese_string fV
0172 ; p -> R20,R21
0172 ; i -> R22
0172 ; j -> R10
0172 ; buffer_l -> y+84
0172 ; buffer_h -> y+0
0172 ; n -> R12
0172 ; s -> y+184
0172 ; T -> R14
0172 ; Y -> y+180
0172 ; X -> y+178
.even
0172 _LCD_move_chinese_string::
0172 0E940000 xcall push_arg4
0176 0E940000 xcall push_gset5
017A EF97 sbiw R28,63
017C EF97 sbiw R28,63
017E AA97 sbiw R28,42 ; offset = 168
0180 FE01 movw R30,R28
0182 EA54 subi R30,74 ; addi 182
0184 FF4F sbci R31,255
0186 E080 ldd R14,z+0
0188 .dbline -1
0188 .dbline 167
0188 ; LCD_write_byte(*(*(p+(line+i))+n),1);
0188 ; }
0188 ; i++;
0188 ; LCD_set_XY((X+(ch_with+row)*i),Y);
0188 ; }
0188 ; }
0188 ; /*************************************************************************
0188 ; ** 函数名称: LCD_move_chinese_string (unsigned char X, unsigned char Y, unsigned char T,unsigned char (*s)[24])
0188 ; ** 功能描述: 汉字移动
0188 ; ** 输 入: X、Y :显示汉字的起始X、Y坐标;
0188 ; T :移动速度;
0188 ; ** 输出 :
0188 ; ** 全局变量: 无
0188 ; ** 调用模块:
0188 ; ** 说明:
0188 ; ** 注意:
0188 ; **************************************************************************/
0188 ; void LCD_move_chinese_string (unsigned char X, unsigned char Y, unsigned char T,unsigned char (*s)[24])
0188 ; {
0188 .dbline 168
0188 ; unsigned char i,n,j=0,(*p)[24];
0188 AA24 clr R10
018A .dbline 169
018A ; unsigned char buffer_h[84]={0};
018A 80E0 ldi R24,<L31
018C 90E0 ldi R25,>L31
018E FE01 movw R30,R28
0190 04E5 ldi R16,84
0192 10E0 ldi R17,0
0194 FA93 st -y,R31
0196 EA93 st -y,R30
0198 9A93 st -y,R25
019A 8A93 st -y,R24
019C 0E940000 xcall asgncblk
01A0 .dbline 170
01A0 ; unsigned char buffer_l[84]={0};
01A0 80E0 ldi R24,<L32
01A2 90E0 ldi R25,>L32
01A4 FE01 movw R30,R28
01A6 EC5A subi R30,172 ; offset = 84
01A8 FF4F sbci R31,255
01AA 04E5 ldi R16,84
01AC 10E0 ldi R17,0
01AE FA93 st -y,R31
01B0 EA93 st -y,R30
01B2 9A93 st -y,R25
01B4 8A93 st -y,R24
01B6 0E940000 xcall asgncblk
01BA .dbline 171
01BA ; p=s;
01BA FE01 movw R30,R28
01BC E854 subi R30,72 ; addi 184
01BE FF4F sbci R31,255
01C0 4081 ldd R20,z+0
01C2 5181 ldd R21,z+1
01C4 .dbline 172
01C4 ; for (i=0; i<156; i++)
01C4 6627 clr R22
01C6 83C0 xjmp L36
01C8 L33:
01C8 .dbline 173
01C8 ; {
01C8 .dbline 174
01C8 ; buffer_h[83] = *(*(p+(i/12))+j);
01C8 1CE0 ldi R17,12
01CA 062F mov R16,R22
01CC 0E940000 xcall div8u
01D0 88E1 ldi R24,24
01D2 809F mul R24,R16
01D4 1001 movw R2,R0
01D6 240E add R2,R20
01D8 351E adc R3,R21
01DA EA2D mov R30,R10
01DC FF27 clr R31
01DE E20D add R30,R2
01E0 F31D adc R31,R3
01E2 2080 ldd R2,z+0
01E4 FE01 movw R30,R28
01E6 ED5A subi R30,173 ; addi 83
01E8 FF4F sbci R31,255
01EA 2082 std z+0,R2
01EC .dbline 175
01EC ; buffer_l[83] = *(*(p+(i/12))+(j+12));
01EC 1CE0 ldi R17,12
01EE 062F mov R16,R22
01F0 0E940000 xcall div8u
01F4 88E1 ldi R24,24
01F6 809F mul R24,R16
01F8 1001 movw R2,R0
01FA 240E add R2,R20
01FC 351E adc R3,R21
01FE EA2D mov R30,R10
0200 FF27 clr R31
0202 3C96 adiw R30,12
0204 E20D add R30,R2
0206 F31D adc R31,R3
0208 2080 ldd R2,z+0
020A FE01 movw R30,R28
020C E955 subi R30,89 ; addi 167
020E FF4F sbci R31,255
0210 2082 std z+0,R2
0212 .dbline 176
0212 ; j++;
0212 A394 inc R10
0214 .dbline 177
0214 ; if (j==12) j=0;
0214 8A2D mov R24,R10
0216 8C30 cpi R24,12
0218 09F4 brne L39
021A .dbline 177
021A AA24 clr R10
021C L39:
021C .dbline 179
021C ;
021C ; for (n=0; n<83; n++)
021C CC24 clr R12
021E 1EC0 xjmp L44
0220 L41:
0220 .dbline 180
0220 .dbline 181
0220 CE01 movw R24,R28
0222 0196 adiw R24,1
0224 EC2D mov R30,R12
0226 FF27 clr R31
0228 E80F add R30,R24
022A F91F adc R31,R25
022C 2080 ldd R2,z+0
022E CE01 movw R24,R28
0230 EC2D mov R30,R12
0232 FF27 clr R31
0234 E80F add R30,R24
0236 F91F adc R31,R25
0238 2082 std z+0,R2
023A .dbline 182
023A CE01 movw R24,R28
023C 8B5A subi R24,171 ; offset = 85
023E 9F4F sbci R25,255
0240 EC2D mov R30,R12
0242 FF27 clr R31
0244 E80F add R30,R24
0246 F91F adc R31,R25
0248 2080 ldd R2,z+0
024A CE01 movw R24,R28
024C 8C5A subi R24,172 ; offset = 84
024E 9F4F sbci R25,255
0250 EC2D mov R30,R12
0252 FF27 clr R31
0254 E80F add R30,R24
0256 F91F adc R31,R25
0258 2082 std z+0,R2
025A .dbline 183
025A L42:
025A .dbline 179
025A C394 inc R12
025C L44:
025C .dbline 179
025C 8C2D mov R24,R12
025E 8335 cpi R24,83
0260 F8F2 brlo L41
0262 .dbline 185
0262 ; {
0262 ; buffer_h[n]=buffer_h[n+1];
0262 ; buffer_l[n]=buffer_l[n+1];
0262 ; }
0262 ;
0262 ; LCD_set_XY(X,Y);
0262 FE01 movw R30,R28
0264 EC54 subi R30,76 ; addi 180
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -