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

📄 cmdproc.ls1

📁 C51单片机的C语言例程,可实现定时器中断及其时钟功能的源代码
💻 LS1
📖 第 1 页 / 共 3 页
字号:
                     191     ; #define CMD_TBL_LEN (sizeof (cmd_tbl) / sizeof (cmd_tbl [0])) 
                     192     ;               
                     193     ; static unsigned char cmdid_search (char *cmdstr) {    
                     194     
----                 195             RSEG  ?PR?_cmdid_search?CMDPROC
0000                 196     _cmdid_search:
                     197             USING   0
                     198                             ; SOURCE LINE # 41
0000 8B00     F      199             MOV     cmdstr?040,R3
0002 8A00     F      200             MOV     cmdstr?040+01H,R2
0004 8900     F      201             MOV     cmdstr?040+02H,R1
                     202     ;       struct cmd_st *ctp;     
                     203     ;       for (ctp = cmd_tbl; ctp < &cmd_tbl [CMD_TBL_LEN]; ctp++) {      
                     204                             ; SOURCE LINE # 43
0006 7500FE   F      205             MOV     ctp?041,#0FEH
A51 MACRO ASSEMBLER  CMDPROC                                                              04/01/2006 14:08:06 PAGE     5

0009 750000   F      206             MOV     ctp?041+01H,#HIGH (cmd_tbl)
000C 750000   F      207             MOV     ctp?041+02H,#LOW (cmd_tbl)
000F                 208     ?C0001:
000F C3              209             CLR     C
0010 900000   F      210             MOV     DPTR,#cmd_tbl+018H
0013 E500     F      211             MOV     A,ctp?041+02H
0015 9582            212             SUBB    A,DPL
0017 E500     F      213             MOV     A,ctp?041+01H
0019 9583            214             SUBB    A,DPH
001B                 215     ?C0028:
001B 5036            216             JNC     ?C0002
                     217     ;         if (strcmp (ctp->cmdstr, cmdstr) == 0)        
                     218                             ; SOURCE LINE # 44
001D AB00     F      219             MOV     R3,ctp?041
001F AA00     F      220             MOV     R2,ctp?041+01H
0021 A900     F      221             MOV     R1,ctp?041+02H
0023 120000   F      222             LCALL   ?C?PLDPTR
0026 A801            223             MOV     R0,AR1
0028 AC02            224             MOV     R4,AR2
002A AD03            225             MOV     R5,AR3
002C AB00     F      226             MOV     R3,cmdstr?040
002E AA00     F      227             MOV     R2,cmdstr?040+01H
0030 A900     F      228             MOV     R1,cmdstr?040+02H
0032 120000   F      229             LCALL   ?C?STRCMP
0035 EF              230             MOV     A,R7
0036 700E            231             JNZ     ?C0003
                     232     ;           return (ctp->id);   
                     233                             ; SOURCE LINE # 45
0038 AB00     F      234             MOV     R3,ctp?041
003A AA00     F      235             MOV     R2,ctp?041+01H
003C A900     F      236             MOV     R1,ctp?041+02H
003E 900003          237             MOV     DPTR,#03H
0041 120000   F      238             LCALL   ?C?CLDOPTR
0044 FF              239             MOV     R7,A
0045 22              240             RET     
                     241     ;         }             
                     242                             ; SOURCE LINE # 46
0046                 243     ?C0003:
0046 7404            244             MOV     A,#04H
0048 2500     F      245             ADD     A,ctp?041+02H
004A F500     F      246             MOV     ctp?041+02H,A
004C E4              247             CLR     A
004D 3500     F      248             ADDC    A,ctp?041+01H
004F F500     F      249             MOV     ctp?041+01H,A
0051 80BC            250             SJMP    ?C0001
0053                 251     ?C0002:
                     252     ;       return (CID_LAST);      
                     253                             ; SOURCE LINE # 47
0053 7F06            254             MOV     R7,#06H
                     255     ; }     
                     256                             ; SOURCE LINE # 48
