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

📄 shell.lis

📁 使用8880实现DTMF通信及拨号的程序.
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module shell.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\Shuaihu\AVR\8880\shell.c
                        .area data(ram, con, rel)
 0000                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 0000           _InnerCmd::
 0000                   .blkw 1
                        .area idata
 0000 2501              .word L1
                        .area data(ram, con, rel)
 0002                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 0002                   .blkw 1
                        .area idata
 0002 0A01              .word L2
                        .area data(ram, con, rel)
 0004                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 0004                   .blkw 1
                        .area idata
 0004 0A00              .word PL_help
                        .area data(ram, con, rel)
 0006                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 0006                   .blkw 1
                        .area idata
 0006 0501              .word L3
                        .area data(ram, con, rel)
 0008                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 0008                   .blkw 1
                        .area idata
 0008 E000              .word L4
                        .area data(ram, con, rel)
 000A                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 000A                   .blkw 1
                        .area idata
 000A 0800              .word PL_call
                        .area data(ram, con, rel)
 000C                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 000C                   .blkw 1
                        .area idata
 000C D900              .word L5
                        .area data(ram, con, rel)
 000E                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 000E                   .blkw 1
                        .area idata
 000E C100              .word L6
                        .area data(ram, con, rel)
 0010                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 0010                   .blkw 1
                        .area idata
 0010 0600              .word PL_cancel
                        .area data(ram, con, rel)
 0012                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 0012                   .blkw 1
                        .area idata
 0012 BC00              .word L7
                        .area data(ram, con, rel)
 0014                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 0014                   .blkw 1
                        .area idata
 0014 A100              .word L8
                        .area data(ram, con, rel)
 0016                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 0016                   .blkw 1
                        .area idata
 0016 0400              .word PL_echo
                        .area data(ram, con, rel)
 0018                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 0018                   .blkw 1
                        .area idata
 0018 9C00              .word L9
                        .area data(ram, con, rel)
 001A                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 001A                   .blkw 1
                        .area idata
 001A 8000              .word L10
                        .area data(ram, con, rel)
 001C                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 001C                   .blkw 1
                        .area idata
 001C 0200              .word PL_read
                        .area data(ram, con, rel)
 001E                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 001E                   .blkw 1
                        .area idata
 001E 7500              .word L11
                        .area data(ram, con, rel)
 0020                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 0020                   .blkw 1
                        .area idata
 0020 5700              .word L12
                        .area data(ram, con, rel)
 0022                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 0022                   .blkw 1
                        .area idata
 0022 0000              .word PL_autoanswer
                        .area data(ram, con, rel)
 0024                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 0024                   .blkb 2
                        .area idata
 0024 0000              .word 0
                        .area data(ram, con, rel)
 0026                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 0026                   .blkb 2
                        .area idata
 0026 0000              .word 0
                        .area data(ram, con, rel)
 0028                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 0028                   .blkb 2
                        .area idata
 0028 0000              .byte 0,0
                        .area data(ram, con, rel)
 002A                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 002A                   .dbstruct 0 6 tagCMDSTRUCT
 002A                   .dbfield 0 cmd pc
 002A                   .dbfield 2 help pc
 002A                   .dbfield 4 proc pfI
 002A                   .dbend
 002A                   .dbsym e InnerCmd _InnerCmd A[42:7]S[tagCMDSTRUCT]
                        .area text(rom, con, rel)
 0000                   .dbfile E:\Shuaihu\AVR\8880\shell.c
 0000                   .dbfunc e read _read fI
 0000           ;              x -> R10,R11
 0000           ;            buf -> y+0
 0000           ;           argv -> R22,R23
 0000           ;           argc -> R20
                        .even
 0000           _read::
 0000 00D0              rcall push_xgsetF00C
 0002 B901              movw R22,R18
 0004 402F              mov R20,R16
 0006 EF97              sbiw R28,63
 0008 A597              sbiw R28,37  ; offset = 100
 000A                   .dbline -1
 000A                   .dbline 24
 000A           ; #include "serial.h"
 000A           ; #include "string.h"
 000A           ; #include "8880.h"
 000A           ; #include <iom8v.h>
 000A           ; #include "main.h"
 000A           ; #include "shell.h"
 000A           ; typedef int (*cmdproc)(char argc,char *argv[]);
 000A           ; typedef struct tagCMDSTRUCT{
 000A           ;          char *cmd;
 000A           ;          char *help;
 000A           ;          cmdproc proc;
 000A           ; }CMD_STRUCT,*PCMD_STRUCT;
 000A           ; signed char GetCmdMatch(char * cmd);
 000A           ; CMD_STRUCT InnerCmd[]={
 000A           ;                  {"help","Desplay this information.\n",help},
 000A           ;                  {"call","call a telphon number,uses:call 110\n",call},
 000A           ;                  {"cancel","cancel a call process.\n", cancel},
 000A           ;                  {"echo","enable or disenable echo.\n",echo},
 000A           ;                  {"read","read a number from remote.\n",read},
 000A           ;                  {"autoanswer","auto answer the remote call.\n",autoanswer}, 
 000A           ;                  {0,0}
 000A           ; };
 000A           ; int read(char argc,char*argv[])
 000A           ; {
 000A                   .dbline 26
 000A           ;       char buf[100];
 000A           ;       int x=atoi(argv[1]);
 000A FB01              movw R30,R22
 000C 0281              ldd R16,z+2
 000E 1381              ldd R17,z+3
 0010 00D0              rcall _atoi
 0012 5801              movw R10,R16
 0014                   .dbline 27
 0014           ;       if ((argc<2)||(!sysoption.calling)) {
 0014 4230              cpi R20,2
 0016 20F0              brlo L17
 0018           X0:
 0018 20900100          lds R2,_sysoption+1
 001C 2220              tst R2
 001E 41F4              brne L14
 0020           X1:
 0020           L17:
 0020                   .dbline 27
 0020                   .dbline 28
 0020           ;          serial_send(c_error);
 0020 00910000          lds R16,_c_error
 0024 10910100          lds R17,_c_error+1
 0028 00D0              rcall _serial_send
 002A                   .dbline 29
 002A           ;          return 0;
 002A 0027              clr R16
 002C 1127              clr R17
 002E 05C0              rjmp L13
 0030           L14:
 0030                   .dbline 31
 0030           ;       }
 0030           ;       M8880_Recv(buf,x);
 0030 2A2D              mov R18,R10
 0032 8E01              movw R16,R28
 0034 00D0              rcall _M8880_Recv
 0036                   .dbline 32
 0036           ;       serial_send(buf);
 0036 8E01              movw R16,R28
 0038 00D0              rcall _serial_send
 003A                   .dbline -2
 003A           L13:
 003A                   .dbline 0 ; func end
 003A EF96              adiw R28,63
 003C A596              adiw R28,37  ; offset = 100
 003E 00C0              rjmp pop_xgsetF00C
 0040                   .dbsym r x 10 I
 0040                   .dbsym l buf 0 A[100:100]c
 0040                   .dbsym r argv 22 ppc
 0040                   .dbsym r argc 20 c
 0040                   .dbend
 0040                   .dbfunc e autoanswer _autoanswer fI
 0040           ;           argv -> R20,R21
 0040           ;           argc -> R22
                        .even
 0040           _autoanswer::
 0040 00D0              rcall push_xgsetF000
 0042 A901              movw R20,R18
 0044 602F              mov R22,R16
 0046                   .dbline -1
 0046                   .dbline 35
 0046           ; }
 0046           ; int autoanswer(char argc,char*argv[])
 0046           ; {
 0046                   .dbline 36
 0046           ;       if (argc<2){
 0046 6230              cpi R22,2
 0048 40F4              brsh L19
 004A           X2:
 004A                   .dbline 36
 004A                   .dbline 37
 004A           ;          serial_send(c_error);
 004A 00910000          lds R16,_c_error
 004E 10910100          lds R17,_c_error+1
 0052 00D0              rcall _serial_send
 0054                   .dbline 38
 0054           ;          return 0;
 0054 0027              clr R16
 0056 1127              clr R17
 0058 17C0              rjmp L18
 005A           L19:
 005A                   .dbline 40
 005A           ;       }
 005A           ;       if (strcmp(argv[1],"on")==0)
 005A 20E0              ldi R18,<L23
 005C 30E0              ldi R19,>L23
 005E FA01              movw R30,R20
 0060 0281              ldd R16,z+2
 0062 1381              ldd R17,z+3
 0064 00D0              rcall _strcmp
 0066 0030              cpi R16,0
 0068 0107              cpc R16,R17
 006A 21F4              brne L21
 006C           X3:
 006C                   .dbline 41
 006C           ;          sysoption.autoanswer=-1;
 006C 8FEF              ldi R24,255
 006E 80930400          sts _sysoption+4,R24
 0072 03C0              rjmp L22
 0074           L21:
 0074                   .dbline 43
 0074           ;       else
 0074           ;          sysoption.autoanswer=0;
 0074 2224              clr R2
 0076 20920400          sts _sysoption+4,R2
 007A           L22:
 007A                   .dbline 44
 007A           ;       serial_send(c_ok); 
 007A 00910000          lds R16,_c_ok
 007E 10910100          lds R17,_c_ok+1
 0082 00D0              rcall _serial_send
 0084                   .dbline 45
 0084           ;       return 0;
 0084 0027              clr R16
 0086 1127              clr R17
 0088                   .dbline -2
 0088           L18:
 0088                   .dbline 0 ; func end
 0088 00C0              rjmp pop_xgsetF000
 008A                   .dbsym r argv 20 ppc
 008A                   .dbsym r argc 22 c
 008A                   .dbend
 008A                   .dbfunc e echo _echo fI
 008A           ;           argv -> R20,R21
 008A           ;           argc -> R22
                        .even
 008A           _echo::
 008A 00D0              rcall push_xgsetF000
 008C A901              movw R20,R18
 008E 602F              mov R22,R16
 0090                   .dbline -1
 0090                   .dbline 48
 0090           ; }
 0090           ; int echo(char argc,char*argv[])
 0090           ; {
 0090                   .dbline 49
 0090           ;       if (argc<2){
 0090 6230              cpi R22,2
 0092 40F4              brsh L27
 0094           X4:
 0094                   .dbline 49
 0094                   .dbline 50
 0094           ;          serial_send(c_error);
 0094 00910000          lds R16,_c_error
 0098 10910100          lds R17,_c_error+1
 009C 00D0              rcall _serial_send
 009E                   .dbline 51
 009E           ;          return 0;
 009E 0027              clr R16
 00A0 1127              clr R17
 00A2 17C0              rjmp L26
 00A4           L27:

⌨️ 快捷键说明

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