deeply
級別: 略有小成
|
樓主是強人,佩服,單片機中如果是51系列的,檢測輸入之前是否要先給該位置1再讀取狀態呢,另外關于按住停止按鈕也能啟動,程序是順序執行的,既然可以檢測到有啟動信號必然會先輸出信號,其實那個led燈是閃得很快,只是人眼看不見而已,亮度是有所降低的,如果要按住停止按鈕就不啟動,就要加上與或非等條件,或者用中間繼電器中繼才會達到效果 |
---|---|
本帖最近評分記錄: |
supermax
級別: 工控俠客
|
這樣就可以啦!我已試過OK #include <reg52.h> sbit s2=P3^4;//停止 sbit s4=P3^6;//正 sbit s5=P3^7;//反 sbit km1=P1^3; sbit km2=P1^5; void delay(); void main() { km1=1; km2=1; while(1){ if (s2==0) { delay(); if(s2==0) { km1=1; km2=1; } } if (s4==0) { delay(); if(s4==0) { km1=0; km2=1; }} if (s5==0) { delay(); if(s5==0) { km1=1; km2=0; }} } } void delay(void) //誤差 0us,延時50微秒 { unsigned char a,b; for(b=1;b>0;b--) for(a=22;a>0;a--); } |
---|---|
本帖最近評分記錄: |
supermax
級別: 工控俠客
|
首先聲明不要叫我教你,我也是shi2999的學生,慢慢學吧! 樓主留言:老師,您就教我一點吧。您在我眼中簡直無所不能 |
---|---|
|
supermax
級別: 工控俠客
|
還有你必須要用按鈕互鎖 樓主留言:感謝!通過您的講解,我學了很多東西。這個可以編程解決嗎? |
---|---|
|
youqing
級別: 探索解密
|
單片機高手,現在PLC也很便宜了 樓主留言:不然!不學單片機吧,很多PLC的程序也不能真正明白。 |
---|---|
|
shi2999
不管學什么,興趣是最好的老師,能賺錢是最強勁的動力
級別: 網絡英雄
|
可以用,幫你頂一個。 #include <reg52.h> sbit s2=P3^4;//停止 sbit s4=P3^6;//正 sbit s5=P3^7;//反 sbit km1=P1^3; sbit km2=P1^5; void delay(); void main() { km1=1; km2=1; while(1) { if (s2==0) { delay(); if(s2==0) { km1=1; km2=1; } } if (s4==0) { delay(); if(s4==0) { km1=0; km2=1; }} if (s5==0) { delay(); if(s5==0) { km1=1; km2=0; }} } } void delay(void) //誤差 0us,延時50微秒 { unsigned char a,b; for(b=1;b>0;b--) for(a=22;a>0;a--); } 樓主留言:好貼!老師可以幫我寫個星三角降壓啟動麼 |
---|---|
本帖最近評分記錄: |
shi2999
不管學什么,興趣是最好的老師,能賺錢是最強勁的動力
級別: 網絡英雄
|
void delay(void) //誤差 0us,延時50微秒 { unsigned char a,b; for(b=1;b>0;b--) for(a=22;a>0;a--); } 時間上,可能不是太準, 只不過,利用一些計算,,推遲一些時間, 你試下把 delay(),, 改成sleep(50) 看看,可以提高效率。 樓主留言:感謝!可是老師啊,按住S2的時候,再按S4和S5依然可以啟動,這個可以解決麼 |
---|---|
|