0055                 257     ?C0005:
0055 22              258             RET     
                     259     ; END OF _cmdid_search
                     260     
                     261     ;       
                     262     ; char *strupr ( char *src )    {       
                     263     
----                 264             RSEG  ?PR?_strupr?CMDPROC
0000                 265     _strupr:
                     266             USING   0
                     267                             ; SOURCE LINE # 50
0000 8B00     F      268             MOV     src?142,R3
0002 8A00     F      269             MOV     src?142+01H,R2
0004 8900     F      270             MOV     src?142+02H,R1
                     271     ; char *s;      
A51 MACRO ASSEMBLER  CMDPROC                                                              04/01/2006 14:08:06 PAGE     6

                     272     ;       for (s = src; *s != '\0'; s++)  
                     273                             ; SOURCE LINE # 52
0006 8B00     F      274             MOV     s?143,R3
0008 8A00     F      275             MOV     s?143+01H,R2
000A 8900     F      276             MOV     s?143+02H,R1
000C                 277     ?C0006:
000C AB00     F      278             MOV     R3,s?143
000E AA00     F      279             MOV     R2,s?143+01H
0010 A900     F      280             MOV     R1,s?143+02H
0012 120000   F      281             LCALL   ?C?CLDPTR
0015 FF              282             MOV     R7,A
0016 601A            283             JZ      ?C0007
                     284     ;   *s = toupper (*s);  
                     285                             ; SOURCE LINE # 53
0018 120000   F      286             LCALL   _toupper
001B AB00     F      287             MOV     R3,s?143
001D AA00     F      288             MOV     R2,s?143+01H
001F A900     F      289             MOV     R1,s?143+02H
0021 EF              290             MOV     A,R7
0022 120000   F      291             LCALL   ?C?CSTPTR
0025 7401            292             MOV     A,#01H
0027 2500     F      293             ADD     A,s?143+02H
0029 F500     F      294             MOV     s?143+02H,A
002B E4              295             CLR     A
002C 3500     F      296             ADDC    A,s?143+01H
002E F500     F      297             MOV     s?143+01H,A
0030 80DA            298             SJMP    ?C0006
0032                 299     ?C0007:
                     300     ;       return (src);   
                     301                             ; SOURCE LINE # 54
0032 AB00     F      302             MOV     R3,src?142
0034 AA00     F      303             MOV     R2,src?142+01H
0036 A900     F      304             MOV     R1,src?142+02H
                     305     ; }     
                     306                             ; SOURCE LINE # 55
