论坛风格切换切换到宽版
  • 4131阅读
  • 1回复

大家新年快乐 [复制链接]

上一主题 下一主题
离线XLDZZ
 
发帖
443
只看楼主 倒序阅读 0楼 发表于: 2011-02-04
首先祝大家新年快乐 财源广进

以下是小弟最近在搞的一段c代码 在编译时报错(报错位置是499行)
问题是我压根就没写到499行,还有警告在picc低版本中未出现此类
警告,不知道是什么意思。

报错代码和c代码如下 还请高手指点

warning [176] f:\project\mcu\mh\mh.c; 210.0 missing newline
warning [349] f:\project\mcu\mh\mh.c; 27.10 non-prototyped function declaration for "cw"
warning [349] f:\project\mcu\mh\mh.c; 28.11 non-prototyped function declaration for "ccw"
warning [349] f:\project\mcu\mh\mh.c; 29.12 non-prototyped function declaration for "init"
warning [349] f:\project\mcu\mh\mh.c; 30.16 non-prototyped function declaration for "int_init"
warning [361] f:\project\mcu\mh\mh.c; 124.1 function declared implicit int warning [337] f:\project\mcu\mh\mh.c; 209.1 line does not have a newline on the end executing:

"d:\program files\hi-tech software\picc\std\9.60\bin\picc.exe" -q -g --asmlist --chip=16f877a "--errformat=error   [%n] %f; %l.%c %s" "--msgformat=advisory[%n] %s" "--warnformat=warning [%n] %f; %l.%c %s" -p --char=unsigned -omh.cof -mmh.map mh.obj

error   [499] ; . undefined symbol:      _cw (mh.obj)


c代码如下:
#include<pic.h>
__config(0x3b32);
#define uchar unsigned char
#define uint unsigned int
#define s1   rd4//电源开关
#define s2   rd5//对到开关
#define s3   rd6
#define s4   rd7
#define ka1 rd0
#define ka2 rd1
#define ka3 rd2
#define ka4 rd3
#define cp   re0
#define dir re1
#define s_on re2
#define ins rb1
#define ent ra3
#define led1 ra1
#define led2 ra2

uchar flg_on,flg_d,flg_k,flg_over;
uint zero;//机械零变量
uint speed;//主轴速度变量
int zero_u;//用户坐标
int total_setp;//加工深度
uchar a,b,c,d,e,f,i;
void cw();//
void ccw();//
void init();
void int_init();
void delay(uint x);//延时程序



void main()
{
flg_on=0;
flg_d=0;
init();
int_init();
while(1)
{
  if(s1==0)
  {
    flg_on=1;
    led1=0;
  }

  while(flg_on)
  {
    if(s1==0)
    {
      ka1=0;
      ka2=0;
      ka3=0;
      ka4=0;
      led1=1;
      delay(100);
      flg_on=0;
    }
    if(s2==0)//-------------------对刀到模块
    {
      ka4=1;//对刀开
      flg_d=1;
      led2=0;
      while(flg_d)
      {
        cw();
        delay(100);
      aa:
      if(ins==1)
        {
          delay(100);
          if(s2==0)
          {
          flg_d=0;
          }
          if(ins==1)
          {
          for(i=0;i<10;i++)
          {
            ccw();
            delay(100);//延时时间未定
            a++;
            if(a==10)
            {
            flg_d=0;
            zero=0;//机械零位
            flg_k=1;//下端允许标记
            led2=1;//工作忙
            ka4=0;
            a=0;
            }
          }
          }
          else
          {
          b++;
          if(b==3)
            {
              flg_d=0;
              b=0;
            }
            goto aa;
          }
       
        }    
        }      
      }//------------------------------对刀模块
    if(s3==0)//加工模块//---------------加工模块
    {
      ka4=0;//对刀电源关
     
      if(flg_k==1)
        {
        ka1=1;//主电源开
        ent=1;
        while(flg_over)
        {
          for(i=total_setp;i--;i=0)
            {
            if(speed==0)
              {
              cw();
              zero++;
              }
            }
     
    }


  }

}
}
}
}

void cw()//cw方向
{
s_on=1;
delay(1000);
dir=1;
cp=0;
delay(100);
cp=1;
delay(100);
cp=0;
}

void ccw()//ccw方向
{
  s_on=1;
  delay(1000);
  cp=1;
  dir=0;
  delay(100);
  dir=1;
  delay(100);
  dir=0;
}



void init()
{
trisa=0x01;
trisb=0x01;
trise=0;
trisd=0x0f;
trisc=0;
porte=0;
portd=0;
portb=0;
porta=0;
porte=0x00;
delay(2);
porte=0;
pspmode=0;//并行口关闭
cmcon=0x07;//关比较器
adcon0=0x81;//1/64,ch0,power on
adcon1=0xce;//数据右对齐an0为模拟输入。
}

void int_init()//总共开启t1,t2,ad,int0中断
{
gie=1;//开总中断
peie=1;//开外围中段
inte=1;//int0中断允许
adie=1;//允许ad中断
tmr2ie=1;//允许t2中断
tmr1ie=1;//允许t1中断
tmr2ie=1;//开定时器2中断
//-----中断寄存器设置--------
intf=0;//int0中断标志
adif=0;//ad中断标志清零
tmr2if=0;//t2中断标志清零
tmr1if=0;//t1中断标志清零
//------中断标记清零----------
}


void delay(uint x)//延时程序
{
uint a,b;
for(a=x;a>0;a--)
  {
  for(b=110;b>0;b--);
  }
}
离线XLDZZ
发帖
443
只看该作者 1楼 发表于: 2011-02-04
找到原因了 是把cw写成了cw 改了错误就没了

但是waring还是有