![]() |
發布時間: 2020-9-10 16:39
正文摘要:功能要求:當安鍵KEY1安下且長安時步進電機正轉70度停止,當松開時電機反轉原位置。 小白寫了個程序控制不了,安下鍵只能正轉70度就停了,松開安鍵不能反轉,沒反應。問題在哪里,請大俠指點,非常感謝! #include ... |
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 |