📄 lcd-16sn.lis
字号:
015C ; wr_data2(' ');
015C 00E2 ldi R16,32
015E B0DF xcall _wr_data2
0160 .dbline -2
0160 L23:
0160 .dbline 0 ; func end
0160 0895 ret
0162 .dbend
0162 .dbfunc e clear_line1 _clear_line1 fV
0162 ; i -> R20,R21
.even
0162 _clear_line1::
0162 4A93 st -y,R20
0164 5A93 st -y,R21
0166 .dbline -1
0166 .dbline 146
0166 ; }
0166 ;
0166 ; void clear_line1(void)
0166 ; {
0166 .dbline 148
0166 ; int i;
0166 ; cursor_line1();
0166 E2DF xcall _cursor_line1
0168 .dbline 149
0168 ; for(i=0; i<=15; i++)
0168 4427 clr R20
016A 5527 clr R21
016C L25:
016C .dbline 150
016C ; space();
016C F7DF xcall _space
016E L26:
016E .dbline 149
016E 4F5F subi R20,255 ; offset = 1
0170 5F4F sbci R21,255
0172 .dbline 149
0172 8FE0 ldi R24,15
0174 90E0 ldi R25,0
0176 8417 cp R24,R20
0178 9507 cpc R25,R21
017A C4F7 brge L25
017C X4:
017C .dbline 151
017C ; cursor_line1();
017C D7DF xcall _cursor_line1
017E .dbline -2
017E L24:
017E .dbline 0 ; func end
017E 5991 ld R21,y+
0180 4991 ld R20,y+
0182 0895 ret
0184 .dbsym r i 20 I
0184 .dbend
0184 .dbfunc e clear_line2 _clear_line2 fV
0184 ; i -> R20,R21
.even
0184 _clear_line2::
0184 4A93 st -y,R20
0186 5A93 st -y,R21
0188 .dbline -1
0188 .dbline 155
0188 ; }
0188 ;
0188 ; void clear_line2(void)
0188 ; {
0188 .dbline 157
0188 ; int i;
0188 ; cursor_line2();
0188 DDDF xcall _cursor_line2
018A .dbline 158
018A ; for(i=0; i<=15; i++)
018A 4427 clr R20
018C 5527 clr R21
018E L30:
018E .dbline 159
018E ; space();
018E E6DF xcall _space
0190 L31:
0190 .dbline 158
0190 4F5F subi R20,255 ; offset = 1
0192 5F4F sbci R21,255
0194 .dbline 158
0194 8FE0 ldi R24,15
0196 90E0 ldi R25,0
0198 8417 cp R24,R20
019A 9507 cpc R25,R21
019C C4F7 brge L30
019E X5:
019E .dbline 160
019E ; cursor_line2();
019E D2DF xcall _cursor_line2
01A0 .dbline -2
01A0 L29:
01A0 .dbline 0 ; func end
01A0 5991 ld R21,y+
01A2 4991 ld R20,y+
01A4 0895 ret
01A6 .dbsym r i 20 I
01A6 .dbend
01A6 .dbfunc e out_string _out_string fV
01A6 ; onechar -> R12
01A6 ; i -> R20,R21
01A6 ; array -> R10,R11
.even
01A6 _out_string::
01A6 0E940000 xcall push_xgset303C
01AA 5801 movw R10,R16
01AC .dbline -1
01AC .dbline 165
01AC ; }
01AC ;
01AC ;
01AC ; void out_string(const char array[]) //Send a string stored in array to LCD panel
01AC ; {
01AC .dbline 166
01AC ; int i=0;
01AC 4427 clr R20
01AE 5527 clr R21
01B0 .dbline 168
01B0 ; unsigned char onechar;
01B0 ; i=0;
01B0 09C0 xjmp L36
01B2 L35:
01B2 .dbline 170
01B2 ; while(array[i])
01B2 ; {
01B2 .dbline 171
01B2 ; onechar=array[i++];
01B2 1A01 movw R2,R20
01B4 4F5F subi R20,255 ; offset = 1
01B6 5F4F sbci R21,255
01B8 F101 movw R30,R2
01BA EA0D add R30,R10
01BC FB1D adc R31,R11
01BE C690 elpm R12,Z
01C0 .dbline 172
01C0 ; wr_data2(onechar);
01C0 0C2D mov R16,R12
01C2 7EDF xcall _wr_data2
01C4 .dbline 173
01C4 ; }
01C4 L36:
01C4 .dbline 169
01C4 FA01 movw R30,R20
01C6 EA0D add R30,R10
01C8 FB1D adc R31,R11
01CA 2690 elpm R2,Z
01CC 2220 tst R2
01CE 89F7 brne L35
01D0 X6:
01D0 .dbline -2
01D0 L34:
01D0 .dbline 0 ; func end
01D0 0C940000 xjmp pop_xgset303C
01D4 .dbsym r onechar 12 c
01D4 .dbsym r i 20 I
01D4 .dbsym r array 10 pkc
01D4 .dbend
01D4 .dbfunc e lcd_on _lcd_on fV
01D4 ; ctrl_data -> <dead>
01D4 ; i -> <dead>
.even
01D4 _lcd_on::
01D4 .dbline -1
01D4 .dbline 177
01D4 ; }
01D4 ;
01D4 ; void lcd_on(void)
01D4 ; {
01D4 .dbline 179
01D4 ; unsigned char i, ctrl_data;
01D4 ; ldelay(20);
01D4 04E1 ldi R16,20
01D6 10E0 ldi R17,0
01D8 28DF xcall _ldelay
01DA .dbline 180
01DA ; PORTD=0x01;
01DA 81E0 ldi R24,1
01DC 82BB out 0x12,R24
01DE .dbline 181
01DE ; ldelay(40);
01DE 08E2 ldi R16,40
01E0 10E0 ldi R17,0
01E2 23DF xcall _ldelay
01E4 .dbline 182
01E4 ; wr_instruction(0b00110000); //Function Set:set 8-bit, 2line, 5x7 fonts
01E4 00E3 ldi R16,48
01E6 31DF xcall _wr_instruction
01E8 .dbline 183
01E8 ; ldelay(2);
01E8 02E0 ldi R16,2
01EA 10E0 ldi R17,0
01EC 1EDF xcall _ldelay
01EE .dbline 184
01EE ; wr_instruction(0b00110000); //
01EE 00E3 ldi R16,48
01F0 2CDF xcall _wr_instruction
01F2 .dbline 185
01F2 ; ldelay(2);
01F2 02E0 ldi R16,2
01F4 10E0 ldi R17,0
01F6 19DF xcall _ldelay
01F8 .dbline 186
01F8 ; wr_instruction(0b00110000); //
01F8 00E3 ldi R16,48
01FA 27DF xcall _wr_instruction
01FC .dbline 187
01FC ; delay(80);
01FC 00E5 ldi R16,80
01FE 10E0 ldi R17,0
0200 05DF xcall _delay
0202 .dbline 188
0202 ; wr_instruction(0b00111100); //8-bit, 2 lines, 5x7 font
0202 0CE3 ldi R16,60
0204 22DF xcall _wr_instruction
0206 .dbline 189
0206 ; delay(20);
0206 04E1 ldi R16,20
0208 10E0 ldi R17,0
020A 00DF xcall _delay
020C .dbline 190
020C ; wr_instruction(0b00001110); //display on, cursor on, blink off
020C 0EE0 ldi R16,14
020E 1DDF xcall _wr_instruction
0210 .dbline 191
0210 ; delay(20);
0210 04E1 ldi R16,20
0212 10E0 ldi R17,0
0214 FBDE xcall _delay
0216 .dbline 192
0216 ; wr_instruction(0b00001110); //display on,
0216 0EE0 ldi R16,14
0218 18DF xcall _wr_instruction
021A .dbline 193
021A ; delay(20);
021A 04E1 ldi R16,20
021C 10E0 ldi R17,0
021E F6DE xcall _delay
0220 .dbline 194
0220 ; wr_instruction(0b00000001); //clear display
0220 01E0 ldi R16,1
0222 13DF xcall _wr_instruction
0224 .dbline 195
0224 ; ldelay(5);
0224 05E0 ldi R16,5
0226 10E0 ldi R17,0
0228 00DF xcall _ldelay
022A .dbline 196
022A ; wr_instruction(0b00000110); //Entry mode
022A 06E0 ldi R16,6
022C 0EDF xcall _wr_instruction
022E .dbline 197
022E ; delay(10);
022E 0AE0 ldi R16,10
0230 10E0 ldi R17,0
0232 ECDE xcall _delay
0234 .dbline 198
0234 ; wr_instruction(0b00000001); //clear display
0234 01E0 ldi R16,1
0236 09DF xcall _wr_instruction
0238 .dbline 199
0238 ; delay(20);
0238 04E1 ldi R16,20
023A 10E0 ldi R17,0
023C E7DE xcall _delay
023E .dbline -2
023E L38:
023E .dbline 0 ; func end
023E 0895 ret
0240 .dbsym l ctrl_data 1 c
0240 .dbsym l i 1 c
0240 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\+samples-16small\DEMOB-16sm\LCD-16sn.c
0000 _swin2::
0000 .blkb 1
0001 .dbsym e swin2 _swin2 c
0001 _swin::
0001 .blkb 1
0002 .dbsym e swin _swin c
0002 _indexcount::
0002 .blkb 2
0004 .dbsym e indexcount _indexcount I
0004 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -