📄 lcd1602.lis
字号:
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 + -