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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3693|回復: 10
打印 上一主題 下一主題
收起左側

keil debug卡在箭頭處不動,問題出在哪里?

[復制鏈接]
跳轉到指定樓層
樓主
求教大神 謝謝大家

硬件仿真也是卡在同樣的地方不動,同時,實體電路控制步進電機的3個IO都是低電平

單片機源程序如下:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit maicong=P2^5;//電機脈沖輸出,初始低電平
  5. sbit fangxiang=P2^6;//電機方向輸出,初始化后低電平
  6. sbit EN=P2^7;//電機使能,初始高電平
  7. sbit XWKG=P2^4;//初始位置確認端口,低電平有效,調用ZIJIAN子程序
  8. sbit k0=P1^0;//啟動,調用START子程序
  9. sbit k1=P1^1;//停止,調用TINGZHI子程序
  10. sbit k2=P1^2;//速度加,調用SUDUZ子程序
  11. sbit k3=P1^3;//速度減,調用SUDUJ子程序
  12. sbit k4=P1^4;//步長加,調用BUCHANGZ子程序
  13. sbit k5=P1^5;//步長減,調用BUCHANGJ子程序

  14. uint tt=200;//是否需要??
  15. uint step=1100;//同上
  16. uint num=18;
  17. void keyscan();//鍵盤掃描程序,程序完成
  18. void delayms(uint ms);//毫秒級可變延時程序
  19. void delayus(uint us);//微秒級可變延時程序,用于低電平輸出延時,改變低電平時長就調整了頻率。
  20. void delay(uint us);//微秒級延時程序,用于脈沖高電平輸出延時
  21. void baidong();//
  22. void ZIJIAN();//程序完成
  23. void START();//對應k0
  24. void TINGZHI();//對應k1
  25. void SUDUZ();//對應k2
  26. void SUDUJ();//對應k3
  27. void BUCHANGZ();//對應k4
  28. void BUCHANGJ();//對應k5
  29. void JIUQIANYISHEN();//對應k6
  30. void main(void)
  31. {
  32.             maicong = 0;
  33.         fangxiang = 1;
  34.         IT1 = 1;                       
  35.         EX1 = 1;                        
  36.         EA = 1;                        
  37.         ZIJIAN();      
  38.         while(1);//等待按鍵指令,此時PWM=0;DIR=0。
  39. }
  40. /*低一級的外部中斷2,負責按鍵的操作,即啟動、停止、加減速、步長加減、自動運行程序的啟動*/
  41. void exint1() interrupt 2           //(location at 0013H)
  42. {              
  43.     keyscan();                                 
  44. }
  45. void keyscan()
  46. {
  47. while(1)
  48. {
  49.              if(k0==0)        START();
  50.         else if(k1==0)        TINGZHI();//停止,回初始位(有兩種可能,拔出或到底)
  51.         else if(k2==0)        SUDUZ();//速度增
  52.         else if(k3==0)        SUDUJ();//速度減
  53.         else if(k4==0)        BUCHANGZ();//步長增
  54.         else if(k5==0)        BUCHANGJ();//步長減
  55.         else if(XWKG==0) ZIJIAN();//初始位開關開,電機換向,轉動
  56. }
  57. }

  58. void ZIJIAN()
  59.   {
  60.                 EN=0;//電機使能,可以自由轉動
  61.                 fangxiang=1;
  62.                 while(XWKG==0)
  63.          {
  64.     maicong=1;
  65.     delay(1);
  66.     maicong=0;
  67.                 delayus(tt);
  68.         }
  69.                while(XWKG==1)
  70.                         {
  71.         fangxiang=0;
  72.         maicong=1;
  73.     delay(1);
  74.     maicong=0;
  75.                 delayus(tt);//此處需配合限位開關確定轉動角度      

  76.                 }
  77.                   EN=1;//電機使能,不能自由轉動
  78.             delayms(50);
  79. }               
  80. void START()
  81.   {
  82.                 EN=0;
  83.                 step=1100;//50*55最大移動步數,有可能觸發限位開關
  84.                 delayms(50);
  85.                 while(1)
  86.                                 {                  
  87.                   baidong();
  88.                         }
  89. }
  90. void TINGZHI()
  91. {
  92.         while(1);   
  93. }

  94. void SUDUZ()
  95. {
  96.    tt=tt-5;
  97.    if(tt<1)
  98.     tt=1;
  99.     while(k2==0);
  100. }

  101. void SUDUJ()
  102. {
  103.    tt=tt+5;
  104.    if(tt>255)
  105.     tt=255;
  106.     while(k3==0);
  107. }

  108. void BUCHANGZ()
  109. {
  110.    step=step+5;
  111.    if(step>2750)
  112.     step=2750;
  113.     while(k4==0);
  114. }

  115. void BUCHANGJ()
  116. {
  117.    step=step-5;
  118.    if(step<50)
  119.     step=50;
  120.     while(k5==0);
  121. }


  122. /*外部中斷0(最高級),負責打斷外部中斷 2,即限位開關的觸發*/

  123. void exint0() interrupt 0           //(location at 0003H)
  124. {
  125.     while(1);
  126. }


  127.       

  128. void baidong()
  129.         {
  130.          EN=0;//電機使能,可以自由轉動

  131.        while(step--)//step取值范圍小于細分*55
  132.          {
  133.     maicong=1;//初始pwm輸出為低電平,開始動作就要變為高電平(共陰接法)
  134.     delay(1);//延時4微秒,脈沖寬度為5微秒
  135.     maicong=0;//低電平
  136.     delayus(tt);//延時9微秒,低電平寬度10微秒,調整此延時數值更改速度
  137.          }
  138.    fangxiang=~fangxiang;//換向
  139.         }
  140. void delay(uint xus)
  141.         {
  142.                 uint m;
  143.                 for(m=0;m<xus;++m);
  144.                
  145.         }
  146. void delayus(uint tt)
  147.         {
  148.                 uint n;
  149.                 for(n=0;n<tt;++n);//可變延時程序???
  150.         }
  151. void delayms(uint xms)
  152.         {
  153.                 uint x,y;
  154.                 for(x=0;x<xms;++x)
  155.                 for(y=0;y<110;++y);
  156.         }
復制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2021-10-9 16:56 | 只看該作者
先了解while(1)的用途,再寫程序。
回復

使用道具 舉報

板凳
ID:970742 發表于 2021-10-9 19:55 | 只看該作者
wulin 發表于 2021-10-9 16:56
先了解while(1)的用途,再寫程序。

謝謝,連while語句都沒到呢
回復

使用道具 舉報

地板
ID:162811 發表于 2021-10-9 20:06 | 只看該作者
wulin 發表于 2021-10-9 16:56
先了解while(1)的用途,再寫程序。

48行的while(1)?
回復

使用道具 舉報

5#
ID:624769 發表于 2021-10-9 20:17 | 只看該作者

正解,同樣還有95行,135行,雖然沒有啟用,但是這樣寫法本來就不該存在。
回復

使用道具 舉報

6#
ID:970742 發表于 2021-10-9 20:21 | 只看該作者
188610329 發表于 2021-10-9 20:17
正解,同樣還有95行,135行,雖然沒有啟用,但是這樣寫法本來就不該存在。

程序是慢慢改的,前面的問題都沒解決,后面再怎么地也是沒有的話
回復

使用道具 舉報

7#
ID:624769 發表于 2021-10-9 20:57 | 只看該作者
wangzhg 發表于 2021-10-9 20:21
程序是慢慢改的,前面的問題都沒解決,后面再怎么地也是沒有的話

抱歉啊,我只是回答地板的問題。 你的問題我是實在不知道怎么回答……

想問你是不是沒按下一步,或者F5運行,又怕被你打。
不過介于While(1); 都不是問題的前提下,我現在還是鼓起勇氣,問一下,點擊運行了么?
回復

使用道具 舉報

8#
ID:970742 發表于 2021-10-10 21:19 來自觸屏版 | 只看該作者
看來還是打醬油的比較多,還是得自己琢磨!
回復

使用道具 舉報

9#
ID:161164 發表于 2021-10-11 00:25 | 只看該作者
wangzhg 發表于 2021-10-10 21:19
看來還是打醬油的比較多,還是得自己琢磨!

用你的代碼直接編譯運行沒問題
所以你還是自己琢磨吧~


回復

使用道具 舉報

10#
ID:213173 發表于 2021-10-11 07:46 | 只看該作者
wangzhg 發表于 2021-10-9 19:55
謝謝,連while語句都沒到呢

你沒有點擊“運行”,當然停留在main函數的第一行等待操作指令。
回復

使用道具 舉報

11#
ID:624769 發表于 2021-10-11 18:52 | 只看該作者
wulin 發表于 2021-10-11 07:46
你沒有點擊“運行”,當然停留在main函數的第一行等待操作指令。

何苦呢……
我問他有沒有點擊運行,24小時之后,都被說成打醬油的了。

你又何苦步我后塵呢???
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久中文视频 | 国产伦精品一区二区三区高清 | 国产成人在线一区 | 日韩aⅴ在线观看 | 日韩av啪啪网站大全免费观看 | 国产精品中文字幕在线播放 | 精品福利视频一区二区三区 | 国产日韩视频在线 | 91在线视频观看免费 | 一级毛片免费看 | 久在草| 国产伦精品 | 手机三级电影 | 免费看国产a | 久久久久久999 | 免费的色网站 | 欧美日韩精品一区二区三区视频 | 一区二区三区在线 | 国产精品久久久久久久粉嫩 | 亚洲精品在线观看视频 | h视频在线免费 | 久久久久免费精品国产小说色大师 | 久久精品亚洲国产 | 米奇7777狠狠狠狠视频 | 欧美日韩亚洲三区 | 中文在线一区二区 | 一级免费毛片 | av成人在线观看 | 国产精品免费视频一区 | 国产欧美一区二区三区久久人妖 | av日韩在线播放 | 综合网伊人 | 日韩中文欧美 | 97狠狠干 | 一级黄色毛片免费 | 久久久久国产一区二区三区不卡 | 国产重口老太伦 | 久久最新 | 夜夜爽99久久国产综合精品女不卡 | 国产精品久久网 | 91一区二区三区 |