?? lcd.lis
字號:
0102 2220 tst R2
0104 B9F7 brne L11
0106 X2:
0106 .dbline -2
0106 L10:
0106 .dbline 0 ; func end
0106 0C940000 xjmp pop_xgset303C
010A .dbsym r s 20 pc
010A .dbsym r c 12 c
010A .dbsym r r 10 c
010A .dbend
010A .dbfunc e LCD_write_char _LCD_write_char fV
010A ; DATA -> y+2
010A ; c -> R12
010A ; r -> R10
.even
010A _LCD_write_char::
010A AA92 st -y,R10
010C CA92 st -y,R12
010E C22E mov R12,R18
0110 A02E mov R10,R16
0112 .dbline -1
0112 .dbline 110
0112 ; }
0112 ;
0112 ; void LCD_write_char(uchar r, uchar c, uchar DATA) //寫字符
0112 ; {
0112 .dbline 111
0112 ; LCD_set_rc( r, c );
0112 2C2D mov R18,R12
0114 0A2D mov R16,R10
0116 D1DF xcall _LCD_set_rc
0118 .dbline 112
0118 ; LCD_write_data( DATA );
0118 0A81 ldd R16,y+2
011A 98DF xcall _LCD_write_data
011C .dbline -2
011C L14:
011C .dbline 0 ; func end
011C C990 ld R12,y+
011E A990 ld R10,y+
0120 0895 ret
0122 .dbsym l DATA 2 c
0122 .dbsym r c 12 c
0122 .dbsym r r 10 c
0122 .dbend
0122 .dbfunc e LCD_write_array _LCD_write_array fV
0122 ; i -> R10
0122 ; array -> R12,R13
0122 ; c -> R22
0122 ; r -> R20
.even
0122 _LCD_write_array::
0122 0E940000 xcall push_xgsetF03C
0126 622F mov R22,R18
0128 402F mov R20,R16
012A 2197 sbiw R28,1
012C C984 ldd R12,y+9
012E DA84 ldd R13,y+10
0130 .dbline -1
0130 .dbline 122
0130 ; }
0130 ;
0130 ; //==========================================
0130 ; //函數名稱:寫字符數組
0130 ; //函數作用: 在指定位置寫一串字符串
0130 ; //入口參數: 行位置r, 列位置c, 字符數組chardata[], 字符個數
0130 ; //返回類型:無
0130 ; //==========================================
0130 ; void LCD_write_array( uchar r, uchar c, uchar array[] )
0130 ; {
0130 .dbline 123
0130 ; uchar i = 0;
0130 AA24 clr R10
0132 2AC0 xjmp L17
0134 L16:
0134 .dbline 125
0134 ; while( array[i] != '\0' )
0134 ; {
0134 .dbline 126
0134 ; LCD_write_char( r, c, array[i] );
0134 EA2D mov R30,R10
0136 FF27 clr R31
0138 EC0D add R30,R12
013A FD1D adc R31,R13
013C 2080 ldd R2,z+0
013E 2882 std y+0,R2
0140 262F mov R18,R22
0142 042F mov R16,R20
0144 E2DF xcall _LCD_write_char
0146 .dbline 127
0146 ; if( ++c == 16 )
0146 862F mov R24,R22
0148 8F5F subi R24,255 ; addi 1
014A 682F mov R22,R24
014C 6031 cpi R22,16
014E D9F4 brne L19
0150 X3:
0150 .dbline 128
0150 ; {
0150 .dbline 129
0150 ; if( r == 1 )
0150 4130 cpi R20,1
0152 61F4 brne L21
0154 X4:
0154 .dbline 130
0154 ; {
0154 .dbline 131
0154 ; c = 0;
0154 6627 clr R22
0156 .dbline 132
0156 ; r = 2;
0156 42E0 ldi R20,2
0158 .dbline 133
0158 ; LCD_write_char( r, c, array[i] );
0158 EA2D mov R30,R10
015A FF27 clr R31
015C EC0D add R30,R12
015E FD1D adc R31,R13
0160 2080 ldd R2,z+0
0162 2882 std y+0,R2
0164 262F mov R18,R22
0166 042F mov R16,R20
0168 D0DF xcall _LCD_write_char
016A .dbline 134
016A ; }
016A 0DC0 xjmp L22
016C L21:
016C .dbline 136
016C ;
016C ; else if( r == 2 )
016C 4230 cpi R20,2
016E 59F4 brne L23
0170 X5:
0170 .dbline 137
0170 ; {
0170 .dbline 138
0170 ; c = 0;
0170 6627 clr R22
0172 .dbline 139
0172 ; r = 1;
0172 41E0 ldi R20,1
0174 .dbline 140
0174 ; LCD_write_char( r, c, array[i] );
0174 EA2D mov R30,R10
0176 FF27 clr R31
0178 EC0D add R30,R12
017A FD1D adc R31,R13
017C 2080 ldd R2,z+0
017E 2882 std y+0,R2
0180 262F mov R18,R22
0182 042F mov R16,R20
0184 C2DF xcall _LCD_write_char
0186 .dbline 141
0186 ; }
0186 L23:
0186 L22:
0186 .dbline 142
0186 ; }
0186 L19:
0186 .dbline 143
0186 ; i++;
0186 A394 inc R10
0188 .dbline 144
0188 ; }
0188 L17:
0188 .dbline 124
0188 EA2D mov R30,R10
018A FF27 clr R31
018C EC0D add R30,R12
018E FD1D adc R31,R13
0190 2080 ldd R2,z+0
0192 2220 tst R2
0194 09F0 breq X7
0196 CECF xjmp L16
0198 X7:
0198 X6:
0198 .dbline -2
0198 L15:
0198 .dbline 0 ; func end
0198 2196 adiw R28,1
019A 0C940000 xjmp pop_xgsetF03C
019E .dbsym r i 10 c
019E .dbsym r array 12 pc
019E .dbsym r c 22 c
019E .dbsym r r 20 c
019E .dbend
019E .dbfunc e lengh_longint _lengh_longint fc
019E ; data_n -> R20
019E ; datatmp -> y+0
019E ; datalongint -> y+5
.even
019E _lengh_longint::
019E 0E940000 xcall push_arg4
01A2 4A93 st -y,R20
01A4 2497 sbiw R28,4
01A6 .dbline -1
01A6 .dbline 149
01A6 ; }
01A6 ;
01A6 ; //返回整形數據的長度
01A6 ; char lengh_longint( long unsigned datalongint )
01A6 ; {
01A6 .dbline 150
01A6 ; long signed datatmp = datalongint;
01A6 2D80 ldd R2,y+5
01A8 3E80 ldd R3,y+6
01AA 4F80 ldd R4,y+7
01AC 5884 ldd R5,y+8
01AE 2882 std y+0,R2
01B0 3982 std y+1,R3
01B2 4A82 std y+2,R4
01B4 5B82 std y+3,R5
01B6 .dbline 151
01B6 ; uchar data_n = 0;
01B6 4427 clr R20
01B8 13C0 xjmp L27
01BA L26:
01BA .dbline 153
01BA ; while( datatmp != 0 )
01BA ; {
01BA .dbline 154
01BA ; datatmp /= 10;
01BA 8AE0 ldi R24,10
01BC 90E0 ldi R25,0
01BE A0E0 ldi R26,0
01C0 B0E0 ldi R27,0
01C2 0881 ldd R16,y+0
01C4 1981 ldd R17,y+1
01C6 2A81 ldd R18,y+2
01C8 3B81 ldd R19,y+3
01CA BA93 st -y,R27
01CC AA93 st -y,R26
01CE 9A93 st -y,R25
01D0 8A93 st -y,R24
01D2 0E940000 xcall div32s
01D6 0883 std y+0,R16
01D8 1983 std y+1,R17
01DA 2A83 std y+2,R18
01DC 3B83 std y+3,R19
01DE .dbline 155
01DE ; data_n++;
01DE 4395 inc R20
01E0 .dbline 156
01E0 ; }
01E0 L27:
01E0 .dbline 152
01E0 2880 ldd R2,y+0
01E2 3980 ldd R3,y+1
01E4 4A80 ldd R4,y+2
01E6 5B80 ldd R5,y+3
01E8 8894 clc
01EA 2220 tst R2
01EC 3204 cpc R3,R2
01EE 4204 cpc R4,R2
01F0 5204 cpc R5,R2
01F2 19F7 brne L26
01F4 X8:
01F4 .dbline 158
01F4 ;
01F4 ; if( datalongint == 0 )
01F4 2D80 ldd R2,y+5
01F6 3E80 ldd R3,y+6
01F8 4F80 ldd R4,y+7
01FA 5884 ldd R5,y+8
01FC 8894 clc
01FE 2220 tst R2
0200 3204 cpc R3,R2
0202 4204 cpc R4,R2
0204 5204 cpc R5,R2
0206 09F4 brne L29
0208 X9:
0208 .dbline 159
0208 ; {
0208 .dbline 160
0208 ; data_n = 1;
0208 41E0 ldi R20,1
020A .dbline 161
020A ; }
020A L29:
020A .dbline 163
020A ;
020A ; return data_n;
020A 042F mov R16,R20
020C .dbline -2
020C L25:
020C .dbline 0 ; func end
020C 2496 adiw R28,4
020E 4991 ld R20,y+
0210 2496 adiw R28,4
0212 0895 ret
0214 .dbsym r data_n 20 c
0214 .dbsym l datatmp 0 L
0214 .dbsym l datalongint 5 l
0214 .dbend
0214 .dbfunc e LCD_write_datalongint _LCD_write_datalongint fV
0214 ; datachar2 -> y+13
0214 ; kk -> R14
0214 ; k -> R22
0214 ; n -> R10
0214 ; datachar1 -> y+5
0214 ; datainttmp -> y+1
0214 ; i -> R12
0214 ; dataint -> y+35
0214 ; c -> R20
0214 ; r -> y+31
.even
0214 _LCD_write_datalongint::
0214 0E940000 xcall push_arg4
0218 0E940000 xcall push_xgsetF0FC
021C 422F mov R20,R18
021E 6597 sbiw R28,21
0220 .dbline -1
0220 .dbline 174
0220 ; }
0220 ;
0220 ;
0220 ; //==========================================
0220 ; //函數名稱:顯示一個整型數據
0220 ; //函數作用: 在指定位置顯示整數
0220 ; //入口參數: 行位置r, 列位置c, 字符數組dataint[]
0220 ; //返回類型:無
0220 ; //==========================================
0220 ; void LCD_write_datalongint( uchar r, uchar c, long int dataint )
0220 ; {
0220 .dbline 177
0220 ; uchar datachar1[8];
0220 ; uchar datachar2[8];
0220 ; uchar n = 0;
0220 AA24 clr R10
0222 .dbline 178
0222 ; uchar i =0;
0222 CC24 clr R12
0224 .dbline 179
0224 ; uchar k =0; //取字符個數
0224 6627 clr R22
0226 .dbline 180
0226 ; uchar kk = 0; //取字符個數
0226 EE24 clr R14
0228 .dbline 181
0228 ; long int datainttmp = dataint;
0228 2BA0 ldd R2,y+35
022A 3CA0 ldd R3,y+36
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -