📄 jianpan.lis
字号:
034C ; send( 1, numL / 10 % 10 );
034C 2AE0 ldi R18,10
034E 30E0 ldi R19,0
0350 00910500 lds R16,_numL
0354 10910600 lds R17,_numL+1
0358 0E940000 xcall div16u
035C 2AE0 ldi R18,10
035E 30E0 ldi R19,0
0360 0E940000 xcall mod16u
0364 202F mov R18,R16
0366 01E0 ldi R16,1
0368 5BDE xcall _send
036A .dbline 264
036A ; delay(2);
036A 02E0 ldi R16,2
036C 10E0 ldi R17,0
036E 48DE xcall _delay
0370 .dbline 265
0370 ; break;
0370 12C0 xjmp L47
0372 L53:
0372 .dbline 266
0372 ; case 1: send( 0, numL % 10 );
0372 2AE0 ldi R18,10
0374 30E0 ldi R19,0
0376 00910500 lds R16,_numL
037A 10910600 lds R17,_numL+1
037E 0E940000 xcall mod16u
0382 202F mov R18,R16
0384 0027 clr R16
0386 4CDE xcall _send
0388 .dbline 267
0388 ; delay(3);
0388 03E0 ldi R16,3
038A 10E0 ldi R17,0
038C 39DE xcall _delay
038E .dbline 268
038E ; break;
038E 03C0 xjmp L47
0390 L46:
0390 .dbline 269
0390 ; default: delay(3);
0390 03E0 ldi R16,3
0392 10E0 ldi R17,0
0394 35DE xcall _delay
0396 .dbline 270
0396 ; break;
0396 L47:
0396 .dbline 273
0396 ; }
0396 ;
0396 ; switch(NumBitH)
0396 40910A00 lds R20,_NumBitH
039A 5527 clr R21
039C 4130 cpi R20,1
039E E0E0 ldi R30,0
03A0 5E07 cpc R21,R30
03A2 E1F0 breq L58
03A4 4230 cpi R20,2
03A6 E0E0 ldi R30,0
03A8 5E07 cpc R21,R30
03AA 09F0 breq L57
03AC 23C0 xjmp L54
03AE X2:
03AE .dbline 274
03AE ; {
03AE L57:
03AE .dbline 275
03AE ; case 2: send( 5, numH% 10 );
03AE 1AE0 ldi R17,10
03B0 00910700 lds R16,_numH
03B4 0E940000 xcall mod8u
03B8 202F mov R18,R16
03BA 05E0 ldi R16,5
03BC 31DE xcall _send
03BE .dbline 276
03BE ; send( 6, numH / 10 % 10 );
03BE 1AE0 ldi R17,10
03C0 00910700 lds R16,_numH
03C4 0E940000 xcall div8u
03C8 1AE0 ldi R17,10
03CA 0E940000 xcall mod8u
03CE 202F mov R18,R16
03D0 06E0 ldi R16,6
03D2 26DE xcall _send
03D4 .dbline 277
03D4 ; delay(2);
03D4 02E0 ldi R16,2
03D6 10E0 ldi R17,0
03D8 13DE xcall _delay
03DA .dbline 278
03DA ; break;
03DA 0FC0 xjmp L55
03DC L58:
03DC .dbline 279
03DC ; case 1: send(5,numH%10);
03DC 1AE0 ldi R17,10
03DE 00910700 lds R16,_numH
03E2 0E940000 xcall mod8u
03E6 202F mov R18,R16
03E8 05E0 ldi R16,5
03EA 1ADE xcall _send
03EC .dbline 280
03EC ; delay(2);
03EC 02E0 ldi R16,2
03EE 10E0 ldi R17,0
03F0 07DE xcall _delay
03F2 .dbline 281
03F2 ; break;
03F2 03C0 xjmp L55
03F4 L54:
03F4 .dbline 282
03F4 03E0 ldi R16,3
03F6 10E0 ldi R17,0
03F8 03DE xcall _delay
03FA .dbline 283
03FA L55:
03FA .dbline -2
03FA .dbline 285
03FA ; default: delay(3);
03FA ; break;
03FA ; }
03FA ; }
03FA L45:
03FA 0E940000 xcall pop_gset2
03FE .dbline 0 ; func end
03FE 0895 ret
0400 .dbsym r tmp 20 i
0400 .dbend
0400 .dbfunc e num_bit _num_bit fc
0400 ; bit -> R20
0400 ; Val -> R16,R17
.even
0400 _num_bit::
0400 0E940000 xcall push_gset1
0404 .dbline -1
0404 .dbline 288
0404 ;
0404 ; uchar num_bit( uint Val )
0404 ; {
0404 .dbline 290
0404 ; uchar bit;
0404 ; if(Val>=10000) { bit = 5; }
0404 0031 cpi R16,16
0406 E7E2 ldi R30,39
0408 1E07 cpc R17,R30
040A 10F0 brlo L60
040C .dbline 290
040C .dbline 290
040C 45E0 ldi R20,5
040E .dbline 290
040E 18C0 xjmp L61
0410 L60:
0410 .dbline 291
0410 ; else if(Val>=1000) { bit = 4; }
0410 083E cpi R16,232
0412 E3E0 ldi R30,3
0414 1E07 cpc R17,R30
0416 10F0 brlo L62
0418 .dbline 291
0418 .dbline 291
0418 44E0 ldi R20,4
041A .dbline 291
041A 12C0 xjmp L63
041C L62:
041C .dbline 292
041C ; else if(Val>=100 ) { bit = 3; }
041C 0436 cpi R16,100
041E E0E0 ldi R30,0
0420 1E07 cpc R17,R30
0422 10F0 brlo L64
0424 .dbline 292
0424 .dbline 292
0424 43E0 ldi R20,3
0426 .dbline 292
0426 0CC0 xjmp L65
0428 L64:
0428 .dbline 293
0428 ; else if(Val>=10 ) { bit = 2; }
0428 0A30 cpi R16,10
042A E0E0 ldi R30,0
042C 1E07 cpc R17,R30
042E 10F0 brlo L66
0430 .dbline 293
0430 .dbline 293
0430 42E0 ldi R20,2
0432 .dbline 293
0432 06C0 xjmp L67
0434 L66:
0434 .dbline 294
0434 ; else if( Val ) { bit = 1; }
0434 0030 cpi R16,0
0436 0107 cpc R16,R17
0438 11F0 breq L68
043A X7:
043A .dbline 294
043A .dbline 294
043A 41E0 ldi R20,1
043C .dbline 294
043C 01C0 xjmp L69
043E L68:
043E .dbline 295
043E ; else { bit = 1; }
043E .dbline 295
043E 41E0 ldi R20,1
0440 .dbline 295
0440 L69:
0440 L67:
0440 L65:
0440 L63:
0440 L61:
0440 .dbline 296
0440 ; return ( bit );
0440 042F mov R16,R20
0442 .dbline -2
0442 L59:
0442 0E940000 xcall pop_gset1
0446 .dbline 0 ; func end
0446 0895 ret
0448 .dbsym r bit 20 c
0448 .dbsym r Val 16 i
0448 .dbend
0448 .dbfunc e init_transbuf _init_transbuf fV
0448 ; tmp -> R16
.even
0448 _init_transbuf::
0448 .dbline -1
0448 .dbline 300
0448 ; }
0448 ; //
0448 ; void init_transbuf(void)
0448 ; {
0448 .dbline 302
0448 ; uchar tmp;
0448 ; for(tmp=0;tmp<20;tmp++)
0448 0027 clr R16
044A 09C0 xjmp L74
044C L71:
044C .dbline 303
044C 80E0 ldi R24,<_trans_buf
044E 90E0 ldi R25,>_trans_buf
0450 E02F mov R30,R16
0452 FF27 clr R31
0454 E80F add R30,R24
0456 F91F adc R31,R25
0458 8FEF ldi R24,255
045A 8083 std z+0,R24
045C L72:
045C .dbline 302
045C 0395 inc R16
045E L74:
045E .dbline 302
045E 0431 cpi R16,20
0460 A8F3 brlo L71
0462 .dbline -2
0462 .dbline 304
0462 ; trans_buf[tmp]=0xff;
0462 ; }
0462 L70:
0462 .dbline 0 ; func end
0462 0895 ret
0464 .dbsym r tmp 16 c
0464 .dbend
0464 .dbfunc e edit _edit fV
0464 ; KeyIndex -> R20
0464 ; flag -> R22
0464 ; i -> R10
.even
0464 _edit::
0464 0E940000 xcall push_gset5
0468 .dbline -1
0468 .dbline 307
0468 ; //
0468 ; void edit(void)
0468 ; {
0468 .dbline 308
0468 ; uchar flag=STATE;
0468 6FE0 ldi R22,15
046A .dbline 310
046A ; uchar i;
046A ; init_transbuf();
046A EEDF xcall _init_transbuf
046C .dbline 311
046C ; numL=0;
046C 2224 clr R2
046E 3324 clr R3
0470 30920600 sts _numL+1,R3
0474 20920500 sts _numL,R2
0478 30C1 xjmp L77
047A L76:
047A .dbline 313
047A ; while(flag!=0xff)
047A ; {
047A .dbline 314
047A ; if( !(PIND&BIT(PD2)) ) // 检测按键状态
047A 8299 sbic 0x10,2
047C 2DC1 rjmp L79
047E .dbline 315
047E ; {
047E .dbline 316
047E ; display(); //延时
047E 96DE xcall _display
0480 .dbline 317
0480 ; display(); //延时
0480 95DE xcall _display
0482 .dbline 318
0482 ; if( !(PIND & BIT(PD2)) ) //再次检测按键状态
0482 8299 sbic 0x10,2
0484 29C1 rjmp L81
0486 .dbline 319
0486 ; {
0486 .dbline 320
0486 ; uchar KeyIndex = scan_key(); // 读取扫描序号
0486 FBDD xcall _scan_key
0488 402F mov R20,R16
048A 02C0 xjmp L84
048C L83:
048C .dbline 321
048C .dbline 321
048C A895 wdr
048E .dbline 321
048E 8EDE xcall _display
0490 .dbline 321
0490 L84:
0490 .dbline 321
0490 ; while( !(PIND & BIT(PD2)) ) { WDR(); display(); }; //等待按键松开
0490 829B sbis 0x10,2
0492 FCCF rjmp L83
0494 .dbline 321
0494 .dbline 322
0494 AA24 clr R10
0496 02C0 xjmp L89
0498 L86:
0498 .dbline 322
0498 .dbline 322
0498 89DE xcall _display
049A .dbline 322
049A L87:
049A .dbline 322
049A A394 inc R10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -