這是我的主程序段,當我把電機運轉和溫控這兩個分開在工程時可以完全得到想要的,但是在我把這兩個結合時就完全不能實現,為什么當我進行仿真時電機只轉一個角度就直接超溫停止了,可我的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口復位
}
}
}
}
|