新闻中心

EEPW首页>嵌入式系统>设计应用> 控制步进电机正反转的实际应用程序

控制步进电机正反转的实际应用程序

作者: 时间:2012-06-26 来源:网络 收藏

calldog;
calltime(200);
calldog;
callwrenable;/*置存储器写使能*/
addrl=00h;/*置存储器地址*/
dat=l(1);
callwbyte;/*将变量L(1)的值写入存储器00h位置*/
callwrenable;
addrl=01h;
dat=l(2);
callwbyte;/*将变量L(2)的值写入存储器01h位置*/
end;
endincdata;
decdata:PROCEDURE;/*参数修改---"减"键处理子程序-*/
IFp11=0THEN/*k8键处理子程序*/
do;
dowhilep11=0;
calldog;
end;
DATA=DATA-1;/*设定值-1*/
ifdata=0thendata=99;
L(1)=dataMOD10;
L(2)=data/10;
calldisplay(l(1),l(2));
calldog;
calltime(200);
calldog;
calltime(200);
calldog;
callwrenable;
addrl=00h;
dat=l(1);
callwbyte;
callwrenable;
addrl=01h;
dat=l(2);
callwbyte;
end;
ENDdecdata;

starton:PROCEDURE;/*start*/
declaresdbyte;
ifp12=0THEN/*K9键处理子程序*/
do;
dowhilep12=0;
calldog;
end;
ifp17=0thenok=0;/*如果p17口线上有信号输入,则运行标志置0(停止运行)*/
p13=1;/*置正向运转*/
calltime(200);
calldog;
dowhileok=1;/*当运行标志为1时,执行速度延时操作*/
dosd=0todata;/*根据设定值data的数值延时来确定运行时的脉冲给定速度*/
calldog;
end;
end;
ENDstarton;

step:PROCEDURE;/*step*/
declaresdbyte;
p13=1;/*置正向运转*/
calltime(200);
calldog;
IFp33=0THEN/*k11键处理子程序*/
do;
ifp17=0thenok=0;/*如果p17上有信号输入,则停止运行*/
dowhilep33=0;
dosd=0todata;/*调用延时,调整步进电机的运行速度*/
calldog;
calltime(2);
end;
callrun;
calldog;
end;
end;
ok=0;
ENDstep;

back:PROCEDURE;/*反向运行处理子程序*/
declaresdbyte;
IFp34=0THEN
do;
dowhilep34=0;
calldog;
end;
ifp15=0thenok=0;/*反向运行时,如果遇到p15上有信号输入,则停止步进电机运行*/
p13=0;/*置步进电机反向运行*/
calltime(200);
calldog;
dowhileok=1;
dosd=0todata;/*根据设定值调节步进电机的运行速度*/
calldog;
calltime(2);
end;
callrun;
if(p15=0orp32=0)thenok=0;/*p15或p32口线任意一个有信号输入,停止运行*/
end;

end;
ENDback;

MAIN$PROGRAM:/*初始化主程序*/
ea=0;/*关中断*/
SCON=00h;/*置串口方式0,串行数据输出模式*/
PCON=00h;
tmod=11h;
et0=1;
enable;/*开中断(ea=1)*/
SCK=0;cs=1;/*定义存储器口线初始状态*/
callwrenable;
callwrregister;/*看门狗存储器初始化*/
callwrenable;
calldog;
p2=0ffh;/*初始化各个口线的状态*/
p1=0ffh;ok=0;
p14=1;p32=1;p33=1;p34=1;
p13=1;
ADDRL=00h;/*上电复位后从存储器中读出设定的速度值*/
CALLrbyte;
l(1)=dat;
addrl=01h;
callrbyte;
l(2)=dat;
DATA=L(1)+L(2)*10;/*将读出的值合并成十进制,存入变量data中*/
/*以下是主循环程序*/
LOOP:
IFp10=0THENCALLincdata;/*检测各个按键是否有按下*/
IFp11=0THENCALLdecdata;
ifp12=0then
do;
ok=1;
callstarton;
end;
ifp34=0then
do;
ok=1;
callback;
end;
ifp33=0then
do;
ok=1;
callstep;
end;
calldog;
CALLDISPLAY(L(1),L(2));/*将设定值送164显示*/
calldog;
CALLTIME(100);
calldog;
GOTOLOOP;
ENDSTART;

光耦相关文章:光耦原理


存储器相关文章:存储器原理


脉冲点火器相关文章:脉冲点火器原理

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