小吴的小陈 2021-06-11 00:08 采纳率: 0%
浏览 4

用串口调试助手发射除1外,为啥实操达不到flag2想要的结果

#include<reg52.h>#include<intrins.h> //因为要用到左右移函数,所以加入这个头文件

#define uchar unsigned char

#define uint  unsigned int

typedef unsigned int u16;   //对数据类型进行声明定义

typedef unsigned char u8;

unsigned char Dat;

unsigned char i,j;

void flag1();

void flag2();

sbit moto1=P1^0;   //定义电机1管脚

sbit moto21=P1^1;   //定义电机2管脚

sbit moto22=P1^2;

sbit led1=P2^0;         //定义P2.0口是led1

sbit led2=P2^6; //定义P2.1口是led2

sbit led3=P2^4;

void main()

  { moto1=0;

moto21=0;

moto22=0;  

led3=0;   

  SCON=0x50;     

PCON=0x00;    

 TMOD=0x20;   

  EA=1;    

 ES=1;   

  TL1=0xfd;         //波特率9600    

 TH1=0xfd;  

   TR1=1;   

  while(1)

{

 } 

 } 

void serial() interrupt 4    //串行中断服务函数 

 {

// ES=0; //暂时关闭串口中断

// RI=0;

Dat=SBUF;

//把收到的信息从SBUF放到buf中。

RI=0;

// switch(Dat)

// {

if(Dat==1) 

  { flag1();    // 指令1

}

else //指令2

{ flag2();

}

 }

// ES=1; //重新开启串口中断

 //  } 

void delay(u16 i)    //延时函数

 {

while(i--);

}

void flag1()

{  

led3=1;      

moto1=1;

    led1=0; 

for(i=0;i<100;i++)   //循环100次,也就是大约5S   

     {

    delay(5000); //大约延时50ms  

      }   

    moto1=0; //关闭电机1

  led1=1; //关闭指示灯

while(1)

  {

    moto21=1;    //电机2正转      

      moto22=0;     

    led2=0;

for(j=0;j<195;j++)

{

 

delay(5000);

}

  moto21=1; //停车   moto22=1;

for(j=0;j<5;j++)

{

delay(5000);

}

moto21=0;   //反转

moto22=1;

led2=~led2;

for(j=0;j<195;j++)

{

delay(5000);

}

  moto21=1; //停车

  moto22=1;

for(j=0;j<5;j++)

{

delay(5000);

}

  }

}

   void flag2()

//电机1、2停止

{

     while(1)  

   {    

 moto1=0;

moto21=1;  

moto22=1;

led1=1;

led2=1;

led3=0;

}

  • 写回答

1条回答 默认 最新

  • 「已注销」 2023-03-17 09:43
    关注

    参考GPT和自己的思路:

    根据代码分析,flag2()函数中只是让电机1停止并让电机2正转或停止,而没有进行反转操作。如果想要实现flag2想要的结果,需要修改flag2()函数中的代码,加入电机2的反转操作。另外,需要根据具体情况检查串口调试助手的设置是否正确,是否发送了正确的指令。

    评论

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题