?? lcd.lis
字號:
022C 4DA0 ldd R4,y+37
022E 5EA0 ldd R5,y+38
0230 2982 std y+1,R2
0232 3A82 std y+2,R3
0234 4B82 std y+3,R4
0236 5C82 std y+4,R5
0238 37C0 xjmp L33
023A L32:
023A .dbline 184
023A ;
023A ; while( datainttmp != 0 )
023A ; {
023A .dbline 185
023A ; datachar1[n++] = ( datainttmp % 10 ) + 0x30; //轉換為字符
023A 2A2C mov R2,R10
023C 3324 clr R3
023E 3101 movw R6,R2
0240 822D mov R24,R2
0242 8F5F subi R24,255 ; addi 1
0244 A82E mov R10,R24
0246 8AE0 ldi R24,10
0248 90E0 ldi R25,0
024A A0E0 ldi R26,0
024C B0E0 ldi R27,0
024E 0981 ldd R16,y+1
0250 1A81 ldd R17,y+2
0252 2B81 ldd R18,y+3
0254 3C81 ldd R19,y+4
0256 BA93 st -y,R27
0258 AA93 st -y,R26
025A 9A93 st -y,R25
025C 8A93 st -y,R24
025E 0E940000 xcall mod32s
0262 1801 movw R2,R16
0264 2901 movw R4,R18
0266 80E3 ldi R24,48
0268 90E0 ldi R25,0
026A A0E0 ldi R26,0
026C B0E0 ldi R27,0
026E 280E add R2,R24
0270 391E adc R3,R25
0272 4A1E adc R4,R26
0274 5B1E adc R5,R27
0276 CE01 movw R24,R28
0278 0596 adiw R24,5
027A E62D mov R30,R6
027C FF27 clr R31
027E E80F add R30,R24
0280 F91F adc R31,R25
0282 2082 std z+0,R2
0284 .dbline 186
0284 ; datainttmp /= 10;
0284 8AE0 ldi R24,10
0286 90E0 ldi R25,0
0288 A0E0 ldi R26,0
028A B0E0 ldi R27,0
028C 0981 ldd R16,y+1
028E 1A81 ldd R17,y+2
0290 2B81 ldd R18,y+3
0292 3C81 ldd R19,y+4
0294 BA93 st -y,R27
0296 AA93 st -y,R26
0298 9A93 st -y,R25
029A 8A93 st -y,R24
029C 0E940000 xcall div32s
02A0 0983 std y+1,R16
02A2 1A83 std y+2,R17
02A4 2B83 std y+3,R18
02A6 3C83 std y+4,R19
02A8 .dbline 187
02A8 ; }
02A8 L33:
02A8 .dbline 183
02A8 2980 ldd R2,y+1
02AA 3A80 ldd R3,y+2
02AC 4B80 ldd R4,y+3
02AE 5C80 ldd R5,y+4
02B0 8894 clc
02B2 2220 tst R2
02B4 3204 cpc R3,R2
02B6 4204 cpc R4,R2
02B8 5204 cpc R5,R2
02BA 09F0 breq X14
02BC BECF xjmp L32
02BE X14:
02BE X10:
02BE .dbline 189
02BE ;
02BE ; if( dataint != 0 ) //*/*//*/
02BE 2BA0 ldd R2,y+35
02C0 3CA0 ldd R3,y+36
02C2 4DA0 ldd R4,y+37
02C4 5EA0 ldd R5,y+38
02C6 8894 clc
02C8 2220 tst R2
02CA 3204 cpc R3,R2
02CC 4204 cpc R4,R2
02CE 5204 cpc R5,R2
02D0 09F4 brne X15
02D2 2DC0 xjmp L35
02D4 X15:
02D4 X11:
02D4 .dbline 190
02D4 ; {
02D4 .dbline 191
02D4 ; k = n - 1;
02D4 6A2D mov R22,R10
02D6 6150 subi R22,1
02D8 .dbline 192
02D8 ; kk = n;
02D8 EA2C mov R14,R10
02DA .dbline 194
02DA ;
02DA ; for( i = 0; i < kk; i++, k-- )
02DA CC24 clr R12
02DC 10C0 xjmp L40
02DE L37:
02DE .dbline 195
02DE ; {
02DE .dbline 196
02DE ; datachar2[k] = datachar1[i]; //將數字符串倒過來
02DE CE01 movw R24,R28
02E0 0596 adiw R24,5
02E2 EC2D mov R30,R12
02E4 FF27 clr R31
02E6 E80F add R30,R24
02E8 F91F adc R31,R25
02EA 2080 ldd R2,z+0
02EC CE01 movw R24,R28
02EE 0D96 adiw R24,13
02F0 E62F mov R30,R22
02F2 FF27 clr R31
02F4 E80F add R30,R24
02F6 F91F adc R31,R25
02F8 2082 std z+0,R2
02FA .dbline 197
02FA ; }
02FA L38:
02FA .dbline 194
02FA C394 inc R12
02FC 6A95 dec R22
02FE L40:
02FE .dbline 194
02FE CE14 cp R12,R14
0300 70F3 brlo L37
0302 X12:
0302 .dbline 199
0302 ;
0302 ; LCD_set_rc( r, c );
0302 242F mov R18,R20
0304 0F8D ldd R16,y+31
0306 D9DE xcall _LCD_set_rc
0308 .dbline 200
0308 ; for( i = 0; i < kk; i++ )
0308 CC24 clr R12
030A 0EC0 xjmp L44
030C L41:
030C .dbline 201
030C ; {
030C .dbline 202
030C ; LCD_write_char( r, c++, datachar2[i] );
030C CE01 movw R24,R28
030E 0D96 adiw R24,13
0310 EC2D mov R30,R12
0312 FF27 clr R31
0314 E80F add R30,R24
0316 F91F adc R31,R25
0318 2080 ldd R2,z+0
031A 2882 std y+0,R2
031C 242E mov R2,R20
031E 4F5F subi R20,255 ; addi 1
0320 222D mov R18,R2
0322 0F8D ldd R16,y+31
0324 F2DE xcall _LCD_write_char
0326 .dbline 203
0326 ; }
0326 L42:
0326 .dbline 200
0326 C394 inc R12
0328 L44:
0328 .dbline 200
0328 CE14 cp R12,R14
032A 80F3 brlo L41
032C X13:
032C .dbline 204
032C ; }
032C 05C0 xjmp L36
032E L35:
032E .dbline 207
032E ;
032E ; else
032E ; LCD_write_char( r, c, '0' );
032E 80E3 ldi R24,48
0330 8883 std y+0,R24
0332 242F mov R18,R20
0334 0F8D ldd R16,y+31
0336 E9DE xcall _LCD_write_char
0338 L36:
0338 .dbline -2
0338 L31:
0338 .dbline 0 ; func end
0338 6596 adiw R28,21
033A 0E940000 xcall pop_xgsetF0FC
033E 2496 adiw R28,4
0340 0895 ret
0342 .dbsym l datachar2 13 A[8:8]c
0342 .dbsym r kk 14 c
0342 .dbsym r k 22 c
0342 .dbsym r n 10 c
0342 .dbsym l datachar1 5 A[8:8]c
0342 .dbsym l datainttmp 1 L
0342 .dbsym r i 12 c
0342 .dbsym l dataint 35 L
0342 .dbsym r c 20 c
0342 .dbsym l r 31 c
0342 .dbend
0342 .dbfunc e LCD_write_datafloat _LCD_write_datafloat fV
0342 ; datawholetmp -> y+34
0342 ; xiaoxhu -> <dead>
0342 ; datatemp2_f -> y+30
0342 ; xiaoshu_n -> R10
0342 ; whole_fact_n -> R10
0342 ; zhengshu_no -> R10
0342 ; datawhole_n -> R10
0342 ; datatemp1_f -> y+26
0342 ; zhengshu_n -> R20
0342 ; zhengshu -> R12,R13
0342 ; ling_n -> R22
0342 ; xiaoshu_act_n -> R10
0342 ; n -> y+41
0342 ; datachar2 -> y+17
0342 ; datachar1 -> y+8
0342 ; kk -> y+40
0342 ; k -> y+39
0342 ; datawhole -> y+4
0342 ; i -> y+38
0342 ; mm -> R14,R15
0342 ; p -> y+60
0342 ; datafloat -> y+56
0342 ; c -> y+54
0342 ; r -> y+52
.even
0342 _LCD_write_datafloat::
0342 0E940000 xcall push_arg4
0346 0E940000 xcall push_xgsetF0FC
034A AA97 sbiw R28,42
034C EEAC ldd R14,y+62
034E FFAC ldd R15,y+63
0350 .dbline -1
0350 .dbline 218
0350 ; }
0350 ;
0350 ; //==========================================
0350 ; //函數名稱:顯示一個實型數據
0350 ; //函數作用: 在指定位置顯示實型數據
0350 ; //入口參數: 行位置r, 列位置c, 浮點型數據datafloat, 放大倍p, 倍數mm,
0350 ; //返回類型:無
0350 ; //示例 :LCD_write_datafloat( 1, 2, 0.0123, 10000, 4)
0350 ; //==========================================
0350 ; void LCD_write_datafloat( uchar r, uchar c, float datafloat, uint p, uint mm)
0350 ; {
0350 .dbline 219
0350 ; uchar zhengshu_no = 0;
0350 .dbline 225
0350 ; uchar whole_fact_n;
0350 ; uchar xiaoshu_act_n;
0350 ; uchar ling_n;
0350 ;
0350 ;
0350 ; uchar i = 0;
0350 0024 clr R0
0352 0EA2 std y+38,R0
0354 .dbline 226
0354 ; uchar n = 0;
0354 09A6 std y+41,R0
0356 .dbline 227
0356 ; uchar k = 0;
0356 0FA2 std y+39,R0
0358 .dbline 228
0358 ; uchar kk = 0;
0358 08A6 std y+40,R0
035A .dbline 237
035A ; uchar datachar1[9];
035A ; uchar datachar2[9];
035A ; uint zhengshu; //定義變量zhengshu來存放實數的整數部分
035A ; uint xiaoxhu; //定義變量xiaoshu來存放實數的小數部分
035A ;
035A ; long int datawhole;
035A ; long int datawholetmp;
035A ;
035A ; uchar zhengshu_n = 0; //定義整數部分整數位數
035A .dbline 238
035A ; uchar xiaoshu_n = 0; //定義小數部分整數位數
035A .dbline 239
035A ; uchar datawhole_n = 0; //定義實數放大后的位數
035A .dbline 243
035A ; float datatemp1_f;
035A ; float datatemp2_f;
035A ;
035A ; datatemp1_f = datafloat;
035A 28AC ldd R2,y+56
035C 39AC ldd R3,y+57
035E 4AAC ldd R4,y+58
0360 5BAC ldd R5,y+59
0362 2A8E std y+26,R2
0364 3B8E std y+27,R3
0366 4C8E std y+28,R4
0368 5D8E std y+29,R5
036A .dbline 244
036A ; datatemp2_f = datafloat;
036A 28AC ldd R2,y+56
036C 39AC ldd R3,y+57
036E 4AAC ldd R4,y+58
0370 5BAC ldd R5,y+59
0372 2E8E std y+30,R2
0374 3F8E std y+31,R3
0376 48A2 std y+32,R4
0378 59A2 std y+33,R5
037A .dbline 246
037A ;
037A ; zhengshu = ( uint )datatemp1_f; //取實數的整數部分
037A 0A8D ldd R16,y+26
037C 1B8D ldd R17,y+27
037E 2C8D ldd R18,y+28
0380 3D8D ldd R19,y+29
0382 0E940000 xcall fpint
0386 6801 movw R12,R16
0388 .dbline 248
0388 ;
0388 ; zhengshu_n = lengh_longint( zhengshu ); //如果整數部分為0, 則只有一位整數, 取整數位數
0388 8601 movw R16,R12
038A 9701 movw R18,R14
038C 2227 clr R18
038E 3327 clr R19
0390 06DF xcall _lengh_longint
0392 402F mov R20,R16
0394 .dbline 250
0394 ;
0394 ; datawhole = datatemp1_f * p; //將實數放大,變成整數, datawhole為放大后的數
0394 2A8C ldd R2,y+26
0396 3B8C ldd R3,y+27
0398 4C8C ldd R4,y+28
039A 5D8C ldd R5,y+29
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -