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

📄 uart.c

📁 实现51单片机的串口通信。可通过超级终端调试。
💻 C
字号:
#include<stdio.h>
#include<string.h>
#include<math.h>

void wait_input(char *p)
{
 gets(p);
}
void get_command(char *buf,char *cmd,char *parm)
{
 int i,len,k,j,m;
 char ch;
 len=strlen(buf);
 for(j=0;j<len;j++)
  {
      ch=buf[j];
      if(ch>32)
      break;
   }
 for(i=j;i<len;i++)
  {
   ch=buf[i];
   if(ch==32)
    {
     break;
    }
   else
    {if(ch>='a'&&ch<='z')
      cmd[i-j]=(ch-32);
     else
      cmd[i-j]=ch;
     }
    }
   cmd[i-j]='\0';
   for(j=i+1;j<len;j++)
   {
      ch=buf[j];
      if(ch>32)
      break;
   }

   for(k=j;k<len;k++)
    {if((buf[k]<='z')&&(buf[k]>='a'))
      parm[k-j]=buf[k]-32;
    else
      parm[k-j]=buf[k];
     }
     parm[k-j]='\0';
 }
 
unsigned char change_hex(char ch)
 { unsigned char hx;
  if((ch>='0')&&(ch<='9'))
    hx=ch-48;
  else
    {if((ch>='A')&&(ch<='F'))
     hx=ch-65+10;
    else
     hx=0;
    }   return hx;  
   }

unsigned char peek(unsigned char *p)
{
  return *p;
 }

void poke(unsigned char *p,unsigned char x)
 {
   *p=x;
 }
void do_peek(char *parm)
  { unsigned char address[5],x;
    int i;
    unsigned char *dptr;
    long d1;
    d1=0;
      
    for(i=0;i<4;i++)
    { 
     d1=d1*16+change_hex(parm[i]);
     }
     
     printf("%ld\n",d1);
     dptr=(unsigned char *)(d1&0xffff);
     printf("%d\n",dptr);
     x=peek(dptr);
     printf("%x %x\n",dptr,x);    
   }

void do_poke(char *parm)
  { unsigned char address[5],x;
    int i,y;
    unsigned char *dptr;
    long d1;
    d1=0;
      
    for(i=0;i<4;i++)
    { 
     d1=d1*16+change_hex(parm[i]);
     }
    y=0;
    for(i=0;i<2;i++)
     { 
       y=y*16+change_hex(parm[i+5]);
      }
/*   printf("%ld\n",d1);*/
     dptr=(unsigned char *)(d1&0xffff);
     x=y&0xff;     
     printf("%d\n",dptr);
     poke(dptr,x);
     printf("%x %x\n",dptr,x);
   }

void command_process(char *cmd,char *parm)
 {
  printf("command=%s\n",cmd);
  printf("parm=%s\n",parm);
 /* PEEK */
  if(strcmp(cmd,"PEEK")==0)
    { 
      do_peek(parm);
     }
 /* P0KE */
  if(strcmp(cmd,"POKE")==0)
    { 
      do_poke(parm);
     }
   printf("OK!\n");
   }



main()
{char buffer[255];
 char command[20],parameter[255];
 clrscr();
 for(; ;)
  {
    wait_input(buffer);
    get_command(buffer,command,parameter);
    if(strcmp(command,"QUIT")==0)
	 {printf("welcome next time!");
	  break;
	 }
    command_process(command,parameter);
  }
} 

⌨️ 快捷键说明

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