標(biāo)題: 求大神幫我看看程序錯(cuò)誤在哪里 [打印本頁(yè)]

作者: 無(wú)與倫比jay1    時(shí)間: 2017-8-17 10:11
標(biāo)題: 求大神幫我看看程序錯(cuò)誤在哪里
哪位大神能幫我看看程序錯(cuò)誤  ,是做智能小車的
#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;     //定義左電機(jī)1的兩個(gè)連接端In1,In2;
sbit In3=P1^2;
sbit In4=P1^3;     //定義右電機(jī)2的兩個(gè)連接端In3,In4;
sbit In5=P1^4;
sbit In6=P1^5;     //定義左電機(jī)3的兩個(gè)連接端In5,In6;
sbit In7=P1^6;
sbit In8=P1^7;     //定義右電機(jī)4的兩個(gè)連接端In7,In8;
unsigned int i,j;
void main()
{
  void Stop_1()
  {
   In1=1;
   In2=1;
   }       //定義電機(jī)1停止;
  void Transferred_1()
  {
  In1=0;
  In2=1;
  }      //定義電機(jī)1正轉(zhuǎn);
  void Reverse_1()
  {
  In1=1;
  In2=0;
  }        //定義電機(jī)1反轉(zhuǎn);
  void Stop_2()
  {
   In3=1;
   In4=1;
   }       //定義電機(jī)2停止;
  void Transferred_2()
  {
  In3=0;
  In4=1;
  }      //定義電機(jī)2正轉(zhuǎn);
  void Reverse_2()
  {
  In3=1;
  In4=0;
  }        //定義電機(jī)2反轉(zhuǎn);
  void Stop_3()
  {
   In5=1;
   In6=1;
   }       //定義電機(jī)3停止;
  void Transferred_3()
  {
  In5=0;
  In6=1;
  }      //定義電機(jī)3正轉(zhuǎn);
  void Reverse_3()
  {
  In5=1;
  In6=0;
  }        //定義電機(jī)3反轉(zhuǎn);
  void Stop_4()
  {
   In7=1;
   In8=1;
   }       //定義電機(jī)4停止;
  void Transferred_4()
  {
  In7=0;
  In8=1;
  }      //定義電機(jī)4正轉(zhuǎn);
  void Reverse_4()
  {
  In7=1;
  In8=0;
  }        //定義電機(jī)4反轉(zhuǎn);
    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();
    }}       //定義子功能:前進(jìn)
    void Retreat()
    {
    for(i=0;i<num_1;i++);
    for(j=0;j<num_2;j++);
    {
    Reverse_1();
    Reverse_2();
    Reverse_3();
    Reverse_4();
    }}       //定義子功能反轉(zhuǎn)
    void Turn_left()   //電機(jī)1,電機(jī)3停止,電機(jī)2,電機(jī)4正轉(zhuǎn);
    {
    Stop_1();
    Stop_3();
    Transferred_2();
    Transferred_4();
    }      //定義子功能左轉(zhuǎn)
    void Turn_right()   //電機(jī)1,3正轉(zhuǎn),電機(jī)2,4反轉(zhuǎn);
  
    {
    Transferred_1();
    Transferred_3();
    Stop_2();
    Stop_4();
    }
  
    void ser()interrupt 4
    {
    ES=0;
    RI=0;    //將接收中斷標(biāo)志位清0
    a=SBUF;     //將接收到的數(shù)據(jù)賦值給a
    switch(a)
    {
    case 65: Advance();break;       //發(fā)送的是A,前進(jìn)指令
    case 66: Retreat();break;    //發(fā)送的是B,后退指令
    case 67: Turn_left();break;    //發(fā)送的是C,左轉(zhuǎn)指令
    case 68: Turn_right();break;    //發(fā)送的是D,右轉(zhuǎn)指令
    default: Stop();
    }
   ES=1;
   }  }
報(bào)錯(cuò)是   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 '}'

感激不盡

作者: 無(wú)與倫比jay1    時(shí)間: 2017-8-17 10:12
來(lái)人吶  來(lái)神吶
作者: hange_v    時(shí)間: 2017-8-17 10:34
你再好好學(xué)學(xué)C語(yǔ)言基礎(chǔ)好不好,函數(shù)只能在最外層定義,哪有在函數(shù)里面定義函數(shù)的,而且還在主函數(shù)里面定義函數(shù)。你應(yīng)該把所有函數(shù)定義放在最外面,函數(shù)里面只能調(diào)用函數(shù)。真是服了。。。
作者: hange_v    時(shí)間: 2017-8-17 11:09
hange_v 發(fā)表于 2017-8-17 10:34
你再好好學(xué)學(xué)C語(yǔ)言基礎(chǔ)好不好,函數(shù)只能在最外層定義,哪有在函數(shù)里面定義函數(shù)的,而且還在主函數(shù)里面定義 ...

另外,四輪小車的轉(zhuǎn)向絕對(duì)不是你程序中那樣簡(jiǎn)單左右轉(zhuǎn),你還需要考慮轉(zhuǎn)向時(shí)里外車輪轉(zhuǎn)速是不同的。你的這種轉(zhuǎn)向只能是三輪的小車,并且一個(gè)是萬(wàn)向輪。
作者: sgq657785    時(shí)間: 2017-8-17 12:09
可以做成函數(shù)模塊,主程序直接調(diào)用就好了啊
作者: q1833605807    時(shí)間: 2017-8-19 11:48
第一子函數(shù)要放在主函數(shù)后面需要在開頭進(jìn)行聲明,第二子函數(shù)要放在sbit定義后面,第三刨去語(yǔ)法錯(cuò)誤,我覺(jué)得你的邏輯也有問(wèn)題




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1