⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcdexper.lis

📁 AVR智能车灯控制系统,实现一些车灯的自动控制,还是多功能性,大家参考一下.
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -