📄 lcd-16sn.lis
字号:
0064 ; PORTA=0b00000100; //PA2<--1 LCD-E ON (enable)
0064 84E0 ldi R24,4
0066 8BBB out 0x1b,R24
0068 .dbline 77
0068 ; delay(2);
0068 02E0 ldi R16,2
006A 10E0 ldi R17,0
006C CFDF xcall _delay
006E .dbline 78
006E ; PORTA=0b00000000; //PA2<--0 LCD-E OFF (disable)
006E 2224 clr R2
0070 2BBA out 0x1b,R2
0072 .dbline 79
0072 ; delay(1);
0072 01E0 ldi R16,1
0074 10E0 ldi R17,0
0076 CADF xcall _delay
0078 .dbline -2
0078 L12:
0078 .dbline 0 ; func end
0078 A990 ld R10,y+
007A 0895 ret
007C .dbsym r instr 10 c
007C .dbend
007C .dbfunc e wr_data _wr_data fV
007C ; data -> R10
.even
007C _wr_data::
007C AA92 st -y,R10
007E A02E mov R10,R16
0080 .dbline -1
0080 .dbline 83
0080 ; }
0080 ;
0080 ; void wr_data(unsigned char data)
0080 ; {
0080 .dbline 84
0080 ; DDRA=0xff;
0080 8FEF ldi R24,255
0082 8ABB out 0x1a,R24
0084 .dbline 85
0084 ; PORTA=0b00000001; //PA0 <-- 1, Select data register
0084 81E0 ldi R24,1
0086 8BBB out 0x1b,R24
0088 .dbline 86
0088 ; PORTB=data; //Send out data
0088 A8BA out 0x18,R10
008A .dbline 87
008A ; delay(1);
008A 01E0 ldi R16,1
008C 10E0 ldi R17,0
008E BEDF xcall _delay
0090 .dbline 88
0090 ; PORTA=0b00000101; //Enable write to Data register
0090 85E0 ldi R24,5
0092 8BBB out 0x1b,R24
0094 .dbline 89
0094 ; delay(2);
0094 02E0 ldi R16,2
0096 10E0 ldi R17,0
0098 B9DF xcall _delay
009A .dbline 90
009A ; PORTA=0b00000000; //disable ????
009A 2224 clr R2
009C 2BBA out 0x1b,R2
009E .dbline 91
009E ; delay(1);
009E 01E0 ldi R16,1
00A0 10E0 ldi R17,0
00A2 B4DF xcall _delay
00A4 .dbline -2
00A4 L13:
00A4 .dbline 0 ; func end
00A4 A990 ld R10,y+
00A6 0895 ret
00A8 .dbsym r data 10 c
00A8 .dbend
00A8 .dbfunc e wr_instruction2 _wr_instruction2 fV
00A8 ; flags -> <dead>
00A8 ; instr -> R10
.even
00A8 _wr_instruction2::
00A8 AA92 st -y,R10
00AA A02E mov R10,R16
00AC .dbline -1
00AC .dbline 98
00AC ; }
00AC ;
00AC ; // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00AC ; // Following functions for LCD panel control
00AC ;
00AC ; void wr_instruction2(unsigned char instr)
00AC ; {
00AC .dbline 100
00AC ; unsigned char flags;
00AC ; delay(10);
00AC 0AE0 ldi R16,10
00AE 10E0 ldi R17,0
00B0 ADDF xcall _delay
00B2 .dbline 101
00B2 ; wr_instruction(instr);
00B2 0A2D mov R16,R10
00B4 CADF xcall _wr_instruction
00B6 .dbline 102
00B6 ; delay(10);
00B6 0AE0 ldi R16,10
00B8 10E0 ldi R17,0
00BA A8DF xcall _delay
00BC .dbline -2
00BC L14:
00BC .dbline 0 ; func end
00BC A990 ld R10,y+
00BE 0895 ret
00C0 .dbsym l flags 1 c
00C0 .dbsym r instr 10 c
00C0 .dbend
00C0 .dbfunc e wr_data2 _wr_data2 fV
00C0 ; flags -> <dead>
00C0 ; data -> R10
.even
00C0 _wr_data2::
00C0 AA92 st -y,R10
00C2 A02E mov R10,R16
00C4 .dbline -1
00C4 .dbline 106
00C4 ; }
00C4 ;
00C4 ; void wr_data2(unsigned char data)
00C4 ; {
00C4 .dbline 108
00C4 ; unsigned char flags;
00C4 ; if(cursor_index==0x10)
00C4 80910A00 lds R24,_cursor_index
00C8 90910B00 lds R25,_cursor_index+1
00CC 8031 cpi R24,16
00CE E0E0 ldi R30,0
00D0 9E07 cpc R25,R30
00D2 11F4 brne L16
00D4 X2:
00D4 .dbline 109
00D4 ; cursor_line2();
00D4 37D0 xcall _cursor_line2
00D6 09C0 xjmp L17
00D8 L16:
00D8 .dbline 110
00D8 ; else if(cursor_index==0x50)
00D8 80910A00 lds R24,_cursor_index
00DC 90910B00 lds R25,_cursor_index+1
00E0 8035 cpi R24,80
00E2 E0E0 ldi R30,0
00E4 9E07 cpc R25,R30
00E6 09F4 brne L18
00E8 X3:
00E8 .dbline 111
00E8 ; cursor_line1();
00E8 21D0 xcall _cursor_line1
00EA L18:
00EA L17:
00EA .dbline 112
00EA ; wr_data(data);
00EA 0A2D mov R16,R10
00EC C7DF xcall _wr_data
00EE .dbline 113
00EE ; cursor_index++;
00EE 80910A00 lds R24,_cursor_index
00F2 90910B00 lds R25,_cursor_index+1
00F6 0196 adiw R24,1
00F8 90930B00 sts _cursor_index+1,R25
00FC 80930A00 sts _cursor_index,R24
0100 .dbline 114
0100 ; delay(50);
0100 02E3 ldi R16,50
0102 10E0 ldi R17,0
0104 83DF xcall _delay
0106 .dbline -2
0106 L15:
0106 .dbline 0 ; func end
0106 A990 ld R10,y+
0108 0895 ret
010A .dbsym l flags 1 c
010A .dbsym r data 10 c
010A .dbend
010A .dbfunc e cursor_home _cursor_home fV
.even
010A _cursor_home::
010A .dbline -1
010A .dbline 118
010A ; }
010A ;
010A ; void cursor_home(void) //Move cursor to Home
010A ; {
010A .dbline 119
010A ; wr_instruction2(0x01);
010A 01E0 ldi R16,1
010C CDDF xcall _wr_instruction2
010E .dbline 120
010E ; delay(10);
010E 0AE0 ldi R16,10
0110 10E0 ldi R17,0
0112 7CDF xcall _delay
0114 .dbline 121
0114 ; wr_instruction2(0x80);
0114 00E8 ldi R16,128
0116 C8DF xcall _wr_instruction2
0118 .dbline 122
0118 ; ldelay(5);
0118 05E0 ldi R16,5
011A 10E0 ldi R17,0
011C 86DF xcall _ldelay
011E .dbline 123
011E ; cursor_index=0;
011E 2224 clr R2
0120 3324 clr R3
0122 30920B00 sts _cursor_index+1,R3
0126 20920A00 sts _cursor_index,R2
012A .dbline -2
012A L20:
012A .dbline 0 ; func end
012A 0895 ret
012C .dbend
012C .dbfunc e cursor_line1 _cursor_line1 fV
.even
012C _cursor_line1::
012C .dbline -1
012C .dbline 127
012C ; }
012C ;
012C ; void cursor_line1(void) //Move cursor to the first line
012C ; {
012C .dbline 128
012C ; wr_instruction2(0x80);
012C 00E8 ldi R16,128
012E BCDF xcall _wr_instruction2
0130 .dbline 129
0130 ; cursor_index=0;
0130 2224 clr R2
0132 3324 clr R3
0134 30920B00 sts _cursor_index+1,R3
0138 20920A00 sts _cursor_index,R2
013C .dbline 130
013C ; ldelay(5);
013C 05E0 ldi R16,5
013E 10E0 ldi R17,0
0140 74DF xcall _ldelay
0142 .dbline -2
0142 L21:
0142 .dbline 0 ; func end
0142 0895 ret
0144 .dbend
0144 .dbfunc e cursor_line2 _cursor_line2 fV
.even
0144 _cursor_line2::
0144 .dbline -1
0144 .dbline 134
0144 ; }
0144 ;
0144 ; void cursor_line2(void) //Move cursor to the second line
0144 ; {
0144 .dbline 135
0144 ; wr_instruction2(0b11000000);
0144 00EC ldi R16,192
0146 B0DF xcall _wr_instruction2
0148 .dbline 136
0148 ; cursor_index=0x40;
0148 80E4 ldi R24,64
014A 90E0 ldi R25,0
014C 90930B00 sts _cursor_index+1,R25
0150 80930A00 sts _cursor_index,R24
0154 .dbline 137
0154 ; ldelay(2);
0154 02E0 ldi R16,2
0156 10E0 ldi R17,0
0158 68DF xcall _ldelay
015A .dbline -2
015A L22:
015A .dbline 0 ; func end
015A 0895 ret
015C .dbend
015C .dbfunc e space _space fV
.even
015C _space::
015C .dbline -1
015C .dbline 141
015C ; }
015C ;
015C ; void space(void) //Write space, ' ', on the panel
015C ; {
015C .dbline 142
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -