📄 uart.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 + -