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

📄 lcd.lis

📁 基于m16的寻迹寻光小车程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -