📄 lcm12832k.lst
字号:
00C1 DF81 RCALL _delay
(0126) send_i(0x01); //clr screen text
00C2 E001 LDI R16,1
00C3 DFBA RCALL _send_i
(0127) delay(20); //>10ms
00C4 E104 LDI R16,0x14
00C5 E010 LDI R17,0
00C6 DF7C RCALL _delay
(0128) send_i(0x06); //enter dot setup 06
00C7 E006 LDI R16,6
(0129) }
00C8 CFB5 RJMP _send_i
_putstring:
j --> R20
str --> R20
addr --> R22
00C9 D0BE RCALL push_gset2
00CA 01A9 MOVW R20,R18
00CB 2F60 MOV R22,R16
(0130)
(0131) void putstring(uchar addr,uchar *str)
(0132) {
(0133) uchar j;
(0134) send_i(addr|0x80);
00CC 2F06 MOV R16,R22
00CD 6800 ORI R16,0x80
00CE DFAF RCALL _send_i
(0135) for(j=0;j<3;j++)
00CF 2744 CLR R20
00D0 C009 RJMP 0x00DA
(0136) {
(0137) send_d(exampl[j]);
00D1 E680 LDI R24,0x60
00D2 E090 LDI R25,0
00D3 2FE4 MOV R30,R20
00D4 27FF CLR R31
00D5 0FE8 ADD R30,R24
00D6 1FF9 ADC R31,R25
00D7 8100 LDD R16,Z+0
00D8 DFB7 RCALL _send_d
00D9 9543 INC R20
00DA 3043 CPI R20,3
00DB F3A8 BCS 0x00D1
(0138) }
(0139) }
00DC D090 RCALL pop_gset2
00DD 9508 RET
_locateXY:
temp --> R20
posy --> R22
posx --> R20
00DE D0A9 RCALL push_gset2
00DF 2F62 MOV R22,R18
00E0 2F40 MOV R20,R16
(0140)
(0141) /*=======================================================
(0142) 显示光标定位
(0143) =======================================================*/
(0144)
(0145) void locateXY( uchar posx,uchar posy) {
(0146)
(0147) uchar temp;
(0148)
(0149) temp = posx & 0xf;
00E1 704F ANDI R20,0xF
(0150) posy &= 0x1;
00E2 7061 ANDI R22,1
(0151) if ( posy )temp |= 0x40;
00E3 F009 BEQ 0x00E5
00E4 6440 ORI R20,0x40
(0152) temp |= 0x80;
00E5 6840 ORI R20,0x80
(0153) send_i(temp);
00E6 2F04 MOV R16,R20
00E7 DF96 RCALL _send_i
(0154) }
00E8 D084 RCALL pop_gset2
00E9 9508 RET
_disponechar:
wdata --> Y+4
y --> R22
x --> R20
00EA D09D RCALL push_gset2
00EB 2F62 MOV R22,R18
00EC 2F40 MOV R20,R16
(0155)
(0156) /*=======================================================
(0157) 按指定位置显示数出一个字符
(0158) =======================================================*/
(0159) void disponechar(uchar x,uchar y,uchar wdata) {
(0160)
(0161) locateXY( x, y ); // 定位显示地址
00ED 2F26 MOV R18,R22
00EE 2F04 MOV R16,R20
00EF DFEE RCALL _locateXY
(0162) send_d( wdata ); // 写字符
00F0 810C LDD R16,Y+4
00F1 DF9E RCALL _send_d
(0163) }
00F2 D07A RCALL pop_gset2
00F3 9508 RET
_eputstr:
l --> R20
i --> R22
ptr --> R10
y --> R12
x --> R14
00F4 D09C RCALL push_gset5
00F5 2EC2 MOV R12,R18
00F6 2EE0 MOV R14,R16
00F7 9721 SBIW R28,1
00F8 84AB LDD R10,Y+11
00F9 84BC LDD R11,Y+12
(0164)
(0165) /*=======================================================
(0166) 显示字符串
(0167) =======================================================*/
(0168) void eputstr(uchar x,uchar y, uchar *ptr) {
(0169) uchar i,l=0;
00FA 2744 CLR R20
00FB C001 RJMP 0x00FD
(0170) while (ptr[l] >31){l++;};
00FC 9543 INC R20
00FD 2FE4 MOV R30,R20
00FE 27FF CLR R31
00FF 0DEA ADD R30,R10
0100 1DFB ADC R31,R11
0101 8020 LDD R2,Z+0
0102 E18F LDI R24,0x1F
0103 1582 CP R24,R2
0104 F3B8 BCS 0x00FC
(0171) for (i=0;i<l;i++) {
0105 2766 CLR R22
0106 C014 RJMP 0x011B
(0172) disponechar(x++,y,ptr[i]);
0107 2FE6 MOV R30,R22
0108 27FF CLR R31
0109 0DEA ADD R30,R10
010A 1DFB ADC R31,R11
010B 8020 LDD R2,Z+0
010C 8228 STD Y+0,R2
010D 2D2C MOV R18,R12
010E 2C2E MOV R2,R14
010F 2D82 MOV R24,R2
0110 5F8F SUBI R24,0xFF
0111 2EE8 MOV R14,R24
0112 2D02 MOV R16,R2
0113 DFD6 RCALL _disponechar
(0173) if ( x == 16 ){
0114 2D8E MOV R24,R14
0115 3180 CPI R24,0x10
0116 F419 BNE 0x011A
(0174) x = 0; y ^= 1;
0117 24EE CLR R14
0118 E081 LDI R24,1
0119 26C8 EOR R12,R24
011A 9563 INC R22
011B 1764 CP R22,R20
011C F350 BCS 0x0107
(0175) }
(0176) }
(0177) }
011D 9621 ADIW R28,1
011E D050 RCALL pop_gset5
011F 9508 RET
_main:
0120 9722 SBIW R28,2
(0178)
(0179) void main(void)
(0180) {
(0181) ledon();
0121 DF18 RCALL _ledon
(0182) lcd_init();
0122 DF8D RCALL _lcd_init
(0183) delay(50);
0123 E302 LDI R16,0x32
0124 E010 LDI R17,0
0125 DF1D RCALL _delay
(0184) eputstr(0,0,exampl); // 上面一行显示一个预定字符串
0126 E680 LDI R24,0x60
0127 E090 LDI R25,0
0128 8399 STD Y+1,R25
0129 8388 STD Y+0,R24
012A 2722 CLR R18
012B 2700 CLR R16
012C DFC7 RCALL _eputstr
(0185) eputstr(0,0,exampl2);
012D E685 LDI R24,0x65
012E E090 LDI R25,0
012F 8399 STD Y+1,R25
0130 8388 STD Y+0,R24
0131 2722 CLR R18
0132 2700 CLR R16
0133 DFC0 RCALL _eputstr
(0186) //putstring(0x80,exampl);
(0187) delayus(500000);
0134 E240 LDI R20,0x20
0135 EA51 LDI R21,0xA1
0136 E067 LDI R22,7
0137 E070 LDI R23,0
0138 2F04 MOV R16,R20
0139 DF2E RCALL _delayus
(0188) delayus(500000);
013A E240 LDI R20,0x20
013B EA51 LDI R21,0xA1
013C E067 LDI R22,7
013D E070 LDI R23,0
013E 2F04 MOV R16,R20
013F DF28 RCALL _delayus
(0189) delayus(500000);
0140 E240 LDI R20,0x20
0141 EA51 LDI R21,0xA1
0142 E067 LDI R22,7
0143 E070 LDI R23,0
0144 2F04 MOV R16,R20
0145 DF22 RCALL _delayus
(0190) delayus(500000);
0146 E240 LDI R20,0x20
0147 EA51 LDI R21,0xA1
0148 E067 LDI R22,7
0149 E070 LDI R23,0
014A 2F04 MOV R16,R20
014B DF1C RCALL _delayus
(0191) delayus(500000);
014C E240 LDI R20,0x20
014D EA51 LDI R21,0xA1
014E E067 LDI R22,7
014F E070 LDI R23,0
0150 2F04 MOV R16,R20
0151 DF16 RCALL _delayus
(0192) delayus(500000);
0152 E240 LDI R20,0x20
0153 EA51 LDI R21,0xA1
0154 E067 LDI R22,7
0155 E070 LDI R23,0
0156 2F04 MOV R16,R20
0157 DF10 RCALL _delayus
(0193) delayus(500000);
0158 E240 LDI R20,0x20
0159 EA51 LDI R21,0xA1
015A E067 LDI R22,7
015B E070 LDI R23,0
015C 2F04 MOV R16,R20
015D DF0A RCALL _delayus
(0194) delayus(500000);
015E E240 LDI R20,0x20
015F EA51 LDI R21,0xA1
0160 E067 LDI R22,7
0161 E070 LDI R23,0
0162 2F04 MOV R16,R20
0163 DF04 RCALL _delayus
(0195)
(0196) ledoff();
0164 DEDA RCALL _ledoff
(0197) DDRD = 0xff;
0165 EF8F LDI R24,0xFF
0166 BB81 OUT 0x11,R24
(0198) PORTD = 0;
0167 2422 CLR R2
0168 BA22 OUT 0x12,R2
(0199) wait();
0169 DF04 RCALL _wait
(0200) while(1);
016A CFFF RJMP 0x016A
(0201) }
FILE: <library>
016B 9622 ADIW R28,2
016C 9508 RET
pop_gset2:
016D E0E2 LDI R30,2
016E C006 RJMP pop
pop_gset5:
016F 27EE CLR R30
0170 C004 RJMP pop
push_gset1:
0171 935A ST R21,-Y
0172 934A ST R20,-Y
0173 9508 RET
pop_gset1:
0174 E0E1 LDI R30,1
pop:
0175 9149 LD R20,Y+
0176 9159 LD R21,Y+
0177 FDE0 SBRC R30,0
0178 9508 RET
0179 9169 LD R22,Y+
017A 9179 LD R23,Y+
017B FDE1 SBRC R30,1
017C 9508 RET
017D 90A9 LD R10,Y+
017E 90B9 LD R11,Y+
017F FDE2 SBRC R30,2
0180 9508 RET
0181 90C9 LD R12,Y+
0182 90D9 LD R13,Y+
0183 FDE3 SBRC R30,3
0184 9508 RET
0185 90E9 LD R14,Y+
0186 90F9 LD R15,Y+
0187 9508 RET
push_gset2:
0188 937A ST R23,-Y
0189 936A ST R22,-Y
018A CFE6 RJMP push_gset1
push_gset3:
018B 92BA ST R11,-Y
018C 92AA ST R10,-Y
018D CFFA RJMP push_gset2
push_gset4:
018E 92DA ST R13,-Y
018F 92CA ST R12,-Y
0190 CFFA RJMP push_gset3
push_gset5:
0191 92FA ST R15,-Y
0192 92EA ST R14,-Y
0193 CFFA RJMP push_gset4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -