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

📄 shell.lis

📁 使用8880实现DTMF通信及拨号的程序.
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 01D4 1181              ldd R17,z+1
 01D6 00D0              rcall _serial_send
 01D8                   .dbline 107
 01D8           ;               serial_send(":\t");
 01D8 00E0              ldi R16,<L61
 01DA 10E0              ldi R17,>L61
 01DC 00D0              rcall _serial_send
 01DE                   .dbline 108
 01DE           ;               serial_send(InnerCmd[i].help);
 01DE 06E0              ldi R16,6
 01E0 142F              mov R17,R20
 01E2 0102              muls R16,R17
 01E4 F001              movw R30,R0
 01E6 80E0              ldi R24,<_InnerCmd+2
 01E8 90E0              ldi R25,>_InnerCmd+2
 01EA E80F              add R30,R24
 01EC F91F              adc R31,R25
 01EE 0081              ldd R16,z+0
 01F0 1181              ldd R17,z+1
 01F2 00D0              rcall _serial_send
 01F4                   .dbline 109
 01F4           ;               i++;
 01F4 4395              inc R20
 01F6                   .dbline 110
 01F6           ;          }
 01F6           L59:
 01F6                   .dbline 105
 01F6 06E0              ldi R16,6
 01F8 142F              mov R17,R20
 01FA 0102              muls R16,R17
 01FC F001              movw R30,R0
 01FE 80E0              ldi R24,<_InnerCmd
 0200 90E0              ldi R25,>_InnerCmd
 0202 E80F              add R30,R24
 0204 F91F              adc R31,R25
 0206 2080              ldd R2,z+0
 0208 3180              ldd R3,z+1
 020A 2220              tst R2
 020C D1F6              brne L58
 020E 3320              tst R3
 0210 C1F6              brne L58
 0212           X14:
 0212                   .dbline 111
 0212           ;       }else{
 0212 16C0              rjmp L57
 0214           L56:
 0214                   .dbline 111
 0214                   .dbline 112
 0214           ;          i=GetCmdMatch(argv[1]);
 0214 FB01              movw R30,R22
 0216 0281              ldd R16,z+2
 0218 1381              ldd R17,z+3
 021A 56D0              rcall _GetCmdMatch
 021C 402F              mov R20,R16
 021E                   .dbline 113
 021E           ;          if (i<0)
 021E 0030              cpi R16,0
 0220 24F4              brge L63
 0222           X15:
 0222                   .dbline 114
 0222           ;                 serial_send("Haven't this command.\n");
 0222 00E0              ldi R16,<L65
 0224 10E0              ldi R17,>L65
 0226 00D0              rcall _serial_send
 0228 0BC0              rjmp L64
 022A           L63:
 022A                   .dbline 116
 022A           ;          else
 022A           ;                 serial_send(InnerCmd[i].help);
 022A 06E0              ldi R16,6
 022C 142F              mov R17,R20
 022E 0102              muls R16,R17
 0230 F001              movw R30,R0
 0232 80E0              ldi R24,<_InnerCmd+2
 0234 90E0              ldi R25,>_InnerCmd+2
 0236 E80F              add R30,R24
 0238 F91F              adc R31,R25
 023A 0081              ldd R16,z+0
 023C 1181              ldd R17,z+1
 023E 00D0              rcall _serial_send
 0240           L64:
 0240                   .dbline 117
 0240           ;       }
 0240           L57:
 0240                   .dbline 118
 0240           ;       return 0;
 0240 0027              clr R16
 0242 1127              clr R17
 0244                   .dbline -2
 0244           L55:
 0244                   .dbline 0 ; func end
 0244 00C0              rjmp pop_xgsetF00C
 0246                   .dbsym r i 20 C
 0246                   .dbsym r argv 22 ppc
 0246                   .dbsym r argc 10 c
 0246                   .dbend
 0246                   .dbfunc e ParseArgs _ParseArgs fV
 0246           ;              i -> R10
 0246           ;          state -> R22
 0246           ;              c -> R20,R21
 0246           ;           argv -> y+8
 0246           ;           argc -> R12,R13
 0246           ;        cmdline -> R10,R11
                        .even
 0246           _ParseArgs::
 0246 00D0              rcall push_xgsetF03C
 0248 6901              movw R12,R18
 024A 5801              movw R10,R16
 024C                   .dbline -1
 024C                   .dbline 121
 024C           ; }
 024C           ; void ParseArgs(char *cmdline,signed char *argc,char** argv)
 024C           ; {
 024C                   .dbline 126
 024C           ; #define STATE_WHITESPACE      0
 024C           ; #define STATE_WORD                    1
 024C           ; 
 024C           ;       char *c;
 024C           ;       char state = STATE_WHITESPACE;
 024C 6627              clr R22
 024E                   .dbline 129
 024E           ;       char i;
 024E           ; 
 024E           ;       *argc = 0;
 024E 2224              clr R2
 0250 F601              movw R30,R12
 0252 2082              std z+0,R2
 0254                   .dbline 131
 0254           ; 
 0254           ;       if(strlen(cmdline) == 0)
 0254 8501              movw R16,R10
 0256 00D0              rcall _strlen
 0258 0030              cpi R16,0
 025A 0107              cpc R16,R17
 025C 09F4              brne L68
 025E           X16:
 025E                   .dbline 132
 025E           ;               return;
 025E 33C0              rjmp L67
 0260           L68:
 0260                   .dbline 135
 0260           ; 
 0260           ;       /* convert all tabs into single spaces */
 0260           ;       c = cmdline;
 0260 A501              movw R20,R10
 0262 08C0              rjmp L71
 0264           L70:
 0264                   .dbline 137
 0264           ;       while(*c != '\0')
 0264           ;       {
 0264                   .dbline 138
 0264           ;               if(*c == '\t')
 0264 FA01              movw R30,R20
 0266 8081              ldd R24,z+0
 0268 8930              cpi R24,9
 026A 11F4              brne L73
 026C           X17:
 026C                   .dbline 139
 026C           ;                       *c = ' ';
 026C 80E2              ldi R24,32
 026E 8083              std z+0,R24
 0270           L73:
 0270                   .dbline 140
 0270           ;               c++;
 0270 4F5F              subi R20,255  ; offset = 1
 0272 5F4F              sbci R21,255
 0274                   .dbline 141
 0274           ;       }
 0274           L71:
 0274                   .dbline 136
 0274 FA01              movw R30,R20
 0276 2080              ldd R2,z+0
 0278 2220              tst R2
 027A A1F7              brne L70
 027C           X18:
 027C                   .dbline 143
 027C           ;       
 027C           ;       c = cmdline;
 027C A501              movw R20,R10
 027E                   .dbline 144
 027E           ;       i = 0;
 027E AA24              clr R10
 0280 1CC0              rjmp L76
 0282           L75:
 0282                   .dbline 148
 0282           ; 
 0282           ;       /* now find all words on the command line */
 0282           ;       while(*c != '\0')
 0282           ;       {
 0282                   .dbline 149
 0282           ;               if(state == STATE_WHITESPACE)
 0282 6623              tst R22
 0284 89F4              brne L78
 0286           X19:
 0286                   .dbline 150
 0286           ;               {
 0286                   .dbline 151
 0286           ;                       if(*c != ' ')
 0286 FA01              movw R30,R20
 0288 8081              ldd R24,z+0
 028A 8032              cpi R24,32
 028C A1F0              breq L79
 028E           X20:
 028E                   .dbline 152
 028E           ;                       {
 028E                   .dbline 153
 028E           ;                               argv[i] = c;            //将argv[i]指向c
 028E EA2D              mov R30,R10
 0290 FF27              clr R31
 0292 EE0F              lsl R30
 0294 FF1F              rol R31
 0296 0884              ldd R0,y+8
 0298 1984              ldd R1,y+9
 029A E00D              add R30,R0
 029C F11D              adc R31,R1
 029E 5183              std z+1,R21
 02A0 4083              std z+0,R20
 02A2                   .dbline 154
 02A2           ;                               i++;
 02A2 A394              inc R10
 02A4                   .dbline 155
 02A4           ;                               state = STATE_WORD;
 02A4 61E0              ldi R22,1
 02A6                   .dbline 156
 02A6           ;                       }
 02A6                   .dbline 157
 02A6           ;               }
 02A6 07C0              rjmp L79
 02A8           L78:
 02A8                   .dbline 159
 02A8           ;               else
 02A8           ;               { /* state == STATE_WORD */
 02A8                   .dbline 160
 02A8           ;                       if(*c == ' ')
 02A8 FA01              movw R30,R20
 02AA 8081              ldd R24,z+0
 02AC 8032              cpi R24,32
 02AE 19F4              brne L82
 02B0           X21:
 02B0                   .dbline 161
 02B0           ;                       {
 02B0                   .dbline 162
 02B0           ;                               *c = '\0';
 02B0 2224              clr R2
 02B2 2082              std z+0,R2
 02B4                   .dbline 163
 02B4           ;                               state = STATE_WHITESPACE;
 02B4 6627              clr R22
 02B6                   .dbline 164
 02B6           ;                       }
 02B6           L82:
 02B6                   .dbline 165
 02B6           ;               }
 02B6           L79:
 02B6                   .dbline 166
 02B6           ;               c++;
 02B6 4F5F              subi R20,255  ; offset = 1
 02B8 5F4F              sbci R21,255
 02BA                   .dbline 167
 02BA           ;       }
 02BA           L76:
 02BA                   .dbline 147
 02BA FA01              movw R30,R20
 02BC 2080              ldd R2,z+0
 02BE 2220              tst R2
 02C0 01F7              brne L75
 02C2           X22:
 02C2                   .dbline 169
 02C2           ;       
 02C2           ;       *argc = i;
 02C2 F601              movw R30,R12
 02C4 A082              std z+0,R10
 02C6                   .dbline -2
 02C6           L67:
 02C6                   .dbline 0 ; func end
 02C6 00C0              rjmp pop_xgsetF03C
 02C8                   .dbsym r i 10 c
 02C8                   .dbsym r state 22 c
 02C8                   .dbsym r c 20 pc
 02C8                   .dbsym l argv 8 ppc
 02C8                   .dbsym r argc 12 pC
 02C8                   .dbsym r cmdline 10 pc
 02C8                   .dbend
 02C8                   .dbfunc e GetCmdMatch _GetCmdMatch fC
 02C8           ;              i -> R10
 02C8           ;            cmd -> R12,R13
                        .even
 02C8           _GetCmdMatch::
 02C8 00D0              rcall push_xgset003C
 02CA 6801              movw R12,R16
 02CC                   .dbline -1
 02CC                   .dbline 174
 02CC           ; #undef STATE_WHITESPACE
 02CC           ; #undef STATE_WORD
 02CC           ; }
 02CC           ; signed char GetCmdMatch(char * cmd)
 02CC           ; {
 02CC                   .dbline 175
 02CC           ;       char i=0;
 02CC AA24              clr R10
 02CE 11C0              rjmp L86
 02D0           L85:
 02D0                   .dbline 176
 02D0           ;       while(InnerCmd[i].cmd){
 02D0                   .dbline 177
 02D0           ;               if (strcmp(InnerCmd[i].cmd,cmd)==0) return i;
 02D0 9601              movw R18,R12
 02D2 86E0              ldi R24,6
 02D4 8A9D              mul R24,R10

⌨️ 快捷键说明

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