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

📄 lcd.lis

📁 AVR单片机C语言程序设计实例精粹
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0114 A0DF              xcall _LCD_Write_Command
 0116                   .dbline 202
 0116           ;       LCD_Write_Command(0x38,1);
 0116 21E0              ldi R18,1
 0118 08E3              ldi R16,56
 011A 9DDF              xcall _LCD_Write_Command
 011C                   .dbline 203
 011C           ;       LCD_Write_Command(0x08,1);
 011C 21E0              ldi R18,1
 011E 08E0              ldi R16,8
 0120 9ADF              xcall _LCD_Write_Command
 0122                   .dbline 204
 0122           ;       LCD_Write_Command(0x01,1);
 0122 21E0              ldi R18,1
 0124 01E0              ldi R16,1
 0126 97DF              xcall _LCD_Write_Command
 0128                   .dbline 205
 0128           ;       LCD_Write_Command(0x06,1);
 0128 21E0              ldi R18,1
 012A 06E0              ldi R16,6
 012C 94DF              xcall _LCD_Write_Command
 012E                   .dbline 206
 012E           ;       LCD_Write_Command(0x0C,1);
 012E 21E0              ldi R18,1
 0130 0CE0              ldi R16,12
 0132                   .dbline -2
 0132                   .dbline 207
 0132           ; }
 0132           L30:
 0132                   .dbline 0 ; func end
 0132 91CF              xjmp _LCD_Write_Command
 0134                   .dbend
 0134                   .dbfunc e LCD_Show_Char _LCD_Show_Char fV
 0134           ;        address -> R20
 0134           ;           code -> y+4
 0134           ;              y -> R20
 0134           ;              x -> R22
                        .even
 0134           _LCD_Show_Char::
 0134 0E940000          xcall push_gset2
 0138 422F              mov R20,R18
 013A 602F              mov R22,R16
 013C                   .dbline -1
 013C                   .dbline 218
 013C                   .dbline 220
 013C 6230              cpi R22,2
 013E 70F4              brsh L32
 0140 4031              cpi R20,16
 0142 60F4              brsh L32
 0144                   .dbline 221
 0144                   .dbline 222
 0144 80E4              ldi R24,64
 0146 869F              mul R24,R22
 0148 202C              mov R2,R0
 014A 240E              add R2,R20
 014C 422D              mov R20,R2
 014E                   .dbline 223
 014E 21E0              ldi R18,1
 0150 022D              mov R16,R2
 0152 0068              ori R16,128
 0154 80DF              xcall _LCD_Write_Command
 0156                   .dbline 224
 0156 21E0              ldi R18,1
 0158 0C81              ldd R16,y+4
 015A 97DF              xcall _LCD_Write_Data
 015C                   .dbline 225
 015C           L32:
 015C                   .dbline -2
 015C                   .dbline 226
 015C           ; 
 015C           ; //******************************************************************************
 015C           ; // Function    : LCD_Show_Char
 015C           ; // Input       : x - Row of LCD(0 to 1);
 015C           ; //               y - Column of LCD(0 to 15);
 015C           ; //               code - Code of Char  
 015C           ; // Output      : none
 015C           ; // Description : Display a Char at Setting Row and Column
 015C           ; //******************************************************************************
 015C           ; void LCD_Show_Char(INT8U x,INT8U y,INT8U code)
 015C           ; {
 015C           ;       INT8U address;
 015C           ;       if((x < 2) && (y < 16))
 015C           ;       {
 015C           ;               address = 0x40 * x + y;
 015C           ;               LCD_Write_Command(0x80 | address,1);
 015C           ;               LCD_Write_Data(code,1);
 015C           ;       }
 015C           ; }
 015C           L31:
 015C 0E940000          xcall pop_gset2
 0160                   .dbline 0 ; func end
 0160 0895              ret
 0162                   .dbsym r address 20 c
 0162                   .dbsym l code 4 c
 0162                   .dbsym r y 20 c
 0162                   .dbsym r x 22 c
 0162                   .dbend
 0162                   .dbfunc e LCD_Show_String _LCD_Show_String fV
 0162           ;      x_address -> R20
 0162           ;      y_address -> R22
 0162           ;          pdata -> R10,R11
 0162           ;              y -> R12
 0162           ;              x -> R22
                        .even
 0162           _LCD_Show_String::
 0162 0E940000          xcall push_gset4
 0166 C22E              mov R12,R18
 0168 602F              mov R22,R16
 016A 2197              sbiw R28,1
 016C A984              ldd R10,y+9
 016E BA84              ldd R11,y+10
 0170                   .dbline -1
 0170                   .dbline 237
 0170           ; 
 0170           ; //******************************************************************************
 0170           ; // Function    : LCD_Show_String
 0170           ; // Input       : x - Row of LCD(0 to 1);
 0170           ; //               y - Column of LCD(0 to 15);
 0170           ; //               pdata - Pointer to a String  
 0170           ; // Output      : none
 0170           ; // Description : Display a String from at Setting Row and Column
 0170           ; //******************************************************************************
 0170           ; void LCD_Show_String(INT8U x,INT8U y,INT8U *pdata)
 0170           ; {
 0170                   .dbline 238
 0170           ;       INT8U x_address = x;
 0170 462F              mov R20,R22
 0172                   .dbline 239
 0172           ;       INT8U y_address = y;
 0172 6C2D              mov R22,R12
 0174 14C0              xjmp L36
 0176           L35:
 0176                   .dbline 241
 0176           ;       while(*pdata != '\0')
 0176           ;       {
 0176                   .dbline 242
 0176           ;               LCD_Show_Char(x_address,y_address,*pdata++);
 0176 F501              movw R30,R10
 0178 2190              ld R2,Z+
 017A 5F01              movw R10,R30
 017C 2882              std y+0,R2
 017E 262F              mov R18,R22
 0180 042F              mov R16,R20
 0182 D8DF              xcall _LCD_Show_Char
 0184                   .dbline 243
 0184           ;               y_address++;
 0184 6395              inc R22
 0186                   .dbline 244
 0186           ;               if((x_address == 0) && (y_address >= 16))
 0186 4423              tst R20
 0188 29F4              brne L38
 018A 6031              cpi R22,16
 018C 18F0              brlo L38
 018E                   .dbline 245
 018E           ;               { 
 018E                   .dbline 246
 018E           ;                       x_address = 1;
 018E 41E0              ldi R20,1
 0190                   .dbline 247
 0190           ;                       y_address = 0;
 0190 6627              clr R22
 0192                   .dbline 248
 0192           ;               }
 0192 05C0              xjmp L39
 0194           L38:
 0194                   .dbline 249
 0194           ;               else if((x_address == 1) && (y_address >= 16))
 0194 4130              cpi R20,1
 0196 19F4              brne L40
 0198 6031              cpi R22,16
 019A 08F0              brlo L40
 019C                   .dbline 250
 019C           ;               {
 019C                   .dbline 251
 019C           ;                       return;
 019C 04C0              xjmp L34
 019E           L40:
 019E           L39:
 019E                   .dbline 253
 019E           L36:
 019E                   .dbline 240
 019E F501              movw R30,R10
 01A0 2080              ldd R2,z+0
 01A2 2220              tst R2
 01A4 41F7              brne L35
 01A6                   .dbline -2
 01A6                   .dbline 254
 01A6           ;               }
 01A6           ;       }
 01A6           ; }
 01A6           L34:
 01A6 2196              adiw R28,1
 01A8 0E940000          xcall pop_gset4
 01AC                   .dbline 0 ; func end
 01AC 0895              ret
 01AE                   .dbsym r x_address 20 c
 01AE                   .dbsym r y_address 22 c
 01AE                   .dbsym r pdata 10 pc
 01AE                   .dbsym r y 12 c
 01AE                   .dbsym r x 22 c
 01AE                   .dbend
 01AE                   .dbfunc e Delay_ms _Delay_ms fV
 01AE           ;            cnt -> R20,R21
 01AE           ;           time -> R16
                        .even
 01AE           _Delay_ms::
 01AE 0E940000          xcall push_gset1
 01B2                   .dbline -1
 01B2                   .dbline 263
 01B2           ; 
 01B2           ; //******************************************************************************
 01B2           ; // Function    : Delay_ms
 01B2           ; // Input       : time - Delay Time  
 01B2           ; // Output      : none
 01B2           ; // Description : Inaccurate ms Level Delay for Software Reset of LCD
 01B2           ; //******************************************************************************
 01B2           ; void Delay_ms(INT8U time)
 01B2           ; {
 01B2                   .dbline 264
 01B2           ;       INT16U cnt = 0;
 01B2 4427              clr R20
 01B4 5527              clr R21
 01B6 0AC0              xjmp L44
 01B8           L43:
 01B8                   .dbline 266
 01B8           ;       while(time--)
 01B8           ;       {
 01B8                   .dbline 267
 01B8           ;               for(cnt = 0;cnt < 5000;cnt++)
 01B8 4427              clr R20
 01BA 5527              clr R21
 01BC 03C0              xjmp L49
 01BE           L46:
 01BE                   .dbline 268
 01BE                   .dbline 269
 01BE 0000              nop
 01C0                   .dbline 270
 01C0           L47:
 01C0                   .dbline 267
 01C0 4F5F              subi R20,255  ; offset = 1
 01C2 5F4F              sbci R21,255
 01C4           L49:
 01C4                   .dbline 267
 01C4 4838              cpi R20,136
 01C6 E3E1              ldi R30,19
 01C8 5E07              cpc R21,R30
 01CA C8F3              brlo L46
 01CC                   .dbline 271
 01CC           L44:
 01CC                   .dbline 265
 01CC 202E              mov R2,R16
 01CE 3324              clr R3
 01D0 0150              subi R16,1
 01D2 2220              tst R2
 01D4 89F7              brne L43
 01D6                   .dbline -2
 01D6                   .dbline 272
 01D6           ;               {
 01D6           ;                       NOP();
 01D6           ;               }
 01D6           ;       }
 01D6           ; }
 01D6           L42:
 01D6 0E940000          xcall pop_gset1
 01DA                   .dbline 0 ; func end
 01DA 0895              ret
 01DC                   .dbsym r cnt 20 i
 01DC                   .dbsym r time 16 c
 01DC                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -