13303022280 发表于 2020-9-17 16:44 非常感谢 |
感觉你对switch case有些误区, case 1:KEY_Status==0;SetpP();break; //步进电机正转70度停止 case 2:KEY_Status==1;SetpN();break; //步进电机反转70度回原位你这个感觉是要判断的,case里面只是执行,不判断 |
青桑叶 发表于 2020-9-12 17:32 估计是按键按下的时间应该大于50°角用的时间。 |
说一下吧.你可以解决的.就是你在程序上加个判断条件:上升沿触发--正转;下降沿触发--反转;互相学习!!! |
lfc315 发表于 2020-9-11 18:20 功能就是用一个安键控制步进电机正反转:上电时电机不转,当有按键按下且长按正转50度,停止(就算一直安下安键也不转),当按键松开时电机反转50度回原位停止,等待下次同上安键操作。 |
能把流程描述出来,也就基本能写出源码了吧 |
本帖最后由 1AJ1987402 于 2020-9-11 17:54 编辑 青桑叶 发表于 2020-9-11 14:31 stepmotor.c(95): warning C275: expression with possibly no effect stepmotor.c(96): warning C275: expression with possibly no effect stepmotor.c(96): warning C206: 'SetpN': missing function-prototyp安下键时电机正转,再反转,重复这样,我想要的是安键下来后转70度停下来,如果松开安键时才反转回原位,再安键下又正转70度,停下来等松开安键才反转70度停 |
本帖最后由 青桑叶 于 2020-9-11 17:31 编辑 void SetpP() //步进电机正转70度停止 { uint j,k; j=155; //正转70度 while(j--) { P2=0X08;//控制正转 delay(); delay(); P2=0X04; delay(); delay(); P2=0X02; delay(); delay(); P2=0X01; delay(); delay();P2=0x00;delay(); } // while(1); //void SetpN() // { //uint j; k=155; //反转70度 while(k--) { P2=0X01;//控制反转 //0011 delay(); delay(); P2=0X02;//0110 delay(); delay(); P2=0X04;//1100 delay(); delay(); P2=0X08;//1001 delay(); delay(); P2=0x00;delay(); } //} } 按下键盘后,正转结束紧接反转.供参考.共师兄习!! |
青桑叶 发表于 2020-9-11 08:23 我是小白,要怎修改?非常感谢 |
wulin 发表于 2020-9-11 05:41 要怎改?非常感谢指点,在线等 |
程序停在While(1); |
1AJ1987402 发表于 2020-9-10 21:02 SetpP() 和SetpN()之一一旦被调用就会死在while(1);,永远出不来。 void SetpP() //步进电机正转70度停止 { uint j; j=155; //正转70度 while(j--) { P2=0X08;//控制正转 delay(); delay(); P2=0X04; delay(); delay(); P2=0X02; delay(); delay(); P2=0X01; delay(); delay(); } while(1); } void SetpN() { uint j; j=155; //反转70度 while(j--) { P2=0X01;//控制反转 //0011 delay(); delay(); P2=0X02;//0110 delay(); delay(); P2=0X04;//1100 delay(); delay(); P2=0X08;//1001 delay(); delay(); } while(1); } |
wulin 发表于 2020-9-10 20:38 SetpP() 和SetpN()怎才可以引用? |
wulin 发表于 2020-9-10 20:38 但安键按下来,第一步已工作,电机正转OK,就是松开安键时不进行第二步, |
1AJ1987402 发表于 2020-9-10 16:42 2处语法错误 case 1:KEY_Status==0;SetpP();break; //步进电机正转70度停止 case 2:KEY_Status==1;SetpN();break; //步进电机反转70度回原位 Stop()没有被引用。 |
stepmotor.c(94): warning C275: expression with possibly no effect |