📄 lcd.lis
字号:
017E L39:
017E FB01 movw R30,R22
0180 2080 ldd R2,z+0
0182 2220 tst R2
0184 F1F6 brne L38
0186 ; {lcd_w(0xf7);
0186 ; delay_nms(2);}
0186 ; }
0186 ; for(i=0;i<118;i++)
0186 CC24 clr R12
0188 DD24 clr R13
018A 08C0 xjmp L48
018C L45:
018C 07EF ldi R16,247
018E 5EDF xcall _lcd_w
0190 02E0 ldi R16,2
0192 10E0 ldi R17,0
0194 4CDF xcall _delay_nms
0196 L46:
0196 C601 movw R24,R12
0198 0196 adiw R24,1
019A 6C01 movw R12,R24
019C L48:
019C C601 movw R24,R12
019E 8637 cpi R24,118
01A0 E0E0 ldi R30,0
01A2 9E07 cpc R25,R30
01A4 98F3 brlo L45
01A6 L37:
01A6 0E940000 xcall pop_gset4
01AA .dbline 0 ; func end
01AA 0895 ret
01AC ; ch -> R20,R21
01AC ; y -> R22
01AC ; x -> R10
.even
01AC _lcd_putse::
01AC 0E940000 xcall push_gset3
01B0 622F mov R22,R18
01B2 A02E mov R10,R16
01B4 4E81 ldd R20,y+6
01B6 5F81 ldd R21,y+7
01B8 ; {lcd_w(0xf7);
01B8 ; delay_nms(2);}
01B8 ;
01B8 ;
01B8 ; }
01B8 ;
01B8 ; void lcd_putse(unsigned char x,unsigned char y,unsigned char *ch)
01B8 ; {
01B8 ; x+=4;
01B8 8A2D mov R24,R10
01BA 8C5F subi R24,252 ; addi 4
01BC A82E mov R10,R24
01BE 13C0 xjmp L51
01C0 L50:
01C0 ; while (*ch!=0)
01C0 ; {
01C0 ; lcd_w(0xf1);
01C0 01EF ldi R16,241
01C2 44DF xcall _lcd_w
01C4 ; lcd_w(x);
01C4 0A2D mov R16,R10
01C6 42DF xcall _lcd_w
01C8 ; lcd_w(y);
01C8 062F mov R16,R22
01CA 40DF xcall _lcd_w
01CC ; lcd_w(*ch);
01CC FA01 movw R30,R20
01CE 0081 ldd R16,z+0
01D0 3DDF xcall _lcd_w
01D2 ; ch++;
01D2 4F5F subi R20,255 ; offset = 1
01D4 5F4F sbci R21,255
01D6 ; if (x>=19)
01D6 8A2D mov R24,R10
01D8 8331 cpi R24,19
01DA 20F0 brlo L53
01DC ; {
01DC ; x=4;
01DC 84E0 ldi R24,4
01DE A82E mov R10,R24
01E0 ; y+=8;
01E0 685F subi R22,248 ; addi 8
01E2 ; }
01E2 01C0 xjmp L54
01E4 L53:
01E4 ; else
01E4 ; x++;
01E4 A394 inc R10
01E6 L54:
01E6 L51:
01E6 FA01 movw R30,R20
01E8 2080 ldd R2,z+0
01EA 2220 tst R2
01EC 49F7 brne L50
01EE L49:
01EE 0E940000 xcall pop_gset3
01F2 .dbline 0 ; func end
01F2 0895 ret
01F4 ; i -> <dead>
01F4 ; ch -> R22,R23
01F4 ; y -> R10
01F4 ; x -> R20
.even
01F4 _lcd_putsf::
01F4 0E940000 xcall push_gset3
01F8 A22E mov R10,R18
01FA 402F mov R20,R16
01FC 6E81 ldd R22,y+6
01FE 7F81 ldd R23,y+7
0200 ; }
0200 ; }
0200 ; void lcd_putsf(unsigned char x,unsigned char y,unsigned char *ch)
0200 ; { unsigned int i;
0200 ; x+=2;
0200 4E5F subi R20,254 ; addi 2
0202 1BC0 xjmp L57
0204 L56:
0204 ; while (*ch!=0)
0204 ; {
0204 ; lcd_w(0xf0);
0204 00EF ldi R16,240
0206 22DF xcall _lcd_w
0208 ; lcd_w(x);
0208 042F mov R16,R20
020A 20DF xcall _lcd_w
020C ; lcd_w(y);
020C 0A2D mov R16,R10
020E 1EDF xcall _lcd_w
0210 ; lcd_w(*ch-0xa0);
0210 FB01 movw R30,R22
0212 0081 ldd R16,z+0
0214 005A subi R16,160
0216 1ADF xcall _lcd_w
0218 ; ch++;
0218 6F5F subi R22,255 ; offset = 1
021A 7F4F sbci R23,255
021C ; lcd_w(*ch-0xa0);
021C FB01 movw R30,R22
021E 0081 ldd R16,z+0
0220 005A subi R16,160
0222 14DF xcall _lcd_w
0224 ; ch++;
0224 6F5F subi R22,255 ; offset = 1
0226 7F4F sbci R23,255
0228 ; delay_nms(2);
0228 02E0 ldi R16,2
022A 10E0 ldi R17,0
022C 00DF xcall _delay_nms
022E ; if (x>=0x09)
022E 4930 cpi R20,9
0230 18F0 brlo L59
0232 ; {
0232 ; x=2;
0232 42E0 ldi R20,2
0234 ; y+=1;
0234 A394 inc R10
0236 ; }
0236 01C0 xjmp L60
0238 L59:
0238 ; else
0238 ; x++;
0238 4395 inc R20
023A L60:
023A L57:
023A FB01 movw R30,R22
023C 2080 ldd R2,z+0
023E 2220 tst R2
0240 09F7 brne L56
0242 L55:
0242 0E940000 xcall pop_gset3
0246 .dbline 0 ; func end
0246 0895 ret
.area data(ram, con, rel)
0000 _a::
0000 .blkb 2
.area idata
0000 5765 .byte 'W,'e
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 6C63 .byte 'l,'c
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 6F6D .byte 'o,'m
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 2074 .byte 32,'t
.area data(ram, con, rel)
0008 .blkb 2
.area idata
0008 6F20 .byte 'o,32
.area data(ram, con, rel)
000A .blkb 2
.area idata
000A 4265 .byte 'B,'e
.area data(ram, con, rel)
000C .blkb 2
.area idata
000C 696A .byte 'i,'j
.area data(ram, con, rel)
000E .blkb 2
.area idata
000E 696E .byte 'i,'n
.area data(ram, con, rel)
0010 _b::
0010 .blkb 2
.area idata
0010 4F6E .byte 'O,'n
.area data(ram, con, rel)
0012 .blkb 2
.area idata
0012 6520 .byte 'e,32
.area data(ram, con, rel)
0014 .blkb 2
.area idata
0014 576F .byte 'W,'o
.area data(ram, con, rel)
0016 .blkb 2
.area idata
0016 726C .byte 'r,'l
.area data(ram, con, rel)
0018 .blkb 2
.area idata
0018 6420 .byte 'd,32
.area data(ram, con, rel)
001A .blkb 2
.area idata
001A 4F6E .byte 'O,'n
.area data(ram, con, rel)
001C .blkb 2
.area idata
001C 6520 .byte 'e,32
.area data(ram, con, rel)
001E .blkb 2
.area idata
001E 4472 .byte 'D,'r
.area data(ram, con, rel)
0020 .blkb 2
.area idata
0020 6561 .byte 'e,'a
.area data(ram, con, rel)
0022 .blkb 2
.area idata
0022 6D00 .byte 'm,0
.area data(ram, con, rel)
.area text(rom, con, rel)
; j -> R20,R21
.even
0248 _main::
0248 2297 sbiw R28,2
024A ; }
024A ; }
024A ;
024A ; #endif
024A ;
024A ; unsigned char a[]={87,101,108,99,111,109,32,116,111,32,66,101,105,106,105,110};
024A ; unsigned char b[]={79,110,101,32,87,111,114,108,100,32,79,110,
024A ; 101,32,68,114,101,97,109,0};
024A ; void main(void)
024A ; {while(1)
024A 3BC0 xjmp L63
024C L62:
024C ; {
024C ; int j;
024C ; lcd_init();
024C 12DF xcall _lcd_init
024E ; lcd_clear();
024E 29DF xcall _lcd_clear
0250 ; lcd_putsc(7,0,"北京欢迎你"); //右移动
0250 80E0 ldi R24,<L65
0252 90E0 ldi R25,>L65
0254 9983 std y+1,R25
0256 8883 std y+0,R24
0258 2227 clr R18
025A 07E0 ldi R16,7
025C 25DF xcall _lcd_putsc
025E ; lcd_putsm(55,10,b);
025E 80E0 ldi R24,<_b
0260 90E0 ldi R25,>_b
0262 9983 std y+1,R25
0264 8883 std y+0,R24
0266 2AE0 ldi R18,10
0268 07E3 ldi R16,55
026A 63DF xcall _lcd_putsm
026C ; delay_nms(100);
026C 04E6 ldi R16,100
026E 10E0 ldi R17,0
0270 DEDE xcall _delay_nms
0272 ; for(j=0;j<2;j++)
0272 4427 clr R20
0274 5527 clr R21
0276 L66:
0276 80E0 ldi R24,<L65
0278 90E0 ldi R25,>L65
027A 9983 std y+1,R25
027C 8883 std y+0,R24
027E 21E0 ldi R18,1
0280 01E0 ldi R16,1
0282 B8DF xcall _lcd_putsf
0284 04E1 ldi R16,20
0286 10E0 ldi R17,0
0288 D2DE xcall _delay_nms
028A 04EF ldi R16,244
028C DFDE xcall _lcd_w
028E 04E1 ldi R16,20
0290 10E0 ldi R17,0
0292 CDDE xcall _delay_nms
0294 L67:
0294 4F5F subi R20,255 ; offset = 1
0296 5F4F sbci R21,255
0298 4230 cpi R20,2
029A E0E0 ldi R30,0
029C 5E07 cpc R21,R30
029E 5CF3 brlt L66
02A0 80E0 ldi R24,<L65
02A2 90E0 ldi R25,>L65
02A4 9983 std y+1,R25
02A6 8883 std y+0,R24
02A8 21E0 ldi R18,1
02AA 01E0 ldi R16,1
02AC A3DF xcall _lcd_putsf
02AE 80E0 ldi R24,<_b
02B0 90E0 ldi R25,>_b
02B2 9983 std y+1,R25
02B4 8883 std y+0,R24
02B6 23E2 ldi R18,35
02B8 0027 clr R16
02BA 78DF xcall _lcd_putse
02BC 06E9 ldi R16,150
02BE 10E0 ldi R17,0
02C0 B6DE xcall _delay_nms
02C2 L63:
02C2 C4CF xjmp L62
02C4 X1:
02C4 L61:
02C4 2296 adiw R28,2
02C6 .dbline 0 ; func end
02C6 0895 ret
.area data(ram, con, rel)
0024 L65:
0024 .blkb 11
.area idata
0024 B1B1BEA9BBB6D3ADC4E300 .byte 177,177,190,169,187,182,211,173,196,227,0
.area data(ram, con, rel)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -