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