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

📄 jianpan.lis

📁 实现3*3 键盘的控制。从而实现用键盘来对单片机进行控制。
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -