heondukuff 2021-06-10 21:17 采纳率: 0%
浏览 38

关于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单片机后,电机能一直转,但是我用电脑给单片机发送数据他控制不了正传、反转、加速、减速等,我怀疑是串口没有中断,但是我不知道怎么解决,各位大佬帮帮忙!!谢谢!!!

  • 写回答

2条回答 默认 最新

  • heondukuff 2021-06-10 21:22
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算