这是我的主程序段,当我把电机运转和温控这两个分开在工程时可以完全得到想要的,但是在我把这两个结合时就完全不能实现,为什么当我进行仿真时电机只转一个角度就直接超温停止了,可我的DS18B20都没有达到温度上限值?
void main()
{
uchar i,j,n;
TMOD|=0x01;//定时器设置
TH0=0xef;//装初始值
TL0=0xf0;
EA=1;// 开总中断
ET0=1;//允许定时器0中断
TR0=1;//开定时器0中断
RRR=25; //设置每步延时250ms
check=0;
stop_turing=0;
while(1)
{
if(m_switch==0) //总开关
{
if(P1!=0xff||P3_0!=1) //判断是否有步数按下
{
step(); //判断步数
rotation(); //判断正逆转,
if(flg==0) //电机运转时有正逆转的指示灯指示
{
F_led=0; //正转灯
}
else
{
R_led=0; //逆转灯
}
P0=0x0c; //给电机打开起始位BA,如果在三相单三中则改为P0=0x06;
for(j=0;j<num;j++)
{
if(stop_turing==1)
{
break;
}
for(i=0;i<=3;i++) //给P0口输出转动,如果在三相单三中则改为for(i=0;i<=2;i++)
{
P0=output[flg][i];
for(n=0;n<RRR;n++) //延时
{
delay(10);
}
if(check==1) //检查温度标示由定时器给出
{
handle_Temperature();// 处理温度:如果超温则stop_turing==1,同时报警响和红灯亮
}
if(stop_turing==1)
{
break;
}
}
}
F_led=1; //关灯
R_led=1;
P0=0x0f; //给P0口复位
}
}
}
}
|