初级会员

- 积分
- 124
- 金钱
- 124
- 注册时间
- 2018-3-26
- 在线时间
- 288 小时
|
20金钱
请教一下大家,关于使用限位开关控制步进电机的问题,我的工作原理是这样,当按下正传按键时,电机拉动仓门向前,碰到限位开关后停止,当按下反传按键时,电机拉动仓门向后,碰到限位开关后停止,现在遇到一些问题,当电机向前运动到前方的限位开关后可以停止,但是程序就卡在这里了,向后运行按键没有反应,这是代码,大家帮我分析一下
- void step_pulse(uchar state,uint16 speed,uint16 mileage)
- {
- int i=0;
- unsigned char P4_state;
- if(state){ //回仓
- EN=0;
- for(i = 0;i <mileage;i++)
- {
-
- DIR=0;
- PUL=0; //高低电平脉冲驱动
- uDelay1(speed);
- PUL=1; //高速
- uDelay1(speed);
- do
- {
- P4_state=P4;
- if(P4_state&0x01) //Already in the Zero
- {
- // EN=1;
- PUL=0;
- }
- }while(P4_state&0x01);
- }
- }
- else{ //出仓
- EN=0;
- for(i = 0;i <mileage;i++)
- {
- DIR=1;
- PUL=0; //高低电平脉冲驱动
- uDelay1(speed);
- PUL=1; //高速
- uDelay1(speed);
- do
- {
- P4_state=P4;
- if(P4_state&0x02) //Already in the Zero
- {
- // EN=1;
- PUL=0;
- }
- }while(P4_state&0x02);
-
- }
- }
- }
复制代码
|
|