微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 怎么让程序停下来

怎么让程序停下来

时间:10-02 整理:3721RD 点击:
我自己编的一个程序,想让舵机正转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;
}

虽然我看不大懂,但是觉得程序可以加上一个计数模块,次数设置为1,执行程序后判断计数的次数,达到1后停止程序
大神勿喷

加个while(1),不就停了

谢谢了,真停了,但是为什么呢,加while(1)不是让程序一直走的意思么

是在原地走,不就跟停一样了。

谢了,长知识了

这个…菜鸟到什么程度啊,估计步进电机的程序拷贝的吧。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top