![]() |
281433001 發表于 2019-7-26 17:01 這個沒加break啊 |
建議直接去掉break, |
C51oo 發表于 2019-7-26 11:34 #include <reg52.h> #include <intrins.h> sbit KEY_UP=P1^3; sbit KEY_DW=P1^4; sbit DIR_UP=P3^2; sbit DIR_DW=P3^3; sbit CON_ECU=P3^4; void DelayUs2x(unsigned char t); void DelayMs(unsigned char t); void Delay_ms(unsigned char t); void main() { KEY_UP=1; KEY_DW=1; DIR_UP=0; DIR_DW=0; CON_ECU=1; while(1) { if(KEY_UP==0) { Delay_ms(5); if(KEY_UP==0) { CON_ECU=0; Delay_ms(10); DIR_UP=1; DelayMs(10); CON_ECU=1; Delay_ms(10); DIR_UP=0; DelayMs(190); DIR_DW=1; Delay_ms(10); DIR_DW=0; } } if(KEY_DW==0) { DelayMs(10); if(KEY_DW==0) { DIR_DW=1; Delay_ms(10); DIR_DW=0; DelayMs(190); DelayMs(190); DelayMs(190); DIR_UP=1; Delay_ms(10); DIR_UP=0; } } } } void DelayUs2x(unsigned char t) { while(--t); } void DelayMs(unsigned char t) { while(t--) { DelayUs2x(245); DelayUs2x(245); } } void Delay_ms(unsigned char t) { unsigned char i,j,k; for(k=0;k<t;k++) { _nop_(); i = 2; j = 199; do { while (--j); } while (--i); } } 看這個 我想改成觸發一次電機就只轉一次 如果這個信號一直維持也只轉設定的那幾十毫秒,再次觸發同樣,怎么搞啊 |
你這程序只列了一小部分吧。 都沒看到循環體系啊。 if語句不是while語句,不會自己循環,執行完了繼續往下走。 你得把整體一點的程序列出來,才好分析。 |
break;是跳出循環,如果你的就一個大循環那么就直接跳出循環,把所有的程序都執行完了,自然就不會循環了啊,我猜你復位一下應該又可以按一下,然后遇到break;就又停下來了,返回語句不懂了,你可能把break;改成continue;建議程序不要這樣寫,用switch語句寫會更好 |
yong761228 發表于 2019-7-25 19:53 那有什么辦法解決沒有 感覺自己對編程比較小白 |
我認為2的里面jiang=1; 可能調用到了別的程序了,別的程序繼續滿足了if(num==4)又循環了,這樣就沒有直接運行下面的break. |