0038                 307     ?C0009:
0038 22              308             RET     
                     309     ; END OF _strupr
                     310     
                     311     ;       
                     312     ; /* 命令处理 */
                     313     ; void cmd_proc (const char *cmd) {     
                     314     
----                 315             RSEG  ?PR?_cmd_proc?CMDPROC
0000                 316     _cmd_proc:
                     317             USING   0
                     318                             ; SOURCE LINE # 58
0000 8B00     F      319             MOV     cmd?244,R3
0002 8A00     F      320             MOV     cmd?244+01H,R2
0004 8900     F      321             MOV     cmd?244+02H,R1
                     322     ;       xdata char cmdstr_buf [1 + MAX_CMD_LEN];    
                     323     ;       xdata char argstr_buf [1 + MAX_CMD_LEN];        
                     324     ;       char *argsep;   
                     325     ;       unsigned char id;       
                     326     ;       
                     327     ;       strncpy (cmdstr_buf, cmd, sizeof (cmdstr_buf) - 1);     
                     328                             ; SOURCE LINE # 64
0006 8B00     F      329             MOV     ?_strncpy?BYTE+03H,R3
0008 8A00     F      330             MOV     ?_strncpy?BYTE+04H,R2
000A 8900     F      331             MOV     ?_strncpy?BYTE+05H,R1
000C 750000   F      332             MOV     ?_strncpy?BYTE+06H,#00H
000F 750028   F      333             MOV     ?_strncpy?BYTE+07H,#028H
0012 7B01            334             MOV     R3,#01H
0014 7A00     F      335             MOV     R2,#HIGH (cmdstr_buf?246)
0016 7900     F      336             MOV     R1,#LOW (cmdstr_buf?246)
0018 120000   F      337             LCALL   _strncpy
A51 MACRO ASSEMBLER  CMDPROC                                                              04/01/2006 14:08:06 PAGE     7

                     338     ;       cmdstr_buf [sizeof (cmdstr_buf) - 1] = '\0';    
                     339                             ; SOURCE LINE # 65
001B E4              340             CLR     A
001C 900000   F      341             MOV     DPTR,#cmdstr_buf?246+028H
001F F0              342             MOVX    @DPTR,A
                     343     ;       strupr (cmdstr_buf);                    
                     344                             ; SOURCE LINE # 66
0020 7B01            345             MOV     R3,#01H
0022 7A00     F      346             MOV     R2,#HIGH (cmdstr_buf?246)
0024 7900     F      347             MOV     R1,#LOW (cmdstr_buf?246)
0026 120000   F      348             LCALL   _strupr
                     349     ;       argsep = strchr (cmdstr_buf, ' ');              
                     350                             ; SOURCE LINE # 67
0029 7B01            351             MOV     R3,#01H
002B 7A00     F      352             MOV     R2,#HIGH (cmdstr_buf?246)
002D 7900     F      353             MOV     R1,#LOW (cmdstr_buf?246)
002F 7D20            354             MOV     R5,#020H
0031 120000   F      355             LCALL   _strchr
0034 8B00     F      356             MOV     argsep?248,R3
0036 8A00     F      357             MOV     argsep?248+01H,R2
0038 8900     F      358             MOV     argsep?248+02H,R1
                     359     ;       if (argsep == NULL)  {  
                     360                             ; SOURCE LINE # 68
003A E9              361             MOV     A,R1
003B 4A              362             ORL     A,R2
003C 4B              363             ORL     A,R3
003D 7006            364             JNZ     ?C0010
                     365     ;         argstr_buf [0] = '\0';        
                     366                             ; SOURCE LINE # 69
003F 900000   F      367             MOV     DPTR,#argstr_buf?247
0042 F0              368             MOVX    @DPTR,A
                     369     ;     } 
                     370                             ; SOURCE LINE # 70
0043 801E            371             SJMP    ?C0011
0045                 372     ?C0010:
                     373     ;       else {  
                     374                             ; SOURCE LINE # 71
                     375     ;         strcpy (argstr_buf, argsep + 1);      
                     376                             ; SOURCE LINE # 72
0045 AB00     F      377             MOV     R3,argsep?248
0047 E500     F      378             MOV     A,argsep?248+02H
0049 2401            379             ADD     A,#01H
004B F9              380             MOV     R1,A
004C E4              381             CLR     A
004D 3500     F      382             ADDC    A,argsep?248+01H
004F FA              383             MOV     R2,A
0050 7800     F      384             MOV     R0,#LOW (argstr_buf?247)
0052 7C00     F      385             MOV     R4,#HIGH (argstr_buf?247)
0054 7D01            386             MOV     R5,#01H
0056 120000   F      387             LCALL   ?C?STRCPY
                     388     ;         *argsep = '\0';       
                     389                             ; SOURCE LINE # 73
0059 AB00     F      390             MOV     R3,argsep?248
005B AA00     F      391             MOV     R2,argsep?248+01H
005D A900     F      392             MOV     R1,argsep?248+02H
005F E4              393             CLR     A
0060 120000   F      394             LCALL   ?C?CSTPTR
                     395     ;     }              
                     396                             ; SOURCE LINE # 74
0063                 397     ?C0011:
                     398     ;       id = cmdid_search (cmdstr_buf); 
                     399                             ; SOURCE LINE # 75
0063 7B01            400             MOV     R3,#01H
0065 7A00     F      401             MOV     R2,#HIGH (cmdstr_buf?246)
0067 7900     F      402             MOV     R1,#LOW (cmdstr_buf?246)
0069 120000   F      403             LCALL   _cmdid_search
A51 MACRO ASSEMBLER  CMDPROC                                                              04/01/2006 14:08:06 PAGE     8

                     404     ;---- Variable 'id?249' assigned to Register 'R7' ----
                     405     ; switch (id) { 
                     406                             ; SOURCE LINE # 76
006C EF              407             MOV     A,R7
006D B40700          408             CJNE    A,#07H,?C0030
0070                 409     ?C0030:
0070 4002            410             JC      $ + 4H
0072 0100     F      411             AJMP    ?C0027
0074 900000   F      412             MOV     DPTR,#?C0031
0077 25E0            413             ADD     A,ACC
0079 73              414             JMP     @A+DPTR
007A                 415     ?C0031:
007A 0100     F      416             AJMP    ?C0013
007C 0100     F      417             AJMP    ?C0016
007E 0100     F      418             AJMP    ?C0017
0080 0100     F      419             AJMP    ?C0022
0082 0100     F      420             AJMP    ?C0024
0084 0100     F      421             AJMP    ?C0025
0086 0100     F      422             AJMP    ?_cmd_proc?CMDERR
                     423     ;         unsigned long tm;                     
                     424     ;         case CID_SET_CLK:     
                     425                             ; SOURCE LINE # 78
0088                 426     ?C0013:
                     427     ;           if (strtotm (&tm, argstr_buf) != 0) 
                     428                             ; SOURCE LINE # 79
0088 750001   F      429             MOV     ?_strtotm?BYTE+03H,#01H
008B 750000   F      430             MOV     ?_strtotm?BYTE+04H,#HIGH (argstr_buf?247)
008E 750000   F      431             MOV     ?_strtotm?BYTE+05H,#LOW (argstr_buf?247)
0091 7B00            432             MOV     R3,#00H
0093 7A00     F      433             MOV     R2,#HIGH (tm?245)
0095 7900     F      434             MOV     R1,#LOW (tm?245)
0097 120000   F      435             LCALL   _strtotm
009A EF              436             MOV     A,R7
009B 6002            437             JZ      $ + 4H
009D 0100     F      438             AJMP    ?_cmd_proc?CMDERR

⌨️ 快捷键说明

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