首先祝大家新年快乐 财源广进
以下是小弟最近在搞的一段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--);
}
}