📄 test.lst
字号:
(0052) LCD_RW_L;NOP();NOP();NOP();NOP();NOP();NOP();
0849 9829 CBI 0x05,1
084A 0000 NOP
084B 0000 NOP
084C 0000 NOP
084D 0000 NOP
084E 0000 NOP
084F 0000 NOP
(0053)
(0054)
(0055) LCD_DDR = 0XFF;
0850 EF8F LDI R24,0xFF
0851 B98A OUT 0x0A,R24
(0056) LCD_PORT = lcd_code;NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();
0852 B90B OUT 0x0B,R16
0853 0000 NOP
0854 0000 NOP
0855 0000 NOP
0856 0000 NOP
0857 0000 NOP
0858 0000 NOP
0859 0000 NOP
085A 0000 NOP
085B 0000 NOP
(0057) LCD_CODE_P |= (BIT(LCD_RW) | BIT(LCD_RD) | BIT(LCD_CD) | BIT(LCD_CE));
085C B185 IN R24,0x05
085D 608F ORI R24,0xF
085E B985 OUT 0x05,R24
085F 9508 RET
_lcd_wc3:
lcd_data2 --> Y+4
lcd_data1 --> R22
lcd_code --> R20
0860 D088 RCALL push_gset2
0861 2F62 MOV R22,R18
0862 2F40 MOV R20,R16
(0058) }
(0059) /***********************************************************************************/
(0060) void lcd_wc3(unsigned char lcd_code,unsigned char lcd_data1,unsigned char lcd_data2)
(0061) {
(0062) lcd_wd(lcd_data1);
0863 2F06 MOV R16,R22
0864 DF9B RCALL _lcd_wd
(0063) lcd_wd(lcd_data2);
0865 810C LDD R16,Y+4
0866 DF99 RCALL _lcd_wd
(0064) lcd_wc(lcd_code);
0867 2F04 MOV R16,R20
0868 DFC6 RCALL _lcd_wc
0869 D075 RCALL pop_gset2
086A 9508 RET
_lcd_init:
086B 9721 SBIW R28,1
(0065) }
(0066) /******************************************************************************/
(0067) void lcd_init(void)
(0068) {
(0069) LCD_RES_H;
086C 9A2C SBI 0x05,4
(0070) LCD_RES_L;
086D 982C CBI 0x05,4
(0071) lcd_delay(15);
086E E00F LDI R16,0xF
086F E010 LDI R17,0
0870 DF7C RCALL _lcd_delay
(0072) LCD_RES_H;
0871 9A2C SBI 0x05,4
(0073) lcd_wc(0x80); //设置显示模式为逻辑“或”模式
0872 E800 LDI R16,0x80
0873 DFBB RCALL _lcd_wc
(0074) lcd_wc(0x98); //开显示
0874 E908 LDI R16,0x98
0875 DFB9 RCALL _lcd_wc
(0075) lcd_wc3(0x40,0,0); //设置文本显示区首地址
0876 2422 CLR R2
0877 8228 STD Y+0,R2
0878 2722 CLR R18
0879 E400 LDI R16,0x40
087A DFE5 RCALL _lcd_wc3
(0076) lcd_wc3(0x41,30,0); //设置文本显示区宽度
087B 2422 CLR R2
087C 8228 STD Y+0,R2
087D E12E LDI R18,0x1E
087E E401 LDI R16,0x41
087F DFE0 RCALL _lcd_wc3
(0077) lcd_wc3(0x42,0,0); //设置图形显示区首地址
0880 2422 CLR R2
0881 8228 STD Y+0,R2
0882 2722 CLR R18
0883 E402 LDI R16,0x42
0884 DFDB RCALL _lcd_wc3
(0078) lcd_wc3(0x43,30,0); //设置图形显示区宽度
0885 2422 CLR R2
0886 8228 STD Y+0,R2
0887 E12E LDI R18,0x1E
0888 E403 LDI R16,0x43
0889 DFD6 RCALL _lcd_wc3
088A 9621 ADIW R28,1
088B 9508 RET
_lcd_clear:
i --> R20
j --> R10
lcd_data --> R22
088C D05A RCALL push_gset3
088D 2F60 MOV R22,R16
088E 9721 SBIW R28,1
(0079) }
(0080) /******************************************************************************/
(0081) void lcd_clear(unsigned char lcd_data)
(0082) {
(0083) unsigned char i,j;
(0084) lcd_wc(0x98); //打开图形显示,关闭文本显示
088F E908 LDI R16,0x98
0890 DF9E RCALL _lcd_wc
(0085) lcd_wc3(0x24,0,0); //设置地址指针
0891 2422 CLR R2
0892 8228 STD Y+0,R2
0893 2722 CLR R18
0894 E204 LDI R16,0x24
0895 DFCA RCALL _lcd_wc3
(0086) lcd_wc(0xb0); //设置自动写数据
0896 EB00 LDI R16,0xB0
0897 DF97 RCALL _lcd_wc
(0087) for(i=0;i<128;i++)
0898 2744 CLR R20
0899 C009 RJMP 0x08A3
(0088) {
(0089) for(j=0;j<30;j++)
089A 24AA CLR R10
089B C003 RJMP 0x089F
(0090) {
(0091) lcd_wd(lcd_data); //Write display data
089C 2F06 MOV R16,R22
089D DF62 RCALL _lcd_wd
089E 94A3 INC R10
089F 2D8A MOV R24,R10
08A0 318E CPI R24,0x1E
08A1 F3D0 BCS 0x089C
08A2 9543 INC R20
08A3 3840 CPI R20,0x80
08A4 F3A8 BCS 0x089A
(0092) }
(0093) }
(0094) lcd_wc(0xb2); //Awroff (auto reset)
08A5 EB02 LDI R16,0xB2
08A6 DF88 RCALL _lcd_wc
08A7 9621 ADIW R28,1
08A8 D038 RCALL pop_gset3
08A9 9508 RET
_lcd_print:
lcd_data --> Y+5
y --> R22
x --> R20
08AA D03E RCALL push_gset2
08AB 2F62 MOV R22,R18
08AC 2F40 MOV R20,R16
08AD 9721 SBIW R28,1
(0095) }
(0096) /******************************************************************************/
(0097) void lcd_print(unsigned char x,unsigned char y,unsigned char lcd_data)
(0098) {
(0099) lcd_wc(0x98);
08AE E908 LDI R16,0x98
08AF DF7F RCALL _lcd_wc
(0100) lcd_wc3(0x24,x,y);
08B0 8368 STD Y+0,R22
08B1 2F24 MOV R18,R20
08B2 E204 LDI R16,0x24
08B3 DFAC RCALL _lcd_wc3
(0101) lcd_wc(0xb0);
08B4 EB00 LDI R16,0xB0
08B5 DF79 RCALL _lcd_wc
(0102) lcd_wd(lcd_data);
08B6 810D LDD R16,Y+5
08B7 DF48 RCALL _lcd_wd
(0103) lcd_wc(0xb2);
08B8 EB02 LDI R16,0xB2
08B9 DF75 RCALL _lcd_wc
08BA 9621 ADIW R28,1
08BB D023 RCALL pop_gset2
08BC 9508 RET
_lcd_print240128:
i --> R20
j --> R10
str --> R22
08BD D029 RCALL push_gset3
08BE 01B8 MOVW R22,R16
08BF 9721 SBIW R28,1
(0104) }
(0105) /******************************************************************************/
(0106) void lcd_print240128(cchar *str)
(0107) {
(0108) uchar i,j;
(0109) lcd_wc(0x98);
08C0 E908 LDI R16,0x98
08C1 DF6D RCALL _lcd_wc
(0110) lcd_wc3(0x24,0,0);
08C2 2422 CLR R2
08C3 8228 STD Y+0,R2
08C4 2722 CLR R18
08C5 E204 LDI R16,0x24
08C6 DF99 RCALL _lcd_wc3
(0111) lcd_wc(0xb0);
08C7 EB00 LDI R16,0xB0
08C8 DF66 RCALL _lcd_wc
(0112) for(i=0;i<128;i++)
08C9 2744 CLR R20
08CA C00D RJMP 0x08D8
(0113) {
(0114) for(j=0;j<30;j++)
08CB 24AA CLR R10
08CC C007 RJMP 0x08D4
(0115) {
(0116) lcd_wd(*str++);
08CD 011B MOVW R2,R22
08CE 5F6F SUBI R22,0xFF
08CF 4F7F SBCI R23,0xFF
08D0 01F1 MOVW R30,R2
08D1 9104 LPM R16,0(Z)
08D2 DF2D RCALL _lcd_wd
08D3 94A3 INC R10
08D4 2D8A MOV R24,R10
08D5 318E CPI R24,0x1E
08D6 F3B0 BCS 0x08CD
08D7 9543 INC R20
08D8 3840 CPI R20,0x80
08D9 F388 BCS 0x08CB
(0117) }
(0118) }
(0119) lcd_wc(0xb2);
FILE: <library>
08DA EB02 LDI R16,0xB2
08DB DF53 RCALL _lcd_wc
08DC 9621 ADIW R28,1
08DD D003 RCALL pop_gset3
08DE 9508 RET
pop_gset2:
08DF E0E2 LDI R30,2
08E0 C00E RJMP pop
pop_gset3:
08E1 E0E4 LDI R30,4
08E2 C00C RJMP pop
push_gset5:
08E3 92FA ST R15,-Y
08E4 92EA ST R14,-Y
push_gset4:
08E5 92DA ST R13,-Y
08E6 92CA ST R12,-Y
push_gset3:
08E7 92BA ST R11,-Y
08E8 92AA ST R10,-Y
push_gset2:
08E9 937A ST R23,-Y
08EA 936A ST R22,-Y
push_gset1:
08EB 935A ST R21,-Y
08EC 934A ST R20,-Y
08ED 9508 RET
pop_gset1:
08EE E0E1 LDI R30,1
pop:
08EF 9149 LD R20,Y+
08F0 9159 LD R21,Y+
08F1 FDE0 SBRC R30,0
08F2 9508 RET
08F3 9169 LD R22,Y+
08F4 9179 LD R23,Y+
08F5 FDE1 SBRC R30,1
08F6 9508 RET
08F7 90A9 LD R10,Y+
08F8 90B9 LD R11,Y+
08F9 FDE2 SBRC R30,2
08FA 9508 RET
08FB 90C9 LD R12,Y+
08FC 90D9 LD R13,Y+
08FD FDE3 SBRC R30,3
08FE 9508 RET
08FF 90E9 LD R14,Y+
0900 90F9 LD R15,Y+
0901 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -