我用Mikroc写了一个直流电机速度控制的代码,但在构建过程中,它给出了错误作为所有变量的“未声明标识符”。有谁能帮我解决代码中的问题吗?我使用了pic18f8722。我用Java编写过代码,但用c编写的代码很少,在声明变量和函数时有什么问题吗?下面是代码..。
float pid(int actualOut){
error=setPoint-actualOut;
pOut=error*p;
iOut=iOut+error*i;
if(iOut>255)
iOut=255;
else if(iOut<0)
iOut=0;
dOut=(error-lastError)*d;
out = pOut+iOut+dOut;
lastError=error;
if(out>255)
out=255;
else if(out<0)
out=0;
return out;
}
void pwm(short duty){
short dutyCycle=duty;
PWM1_Init(5000);
PWM1_Start();
PWM1_Set_Duty(dutyCycle);
delay_ms(500);
}
Int feedback(){
T0CON=0xC2;
TMR0l=193;
INTCON=0xA0;
TMR1l=0;
TMR1H=0;
T1CON=0x87;
s=1;
while(s==1){}
actualOut=(60*2*TMR1L)/24;
return actualOut;
}
void interrupt(){
T1CON=0x00;
s=0;
}
void main() {
float p=100,i=200,d=10;
int setPoint=100,s=1;
int actualOut=0;
float pOut=0,iOut=0,dOut=0;
float out=16;
int error=0,lastError=0;
short duty;
TRISC = 1;
TRISG = 0;
while(1){
float out = pid(actualOut);
duty=(short)out;
pwm(duty);
int actualOut = feedback();
}
}发布于 2015-02-15 05:00:44
由于您使用的是PIC处理器,因此您应该阅读:http://www.microcontrollerboard.com/pic_interrupt.html,其中详细介绍了如何设置中断处理程序等
http://ww1.microchip.com/downloads/en/AppNotes/00937a.pdf,讨论了PIC上PID软件的概念
包含适当源代码的http://www.microchip.com/wwwAppNotes/AppNotes.aspx?appnote=en020434,以及与pic18f8722相关的其他文档
源代码(在汇编中)显示需要使用某些包含文件(# .inc文件)。
将汇编文件转换为C文件的过程将是用C编写代码的一个很好的复习
注意:这些文件太长,无法在此处插入
发布于 2016-01-14 17:42:26
您可以在函数pwm的#define和管脚分配等下面声明该函数,您可以将其编写为:
void pwm(short);上面的声明可能会解决一些问题,但我仍然在努力声明函数的返回类型。
https://stackoverflow.com/questions/28519605
复制相似问题