欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
編譯總出現(xiàn)計(jì)C(4): error C129: missing ';' before 'sfr'這個(gè)錯(cuò)誤,這是什么情況啊
[打印本頁]
作者:
a164188
時(shí)間:
2018-7-19 02:07
標(biāo)題:
編譯總出現(xiàn)計(jì)C(4): error C129: missing ';' before 'sfr'這個(gè)錯(cuò)誤,這是什么情況啊
#include<reg52.h>
#include"lcd1602.h"
unsigned char print
sfr T2MOD = 0x0c9;
#define uchar unsigned char
#define uint unsigned int
sbit Q0 = P2^4;
sbit Q1 = P2^5;
sbit Q2 = P2^6;
sbit Q3 = P2^7;
sbit PWM = P1^7;
sbit UP = P1^0;
sbit DOWM = P1^1;
sbit GORB = P2^3; //換相
sbit ADDSPEED = P1^2;
sbit SUBSPEED = P1^3;
uint tuint = 65535;
uint tpwm = 1; //pwm周期為10000us tpwm變量表示pwm高電平時(shí)間,也相當(dāng)于占空比 (仿真時(shí),頻率高時(shí),電機(jī)反應(yīng)慢。在實(shí)物上要加大頻率)
uchar t1_flag = 0;
uint pulse = 0;
uint t0_flag = 0;
uchar t2_flag = 0;
bit t2_over = 0;
bit Just_Get = 1;
#define ZZ { Q0 = 0;Q1 = 0;Q2 = 1;Q3 = 1;} //正轉(zhuǎn)
#define FZ { Q0 = 1;Q1 = 1;Q2 = 0;Q3 = 0;} //反轉(zhuǎn)
#define STOP { Q0 = 1;Q1 = 0;Q2 = 1;Q3 = 0;} //停止
//禁止出現(xiàn) Q0 = 0;Q1 = 1;Q2 = 0;Q3 = 1; 不然會(huì)燒掉mos管
//************************ PID *************************************
float now = 0,bef = 0,bbef = 0; //本次采樣值,上次采樣值,上上次采樣值
float err_now,err_bef,err_bbef; //當(dāng)前偏差,上次偏差,上上次偏差
float error_add = 0; //所有偏差之和
float set = 25; //設(shè)定值
float kp = 25;
float ki = 25;
float kd = 0;
//*****************************************************************
void delayms(uint ms)//延時(shí)?個(gè) ms
{
uchar a,b,c;
while(ms--)
{
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
}
void timer_init()
{
EA = 1;
ET0 = 1;
ET1 = 1;
ET2 = 1;
TMOD = 0x15; //定時(shí)器0 計(jì)數(shù)模式 定時(shí)器1模式1
T2MOD = 0x01;
TH0 = TL0 = 255;
TH2 = 0x3C;
TL2 = 0xB0; //50MS
}
void timer1() interrupt 3
{
if(t1_flag == 0)
{
t1_flag = 1;
PWM = 1;
TH1 = (tuint - tpwm + 1)/256;
TL1 = (tuint - tpwm + 1)%256;
}
else
{
t1_flag = 0;
PWM = 0;
TH1 = (tuint - 10000 + tpwm + 1)/256;
TL1 = (tuint - 10000 + tpwm + 1)%256;
}
}
void timer0() interrupt 1
{
TH0 = TL0 = 255;
t0_flag++;
}
void timer2() interrupt 5
{
TF2 = 0;
TH2 = 0x3C;
TL2 = 0xB0; //50MS
t2_flag++;
if(t2_flag == 2)
{
TR0 = 0;
TR2 = 0;
t2_flag = 0;
t2_over = 1; //表示100ms時(shí)間到
}
}
void GetPulse()
{
t0_flag = 0;
t2_flag = 0;
TH0 = TL0 = 255;
TH2 = 0x3C;
TL2 = 0xB0; //50MS
TR0 = 1;
TR2 = 1;
}
int PID() //增量式PID
{
int change;
err_now = set - now;
err_bef = set - bef;
err_bbef = set - bbef;
change = kp*(err_now - err_bef) + ki*err_now + kd*(err_now - 2*err_bef + err_bbef);
/*
if(set >= now)
{
if(set - now > 1)
change = kp*(err_now - err_bef) + ki*err_now + kd*(err_now - 2*err_bef + err_bbef);
else
change = 0.2*kp*(err_now - err_bef) + 0.5*ki*err_now + kd*(err_now - 2*err_bef + err_bbef);
}
else if(now > set)
{
if(now - set > 1)
change = kp*(err_now - err_bef) + ki*err_now + kd*(err_now - 2*err_bef + err_bbef);
else
change = 0.2*kp*(err_now - err_bef) + 0.5*ki*err_now + kd*(err_now - 2*err_bef + err_bbef);
}
*/
//change = (kp + ki + kd)*(set - now) + (-kp - 2*kd)*(set - bef) + kd*(set - bbef);
//change = kp*(set - now) + ki*(set - bef) + kd*(set - bbef);
if(change > 0)
{
printchar(1,10,'+');
printuint(1,11,4,change);
}
else if(change < 0)
{
printchar(1,10,'-');
printuint(1,11,4,-change);
}
else if(change == 0)
{
printchar(1,10,' ');
printword(1,11," 0 ");
}
return(change);
}
int PID2() //位置式PID
{
int num = 0;
static num_bef = 0;
err_now = set - now;
err_bef = set - bef;
error_add = error_add + err_now; //誤差累加。一旦誤差為0則error_add的值不變,PID輸出值不變
num = kp*err_now + ki*error_add + kd*(err_now - err_bef);
/*
if(set - now >= 0)
{
if(set - now > 1)
num = kp*err_now + ki*error_add + kd*(err_now - err_bef);
else
num = 0.1*kp*err_now + ki*error_add + kd*(err_now - err_bef);
}
else
{
if(now - set > 1)
num = kp*err_now + ki*error_add + kd*(err_now - err_bef);
else
num = 0.1*kp*err_now + ki*error_add + kd*(err_now - err_bef);
}
*/
if(num > num_bef)
{
printchar(1,10,'+');
printuint(1,11,4,num - num_bef);
}
else if(num < num_bef)
{
printchar(1,10,'-');
printuint(1,11,4,num_bef - num);
}
else
{
printchar(1,10,' ');
printuint(1,11,4,0);
}
num_bef = num;
return((uint)num);
}
void main()
{
lcd_init();
timer_init();
TH1 = TL1 = 255;
printword(0,0,"P:"); //比例系數(shù)
printword(0,5,"S:"); //設(shè)定值
printword(1,0,"TPWM:"); //當(dāng)前占空比
printword(0,10,"PS:"); //當(dāng)前電機(jī)反饋的每秒脈沖數(shù)
while(1)
{
if(GORB == 1)
{ ZZ; }
else
{ FZ; }
if(ADDSPEED == 0)
set++;
if(SUBSPEED == 0)
set--;
if(Just_Get == 1)
{
Just_Get = 0;
GetPulse();
}
else if(t2_over == 1)
{
t2_over = 0;
Just_Get = 1;
pulse = t0_flag;
bbef = bef;
bef = now;
now = t0_flag;
if(set != 0)
{
TR1 = 1;
}
else
{
TR1 = 0;
PWM = 0;
}
// tpwm = tpwm + PID(); //增量式PID
tpwm = PID2(); //位置式PID
}
if(UP == 0)
kp = kp + 1;
if(DOWM == 0)
kp = kp - 1;
printuint(0,2,3,kp);
printuint(0,7,3,set);
printuint(1,5,4,tpwm);
printuint(0,13,5,pulse);
}
}
作者:
a164188
時(shí)間:
2018-7-19 02:08
急急急 求各位大神幫忙看一下
作者:
wulin
時(shí)間:
2018-7-19 07:35
unsigned char print; 這里少了分號(hào)。
作者:
panzishi123456
時(shí)間:
2018-7-19 07:36
在哪行少打了分號(hào)‘;’
作者:
2895659127
時(shí)間:
2018-7-19 08:28
有少分號(hào)的地方
作者:
HC6800-ES-V2.0
時(shí)間:
2018-7-19 08:29
錯(cuò)誤第一:第三行少了一個(gè)分號(hào)
錯(cuò)誤第二:第四行是多余的,因?yàn)槟愕膔eg52.h頭文件中已經(jīng)申明。
作者:
huaxinnan
時(shí)間:
2018-7-19 08:44
unsigned char print 你這是在定義一個(gè)變量 不是宏定義 語句結(jié)束需要分號(hào)。
作者:
CY1994
時(shí)間:
2018-7-19 09:48
首先你的第三行 unsigned char print 沒有分號(hào);
其次你的特殊功能寄存器的使用(sfr )T2MOD,參考reg2.h頭文件里面的定義、
從錯(cuò)誤來看,僅僅是第三行少了個(gè)分號(hào)
作者:
STC89C51
時(shí)間:
2018-7-19 12:15
第三行少分號(hào)。
作者:
364611194
時(shí)間:
2018-7-19 13:38
unsigned char print 定義少了個(gè) ';'
作者:
coolsun
時(shí)間:
2018-7-19 14:02
STC89C51 發(fā)表于 2018-7-19 12:15
第三行少分號(hào)。
unsigned char print 后面少分號(hào),你把print當(dāng)作定義的變量,后面自然要加分號(hào)
作者:
coolsun
時(shí)間:
2018-7-19 14:03
第三行定義變量時(shí)要加分號(hào)
作者:
18789007389
時(shí)間:
2018-7-19 14:39
第三句少了一個(gè)分號(hào)
作者:
lanyu8388
時(shí)間:
2018-7-20 00:02
unsigned char print 少了個(gè);分號(hào)。雙擊錯(cuò)信息提示,跳到對(duì)應(yīng)行很上找,就可以找到問題,提示中before 'sfr' j 已經(jīng)說明了在sfr的前面出錯(cuò)。
作者:
15873002171
時(shí)間:
2018-7-20 08:48
unsigned char print這句沒有分號(hào),定義變量都是要分號(hào)的
作者:
關(guān)外秀才
時(shí)間:
2018-7-20 08:55
編譯錯(cuò)誤已經(jīng)提示你了,在這個(gè)語句完成后要加一個(gè)“;”號(hào)。
作者:
dzsj1
時(shí)間:
2018-7-20 09:12
print后面少了分號(hào)啊
作者:
zhaoyinlo
時(shí)間:
2018-9-4 16:02
unsigned char print //第三行 后面少個(gè)分號(hào)
加油
作者:
zmc419
時(shí)間:
2018-9-4 20:51
keil會(huì)指示出位置,提示是少了; 可分段注釋掉找到問題。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1