📄 main.c
字号:
#include <hidef.h> /* common defines and macros */
#include <mc9s12dg128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
#include<stdio.h>
#include<string.h>
int S_DATA[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
int F_DATA[20]={20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
int i=0;
int Rout=0;
int Rin=0;
struct PID
{
int Setpoint;
int Proportion;
int Integral;
int Derivative;
int Pre2err;
int Preerr;
}Spid;
int PIDCale(struct PID *p,int Feedback)
{
register unsigned int Err=0,Perr=0,Derr=0;
int Du=0;
Err=p->Setpoint-Feedback;
Perr=Err-p->Preerr;
Derr=Err-2*(p->Preerr)+p->Pre2err;
Du=p->Proportion*Perr+p->Derivative*Derr+p->Integral*Err;
p->Pre2err=p->Preerr;
p->Preerr=Err;
return Du;
}
void PIDinit(void)
{
Spid.Setpoint=0;
Spid.Proportion=0;
Spid.Integral=0;
Spid.Preerr=0;
}
void main(void)
{
PIDinit();
Spid.Proportion=5;
Spid.Integral=5;
Spid.Derivative=10;
DDRA=0xff;
EnableInterrupts;
for(;;)
{
Rin=F_DATA[i];
Spid.Setpoint=S_DATA[i];
Rout=PIDCale(&Spid,Rin);
PORTA=Rout;
i++;
if(i==20)
i=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -