標(biāo)題: 單片機(jī)控制舵機(jī)轉(zhuǎn)向超聲波測(cè)距,為啥我的程序舵機(jī)只能轉(zhuǎn)一下 [打印本頁(yè)]

作者: 人生這里    時(shí)間: 2019-4-20 20:37
標(biāo)題: 單片機(jī)控制舵機(jī)轉(zhuǎn)向超聲波測(cè)距,為啥我的程序舵機(jī)只能轉(zhuǎn)一下
為啥我的程序舵機(jī)只能轉(zhuǎn)一下啊
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit led1=P1^0;
  6. sbit led2=P1^2;
  7. sbit led3=P1^4;
  8. sbit led4=P1^6;
  9. sbit pwm=P3^0;
  10. sbit trig=P3^2;
  11. sbit echo=P3^4;
  12. unsigned long s=0;
  13. unsigned long s1=0;
  14. unsigned long s2=0;
  15. unsigned long s3=0;

  16. uint timer=0,time=0;
  17. uchar num=0,sun;

  18.    void qianjin()
  19.    {
  20.       led1=1,led2=0,led3=1,led4=0;
  21.    }
  22.    void houtui()
  23.    {
  24.        led1=0,led2=1,led3=0,led4=1;
  25.    }
  26.    void zuozhuan()
  27.    {
  28.        led1=0,led2=1,led3=0,led4=0;
  29.    }
  30.    void youzhuan()
  31.    {
  32.        led1=0,led2=0,led3=1,led4=0;
  33.    }
  34.    void start()
  35.    {
  36.       trig=1;
  37.           _nop_();
  38.           _nop_();
  39.           _nop_();
  40.           _nop_();
  41.           _nop_();
  42.           _nop_();
  43.           _nop_();
  44.           trig=0;
  45.    }
  46.    void delay(uint max)
  47.    {
  48.       int x,y;
  49.      for(x=0;x<max;x++)
  50.             for(y=0;y<2000;y++);

  51.    }
  52.                void conut()                  
  53.               {
  54.       
  55.                while(!echo);                     
  56.              TR0=1;                             
  57.              while(echo);                        
  58.              TR0=0;                                 
  59.              time=TH0*256+TL0;                  
  60.               TH0=0;
  61.              TL0=0;
  62.               s=(time*1.7)/100;   
  63.                
  64.                   }
  65.                
  66.         void main()
  67.         {
  68.       
  69.                      TMOD=0X01;
  70.           TH0=(65536-100)/256;
  71.           TR0=(65536-100)%256;
  72.           EA=1;
  73.           ET0=1;
  74.           TR0=1;
  75.          
  76.          
  77.           sun=16;
  78.           timer=0;
  79.           while(timer<20000);
  80.           start();
  81.           conut();
  82.           s1=s;
  83.          
  84.           sun=8;         
  85.          timer=0;
  86.          while(timer<=20000);
  87.           start();
  88.           conut();
  89.           s2=s;
  90.          
  91.           sun=1;
  92.           delay(100);
  93.           start();
  94.           conut();
  95.           s3=s;
  96.                   
  97.         }
  98.          void T0_time()interrupt 1
  99.                   {
  100.                                      TH0=(65536-100)/256;
  101.                                          TL0=(65536-100)%256;
  102.                                            num++;
  103.                                               if(num==50)  num=0;
  104.                                                             if(num>sun) pwm=0;
  105.                                                                  else  pwm=1;
  106.                                                                  timer++;
  107.                                   }
復(fù)制代碼



作者: yaoji123    時(shí)間: 2019-4-21 13:13
程序未加while(1){主程序}
作者: 孤劍酷    時(shí)間: 2019-4-21 14:33
控制舵機(jī)沒(méi)有使用中斷,要讓舵機(jī)循環(huán)轉(zhuǎn)動(dòng)
作者: 人生這里    時(shí)間: 2019-4-21 21:32
yaoji123 發(fā)表于 2019-4-21 13:13
程序未加while(1){主程序}

我寫(xiě)了while(1)也不行,不知道咋搞的

作者: 人生這里    時(shí)間: 2019-4-21 21:37
孤劍酷 發(fā)表于 2019-4-21 14:33
控制舵機(jī)沒(méi)有使用中斷,要讓舵機(jī)循環(huán)轉(zhuǎn)動(dòng)

求大佬告知應(yīng)該怎么改




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1