请教3个问题:(请看以下程序)
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[i];
- 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[i];
- 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
- }
- }
复制代码 |