| 1、在主函数中,加while(1){ }和不加while(1){ }的问题,经实践试过,结果是一
 样的,都是无限循环。那么可以不加while(1){ }吗?
 2、如果不要循环,只要运行一次后停机,主函数该怎么写?
 3、如果只要运行一次后停机,并且某个线圈继续通电,但电机不转(即把电机轴用电锁住不动)
 ,主函数又该怎么写?
 
 *****
 #include <reg51.h>  //步进电机正反转运行程序
 #define uchar unsigned char
 #define uint  unsigned int
 uchar code up_data[8]={0xE,0xC,0xD,0x9,0xB,0x3,0x7,0x6}; //1相励磁正转表
 uchar code down_data[8]={0X6,0X7,0X3,0XB,0X9,0XD,0XC,0XE};//1相励磁反转表
 
 /********以下是延时函数********/
 void Delay_ms(uint xms)
 {
 uint i,j;
 for(i=xms;i>0;i--)                          //i=xms即延时约xms毫秒
 for(j=110;j>0;j--);表
 }
 /********以下是步进电机1相励磁**转函数********/
 void  motor_up(uint n)
 {
 uchar i;
 uint  j;
 for (j=0; j<509*n; j++)            //正转1圈
 {
 for (i=0; i<8; i++)
 {
 P1 = up_data;
 Delay_ms(4);
 }
 }
 }
 /********步进电机1相励磁法反转函数********/
 void  motor_down(uint n)
 {
 uchar i;
 uint  j;
 for (j=0; j<509*n; j++)    //反转1圈
 {
 for (i=0; i<8; i++)
 {
 P1 = down_data;
 Delay_ms(4);
 }
 }
 }
 /********以下是主函数********/
 void main()
 {
 while(1)           //此语句有或无效果都一样!
 {
 motor_up(1);                  //电机正转1圈
 P1=0xff;                        //电机停转
 Delay_ms(4000);          //换向延时为4s
 motor_down(1);           //电机反转1圈
 P1=0x00;                        //电机停转
 Delay_ms(4000);          //换向延时为4s
 P1=0xff;                        //电机停转
 Delay_ms(10000);         //换向延时为10s
 }
 }
 |