找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1434|回复: 5
收起左侧

求大神帮我看看程序错误在哪里

[复制链接]
ID:228032 发表于 2017-8-17 10:11 | 显示全部楼层 |阅读模式
哪位大神能帮我看看程序错误  ,是做智能小车的
#include<reg52.h>
#define unchar unsigned char
#define unit unsigned int
#define num_1 100
#define num_2 1000
#define num_3 50
#define unchar unsigned char
#define unit unsigned int
unchar a;
void init()
{
  TMOD=0x20;
  TH1=0xfd;
  TR1=1;
  REN=1;
  SM0=0;
  SM1=1;
  EA=1;
  ES=1;
}
sbit In1=P1^0;
sbit In2=P1^1;     //定义左电机1的两个连接端In1,In2;
sbit In3=P1^2;
sbit In4=P1^3;     //定义右电机2的两个连接端In3,In4;
sbit In5=P1^4;
sbit In6=P1^5;     //定义左电机3的两个连接端In5,In6;
sbit In7=P1^6;
sbit In8=P1^7;     //定义右电机4的两个连接端In7,In8;
unsigned int i,j;
void main()
{
  void Stop_1()
  {
   In1=1;
   In2=1;
   }       //定义电机1停止;
  void Transferred_1()
  {
  In1=0;
  In2=1;
  }      //定义电机1正转;
  void Reverse_1()
  {
  In1=1;
  In2=0;
  }        //定义电机1反转;
  void Stop_2()
  {
   In3=1;
   In4=1;
   }       //定义电机2停止;
  void Transferred_2()
  {
  In3=0;
  In4=1;
  }      //定义电机2正转;
  void Reverse_2()
  {
  In3=1;
  In4=0;
  }        //定义电机2反转;
  void Stop_3()
  {
   In5=1;
   In6=1;
   }       //定义电机3停止;
  void Transferred_3()
  {
  In5=0;
  In6=1;
  }      //定义电机3正转;
  void Reverse_3()
  {
  In5=1;
  In6=0;
  }        //定义电机3反转;
  void Stop_4()
  {
   In7=1;
   In8=1;
   }       //定义电机4停止;
  void Transferred_4()
  {
  In7=0;
  In8=1;
  }      //定义电机4正转;
  void Reverse_4()
  {
  In7=1;
  In8=0;
  }        //定义电机4反转;
    void Stop()
    {
  
    {
    Stop_1();
    Stop_2();
    Stop_3();
    Stop_4();
    }}        //定义子功能:停止
    void Advance()
    {
    for(i=0;i<num_1;i++);
    for(j=0;j<num_2;j++);
    {
    Transferred_1();
    Transferred_2();
    Transferred_3();
    Transferred_4();
    }}       //定义子功能:前进
    void Retreat()
    {
    for(i=0;i<num_1;i++);
    for(j=0;j<num_2;j++);
    {
    Reverse_1();
    Reverse_2();
    Reverse_3();
    Reverse_4();
    }}       //定义子功能反转
    void Turn_left()   //电机1,电机3停止,电机2,电机4正转;
    {
    Stop_1();
    Stop_3();
    Transferred_2();
    Transferred_4();
    }      //定义子功能左转
    void Turn_right()   //电机1,3正转,电机2,4反转;
  
    {
    Transferred_1();
    Transferred_3();
    Stop_2();
    Stop_4();
    }
  
    void ser()interrupt 4
    {
    ES=0;
    RI=0;    //将接收中断标志位清0
    a=SBUF;     //将接收到的数据赋值给a
    switch(a)
    {
    case 65: Advance();break;       //发送的是A,前进指令
    case 66: Retreat();break;    //发送的是B,后退指令
    case 67: Turn_left();break;    //发送的是C,左转指令
    case 68: Turn_right();break;    //发送的是D,右转指令
    default: Stop();
    }
   ES=1;
   }  }
报错是   CARKEIL.C(33): error C141: syntax error near '{'
CARKEIL.C(34): error C136: 'In1': 'void' on variable
CARKEIL.C(153): error C141: syntax error near '}'

感激不尽
回复

使用道具 举报

ID:228032 发表于 2017-8-17 10:12 | 显示全部楼层
来人呐  来神呐
回复

使用道具 举报

ID:190832 发表于 2017-8-17 10:34 | 显示全部楼层
你再好好学学C语言基础好不好,函数只能在最外层定义,哪有在函数里面定义函数的,而且还在主函数里面定义函数。你应该把所有函数定义放在最外面,函数里面只能调用函数。真是服了。。。
回复

使用道具 举报

ID:190832 发表于 2017-8-17 11:09 | 显示全部楼层
hange_v 发表于 2017-8-17 10:34
你再好好学学C语言基础好不好,函数只能在最外层定义,哪有在函数里面定义函数的,而且还在主函数里面定义 ...

另外,四轮小车的转向绝对不是你程序中那样简单左右转,你还需要考虑转向时里外车轮转速是不同的。你的这种转向只能是三轮的小车,并且一个是万向轮。
回复

使用道具 举报

ID:227393 发表于 2017-8-17 12:09 来自手机 | 显示全部楼层
可以做成函数模块,主程序直接调用就好了啊
回复

使用道具 举报

ID:187532 发表于 2017-8-19 11:48 | 显示全部楼层
第一子函数要放在主函数后面需要在开头进行声明,第二子函数要放在sbit定义后面,第三刨去语法错误,我觉得你的逻辑也有问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表