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

📄 lcd1602.lis

📁 用AVR及1602LCD在PROTEUS环境下仿真
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00B8           ;    GotoXY(11,1);//显示' ';实现':'闪烁效果
 00B8           ;    Print(" ");
 00B8           ;    GotoXY(8,1);
 00B8 ECDF              xcall _lcd_read_code
 00BA 202E              mov R2,R16
 00BC 3324              clr R3
 00BE 27FC              sbrc R2,7
 00C0 FBCF              rjmp L15
 00C2                   .dbline -2
 00C2           L14:
 00C2                   .dbline 0 ; func end
 00C2 0895              ret
 00C4                   .dbend
 00C4                   .dbfunc e lcd_write_data _lcd_write_data fV
 00C4           ;           data -> R20
                        .even
 00C4           _lcd_write_data::
 00C4 0E940000          xcall push_gset1
 00C8 402F              mov R20,R16
 00CA                   .dbline -1
 00CA                   .dbline 136
 00CA           ;    Print(" ");
 00CA           ;   } 
 00CA           ;   //********************************************************  
 00CA           ;   IntToStr(min,&minute[0]);//转换分位,显示
 00CA           ;   GotoXY(9,1);
 00CA           ;   if(time_set!=2)//按下时间设定键,第2下为分设置
 00CA           ;   {   
 00CA           ;    Print(&minute[0]);
 00CA           ;   }
 00CA           ;   else if(time_set==2)
 00CA                   .dbline 137
 00CA           ;   {
 00CA A895              wdr
 00CC                   .dbline 138
 00CC           ;    if((flash_flag)%2==0)
 00CC 8FEF              ldi R24,255
 00CE 8ABB              out 0x1a,R24
 00D0                   .dbline 139
 00D0           ;    {
 00D0 AA9A              sbi 0x15,2
 00D2                   .dbline 140
 00D2           ;     Print(&minute[0]);
 00D2 01E0              ldi R16,1
 00D4 10E0              ldi R17,0
 00D6 BADF              xcall _delay_us
 00D8                   .dbline 141
 00D8           ;    }
 00D8 AB98              cbi 0x15,3
 00DA                   .dbline 142
 00DA           ;    else
 00DA 01E0              ldi R16,1
 00DC 10E0              ldi R17,0
 00DE B6DF              xcall _delay_us
 00E0                   .dbline 143
 00E0           ;    {
 00E0 AC9A              sbi 0x15,4
 00E2                   .dbline 145
 00E2           ;     Print("  ");
 00E2           ;    }
 00E2 01E0              ldi R16,1
 00E4 10E0              ldi R17,0
 00E6 C4DF              xcall _delay_ms
 00E8                   .dbline 146
 00E8           ;   }  
 00E8 4BBB              out 0x1b,R20
 00EA                   .dbline 147
 00EA           ;   //********************************************************  
 00EA AC98              cbi 0x15,4
 00EC                   .dbline 148
 00EC           ;   IntToStr(hou,&hour[0]);//转换小时位,显示
 00EC 01E0              ldi R16,1
 00EE 10E0              ldi R17,0
 00F0 ADDF              xcall _delay_us
 00F2                   .dbline 150
 00F2           ;   GotoXY(6,1);
 00F2           ;   if(time_set!=3)//按下时间设定键,第3下为小时设置
 00F2 AB9A              sbi 0x15,3
 00F4                   .dbline 151
 00F4           ;   {   
 00F4 2224              clr R2
 00F6 2ABA              out 0x1a,R2
 00F8                   .dbline 152
 00F8           ;    Print(&hour[0]);
 00F8 A895              wdr
 00FA                   .dbline -2
 00FA           L18:
 00FA 0E940000          xcall pop_gset1
 00FE                   .dbline 0 ; func end
 00FE 0895              ret
 0100                   .dbsym r data 20 c
 0100                   .dbend
 0100                   .dbfunc e lcd_write_code _lcd_write_code fV
 0100           ;           code -> R20
                        .even
 0100           _lcd_write_code::
 0100 0E940000          xcall push_gset1
 0104 402F              mov R20,R16
 0106                   .dbline -1
 0106                   .dbline 157
 0106           ;   }
 0106           ;   else if(time_set==3)
 0106           ;   {
 0106           ;    if((flash_flag)%2==0)
 0106           ;    {
 0106                   .dbline 158
 0106           ;     Print(&hour[0]);
 0106 A895              wdr
 0108                   .dbline 159
 0108           ;    }
 0108 8FEF              ldi R24,255
 010A 8ABB              out 0x1a,R24
 010C                   .dbline 160
 010C           ;    else
 010C AA98              cbi 0x15,2
 010E                   .dbline 161
 010E           ;    {
 010E 01E0              ldi R16,1
 0110 10E0              ldi R17,0
 0112 9CDF              xcall _delay_us
 0114                   .dbline 162
 0114           ;     Print("  ");
 0114 AB98              cbi 0x15,3
 0116                   .dbline 163
 0116           ;    }
 0116 01E0              ldi R16,1
 0118 10E0              ldi R17,0
 011A 98DF              xcall _delay_us
 011C                   .dbline 164
 011C           ;   }  
 011C AC9A              sbi 0x15,4
 011E                   .dbline 166
 011E           ;   //********************************************************
 011E           ;   IntToStr(day,&Day[0]);//转换日位,显示
 011E 01E0              ldi R16,1
 0120 10E0              ldi R17,0
 0122 A6DF              xcall _delay_ms
 0124                   .dbline 168
 0124           ;   GotoXY(14,0);
 0124           ;   if(time_set!=4)//按下时间设定键,第4下为日设置
 0124 4BBB              out 0x1b,R20
 0126                   .dbline 169
 0126           ;   {   
 0126 AC98              cbi 0x15,4
 0128                   .dbline 170
 0128           ;    Print(&Day[0]);
 0128 01E0              ldi R16,1
 012A 10E0              ldi R17,0
 012C 8FDF              xcall _delay_us
 012E                   .dbline 172
 012E           ;   }
 012E           ;   else if(time_set==4)
 012E AB9A              sbi 0x15,3
 0130                   .dbline 173
 0130           ;   {
 0130 2224              clr R2
 0132 2ABA              out 0x1a,R2
 0134                   .dbline 174
 0134           ;    if((flash_flag)%2==0)
 0134 A895              wdr
 0136                   .dbline -2
 0136           L19:
 0136 0E940000          xcall pop_gset1
 013A                   .dbline 0 ; func end
 013A 0895              ret
 013C                   .dbsym r code 20 c
 013C                   .dbend
 013C                   .dbfunc e Print _Print fV
 013C           ;            str -> R20,R21
                        .even
 013C           _Print::
 013C 0E940000          xcall push_gset1
 0140 A801              movw R20,R16
 0142                   .dbline -1
 0142                   .dbline 179
 0142           ;    {
 0142           ;     Print(&Day[0]);
 0142           ;    }
 0142           ;    else
 0142           ;    {
 0142 06C0              xjmp L22
 0144           L21:
 0144                   .dbline 181
 0144                   .dbline 182
 0144 A895              wdr
 0146                   .dbline 183
 0146 FA01              movw R30,R20
 0148 0081              ldd R16,z+0
 014A BCDF              xcall _lcd_write_data
 014C                   .dbline 185
 014C 4F5F              subi R20,255  ; offset = 1
 014E 5F4F              sbci R21,255
 0150                   .dbline 186
 0150           L22:
 0150                   .dbline 180
 0150           ;     Print("  ");
 0150 FA01              movw R30,R20
 0152 2080              ldd R2,z+0
 0154 2220              tst R2
 0156 B1F7              brne L21
 0158                   .dbline -2
 0158           L20:
 0158 0E940000          xcall pop_gset1
 015C                   .dbline 0 ; func end
 015C 0895              ret
 015E                   .dbsym r str 20 pc
 015E                   .dbend
 015E                   .dbfunc e GotoXY _GotoXY fV
 015E           ;              y -> R22
 015E           ;              x -> R20
                        .even
 015E           _GotoXY::
 015E 0E940000          xcall push_gset2
 0162 622F              mov R22,R18
 0164 402F              mov R20,R16
 0166                   .dbline -1
 0166                   .dbline 191
 0166           ;    }
 0166           ;   }  
 0166           ;   
 0166           ;   //********************************************************
 0166           ;   IntToStr(month,&Month[0]);//转换月位,显示
 0166           ;   GotoXY(11,0);
 0166           ;   if(time_set!=5)//按下时间设定键,第5下为月设置
 0166           ;   {   
 0166           ;    Print(&Month[0]);
 0166           ;   }
 0166           ;   else if(time_set==5)
 0166                   .dbline 192
 0166           ;   {
 0166 6623              tst R22
 0168 19F4              brne L25
 016A                   .dbline 193
 016A           ;    if((flash_flag)%2==0)
 016A 042F              mov R16,R20
 016C 0068              ori R16,128
 016E C8DF              xcall _lcd_write_code
 0170           L25:
 0170                   .dbline 194
 0170 6130              cpi R22,1
 0172 21F4              brne L27
 0174                   .dbline 195
 0174 042F              mov R16,R20
 0176 0054              subi R16,64
 0178 0068              ori R16,128
 017A C2DF              xcall _lcd_write_code
 017C           L27:
 017C                   .dbline -2
 017C           L24:
 017C 0E940000          xcall pop_gset2
 0180                   .dbline 0 ; func end
 0180 0895              ret
 0182                   .dbsym r y 22 c
 0182                   .dbsym r x 20 c
 0182                   .dbend
 0182                   .dbfunc e lcd_init _lcd_init fV
                        .even
 0182           _lcd_init::
 0182                   .dbline -1
 0182                   .dbline 199
 0182           ;    {
 0182           ;     Print(&Month[0]);
 0182           ;    }
 0182           ;    else
 0182           ;    {
 0182           ;     Print("  ");
 0182                   .dbline 200
 0182           ;    }
 0182 A895              wdr
 0184                   .dbline 201
 0184           ;   }  
 0184 00E9              ldi R16,400
 0186 11E0              ldi R17,1
 0188 73DF              xcall _delay_ms
 018A                   .dbline 202
 018A           ;   //********************************************************
 018A AC9A              sbi 0x15,4
 018C                   .dbline 204
 018C           ;   IntToStr1(year,&Year[0]);//转换年位,显示
 018C           ;   GotoXY(6,0);
 018C 0FE0              ldi R16,15
 018E 10E0              ldi R17,0
 0190 6FDF              xcall _delay_ms
 0192                   .dbline 205
 0192           ;   if(time_set!=6)//按下时间设定键,第6下为年设置
 0192 08E3              ldi R16,56
 0194 B5DF              xcall _lcd_write_code
 0196                   .dbline 206
 0196           ;   {   
 0196 05E0              ldi R16,5
 0198 10E0              ldi R17,0
 019A 6ADF              xcall _delay_ms
 019C                   .dbline 207
 019C           ;    Print(&Year[0]);
 019C 08E3              ldi R16,56
 019E B0DF              xcall _lcd_write_code
 01A0                   .dbline 208
 01A0           ;   }
 01A0 05E0              ldi R16,5
 01A2 10E0              ldi R17,0
 01A4 65DF              xcall _delay_ms
 01A6                   .dbline 209
 01A6           ;   else if(time_set==6)
 01A6 08E3              ldi R16,56
 01A8 ABDF              xcall _lcd_write_code
 01AA                   .dbline 210
 01AA           ;   {
 01AA 05E0              ldi R16,5
 01AC 10E0              ldi R17,0
 01AE 60DF              xcall _delay_ms
 01B0                   .dbline 211
 01B0           ;    if((flash_flag)%2==0)
 01B0 0CE0              ldi R16,12
 01B2 A6DF              xcall _lcd_write_code
 01B4                   .dbline 212
 01B4           ;    {
 01B4 05E0              ldi R16,5
 01B6 10E0              ldi R17,0
 01B8 5BDF              xcall _delay_ms
 01BA                   .dbline 213
 01BA           ;     Print(&Year[0]);
 01BA 06E0              ldi R16,6
 01BC A1DF              xcall _lcd_write_code
 01BE                   .dbline 214
 01BE           ;    }
 01BE 05E0              ldi R16,5
 01C0 10E0              ldi R17,0
 01C2 56DF              xcall _delay_ms
 01C4                   .dbline 215
 01C4           ;    else
 01C4 01E0              ldi R16,1
 01C6 9CDF              xcall _lcd_write_code
 01C8                   .dbline 216
 01C8           ;    {
 01C8 05E0              ldi R16,5
 01CA 10E0              ldi R17,0
 01CC 51DF              xcall _delay_ms
 01CE                   .dbline 217
 01CE           ;     Print("    ");
 01CE 02E0              ldi R16,2
 01D0 97DF              xcall _lcd_write_code
 01D2                   .dbline 218
 01D2           ;    }
 01D2 A895              wdr
 01D4                   .dbline -2
 01D4           L29:
 01D4                   .dbline 0 ; func end
 01D4 0895              ret

⌨️ 快捷键说明

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