|
楼主 |
发表于 2014-4-18 22:15:01
|
显示全部楼层
今天烧进去试了下,还是无法控制,不知什么原因,而且驱动原来的舵机驱动功能都不能用了。
经过反复测试发现main.c 中这个while 语句不删的话原来功能就能用,但是还是步进电机控制不了。
高手指点下,这个while(1)是什么作用的?加上这个while的话,下面的步进电机程序是不是执行不下去?
while(1)
{
;
}
Main.c 完整程序:
#include "stc_new_8051.h"
#include "motor.h"
#include "uart.h"
#include <stdio.h>
#include "type.h"
#include "timer.h"
unsigned int y,z;
void delayms(uint);
void main(void)
{
UART_init();
/* 定时器0作为舵机专用,不建议更改配置 */
Timer0_Init();
/* 定时器1为自由状态,用户可灵活使用 */
Timer1_Init();
Motor_Init();
while(1)
{
;
}
if(y==1)
{
while(1)
{
SMOTOR_A=1;
SMOTOR_B=1;
SMOTOR_A1=0;
SMOTOR_B1=0;
delayms(10);
SMOTOR_A=0;
SMOTOR_B=1;
SMOTOR_A1=1;
SMOTOR_B1=0;
delayms(10);
SMOTOR_A=0;
SMOTOR_B=0;
SMOTOR_A1=1;
SMOTOR_B1=1;
delayms(10);
SMOTOR_A=1;
SMOTOR_B=0;
SMOTOR_A1=0;
SMOTOR_B1=1;
delayms(10);
}
}
else if (z==1)
{
while(1)
{
SMOTOR_A=1;
SMOTOR_B=0;
SMOTOR_A1=0;
SMOTOR_B1=1;
delayms(10);
SMOTOR_A=0;
SMOTOR_B=0;
SMOTOR_A1=1;
SMOTOR_B1=1;
delayms(10);
SMOTOR_A=0;
SMOTOR_B=1;
SMOTOR_A1=1;
SMOTOR_B1=0;
delayms(10);
SMOTOR_A=1;
SMOTOR_B=1;
SMOTOR_A1=0;
SMOTOR_B1=0;
delayms(10);
}
}
else
{
return;
}
}
void delayms(unsigned int xms)
{
uint i, j;
for(i=xms;i>0;i--)
for(j=100;j>0;j--);
}
|
|