void work_Auto (void)
{
if (QD_flag) //啟動按鈕標志為1時,表示按了啟動按鈕
{
do //先執行一次,再測是否為自動運行,自動運行,則繼續,不繼續則停機
{
ENA=0; //步進電機驅動器允許運行
DIR=0; //正轉
maichong=0; //脈沖量清零
TH0=-7000/256; //裝啟動時間常數
TL0=-7000%6 ;
PUL=0;
ET0=1; //允許計時器T0中斷
TR0=1; //啟動計時器T0,讓PUL端輸出脈沖
while (maichong <= jiaodujishuan ) ; //等待轉動角度達到設定值 為總共角度除以每步角度
ET0=1; //允許計時器T0中斷
TR0=0;
delay(1);
DIR=1; //設定反轉
maichong=0; //脈沖量清零
TH0=-7000/256; //裝啟動時間常數
TL0=-7000%6 ;
PUL=0;
TR0=1; //重新啟動,但為反轉
while (maichong <= jiaodujishuan ); //等待反轉到設定值
TR0=0; //停轉
DIR=0;
ENA=1; //關閉步進電機驅動
maichong=0;
_nop_();
_nop_();
delay ( 100*zhanting ); //延時設定暫停時間,單位為0.1S
_nop_();
_nop_();
QD_flag=0;
}
while (Auto_flag); //檢測是否為自動模式,自動模式則繼續運行,半自動則跳出再去檢查是否有啟動按鍵 按下
}
}
void zd0(void ) interrupt 1
{
//此中斷程序用輸出脈沖給步進電機驅動板速度控制端
_nop_();
_nop_();
if ((maichong<10) || (maichong >(jiaodujishuan-20)))
{
TH0=-7000/256;
TL0=-7000/256;
}
else
{
TH0=-T/256;
TL0=-T/256;
}
maichong++; //脈沖量計數加1
PUL=!PUL; //脈沖輸出反相
}
敬請大家分析!
| 歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |