关于51单片机串口中断问题

#include"reg51.h"
#include<intrins.h>
 
   int p;
    int q=12;	
		char flag;
		int k=0;
    char code turn[]= {0x20,0x60,0x40,0xc0,0x80,0x90,0x10,0x30};
 void com_Init()
{
  TMOD = 0x20;
  PCON = 0x00;
  SCON = 0x50;
  TH1 = 0xFd;
  TL1 = 0xFd;
  TR1 = 1;
	ES=1;
	EA=1;
}

void delayms(int i)
{
  char x,j;
  
  for(j=0;j<i;j++)
    for(x=0;x<=150;x++);
}
void main(void)
	{ 
		
    com_Init();
    p=1;
	  P3=0x30;
	  
	while(1)
	{ 
		
		switch (p)
			{
			case 0: {k=k<8 ?k+1:0; P3=turn[k];delayms(q); flag=0,p=0;} break;
			case 1: {k=k>0 ?k-1:7; P3=turn[k];delayms(q); flag=1,p=1;} break;
			case 2: q=q+3; if(q==27) q=24;if(flag==0) p=0 ;else p=1; break;
			case 3: q=q-3; if(q==0) q=3; if(flag==0) p=0; else p=1; break;
			case 4: P3=0xf0; delayms(10);break;
			default: p=0; break;
			
		}
	}
}
	
void res() interrupt 4 
	{
		ES=0;
		EA=0;
		p=SBUF;
		RI=0;
		EA=1;
		ES=1;
	}

新手提问,各位大佬指教

这是一段控制步进电机的程序

就是我上面这段程序能正确生成hex文件,

然后我烧录进51单片机后,电机能一直转,但是我用电脑给单片机发送数据他控制不了正传、反转、加速、减速等,我怀疑是串口没有中断,但是我不知道怎么解决,各位大佬帮帮忙!!谢谢!!!

我试了p=sbuf改成p=sbuf-48也不行

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。