📄 3310.lis
字号:
0098 80E0 ldi R24,<L3
009A 90E0 ldi R25,>L3
009C 9B83 std y+3,R25
009E 8A83 std y+2,R24
00A0 8EE0 ldi R24,14
00A2 8883 std y+0,R24
00A4 23E0 ldi R18,3
00A6 0027 clr R16
00A8 61D0 xcall _LCD_write_String
00AA .dbline 259
00AA ; LCD_write_String(0,4,14," ",0);
00AA 2224 clr R2
00AC 2C82 std y+4,R2
00AE 80E0 ldi R24,<L3
00B0 90E0 ldi R25,>L3
00B2 9B83 std y+3,R25
00B4 8A83 std y+2,R24
00B6 8EE0 ldi R24,14
00B8 8883 std y+0,R24
00BA 24E0 ldi R18,4
00BC 0027 clr R16
00BE 56D0 xcall _LCD_write_String
00C0 .dbline 260
00C0 ; LCD_write_String(0,5,14," ",0);
00C0 2224 clr R2
00C2 2C82 std y+4,R2
00C4 80E0 ldi R24,<L3
00C6 90E0 ldi R25,>L3
00C8 9B83 std y+3,R25
00CA 8A83 std y+2,R24
00CC 8EE0 ldi R24,14
00CE 8883 std y+0,R24
00D0 25E0 ldi R18,5
00D2 0027 clr R16
00D4 4BD0 xcall _LCD_write_String
00D6 .dbline 261
00D6 ; LCD_write_String(0,6,14," ",0);
00D6 2224 clr R2
00D8 2C82 std y+4,R2
00DA 80E0 ldi R24,<L3
00DC 90E0 ldi R25,>L3
00DE 9B83 std y+3,R25
00E0 8A83 std y+2,R24
00E2 8EE0 ldi R24,14
00E4 8883 std y+0,R24
00E6 26E0 ldi R18,6
00E8 0027 clr R16
00EA 40D0 xcall _LCD_write_String
00EC .dbline -2
00EC L2:
00EC 2596 adiw R28,5
00EE .dbline 0 ; func end
00EE 0895 ret
00F0 .dbend
00F0 .dbfunc e LCD_set_XY _LCD_set_XY fV
00F0 ; Y -> R22
00F0 ; X -> R20
.even
00F0 _LCD_set_XY::
00F0 0E940000 xcall push_gset2
00F4 622F mov R22,R18
00F6 402F mov R20,R16
00F8 .dbline -1
00F8 .dbline 281
00F8 ; /*
00F8 ; uint16 i;
00F8 ; LCD_write_byte(0x0c, 0); // 设定显示模式,正常显示
00F8 ; LCD_write_byte(0x80, 0);
00F8 ; for (i=0; i<504; i++)
00F8 ; {
00F8 ; LCD_write_byte(0x00, 1);
00F8 ; }
00F8 ; */
00F8 ; }
00F8 ;
00F8 ; //=======================================================================
00F8 ; //LCD_set_XY: 设置LCD坐标函数
00F8 ; //输入参数:X:0-83
00F8 ; //Y:0-5
00F8 ;
00F8 ;
00F8 ; void LCD_set_XY(uint8 X, uint8 Y)
00F8 ;
00F8 ; {
00F8 .dbline 282
00F8 ; LCD_write_byte(0x40|Y, 0); // row
00F8 2227 clr R18
00FA 062F mov R16,R22
00FC 0064 ori R16,64
00FE 52D0 xcall _LCD_write_byte
0100 .dbline 283
0100 ; LCD_write_byte(0x80|X, 0); // cloumn
0100 2227 clr R18
0102 042F mov R16,R20
0104 0068 ori R16,128
0106 4ED0 xcall _LCD_write_byte
0108 .dbline -2
0108 L4:
0108 0E940000 xcall pop_gset2
010C .dbline 0 ; func end
010C 0895 ret
010E .dbsym r Y 22 c
010E .dbsym r X 20 c
010E .dbend
010E .dbfunc e LCD_write_char _LCD_write_char fV
010E ; line -> R20
010E ; N -> R22
010E ; c -> R10
.even
010E _LCD_write_char::
010E 0E940000 xcall push_gset3
0112 622F mov R22,R18
0114 A02E mov R10,R16
0116 .dbline -1
0116 .dbline 291
0116 ; }
0116 ;
0116 ; //=======================================================================
0116 ; //LCD_write_char: 显示英文字符
0116 ; //输入参数:c:显示的字符;
0116 ;
0116 ; void LCD_write_char(uint8 c,uint8 N)
0116 ; {
0116 .dbline 293
0116 ; uint8 line;
0116 ; c -= 32;
0116 8A2D mov R24,R10
0118 8052 subi R24,32
011A A82E mov R10,R24
011C .dbline 294
011C ; for (line=0; line<6; line++)
011C 4427 clr R20
011E 21C0 xjmp L9
0120 L6:
0120 .dbline 295
0120 ; {if(N)
0120 .dbline 295
0120 6623 tst R22
0122 81F0 breq L10
0124 .dbline 296
0124 ; LCD_write_byte(~font6x8[c][line], 1);
0124 21E0 ldi R18,1
0126 86E0 ldi R24,6
0128 8A9D mul R24,R10
012A 1001 movw R2,R0
012C 80E0 ldi R24,<_font6x8
012E 90E0 ldi R25,>_font6x8
0130 280E add R2,R24
0132 391E adc R3,R25
0134 E42F mov R30,R20
0136 FF27 clr R31
0138 E20D add R30,R2
013A F31D adc R31,R3
013C 0491 lpm R16,Z
013E 0095 com R16
0140 31D0 xcall _LCD_write_byte
0142 0EC0 xjmp L11
0144 L10:
0144 .dbline 298
0144 ; else
0144 ; LCD_write_byte(font6x8[c][line], 1);
0144 21E0 ldi R18,1
0146 86E0 ldi R24,6
0148 8A9D mul R24,R10
014A 1001 movw R2,R0
014C 80E0 ldi R24,<_font6x8
014E 90E0 ldi R25,>_font6x8
0150 280E add R2,R24
0152 391E adc R3,R25
0154 E42F mov R30,R20
0156 FF27 clr R31
0158 E20D add R30,R2
015A F31D adc R31,R3
015C 0491 lpm R16,Z
015E 22D0 xcall _LCD_write_byte
0160 L11:
0160 .dbline 299
0160 L7:
0160 .dbline 294
0160 4395 inc R20
0162 L9:
0162 .dbline 294
0162 4630 cpi R20,6
0164 E8F2 brlo L6
0166 .dbline -2
0166 L5:
0166 0E940000 xcall pop_gset3
016A .dbline 0 ; func end
016A 0895 ret
016C .dbsym r line 20 c
016C .dbsym r N 22 c
016C .dbsym r c 10 c
016C .dbend
016C .dbfunc e LCD_write_String _LCD_write_String fV
016C ; N -> R20
016C ; s -> R22,R23
016C ; l -> R10
016C ; Y -> R14
016C ; X -> R12
.even
016C _LCD_write_String::
016C 0E940000 xcall push_gset5
0170 E22E mov R14,R18
0172 C02E mov R12,R16
0174 AA84 ldd R10,y+10
0176 6C85 ldd R22,y+12
0178 7D85 ldd R23,y+13
017A 4E85 ldd R20,y+14
017C .dbline -1
017C .dbline 308
017C ; }
017C ; }
017C ;
017C ; //=======================================================================
017C ; //LCD_write_char: 英文字符串显示函数
017C ; //输入参数:*s:英文字符串指针;l:显示字符串的长度 ;X、Y: 显示字符串的位置
017C ;
017C ; void LCD_write_String(uint8 X,uint8 Y,uint8 l,uint8 *s,uint8 N)
017C ;
017C ; {
017C .dbline 309
017C ; LCD_set_XY(X,Y);
017C 2E2D mov R18,R14
017E 0C2D mov R16,R12
0180 B7DF xcall _LCD_set_XY
0182 06C0 xjmp L14
0184 L13:
0184 .dbline 311
0184 .dbline 312
0184 242F mov R18,R20
0186 FB01 movw R30,R22
0188 0081 ldd R16,z+0
018A C1DF xcall _LCD_write_char
018C .dbline 313
018C 6F5F subi R22,255 ; offset = 1
018E 7F4F sbci R23,255
0190 .dbline 314
0190 L14:
0190 .dbline 310
0190 ; while (l--)
0190 2A2C mov R2,R10
0192 3324 clr R3
0194 822D mov R24,R2
0196 8150 subi R24,1
0198 A82E mov R10,R24
019A 2220 tst R2
019C 99F7 brne L13
019E .dbline -2
019E L12:
019E 0E940000 xcall pop_gset5
01A2 .dbline 0 ; func end
01A2 0895 ret
01A4 .dbsym r N 20 c
01A4 .dbsym r s 22 pc
01A4 .dbsym r l 10 c
01A4 .dbsym r Y 14 c
01A4 .dbsym r X 12 c
01A4 .dbend
01A4 .dbfunc e LCD_write_byte _LCD_write_byte fV
01A4 ; command -> R18
01A4 ; data -> R16
.even
01A4 _LCD_write_byte::
01A4 .dbline -1
01A4 .dbline 324
01A4 ; {
01A4 ; LCD_write_char(*s,N);
01A4 ; s++;
01A4 ; }
01A4 ; }
01A4 ;
01A4 ;
01A4 ; //=======================================================================
01A4 ; //LCD_write_byte: 使用SPI接口写数据到LCD
01A4 ; //输入参数:data:写入的数据;command :写数据/命令选择;
01A4 ;
01A4 ; void LCD_write_byte(uint8 data, uint8 command)
01A4 ;
01A4 ; {
01A4 .dbline 326
01A4 ;
01A4 ; LCD_port &= ~LCD_CS ;// 使能LCD
01A4 DE98 cbi 0x1b,6
01A6 .dbline 328
01A6 ;
01A6 ; if (command == 1)
01A6 2130 cpi R18,1
01A8 11F4 brne L17
01AA .dbline 330
01AA ;
01AA ; LCD_port |= LCD_DC ;// 传送数据
01AA DF9A sbi 0x1b,7
01AC 01C0 xjmp L18
01AE L17:
01AE .dbline 334
01AE ;
01AE ; else
01AE ;
01AE ; LCD_port &= ~LCD_DC ;// 传送命令
01AE DF98 cbi 0x1b,7
01B0 L18:
01B0 .dbline 336
01B0 ;
01B0 ; SPDR = data;// 传送数据到SPI寄存器
01B0 0FB9 out 0xf,R16
01B2 L19:
01B2 .dbline 339
01B2 .dbline 340
01B2 L20:
01B2 .dbline 338
01B2 ;
01B2 ; while ((SPSR & 0x80) == 0)
01B2 779B sbis 0xe,7
01B4 FECF rjmp L19
01B6 .dbline 342
01B6 ; {
01B6 ; }// 等待数据传送完毕
01B6 ;
01B6 ; LCD_port |= LCD_CS ;// 关闭LCD
01B6 DE9A sbi 0x1b,6
01B8 .dbline -2
01B8 L16:
01B8 .dbline 0 ; func end
01B8 0895 ret
01BA .dbsym r command 18 c
01BA .dbsym r data 16 c
01BA .dbend
01BA .dbfunc e LCD_write_tubiao _LCD_write_tubiao fV
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -