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

📄 shell.lis

📁 使用8880实现DTMF通信及拨号的程序.
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 00A4                   .dbline 53
 00A4           ;       }
 00A4           ;       if (strcmp(argv[1],"on")==0)
 00A4 20E0              ldi R18,<L23
 00A6 30E0              ldi R19,>L23
 00A8 FA01              movw R30,R20
 00AA 0281              ldd R16,z+2
 00AC 1381              ldd R17,z+3
 00AE 00D0              rcall _strcmp
 00B0 0030              cpi R16,0
 00B2 0107              cpc R16,R17
 00B4 21F4              brne L29
 00B6           X5:
 00B6                   .dbline 54
 00B6           ;          sysoption.echo=-1;
 00B6 8FEF              ldi R24,255
 00B8 80930000          sts _sysoption,R24
 00BC 03C0              rjmp L30
 00BE           L29:
 00BE                   .dbline 56
 00BE           ;       else
 00BE           ;          sysoption.echo=0;
 00BE 2224              clr R2
 00C0 20920000          sts _sysoption,R2
 00C4           L30:
 00C4                   .dbline 57
 00C4           ;       serial_send(c_ok);
 00C4 00910000          lds R16,_c_ok
 00C8 10910100          lds R17,_c_ok+1
 00CC 00D0              rcall _serial_send
 00CE                   .dbline 58
 00CE           ;       return 0;
 00CE 0027              clr R16
 00D0 1127              clr R17
 00D2                   .dbline -2
 00D2           L26:
 00D2                   .dbline 0 ; func end
 00D2 00C0              rjmp pop_xgsetF000
 00D4                   .dbsym r argv 20 ppc
 00D4                   .dbsym r argc 22 c
 00D4                   .dbend
 00D4                   .dbfunc e call _call fI
 00D4           ;              i -> R22
 00D4           ;              c -> R22,R23
 00D4           ;           argv -> R20,R21
 00D4           ;           argc -> R22
                        .even
 00D4           _call::
 00D4 00D0              rcall push_xgsetF000
 00D6 A901              movw R20,R18
 00D8 602F              mov R22,R16
 00DA                   .dbline -1
 00DA                   .dbline 61
 00DA           ; }
 00DA           ; int call(char argc,char*argv[])
 00DA           ; {
 00DA                   .dbline 64
 00DA           ;       char i;
 00DA           ;       char *c;
 00DA           ;       if (sysoption.calling){
 00DA 20900100          lds R2,_sysoption+1
 00DE 2220              tst R2
 00E0 41F0              breq L32
 00E2           X6:
 00E2                   .dbline 64
 00E2                   .dbline 65
 00E2           ;          serial_send(c_busying);
 00E2 00910000          lds R16,_c_busying
 00E6 10910100          lds R17,_c_busying+1
 00EA 00D0              rcall _serial_send
 00EC                   .dbline 66
 00EC           ;          return 0;
 00EC 0027              clr R16
 00EE 1127              clr R17
 00F0 41C0              rjmp L31
 00F2           L32:
 00F2                   .dbline 67
 00F2           ;       };
 00F2                   .dbline 68
 00F2           ;       if (argc<2){
 00F2 6230              cpi R22,2
 00F4 40F4              brsh L35
 00F6           X7:
 00F6                   .dbline 68
 00F6                   .dbline 69
 00F6           ;          serial_send(c_error);
 00F6 00910000          lds R16,_c_error
 00FA 10910100          lds R17,_c_error+1
 00FE 00D0              rcall _serial_send
 0100                   .dbline 70
 0100           ;          return 0;
 0100 0027              clr R16
 0102 1127              clr R17
 0104 37C0              rjmp L31
 0106           L35:
 0106                   .dbline 72
 0106           ;       }
 0106           ;       c=argv[1];
 0106 FA01              movw R30,R20
 0108 6281              ldd R22,z+2
 010A 7381              ldd R23,z+3
 010C 13C0              rjmp L38
 010E           L37:
 010E                   .dbline 73
 010E           ;       while(*c){
 010E                   .dbline 74
 010E           ;               if ((*c<'0')||(*c>'9')) {
 010E FB01              movw R30,R22
 0110 2080              ldd R2,z+0
 0112 3324              clr R3
 0114 822D              mov R24,R2
 0116 8033              cpi R24,48
 0118 18F0              brlo L42
 011A           X8:
 011A 89E3              ldi R24,57
 011C 8215              cp R24,R2
 011E 40F4              brsh L40
 0120           X9:
 0120           L42:
 0120                   .dbline 74
 0120                   .dbline 75
 0120           ;                  serial_send(c_error);
 0120 00910000          lds R16,_c_error
 0124 10910100          lds R17,_c_error+1
 0128 00D0              rcall _serial_send
 012A                   .dbline 76
 012A           ;                  return 0;
 012A 0027              clr R16
 012C 1127              clr R17
 012E 22C0              rjmp L31
 0130           L40:
 0130                   .dbline 78
 0130           ;               }
 0130           ;               c++;
 0130 6F5F              subi R22,255  ; offset = 1
 0132 7F4F              sbci R23,255
 0134                   .dbline 79
 0134           ;       }
 0134           L38:
 0134                   .dbline 73
 0134 FB01              movw R30,R22
 0136 2080              ldd R2,z+0
 0138 2220              tst R2
 013A 49F7              brne L37
 013C           X10:
 013C                   .dbline 80
 013C           ;       M8880_Handup;
 013C AD9A              sbi 0x15,5
 013E                   .dbline 80
 013E                   .dbline 81
 013E           ;       for (i=0;i<10;i++)
 013E 6627              clr R22
 0140 04C0              rjmp L46
 0142           L43:
 0142                   .dbline 82
 0142           ;       delay(0xffff);
 0142 0FEF              ldi R16,65535
 0144 1FEF              ldi R17,255
 0146 00D0              rcall _delay
 0148           L44:
 0148                   .dbline 81
 0148 6395              inc R22
 014A           L46:
 014A                   .dbline 81
 014A 6A30              cpi R22,10
 014C D0F3              brlo L43
 014E           X11:
 014E                   .dbline 83
 014E           ;       M8880_CPDial(argv[1]); 
 014E FA01              movw R30,R20
 0150 0281              ldd R16,z+2
 0152 1381              ldd R17,z+3
 0154 00D0              rcall _M8880_CPDial
 0156                   .dbline 84
 0156           ;       sysoption.calling=1;
 0156 81E0              ldi R24,1
 0158 80930100          sts _sysoption+1,R24
 015C                   .dbline 85
 015C           ;       sysoption.timer=0;
 015C 2224              clr R2
 015E 20920300          sts _sysoption+3,R2
 0162                   .dbline 86
 0162           ;       TCCR1B=0x05;
 0162 85E0              ldi R24,5
 0164 8EBD              out 0x2e,R24
 0166                   .dbline 87
 0166           ;       serial_send(calling);
 0166 00910000          lds R16,_calling
 016A 10910100          lds R17,_calling+1
 016E 00D0              rcall _serial_send
 0170                   .dbline 88
 0170           ;       return 0;
 0170 0027              clr R16
 0172 1127              clr R17
 0174                   .dbline -2
 0174           L31:
 0174                   .dbline 0 ; func end
 0174 00C0              rjmp pop_xgsetF000
 0176                   .dbsym r i 22 c
 0176                   .dbsym r c 22 pc
 0176                   .dbsym r argv 20 ppc
 0176                   .dbsym r argc 22 c
 0176                   .dbend
 0176                   .dbfunc e cancel _cancel fI
 0176           ;              i -> R20
 0176           ;           argv -> <dead>
 0176           ;           argc -> <dead>
                        .even
 0176           _cancel::
 0176 00D0              rcall push_arg4
 0178 4A93              st -y,R20
 017A                   .dbline -1
 017A                   .dbline 91
 017A           ; }
 017A           ; int cancel(char argc,char*argv[])
 017A           ; {
 017A                   .dbline 93
 017A           ;       char i;
 017A           ;       M8880_Handdown;
 017A AD98              cbi 0x15,5
 017C                   .dbline 94
 017C           ;       for (i=0;i<10;i++) delay(0xffff);
 017C 4427              clr R20
 017E 04C0              rjmp L53
 0180           L50:
 0180                   .dbline 94
 0180 0FEF              ldi R16,65535
 0182 1FEF              ldi R17,255
 0184 00D0              rcall _delay
 0186           L51:
 0186                   .dbline 94
 0186 4395              inc R20
 0188           L53:
 0188                   .dbline 94
 0188 4A30              cpi R20,10
 018A D0F3              brlo L50
 018C           X12:
 018C                   .dbline 95
 018C           ;       sysoption.calling=0;
 018C 2224              clr R2
 018E 20920100          sts _sysoption+1,R2
 0192                   .dbline 96
 0192           ;       MCUCR&=~0xc;
 0192 85B7              in R24,0x35
 0194 837F              andi R24,243
 0196 85BF              out 0x35,R24
 0198                   .dbline 97
 0198           ;       MCUCR|=0x8;
 0198 85B7              in R24,0x35
 019A 8860              ori R24,8
 019C 85BF              out 0x35,R24
 019E                   .dbline 98
 019E           ;       serial_send(c_ok);
 019E 00910000          lds R16,_c_ok
 01A2 10910100          lds R17,_c_ok+1
 01A6 00D0              rcall _serial_send
 01A8                   .dbline 99
 01A8           ;       return 0;
 01A8 0027              clr R16
 01AA 1127              clr R17
 01AC                   .dbline -2
 01AC           L49:
 01AC                   .dbline 0 ; func end
 01AC 4991              ld R20,y+
 01AE 2496              adiw R28,4
 01B0 0895              ret
 01B2                   .dbsym r i 20 c
 01B2                   .dbsym l argv 3 ppc
 01B2                   .dbsym l argc 1 c
 01B2                   .dbend
 01B2                   .dbfunc e help _help fI
 01B2           ;              i -> R20
 01B2           ;           argv -> R22,R23
 01B2           ;           argc -> R10
                        .even
 01B2           _help::
 01B2 00D0              rcall push_xgsetF00C
 01B4 B901              movw R22,R18
 01B6 A02E              mov R10,R16
 01B8                   .dbline -1
 01B8                   .dbline 102
 01B8           ; }
 01B8           ; int help(char argc,char* argv[])
 01B8           ; {
 01B8                   .dbline 103
 01B8           ;       signed char i=0;
 01B8 4427              clr R20
 01BA                   .dbline 104
 01BA           ;       if (argc==1){
 01BA 8A2D              mov R24,R10
 01BC 8130              cpi R24,1
 01BE 51F5              brne L56
 01C0           X13:
 01C0                   .dbline 104
 01C0 1AC0              rjmp L59
 01C2           L58:
 01C2                   .dbline 105
 01C2           ;          while(InnerCmd[i].cmd){
 01C2                   .dbline 106
 01C2           ;               serial_send(InnerCmd[i].cmd);
 01C2 06E0              ldi R16,6
 01C4 142F              mov R17,R20
 01C6 0102              muls R16,R17
 01C8 F001              movw R30,R0
 01CA 80E0              ldi R24,<_InnerCmd
 01CC 90E0              ldi R25,>_InnerCmd
 01CE E80F              add R30,R24
 01D0 F91F              adc R31,R25
 01D2 0081              ldd R16,z+0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -