📄 lcdexper.lis
字号:
00A8 10E0 ldi R17,0
00AA AADF xcall _Delay
00AC .dbline 95
00AC ; Write_Command(0x30);//30H--基本指令操作
00AC 00E3 ldi R16,48
00AE D5DF xcall _Write_Command
00B0 .dbline 96
00B0 ; Delay(5);
00B0 05E0 ldi R16,5
00B2 10E0 ldi R17,0
00B4 A5DF xcall _Delay
00B6 .dbline 97
00B6 ; Write_Command(0x0c);//开显示,关光标,不闪烁.
00B6 0CE0 ldi R16,12
00B8 D0DF xcall _Write_Command
00BA .dbline 98
00BA ; Delay(10);
00BA 0AE0 ldi R16,10
00BC 10E0 ldi R17,0
00BE A0DF xcall _Delay
00C0 .dbline 99
00C0 ; Write_Command(0x02);
00C0 02E0 ldi R16,2
00C2 CBDF xcall _Write_Command
00C4 .dbline 100
00C4 ; Delay(10);
00C4 0AE0 ldi R16,10
00C6 10E0 ldi R17,0
00C8 9BDF xcall _Delay
00CA .dbline 101
00CA ; Write_Command(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。
00CA 06E0 ldi R16,6
00CC C6DF xcall _Write_Command
00CE .dbline 102
00CE ; Delay(10);
00CE 0AE0 ldi R16,10
00D0 10E0 ldi R17,0
00D2 96DF xcall _Delay
00D4 .dbline 103
00D4 ; Write_Command(0x01);//清除显示
00D4 01E0 ldi R16,1
00D6 C1DF xcall _Write_Command
00D8 .dbline 104
00D8 ; Delay(10);
00D8 0AE0 ldi R16,10
00DA 10E0 ldi R17,0
00DC 91DF xcall _Delay
00DE .dbline 105
00DE ; Write_Command(0x80);//光标复位
00DE 00E8 ldi R16,128
00E0 BCDF xcall _Write_Command
00E2 .dbline -2
00E2 L20:
00E2 .dbline 0 ; func end
00E2 0895 ret
00E4 .dbend
00E4 .dbfunc e Write_String _Write_String fV
00E4 ; i -> R20
00E4 ; datacode -> R10,R11
.even
00E4 _Write_String::
00E4 0E940000 xcall push_xgset300C
00E8 5801 movw R10,R16
00EA .dbline -1
00EA .dbline 110
00EA ; }
00EA ;
00EA ; //*************************写一串字符到LCM**************************/
00EA ; void Write_String(unsigned flash char datacode[])
00EA ; {
00EA .dbline 111
00EA ; uchar i=0;
00EA 4427 clr R20
00EC 0AC0 xjmp L23
00EE L22:
00EE .dbline 113
00EE ; while(datacode[i])
00EE ; {
00EE .dbline 114
00EE ; Write_Data(datacode[i]);
00EE E42F mov R30,R20
00F0 FF27 clr R31
00F2 EA0D add R30,R10
00F4 FB1D adc R31,R11
00F6 0691 elpm R16,Z
00F8 C3DF xcall _Write_Data
00FA .dbline 115
00FA ; i++;
00FA 4395 inc R20
00FC .dbline 116
00FC ; if(i==0xff)break;
00FC 4F3F cpi R20,255
00FE 09F4 brne L25
0100 X4:
0100 .dbline 116
0100 07C0 xjmp L24
0102 L25:
0102 .dbline 117
0102 ; }
0102 L23:
0102 .dbline 112
0102 E42F mov R30,R20
0104 FF27 clr R31
0106 EA0D add R30,R10
0108 FB1D adc R31,R11
010A 2690 elpm R2,Z
010C 2220 tst R2
010E 79F7 brne L22
0110 X5:
0110 L24:
0110 .dbline -2
0110 L21:
0110 .dbline 0 ; func end
0110 0C940000 xjmp pop_xgset300C
0114 .dbsym r i 20 c
0114 .dbsym r datacode 10 pkc
0114 .dbend
0114 .dbfunc e Location_XY _Location_XY fV
0114 ; y -> R20
0114 ; x -> R22
.even
0114 _Location_XY::
0114 0E940000 xcall push_xgsetF00C
0118 422F mov R20,R18
011A 602F mov R22,R16
011C .dbline -1
011C .dbline 121
011C ; }
011C ; /**********************设置坐标*****************/
011C ; void Location_XY(uchar x,uchar y)
011C ; {
011C .dbline 122
011C ; switch(y)
011C A42E mov R10,R20
011E BB24 clr R11
0120 AA20 tst R10
0122 11F4 brne X6
0124 BB20 tst R11
0126 71F0 breq L31
0128 X6:
0128 C501 movw R24,R10
012A 8130 cpi R24,1
012C E0E0 ldi R30,0
012E 9E07 cpc R25,R30
0130 59F0 breq L32
0132 X7:
0132 8230 cpi R24,2
0134 E0E0 ldi R30,0
0136 9E07 cpc R25,R30
0138 49F0 breq L33
013A X8:
013A 8330 cpi R24,3
013C E0E0 ldi R30,0
013E 9E07 cpc R25,R30
0140 39F0 breq L34
0142 X9:
0142 08C0 xjmp L28
0144 L31:
0144 .dbline 125
0144 ; {
0144 ; case 0:
0144 ; y=0x80;break;
0144 40E8 ldi R20,128
0146 .dbline 125
0146 07C0 xjmp L29
0148 L32:
0148 .dbline 127
0148 ; case 1:
0148 ; y=0x90;break;
0148 40E9 ldi R20,144
014A .dbline 127
014A 05C0 xjmp L29
014C L33:
014C .dbline 129
014C ; case 2:
014C ; y=0x88;break;
014C 48E8 ldi R20,136
014E .dbline 129
014E 03C0 xjmp L29
0150 L34:
0150 .dbline 131
0150 ; case 3:
0150 ; y=0x98;break;
0150 48E9 ldi R20,152
0152 .dbline 131
0152 01C0 xjmp L29
0154 L28:
0154 .dbline 133
0154 ; default:
0154 ; y=0x80;
0154 40E8 ldi R20,128
0156 .dbline 134
0156 ; }
0156 L29:
0156 .dbline 135
0156 ; x=x&0x07;
0156 6770 andi R22,7
0158 .dbline 136
0158 ; Write_Command(x+y);
0158 062F mov R16,R22
015A 040F add R16,R20
015C 7EDF xcall _Write_Command
015E .dbline -2
015E L27:
015E .dbline 0 ; func end
015E 0C940000 xjmp pop_xgsetF00C
0162 .dbsym r y 20 c
0162 .dbsym r x 22 c
0162 .dbend
0162 .dbfunc e Write_String_atXY _Write_String_atXY fV
0162 ; string -> y+2
0162 ; y -> R12
0162 ; x -> R10
.even
0162 _Write_String_atXY::
0162 AA92 st -y,R10
0164 CA92 st -y,R12
0166 C22E mov R12,R18
0168 A02E mov R10,R16
016A .dbline -1
016A .dbline 140
016A ; }
016A ; //************************在(x,y)处显示字符串string*************/
016A ; void Write_String_atXY(uchar x,uchar y,unsigned flash char string[])
016A ; {
016A .dbline 141
016A ; Location_XY(x,y);
016A 2C2D mov R18,R12
016C 0A2D mov R16,R10
016E D2DF xcall _Location_XY
0170 .dbline 142
0170 ; Write_String(string);
0170 0A81 ldd R16,y+2
0172 1B81 ldd R17,y+3
0174 B7DF xcall _Write_String
0176 .dbline -2
0176 L35:
0176 .dbline 0 ; func end
0176 C990 ld R12,y+
0178 A990 ld R10,y+
017A 0895 ret
017C .dbsym l string 2 pkc
017C .dbsym r y 12 c
017C .dbsym r x 10 c
017C .dbend
017C .dbfunc e Clear_Lcd _Clear_Lcd fV
017C ; i -> R20
017C ; j -> R22
.even
017C _Clear_Lcd::
017C 4A93 st -y,R20
017E 6A93 st -y,R22
0180 .dbline -1
0180 .dbline 147
0180 ; }
0180 ;
0180 ; //***********清屏******************************/
0180 ; void Clear_Lcd( void )
0180 ; {
0180 .dbline 149
0180 ; uchar i,j;
0180 ; Write_Command(0x34);
0180 04E3 ldi R16,52
0182 6BDF xcall _Write_Command
0184 .dbline 150
0184 ; Write_Command(0x36);
0184 06E3 ldi R16,54
0186 69DF xcall _Write_Command
0188 .dbline 151
0188 ; for(i=0;i<32;i++)
0188 4427 clr R20
018A 0DC0 xjmp L40
018C L37:
018C .dbline 152
018C ; {
018C .dbline 153
018C ; Write_Command(0x80|i);
018C 042F mov R16,R20
018E 0068 ori R16,128
0190 64DF xcall _Write_Command
0192 .dbline 154
0192 ; Write_Command(0x80);
0192 00E8 ldi R16,128
0194 62DF xcall _Write_Command
0196 .dbline 155
0196 ; for(j=0;j<32;j++)
0196 6627 clr R22
0198 03C0 xjmp L44
019A L41:
019A .dbline 156
019A ; Write_Data(0);
019A 0027 clr R16
019C 71DF xcall _Write_Data
019E L42:
019E .dbline 155
019E 6395 inc R22
01A0 L44:
01A0 .dbline 155
01A0 6032 cpi R22,32
01A2 D8F3 brlo L41
01A4 X10:
01A4 .dbline 157
01A4 ; }
01A4 L38:
01A4 .dbline 151
01A4 4395 inc R20
01A6 L40:
01A6 .dbline 151
01A6 4032 cpi R20,32
01A8 88F3 brlo L37
01AA X11:
01AA .dbline -2
01AA L36:
01AA .dbline 0 ; func end
01AA 6991 ld R22,y+
01AC 4991 ld R20,y+
01AE 0895 ret
01B0 .dbsym r i 20 c
01B0 .dbsym r j 22 c
01B0 .dbend
01B0 .dbfunc e LcmClearTXT _LcmClearTXT fV
01B0 ; i -> R20
.even
01B0 _LcmClearTXT::
01B0 4A93 st -y,R20
01B2 .dbline -1
01B2 .dbline 162
01B2 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -