久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4678|回復(fù): 21
打印 上一主題 下一主題
收起左側(cè)

有關(guān)單片機(jī)c語(yǔ)言一直弄不懂的三個(gè)問題,望賜教

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:86913 發(fā)表于 2017-9-1 16:50 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
請(qǐng)教3個(gè)問題:(請(qǐng)看以下程序)

1、在主函數(shù)中,加while(1){ }和不加while(1){ }的問題,經(jīng)實(shí)踐試過,結(jié)果是一
樣的,都是無(wú)限循環(huán)。那么可以不加while(1){ }嗎?
2、如果不要循環(huán),只要運(yùn)行一次后停機(jī),主函數(shù)該怎么寫?
3、如果只要運(yùn)行一次后停機(jī),并且某個(gè)線圈繼續(xù)通電,但電機(jī)不轉(zhuǎn)(即把電機(jī)軸用電鎖住不動(dòng))
,主函數(shù)又該怎么寫?

*****
  1. #include <reg51.h>  //步進(jìn)電機(jī)正反轉(zhuǎn)運(yùn)行程序
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. uchar code up_data[8]={0xE,0xC,0xD,0x9,0xB,0x3,0x7,0x6}; //1相勵(lì)磁正轉(zhuǎn)表
  5. uchar code down_data[8]={0X6,0X7,0X3,0XB,0X9,0XD,0XC,0XE};//1相勵(lì)磁反轉(zhuǎn)表
  6.             
  7. /********以下是延時(shí)函數(shù)********/
  8. void Delay_ms(uint xms)                                
  9. {
  10.         uint i,j;
  11.         for(i=xms;i>0;i--)                          //i=xms即延時(shí)約xms毫秒
  12.                 for(j=110;j>0;j--);表   
  13. }
  14. /********以下是步進(jìn)電機(jī)1相勵(lì)磁法正轉(zhuǎn)函數(shù)********/
  15. void  motor_up(uint n)
  16. {
  17.    uchar i;
  18.    uint  j;
  19.    for (j=0; j<509*n; j++)            //正轉(zhuǎn)1圈
  20.     {
  21.      for (i=0; i<8; i++)     
  22.        {
  23.                P1 = up_data[i];         
  24.         Delay_ms(4);        
  25.        }
  26.     }
  27. }
  28. /********步進(jìn)電機(jī)1相勵(lì)磁法反轉(zhuǎn)函數(shù)********/
  29. void  motor_down(uint n)
  30. {
  31.     uchar i;
  32.     uint  j;
  33.     for (j=0; j<509*n; j++)    //反轉(zhuǎn)1圈               
  34.      {
  35.       for (i=0; i<8; i++)            
  36.        {
  37.                P1 = down_data[i];   
  38.         Delay_ms(4);            
  39.        }
  40.      }
  41. }
  42. /********以下是主函數(shù)********/
  43. void main()
  44. {     
  45.    while(1)           //此語(yǔ)句有或無(wú)效果都一樣!
  46.      {
  47.        motor_up(1);                  //電機(jī)正轉(zhuǎn)1圈
  48.        P1=0xff;                        //電機(jī)停轉(zhuǎn)
  49.        Delay_ms(4000);          //換向延時(shí)為4s
  50.        motor_down(1);           //電機(jī)反轉(zhuǎn)1圈
  51.        P1=0x00;                        //電機(jī)停轉(zhuǎn)
  52.        Delay_ms(4000);          //換向延時(shí)為4s
  53.        P1=0xff;                        //電機(jī)停轉(zhuǎn)        
  54.        Delay_ms(10000);         //換向延時(shí)為10s
  55.      }
  56. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

來(lái)自 2#
ID:230544 發(fā)表于 2017-9-3 15:18 | 只看該作者
第一個(gè),加不加的確它都會(huì)循環(huán),這個(gè)實(shí)驗(yàn)我也做過,其實(shí)加while循環(huán)是為了減小單片機(jī)出錯(cuò)的概率,貌似書本上都是這么說(shuō)
第二, 有兩種方法可以搞定你說(shuō)的,軟件實(shí)現(xiàn),在單片機(jī)完成既定任務(wù),可以讓他一直while循環(huán),死在循環(huán)里就好了。硬件實(shí)現(xiàn),用個(gè)繼電器,繼電器線圈倆開關(guān),一個(gè)是按下彈起開關(guān),另一個(gè)用單片機(jī)引腳接通當(dāng)開關(guān),兩者并聯(lián),繼電器常閉又控制單片機(jī)電源,單片機(jī)完成任務(wù)后,當(dāng)做開關(guān)的引腳置零,繼電器不吸合就停止工作了

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:81352 發(fā)表于 2017-9-3 12:07 | 只看該作者
void main()
回復(fù)

使用道具 舉報(bào)

地板
ID:81352 發(fā)表于 2017-9-3 12:11 | 只看該作者
將while(1)放在Delay_ms(10000),后面可以嗎?是否開通看門狗功能呢?

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

5#
ID:230743 發(fā)表于 2017-9-3 21:18 | 只看該作者
只需設(shè)置一個(gè)標(biāo)志位就可以了,執(zhí)行一次就置1或置0,看自己習(xí)慣來(lái)
,并將一個(gè)線圈得電并維持。
回復(fù)

使用道具 舉報(bào)

6#
ID:97438 發(fā)表于 2017-9-5 17:02 | 只看該作者
我說(shuō)說(shuō)第一個(gè)吧,不加while(1),不做其他死循環(huán)的話,看起來(lái)也會(huì)循環(huán),但是這屬于未定義操作,屬于不按要求來(lái),出了問題不能怪人。
回復(fù)

使用道具 舉報(bào)

7#
ID:86913 發(fā)表于 2017-9-11 20:20 | 只看該作者
黑暗人才 發(fā)表于 2017-9-3 15:18
第一個(gè),加不加的確它都會(huì)循環(huán),這個(gè)實(shí)驗(yàn)我也做過,其實(shí)加while循環(huán)是為了減小單片機(jī)出錯(cuò)的概率,貌似書本 ...

感謝“黑暗人才”,為我提供了思路,照您的辦法做,對(duì)的。只要在后面加上       
while(1)
     {
      P1=0xff;               
     }       
就可以了。謝謝!
回復(fù)

使用道具 舉報(bào)

8#
ID:86913 發(fā)表于 2017-9-11 20:22 | 只看該作者
zhangda1230 發(fā)表于 2017-9-3 21:18
只需設(shè)置一個(gè)標(biāo)志位就可以了,執(zhí)行一次就置1或置0,看自己習(xí)慣來(lái)
,并將一個(gè)線圈得電并維持。

謝謝您的指導(dǎo)!
回復(fù)

使用道具 舉報(bào)

9#
ID:233455 發(fā)表于 2017-9-16 11:17 | 只看該作者
首先定義一個(gè)靜態(tài)變量默認(rèn)賦值為0,執(zhí)行一次就把這個(gè)變量置1,下次判斷這個(gè)變量為1跳過就可以了
回復(fù)

使用道具 舉報(bào)

10#
ID:203840 發(fā)表于 2017-9-16 16:21 | 只看該作者
主程序不加while(1) 當(dāng)程序執(zhí)行完成以后,會(huì)自動(dòng)跳轉(zhuǎn)到最初的位置開始再執(zhí)行  類似于復(fù)位
回復(fù)

使用道具 舉報(bào)

11#
ID:187532 發(fā)表于 2017-9-16 17:53 | 只看該作者
第一,加上while(1)可以防止程序跑飛,造成單片機(jī)錯(cuò)誤。做流水燈實(shí)驗(yàn)時(shí)必須有while(1)不然如何循環(huán)。
第二,只循環(huán)一次的話在程序末尾加上while(1);
回復(fù)

使用道具 舉報(bào)

12#
ID:233530 發(fā)表于 2017-9-16 19:47 | 只看該作者
break可以跳出終止循環(huán)
回復(fù)

使用道具 舉報(bào)

13#
ID:233571 發(fā)表于 2017-9-16 22:27 | 只看該作者
我是來(lái)學(xué)習(xí)的。
回復(fù)

使用道具 舉報(bào)

14#
ID:86913 發(fā)表于 2018-2-25 11:53 | 只看該作者
多謝樓上各位熱心的朋友,通過您們的幫助,我又增長(zhǎng)了相關(guān)知識(shí)。
回復(fù)

使用道具 舉報(bào)

15#
ID:285408 發(fā)表于 2018-2-25 15:43 | 只看該作者
1、有的跟編譯軟件有關(guān)系,如果你沒加上,他會(huì)幫你加上
回復(fù)

使用道具 舉報(bào)

16#
ID:285412 發(fā)表于 2018-2-25 16:53 | 只看該作者
我也是來(lái)學(xué)習(xí)的~
回復(fù)

使用道具 舉報(bào)

17#
ID:285545 發(fā)表于 2018-3-1 11:41 | 只看該作者
1,不用 while() 的話,總感覺很容易跑偏,。畢竟默認(rèn)都加的。
2,只運(yùn)行一次比較好辦,一般都是用標(biāo)志位,但是停機(jī)。停機(jī)是斷電?休眠?還是死循環(huán)?
{斷電,這可能要借助外部電控裝置進(jìn)行,軟件好像不能直接關(guān)機(jī)。
休眠,很多單片機(jī)是可以的。
死循環(huán),就更簡(jiǎn)單了。
}
3,要用到一定的自鎖設(shè)計(jì)。比如,自鎖開關(guān),將單片機(jī)的電源串入常閉,線圈串入常開,單片機(jī)動(dòng)作,激活自鎖開關(guān),這樣單片機(jī)斷電了,線圈通電了。最好單片機(jī)并接個(gè)大電容,延遲下斷電。
回復(fù)

使用道具 舉報(bào)

18#
ID:279601 發(fā)表于 2018-3-2 13:09 | 只看該作者
1,看你用的哪款單片機(jī)把,STC單片機(jī)本身是自帶循環(huán)的,你不加While(1),他也會(huì)循環(huán),單循環(huán)是主函數(shù)整個(gè)循環(huán);2如果只要循環(huán)一次,方法比較多,例如在函數(shù)最后一句加上一句while(1);語(yǔ)句,讓他執(zhí)行一次后陷入while(1)死循環(huán),也可設(shè)置個(gè)腳,例如sbit tingzhi=P1^1;默認(rèn)設(shè)置為低狀態(tài),最后一句加上while(tingzhi==0);這樣也會(huì)停在這,而且你拉高該引腳時(shí),會(huì)跳出循環(huán)重新開始;3想讓點(diǎn)擊不轉(zhuǎn),停止給脈沖就行了
回復(fù)

使用道具 舉報(bào)

19#
ID:260290 發(fā)表于 2018-3-2 15:29 | 只看該作者
多謝樓上各位熱心的朋友,通過您們的幫助,我又增長(zhǎng)了相關(guān)知識(shí)。
回復(fù)

使用道具 舉報(bào)

20#
ID:284007 發(fā)表于 2018-3-4 12:48 | 只看該作者
因?yàn)槟阆氚∧惚緛?lái)可以容納100行程序可實(shí)際的只要50行那么當(dāng)運(yùn)行完50行后地51行就不是自己想要運(yùn)行的了,而是不確定的未知內(nèi)容,一旦執(zhí)行下去程序就會(huì)出錯(cuò),從而導(dǎo)致單片機(jī)自動(dòng)復(fù)位,所以通常在程序中加入一個(gè)死循環(huán),讓程序不要亂運(yùn)行
回復(fù)

使用道具 舉報(bào)

21#
ID:287444 發(fā)表于 2018-3-4 15:05 | 只看該作者

只需設(shè)置一個(gè)標(biāo)志位就可以了,執(zhí)行一次就置1或置0,看自己習(xí)慣來(lái)
,并將一個(gè)線圈得電并維持。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧区一欧区二欧区三免费 | 亚洲激情视频在线 | 毛片大全| 国产精品一区二区福利视频 | 久草中文在线观看 | 久久婷婷av | 91麻豆精品国产91久久久久久久久 | 69av在线视频 | 久久久性色精品国产免费观看 | 欧美日韩久久精品 | 欧美涩涩网 | www.天天操.com | 亚洲成人精品 | 日韩a在线 | 国产乱人伦精品一区二区 | 伊人久久精品 | 久久久91精品国产一区二区三区 | 国产一区二区三区在线免费观看 | 国产高清一区二区三区 | 91精品久久久久久久久久小网站 | 国产精品久久在线观看 | 91视频国产精品 | 爱草在线 | 亚洲精品观看 | 毛片一区二区 | 韩国欧洲一级毛片 | 视频在线一区二区 | 国产精品美女久久久久久免费 | 久久综合久久自在自线精品自 | 欧美黄色一区 | 久久亚洲综合 | 免费一级黄色电影 | 午夜激情视频 | 99精品99 | av在线免费观看网站 | 久久综合九九 | 看片天堂| 全免费a级毛片免费看视频免 | 日韩在线欧美 | 精品国产视频在线观看 | 久草中文网 |