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

📄 scmain.lst

📁 psoc_usb的代码,用来小卡测试的.没事下下来
💻 LST
📖 第 1 页 / 共 2 页
字号:
 171   3                              return (rp->name);
 172   3                      }
 173   2          }
 174   1          
 175   1              return NULL;
 176   1      }
 177          
 178          /*
C51 COMPILER V8.06   SCMAIN                                                                01/31/2008 22:24:27 PAGE 4   

 179          //--------------------------------------------------------------------------------
 180          //lookup card name param
 181          //--------------------------------------------------------------------------------
 182          int lookup_return_val(struct command_param *pm, char *cmd_str)
 183          {
 184                  struct command_param  *rp;
 185          
 186                  for (rp = pm; rp->name; rp++) {
 187                          if (mydef_strcasecmp(rp->name, cmd_str) == 0) {
 188                                  return (rp->val);
 189                          }
 190                  }
 191                  
 192                  return (0);
 193          }
 194          */
 195          
 196          //--------------------------------------------------------------------------------
 197          //return current command & move to next
 198          //--------------------------------------------------------------------------------
 199          char *get_current_cmd(char *buff)
 200          {
 201   1          struct command_list *plist;
 202   1                  
 203   1          if (g_cmdlist!=NULL){
 204   2              add_to_retlist(g_cmdlist->message);
 205   2              strcpy(buff,g_cmdlist->message);
 206   2              plist = g_cmdlist;
 207   2              g_cmdlist = g_cmdlist->next;
 208   2              free(plist);      
 209   2              return buff;
 210   2          }
 211   1          
 212   1          return(NULL);
 213   1      }
 214          
 215          
 216          //--------------------------------------------------------------------------------
 217          //parse command come form serial input
 218          //--------------------------------------------------------------------------------
 219          int command_parse(char *command_str)
 220          {
 221   1          char *cmd;
 222   1          int i,len;
 223   1          
 224   1          len = strlen(command_str);
 225   1          i=0;
 226   1          while(i<len){
 227   2              while ((command_str[i]==' ' || command_str[i]==0x0d || command_str[i]==0x0a) && i<len){
 228   3                  i++;
 229   3              }
 230   2                  
 231   2              cmd = &command_str[i];
 232   2              while (command_str[i]!=' ' && command_str[i]!=0x0d && command_str[i]!=0x0a && i<len){
 233   3                  i++;
 234   3              }
 235   2              
 236   2              command_str[i]='\0';
 237   2              if (strlen(cmd)){
 238   3                  add_to_cmdlist(cmd);
 239   3                  command_str[i]=' ';
 240   3              }
C51 COMPILER V8.06   SCMAIN                                                                01/31/2008 22:24:27 PAGE 5   

 241   2          }
 242   1      
 243   1          return 0;
 244   1      }
 245          
 246          
 247          //--------------------------------------------------------------------------------
 248          //exec command come form serial input
 249          //--------------------------------------------------------------------------------
 250          char *command_exec()
 251          {
 252   1          char *ret_ptr = NULL;    //return message pointer;
 253   1          char cmd[MAX_CMD_LENGTH];
 254   1          int  (*cmd_func)();
 255   1          int  ret = RET_ERROR;
 256   1          
 257   1          memset(cmd, '\0', sizeof (cmd));
 258   1          if (get_current_cmd(cmd)!=NULL){
 259   2              cmd_func = lookup_command_func(cmd_main,cmd);
 260   2              if (cmd_func != NULL) {
 261   3                  ret = (*cmd_func)();
 262   3                  return(lookup_return_str(ret));
 263   3              }else{
 264   3                  //do some card select
 265   3                  if (fp_card_selected != NULL) {
 266   4                      ret = (*fp_card_selected)(cmd);
 267   4                  }
 268   3                  return(lookup_return_str(ret));
 269   3              }
 270   2          }
 271   1          
 272   1          return NULL;
 273   1      }
 274          
 275          //--------------------------------------------------------------------------------
 276          //process led blinking 
 277          //--------------------------------------------------------------------------------
 278          void sc_process_blinking()
 279          {
 280   1          static unsigned char xdata blinkonoff;
 281   1          
 282   1          blinkonoff = !blinkonoff;
 283   1          if (fp_blinking != NULL) {
 284   2              (*fp_blinking)(blinkonoff);
 285   2          }
 286   1          
 287   1          return;
 288   1      }                
 289               
 290          
 291          //=============================================================================-
 292          //main function
 293          //=============================================================================-
 294          int sc_main(char *cmd_buff,int size)
 295          {
 296   1          struct command_list *plist;
 297   1          char *cmd_ret;
 298   1          
 299   1          if (size > BUFF_LENGTH) {
 300   2              size=BUFF_LENGTH-1;
 301   2          }
 302   1          if (size > 0) {
C51 COMPILER V8.06   SCMAIN                                                                01/31/2008 22:24:27 PAGE 6   

 303   2              cmd_buff[size] = '\0';   
 304   2          }
 305   1              
 306   1          //PDEBUG("command recieve: %s\r\n", cmd_buff);
 307   1          command_parse(cmd_buff);
 308   1          if (g_cmdlist != NULL) {
 309   2              //clear blinking
 310   2              fp_blinking=(int(*)(unsigned char))NULL;
 311   2              cmd_ret=command_exec();
 312   2          }
 313   1          //free command list 
 314   1          free_cmdlist();
 315   1          //PDEBUG("command return: %s\r\n", cmd_ret);
 316   1                  
 317   1          //process return string
 318   1          if (cmd_ret != NULL){
 319   2              strcpy(g_in_buffer,cmd_ret);
 320   2              
 321   2              plist = g_retlist;
 322   2              while(plist != NULL && strlen(g_in_buffer) < BUFF_LENGTH-2){
 323   3                  strcat(g_in_buffer,plist->message);
 324   3                  strcat(g_in_buffer," ");
 325   3                  plist = plist->next;
 326   3              }
 327   2              free_retlist();
 328   2              strcat(g_in_buffer,"\r\n");
 329   2          }            
 330   1          
 331   1          return strlen(g_in_buffer);
 332   1      }
 333          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    980    ----
   CONSTANT SIZE    =     72    ----
   XDATA SIZE       =     71    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6      85
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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