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.51hei.com/bbs/) | Powered by Discuz! X3.1 |