📄 lcd.lis
字号:
00CA .dbline 135
00CA ; unsigned char Y;
00CA ; WDR();
00CA A895 wdr
00CC .dbline 136
00CC ; LCD_WRI_ORDER(ADD);
00CC 0A2D mov R16,R10
00CE A1DF xcall _LCD_WRI_ORDER
00D0 .dbline 137
00D0 ; LCD_DELAY();
00D0 CADF xcall _LCD_DELAY
00D2 .dbline 138
00D2 ; for(Y=0;*DISP!='\0';Y++)
00D2 AA24 clr R10
00D4 08C0 xjmp L18
00D6 L15:
00D6 .dbline 139
00D6 ; {
00D6 .dbline 140
00D6 ; LCD_DELAY();
00D6 C7DF xcall _LCD_DELAY
00D8 .dbline 141
00D8 ; LCD_WRI_DATA(*DISP);
00D8 FA01 movw R30,R20
00DA 0081 ldd R16,z+0
00DC B0DF xcall _LCD_WRI_DATA
00DE .dbline 142
00DE ; LCD_DELAY();DISP++;
00DE C3DF xcall _LCD_DELAY
00E0 .dbline 142
00E0 4F5F subi R20,255 ; offset = 1
00E2 5F4F sbci R21,255
00E4 .dbline 143
00E4 ; }
00E4 L16:
00E4 .dbline 138
00E4 A394 inc R10
00E6 L18:
00E6 .dbline 138
00E6 FA01 movw R30,R20
00E8 2080 ldd R2,z+0
00EA 2220 tst R2
00EC A1F7 brne L15
00EE X2:
00EE .dbline -2
00EE L14:
00EE .dbline 0 ; func end
00EE 0C940000 xjmp pop_xgset300C
00F2 .dbsym r Y 10 c
00F2 .dbsym r DISP 20 pc
00F2 .dbsym r ADD 10 c
00F2 .dbend
.area lit(rom, con, rel)
0000 L20:
0000 30313233343536373839616263646566 .byte 48,49,50,51,52,53,54,55,56,57,'a,'b,'c,'d,'e,'f
0010 00 .byte 0
.area text(rom, con, rel)
00F2 .dbfile C:\DOCUME~1\Administrator\桌面\新建文件夹\lcd.c
00F2 .dbfunc e shuzi_disp _shuzi_disp fV
00F2 ; number -> y+0
00F2 ; NUMber -> R10
00F2 ; ADD -> R12
.even
00F2 _shuzi_disp::
00F2 AA92 st -y,R10
00F4 CA92 st -y,R12
00F6 A22E mov R10,R18
00F8 C02E mov R12,R16
00FA 6197 sbiw R28,17
00FC .dbline -1
00FC .dbline 147
00FC ; }
00FC ;
00FC ; void shuzi_disp(unsigned char ADD,unsigned char NUMber) //一位数字显示
00FC ; {
00FC .dbline 148
00FC ; unsigned char number[]={"0123456789abcdef"};
00FC 80E0 ldi R24,<L20
00FE 90E0 ldi R25,>L20
0100 FE01 movw R30,R28
0102 01E1 ldi R16,17
0104 10E0 ldi R17,0
0106 FA93 st -y,R31
0108 EA93 st -y,R30
010A 9A93 st -y,R25
010C 8A93 st -y,R24
010E 0E940000 xcall asgncblk
0112 .dbline 149
0112 ; WDR();
0112 A895 wdr
0114 .dbline 150
0114 ; LCD_WRI_ORDER(ADD); LCD_DELAY();
0114 0C2D mov R16,R12
0116 7DDF xcall _LCD_WRI_ORDER
0118 .dbline 150
0118 A6DF xcall _LCD_DELAY
011A .dbline 151
011A ; LCD_WRI_DATA(number[NUMber]); LCD_DELAY();
011A CE01 movw R24,R28
011C EA2D mov R30,R10
011E FF27 clr R31
0120 E80F add R30,R24
0122 F91F adc R31,R25
0124 0081 ldd R16,z+0
0126 8BDF xcall _LCD_WRI_DATA
0128 .dbline 151
0128 9EDF xcall _LCD_DELAY
012A .dbline -2
012A L19:
012A .dbline 0 ; func end
012A 6196 adiw R28,17
012C C990 ld R12,y+
012E A990 ld R10,y+
0130 0895 ret
0132 .dbsym l number 0 A[17:17]c
0132 .dbsym r NUMber 10 c
0132 .dbsym r ADD 12 c
0132 .dbend
.area lit(rom, con, rel)
0011 L22:
0011 303132333435363738392000 .byte 48,49,50,51,52,53,54,55,56,57,32,0
.area text(rom, con, rel)
0132 .dbfile C:\DOCUME~1\Administrator\桌面\新建文件夹\lcd.c
0132 .dbfunc e NUM_DISPLAY_LCD _NUM_DISPLAY_LCD fV
0132 ; GW -> R10
0132 ; SW -> R12
0132 ; SWS -> R10
0132 ; BW -> R22
0132 ; QW -> R20
0132 ; WW -> R14
0132 ; number -> y+0
0132 ; NUMber -> R10,R11
0132 ; ADD -> R12
.even
0132 _NUM_DISPLAY_LCD::
0132 0E940000 xcall push_xgsetF0FC
0136 5901 movw R10,R18
0138 C02E mov R12,R16
013A 2C97 sbiw R28,12
013C .dbline -1
013C .dbline 154
013C ; }
013C ; void NUM_DISPLAY_LCD(unsigned char ADD,unsigned int NUMber)//数字显示
013C ; {
013C .dbline 161
013C ; unsigned char WW;
013C ; unsigned char QW;
013C ; unsigned char BW;
013C ; unsigned char SW;
013C ; unsigned char SWS;
013C ; unsigned char GW;
013C ; unsigned char number[]={"0123456789 "};
013C 80E0 ldi R24,<L22
013E 90E0 ldi R25,>L22
0140 FE01 movw R30,R28
0142 0CE0 ldi R16,12
0144 10E0 ldi R17,0
0146 FA93 st -y,R31
0148 EA93 st -y,R30
014A 9A93 st -y,R25
014C 8A93 st -y,R24
014E 0E940000 xcall asgncblk
0152 .dbline 162
0152 ; WDR();
0152 A895 wdr
0154 .dbline 163
0154 ; LCD_WRI_ORDER(ADD);
0154 0C2D mov R16,R12
0156 5DDF xcall _LCD_WRI_ORDER
0158 .dbline 164
0158 ; LCD_DELAY();
0158 86DF xcall _LCD_DELAY
015A .dbline 165
015A ; WW=NUMber/10000;
015A 20E1 ldi R18,10000
015C 37E2 ldi R19,39
015E 8501 movw R16,R10
0160 0E940000 xcall div16u
0164 E02E mov R14,R16
0166 .dbline 166
0166 ; QW=(NUMber%10000)/1000;
0166 20E1 ldi R18,10000
0168 37E2 ldi R19,39
016A 8501 movw R16,R10
016C 0E940000 xcall mod16u
0170 28EE ldi R18,1000
0172 33E0 ldi R19,3
0174 0E940000 xcall div16u
0178 402F mov R20,R16
017A .dbline 167
017A ; BW=(NUMber%1000)/100;
017A 28EE ldi R18,1000
017C 33E0 ldi R19,3
017E 8501 movw R16,R10
0180 0E940000 xcall mod16u
0184 24E6 ldi R18,100
0186 30E0 ldi R19,0
0188 0E940000 xcall div16u
018C 602F mov R22,R16
018E .dbline 168
018E ; SWS=(NUMber%1000)%100;
018E 28EE ldi R18,1000
0190 33E0 ldi R19,3
0192 8501 movw R16,R10
0194 0E940000 xcall mod16u
0198 24E6 ldi R18,100
019A 30E0 ldi R19,0
019C 0E940000 xcall mod16u
01A0 A02E mov R10,R16
01A2 .dbline 169
01A2 ; SW=SWS/10;
01A2 1AE0 ldi R17,10
01A4 0E940000 xcall div8u
01A8 C02E mov R12,R16
01AA .dbline 170
01AA ; GW=SWS%10;
01AA 1AE0 ldi R17,10
01AC 0A2D mov R16,R10
01AE 0E940000 xcall mod8u
01B2 A02E mov R10,R16
01B4 .dbline 171
01B4 ; if(WW)
01B4 EE20 tst R14
01B6 41F0 breq L23
01B8 X3:
01B8 .dbline 172
01B8 ; LCD_WRI_DATA(number[WW]);
01B8 CE01 movw R24,R28
01BA EE2D mov R30,R14
01BC FF27 clr R31
01BE E80F add R30,R24
01C0 F91F adc R31,R25
01C2 0081 ldd R16,z+0
01C4 3CDF xcall _LCD_WRI_DATA
01C6 02C0 xjmp L24
01C8 L23:
01C8 .dbline 174
01C8 ; else
01C8 ; LCD_WRI_DATA(number[10]);
01C8 0A85 ldd R16,y+10
01CA 39DF xcall _LCD_WRI_DATA
01CC L24:
01CC .dbline 175
01CC ; LCD_DELAY();
01CC 4CDF xcall _LCD_DELAY
01CE .dbline 176
01CE ; if(QW||WW)
01CE 4423 tst R20
01D0 11F4 brne L28
01D2 X4:
01D2 EE20 tst R14
01D4 41F0 breq L26
01D6 X5:
01D6 L28:
01D6 .dbline 177
01D6 ; LCD_WRI_DATA(number[QW]);
01D6 CE01 movw R24,R28
01D8 E42F mov R30,R20
01DA FF27 clr R31
01DC E80F add R30,R24
01DE F91F adc R31,R25
01E0 0081 ldd R16,z+0
01E2 2DDF xcall _LCD_WRI_DATA
01E4 02C0 xjmp L27
01E6 L26:
01E6 .dbline 179
01E6 ; else
01E6 ; LCD_WRI_DATA(number[10]);
01E6 0A85 ldd R16,y+10
01E8 2ADF xcall _LCD_WRI_DATA
01EA L27:
01EA .dbline 180
01EA ; LCD_DELAY();
01EA 3DDF xcall _LCD_DELAY
01EC .dbline 181
01EC ; if(BW||QW||WW)
01EC 6623 tst R22
01EE 21F4 brne L33
01F0 X6:
01F0 4423 tst R20
01F2 11F4 brne L33
01F4 X7:
01F4 EE20 tst R14
01F6 41F0 breq L30
01F8 X8:
01F8 L33:
01F8 .dbline 182
01F8 ; LCD_WRI_DATA(number[BW]);
01F8 CE01 movw R24,R28
01FA E62F mov R30,R22
01FC FF27 clr R31
01FE E80F add R30,R24
0200 F91F adc R31,R25
0202 0081 ldd R16,z+0
0204 1CDF xcall _LCD_WRI_DATA
0206 02C0 xjmp L31
0208 L30:
0208 .dbline 184
0208 ; else
0208 ; LCD_WRI_DATA(number[10]);
0208 0A85 ldd R16,y+10
020A 19DF xcall _LCD_WRI_DATA
020C L31:
020C .dbline 185
020C ; LCD_DELAY();
020C 2CDF xcall _LCD_DELAY
020E .dbline 186
020E ; if(SW!=0||BW||QW||WW)
020E CC20 tst R12
0210 31F4 brne L39
0212 X9:
0212 6623 tst R22
0214 21F4 brne L39
0216 X10:
0216 4423 tst R20
0218 11F4 brne L39
021A X11:
021A EE20 tst R14
021C 41F0 breq L35
021E X12:
021E L39:
021E .dbline 187
021E ; LCD_WRI_DATA(number[SW]);
021E CE01 movw R24,R28
0220 EC2D mov R30,R12
0222 FF27 clr R31
0224 E80F add R30,R24
0226 F91F adc R31,R25
0228 0081 ldd R16,z+0
022A 09DF xcall _LCD_WRI_DATA
022C 02C0 xjmp L36
022E L35:
022E .dbline 189
022E ; else
022E ; LCD_WRI_DATA(number[10]);
022E 0A85 ldd R16,y+10
0230 06DF xcall _LCD_WRI_DATA
0232 L36:
0232 .dbline 190
0232 ; LCD_DELAY();
0232 19DF xcall _LCD_DELAY
0234 .dbline 191
0234 ; LCD_WRI_DATA(number[GW]);
0234 CE01 movw R24,R28
0236 EA2D mov R30,R10
0238 FF27 clr R31
023A E80F add R30,R24
023C F91F adc R31,R25
023E 0081 ldd R16,z+0
0240 FEDE xcall _LCD_WRI_DATA
0242 .dbline 192
0242 ; LCD_DELAY();
0242 11DF xcall _LCD_DELAY
0244 .dbline -2
0244 L21:
0244 .dbline 0 ; func end
0244 2C96 adiw R28,12
0246 0C940000 xjmp pop_xgsetF0FC
024A .dbsym r GW 10 c
024A .dbsym r SW 12 c
024A .dbsym r SWS 10 c
024A .dbsym r BW 22 c
024A .dbsym r QW 20 c
024A .dbsym r WW 14 c
024A .dbsym l number 0 A[12:12]c
024A .dbsym r NUMber 10 i
024A .dbsym r ADD 12 c
024A .dbend
024A ; }
024A ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -