用Proteus仿真三个舵机,想第二个先转90度,再第一个和第三个,但是无论怎么改变都不改变转动顺序和转动角度

2019-07-18 11:28发布

        #include<reg51.h>
        #include<math.h>
        #include<absacc.h>
        #include<intrins.h>
        #define uchar unsigned char
        #define uint unsigned int
        uint a,c,d;          
        sbit p00=P0^0 ;
        sbit p01=P0^1 ;
        sbit p02=P0^2 ;
       
        void Inttimer0()interrupt 1          //定时终端函数
        {
         switch(d)
         {
         case 1:                                                   //执行p0.0
         p00=!p00;
         c=20000-c;
         TH0=(65536-c)/256;
         TL0=(65536-c)%256;
         if(c>=500&&c<=2500)c=a;
     else
        if(c>2000)
        EA=0,ET0=0,TR0=0;
         else
         a=a+100;
         c=20000-a;
         break;
       
         case 2:                               
         p01=!p01;
         c=20000-c;
         TH0=(65536-c)/256;
         TL0=(65536-c)%256;
     if(c>=500&&c<=2500)c=a;
         else
        if(c>2000) EA=0,ET0=0,TR0=0;
         else
         a=a+100;
         c=20000-a;       
         break;
       
         case 3:                                        //执行p0.2
         p02=!p02;
         c=20000-c;
         TH0=(65536-c)/256;
         TL0=(65536-c)%256;
         if(c>=500&&c<=2500)c=a;
     else
         if(c>2000) EA=0,ET0=0,TR0=0;
         else
         a=a+100;
         c=20000-a;       
         break;       
         }
         }
       
       
       
       
         void delay(long j)                   //延时函数
        {
         for (j;j>0;j--);
         }       
         


         void timer_int1()                   //定是函数1
         {
         TMOD=0x01;
         p00=1;
         a=1500;
         c=a;
         TH0=(65536-a)/256;
         TL0=(65536-a)%256;
         EA=1;
         ET0=1;
         TR0=1;
         }



         void timer_int2()                   //定是函数2
         {
         TMOD=0x01;
         p01=1;
         a=1500;
         c=a;
         TH0=(65536-a)/256;TL0=(65536-a)%256;
         EA=1;
         ET0=1;
         TR0=1;
         }
       
       
       
     void timer_int3()                   //定是函数3
         {
         TMOD=0x01;
         p02=1 ;
         a=1500;
         c=a;
         TH0=(65536-a)/256;TL0=(65536-a)%256;
         EA=1;
         ET0=1;
         TR0=1;
         }               



         void main()
         {         d=1 ;
         timer_int2();
          delay(9000);
             d=2        ;
          timer_int1();
           delay(9000);
             d=3          ;
          timer_int3();
             delay(9000);
         while(1);
         }

3.png
4.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
武力戡乱
1楼-- · 2019-07-18 15:23
你可以上传编译文件和仿真文件。这样好让大家上手。
半世琉璃
2楼-- · 2019-07-18 20:03
 精彩回答 2  元偷偷看……
yehaita_1
3楼-- · 2019-07-18 22:15
路过,学习学习,顶一下

一周热门 更多>