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

📄 lcd.lis

📁 AVR单片机C语言程序设计实例精粹
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 005E           ; // Output      : none
 005E           ; // Description : Write Command to LCD
 005E           ; //******************************************************************************
 005E           ; void LCD_Write_Command(INT8U command,INT8U status)
 005E           ; {
 005E                   .dbline 125
 005E           ;       if(status == 1)
 005E 6130              cpi R22,1
 0060 19F4              brne L13
 0062                   .dbline 126
 0062           ;       {
 0062           L15:
 0062                   .dbline 127
 0062                   .dbline 127
 0062                   .dbline 127
 0062           L16:
 0062                   .dbline 127
 0062           ;               while(LCD_Read_BF() != 0) {;}
 0062 E2DF              xcall _LCD_Read_BF
 0064 0023              tst R16
 0066 E9F7              brne L15
 0068                   .dbline 128
 0068           ;       }
 0068           L13:
 0068                   .dbline 129
 0068           ;       Set_EN(0);
 0068 0027              clr R16
 006A D6DF              xcall _Set_EN
 006C                   .dbline 130
 006C           ;       Set_RS(0);
 006C 0027              clr R16
 006E C8DF              xcall _Set_RS
 0070                   .dbline 131
 0070           ;       Set_RW(0);
 0070 0027              clr R16
 0072 CCDF              xcall _Set_RW
 0074                   .dbline 132
 0074           ;       Set_Data(command);
 0074 042F              mov R16,R20
 0076 D6DF              xcall _Set_Data
 0078                   .dbline 133
 0078           ;       Set_EN(1);
 0078 01E0              ldi R16,1
 007A CEDF              xcall _Set_EN
 007C                   .dbline 134
 007C           ;       NOP();
 007C 0000              nop
 007E                   .dbline 135
 007E           ;       NOP();
 007E 0000              nop
 0080                   .dbline 136
 0080           ;       Set_EN(0);
 0080 0027              clr R16
 0082 CADF              xcall _Set_EN
 0084                   .dbline -2
 0084                   .dbline 137
 0084           ; }
 0084           L12:
 0084 0E940000          xcall pop_gset2
 0088                   .dbline 0 ; func end
 0088 0895              ret
 008A                   .dbsym r status 22 c
 008A                   .dbsym r command 20 c
 008A                   .dbend
 008A                   .dbfunc e LCD_Write_Data _LCD_Write_Data fV
 008A           ;         status -> R22
 008A           ;           data -> R20
                        .even
 008A           _LCD_Write_Data::
 008A 0E940000          xcall push_gset2
 008E 622F              mov R22,R18
 0090 402F              mov R20,R16
 0092                   .dbline -1
 0092                   .dbline 147
 0092           ; 
 0092           ; //******************************************************************************
 0092           ; // Function    : LCD_Write_Data
 0092           ; // Input       : data   - Data to be written to LCD
 0092           ; //               status - Detect LCD Status when 1 
 0092           ; // Output      : none
 0092           ; // Description : Write Data to LCD
 0092           ; //******************************************************************************
 0092           ; void LCD_Write_Data(INT8U data,INT8U status)
 0092           ; {
 0092                   .dbline 148
 0092           ;       if(status == 1)
 0092 6130              cpi R22,1
 0094 19F4              brne L19
 0096                   .dbline 149
 0096           ;       {
 0096           L21:
 0096                   .dbline 150
 0096                   .dbline 150
 0096                   .dbline 150
 0096           L22:
 0096                   .dbline 150
 0096           ;               while(LCD_Read_BF() != 0) {;}
 0096 C8DF              xcall _LCD_Read_BF
 0098 0023              tst R16
 009A E9F7              brne L21
 009C                   .dbline 151
 009C           ;       }
 009C           L19:
 009C                   .dbline 152
 009C           ;       Set_EN(0);
 009C 0027              clr R16
 009E BCDF              xcall _Set_EN
 00A0                   .dbline 153
 00A0           ;       Set_RS(1);
 00A0 01E0              ldi R16,1
 00A2 AEDF              xcall _Set_RS
 00A4                   .dbline 154
 00A4           ;       Set_RW(0);
 00A4 0027              clr R16
 00A6 B2DF              xcall _Set_RW
 00A8                   .dbline 155
 00A8           ;       Set_Data(data);
 00A8 042F              mov R16,R20
 00AA BCDF              xcall _Set_Data
 00AC                   .dbline 156
 00AC           ;       Set_EN(1);
 00AC 01E0              ldi R16,1
 00AE B4DF              xcall _Set_EN
 00B0                   .dbline 157
 00B0           ;       NOP();
 00B0 0000              nop
 00B2                   .dbline 158
 00B2           ;       NOP();
 00B2 0000              nop
 00B4                   .dbline 159
 00B4           ;       Set_EN(0);
 00B4 0027              clr R16
 00B6 B0DF              xcall _Set_EN
 00B8                   .dbline -2
 00B8                   .dbline 160
 00B8           ; }
 00B8           L18:
 00B8 0E940000          xcall pop_gset2
 00BC                   .dbline 0 ; func end
 00BC 0895              ret
 00BE                   .dbsym r status 22 c
 00BE                   .dbsym r data 20 c
 00BE                   .dbend
 00BE                   .dbfunc e LCD_Read_Data _LCD_Read_Data fc
 00BE           ;           data -> R20
 00BE           ;         status -> R20
                        .even
 00BE           _LCD_Read_Data::
 00BE 0E940000          xcall push_gset1
 00C2 402F              mov R20,R16
 00C4                   .dbline -1
 00C4                   .dbline 169
 00C4           ; 
 00C4           ; //******************************************************************************
 00C4           ; // Function    : LCD_Read_Data
 00C4           ; // Input       : status - Detect LCD Status when 1 
 00C4           ; // Output      : Data read from LCD
 00C4           ; // Description : Read Data from LCD
 00C4           ; //******************************************************************************
 00C4           ; INT8U LCD_Read_Data(INT8U status)
 00C4           ; {
 00C4                   .dbline 171
 00C4           ;       INT8U data;
 00C4           ;       if(status == 1)
 00C4 4130              cpi R20,1
 00C6 19F4              brne L25
 00C8                   .dbline 172
 00C8           ;       {
 00C8           L27:
 00C8                   .dbline 173
 00C8                   .dbline 173
 00C8                   .dbline 173
 00C8           L28:
 00C8                   .dbline 173
 00C8           ;               while(LCD_Read_BF() != 0) {;}
 00C8 AFDF              xcall _LCD_Read_BF
 00CA 0023              tst R16
 00CC E9F7              brne L27
 00CE                   .dbline 174
 00CE           ;       }
 00CE           L25:
 00CE                   .dbline 175
 00CE           ;       DDRA = 0x00;
 00CE 2224              clr R2
 00D0 2ABA              out 0x1a,R2
 00D2                   .dbline 176
 00D2           ;       Set_EN(0);
 00D2 0027              clr R16
 00D4 A1DF              xcall _Set_EN
 00D6                   .dbline 177
 00D6           ;       Set_RS(1);
 00D6 01E0              ldi R16,1
 00D8 93DF              xcall _Set_RS
 00DA                   .dbline 178
 00DA           ;       Set_RW(1);
 00DA 01E0              ldi R16,1
 00DC 97DF              xcall _Set_RW
 00DE                   .dbline 179
 00DE           ;       Set_EN(1);
 00DE 01E0              ldi R16,1
 00E0 9BDF              xcall _Set_EN
 00E2                   .dbline 180
 00E2           ;       NOP();
 00E2 0000              nop
 00E4                   .dbline 181
 00E4           ;       NOP();
 00E4 0000              nop
 00E6                   .dbline 182
 00E6           ;       data = PINA;
 00E6 49B3              in R20,0x19
 00E8                   .dbline 183
 00E8           ;       Set_EN(0);
 00E8 0027              clr R16
 00EA 96DF              xcall _Set_EN
 00EC                   .dbline 184
 00EC           ;       DDRA = 0xFF;
 00EC 8FEF              ldi R24,255
 00EE 8ABB              out 0x1a,R24
 00F0                   .dbline 185
 00F0           ;       return(data);
 00F0 042F              mov R16,R20
 00F2                   .dbline -2
 00F2           L24:
 00F2 0E940000          xcall pop_gset1
 00F6                   .dbline 0 ; func end
 00F6 0895              ret
 00F8                   .dbsym r data 20 c
 00F8                   .dbsym r status 20 c
 00F8                   .dbend
 00F8                   .dbfunc e LCD_Reset _LCD_Reset fV
                        .even
 00F8           _LCD_Reset::
 00F8                   .dbline -1
 00F8                   .dbline 195
 00F8           ; }
 00F8           ; 
 00F8           ; //******************************************************************************
 00F8           ; // Function    : LCD_Reset
 00F8           ; // Input       : none 
 00F8           ; // Output      : none
 00F8           ; // Description : LCD software reset,must execute according to time sequence
 00F8           ; //******************************************************************************
 00F8           ; void LCD_Reset(void)
 00F8           ; {
 00F8                   .dbline 196
 00F8           ;       Delay_ms(15);
 00F8 0FE0              ldi R16,15
 00FA 59D0              xcall _Delay_ms
 00FC                   .dbline 197
 00FC           ;       LCD_Write_Command(0x38,0);
 00FC 2227              clr R18
 00FE 08E3              ldi R16,56
 0100 AADF              xcall _LCD_Write_Command
 0102                   .dbline 198
 0102           ;       Delay_ms(5);
 0102 05E0              ldi R16,5
 0104 54D0              xcall _Delay_ms
 0106                   .dbline 199
 0106           ;       LCD_Write_Command(0x38,0);
 0106 2227              clr R18
 0108 08E3              ldi R16,56
 010A A5DF              xcall _LCD_Write_Command
 010C                   .dbline 200
 010C           ;       Delay_ms(5);
 010C 05E0              ldi R16,5
 010E 4FD0              xcall _Delay_ms
 0110                   .dbline 201
 0110           ;       LCD_Write_Command(0x38,0);
 0110 2227              clr R18
 0112 08E3              ldi R16,56

⌨️ 快捷键说明

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