標題: 51單片機利用紅外開關控制電機停轉的程序的問題 [打印本頁]
作者: yanxiaodong 時間: 2019-5-18 19:46
標題: 51單片機利用紅外開關控制電機停轉的程序的問題
如下是我的程序,控制電機停轉的程序正常執行,但是延遲兩秒的程序不執行。
#include<reg52.h>
#define uint unsigned int
sbit dianji=P0^1;//電機控制端。
sbit kaiguan=P0^0;//紅外開關控制端。
void delay(uint xms)//延遲函數
{
uint i,j;
for(i=xms;i<0;i--)
for(j=110;j<0;j--);
}
void main()
{
while(1)
{
if(kaiguan==0)//紅外開關打開
{
delay(2000);//延遲兩秒鐘
while(!kaiguan)//
{
dianji=1;//電機啟動
}
}
if(kaiguan==1)//紅外開關關閉
{
ianji=0;//電機關閉
}
}
}
-
-
Protel Schematic.pdf
2019-5-18 19:44 上傳
點擊文件名下載附件
67.56 KB, 下載次數: 26
電路圖
作者: 幻劍心 時間: 2019-5-19 03:08
for(i=xms;i<0;i--) i=2000,不小于0,跳出循環。
for(j=110;j<0;j--); j=110,非小于0,跳出循環。 沒有循環。所以你的延時不管多大,都沒用。
應該為:
for(i=xms;i>0;i--)
for(j=110;j>0;j--); 要大于0。
作者: yanxiaodong 時間: 2019-5-19 16:07
多謝兄弟
作者: 1647023886 時間: 2019-5-21 17:46
學到了,謝謝
作者: tdl6 時間: 2019-5-21 20:35
確實for循環,條件表達式錯誤,二樓的分析很到位!
作者: 獅子歌歌 時間: 2019-5-23 09:13
循環進不去,就直接退出了?
作者: zztwxx 時間: 2019-5-25 15:59
好簡潔呀
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |