怎么让程序停下来

2019-07-15 14:25发布

我自己编的一个程序,想让舵机正转45度延时10ms后反转45度然后停下来,可是舵机一直重复刚才的动作,怎么让它执行一次就停下来。
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit pwm1=P1^0;
unsigned char i,j,t1,t2;
void delay500us(uint x)   //误差 -0.868055555556us        //0.5ms
{
unsigned char a,b;
while(x--)     
    for(b=1;b>0;b--)
        for(a=227;a>0;a--);
}
void pwm360zhengzhuan(t1)
{for(i=t1;i>0;i--)                        //输出1ms的PWM波                  
{           
pwm1 = 1;   //舵机先转向-45度
delay500us(2);//1MS
pwm1 = 0;
delay500us(38);//19MS                                 
}                                                                        
delay500us(10 );//延时5MS
for(j=10;j>0;j--)//         
{                    
pwm1 = 1;        //延时后 舵机转向0度
delay500us( 3 );//1.5MS
pwm1= 0 ;
delay500us( 37 );//18.5MS
}
delay500us(10);
pwm1=0;
}
void pwm360fanzhuan(t2)
{for(i=t2;i>0;i--)                        //输出1ms的PWM波                  
{           
pwm1 = 1;   //舵机先转向+45度
delay500us(4);//1MS
pwm1 = 0;
delay500us(36);//19MS                                 
}                                                                        
delay500us(10 );//延时5MS
for(j=10;j>0;j--)//         
{                    
pwm1 = 1;        //延时后 舵机转向0度
delay500us( 3 );//1.5MS
pwm1= 0 ;
delay500us( 37 );//18.5MS
}
delay500us(10);
pwm1=0;
}
void main()
{
pwm360zhengzhuan(20);
delay500us(20);
pwm360fanzhuan(30);
pwm1=0;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
巨蟹葫芦科
1楼-- · 2019-07-15 14:36
 精彩回答 2  元偷偷看……
liujinyi016
2楼-- · 2019-07-15 16:40
加个while(1),不就停了
烈焰123
3楼-- · 2019-07-15 17:46
jinyi7016 发表于 2016-4-15 10:17
加个while(1),不就停了

谢谢了,真停了,但是为什么呢,加while(1)不是让程序一直走的意思么
liujinyi016
4楼-- · 2019-07-15 18:19
烈焰123 发表于 2016-4-14 22:22
谢谢了,真停了,但是为什么呢,加while(1)不是让程序一直走的意思么

是在原地走,不就跟停一样了。
烈焰123
5楼-- · 2019-07-15 21:24
jinyi7016 发表于 2016-4-15 17:12
是在原地走,不就跟停一样了。

谢了,长知识了
autumn_rain
6楼-- · 2019-07-16 01:53
 精彩回答 2  元偷偷看……

一周热门 更多>