标题: 单片机 重复执行代码 [打印本页]

作者: sddboy    时间: 2020-10-5 08:57
标题: 单片机 重复执行代码


写了一个很简单   步进马达的测试程序,单片机执行的时候  马达一直在转


可程序里 没有 死循环,只有一个 8拍   ,执行完了 照理应该不转了


  什么原因造成步进马达一直转  


代码如下

#include <reg51.h>

void delay(int i)

{
        int j;
         int i;
        for(;i>0;i--)

            for(j=50;j>0;j--)

                      ;
}

int main()
{                                   

    int step[]={0x01,0x05,0x04,0x06,0x02,0x0a,0x08,0x09};         

    int i;

    for(i=7;i>=0;i--){

                        P2=step[ i ]   ;
                        delay(10)   ;

                                    }                           

   return 0;         
}




作者: XTXB    时间: 2020-10-5 13:12
如图修改:




作者: hejianmin    时间: 2020-10-5 14:35
把return 0  不要改成FOR();;
作者: hejianmin    时间: 2020-10-5 14:37
把return 0 不要,改成for(;;){}
作者: cheney03    时间: 2020-10-5 16:22
程序末尾写个while(1);不然程序会回到主程序重复执行。
作者: 累不死的狗    时间: 2020-10-7 08:20
把return 0换成while(1);

作者: sddboy    时间: 2020-10-7 16:41
XTXB 发表于 2020-10-5 13:12
如图修改:

谢谢    找了一本c    51 的书    main 确实要加 while(1)

作者: sddboy    时间: 2020-10-7 16:42
cheney03 发表于 2020-10-5 16:22
程序末尾写个while(1);不然程序会回到主程序重复执行。

的确如此   
作者: sddboy    时间: 2020-10-7 16:50
统一回复  :  
查了资料   单片机  main 函数 结尾 一般做法都要加死循环  

哎 要是一开始找本c 51的书看看 问题就早发现了        
作者: 七禾页    时间: 2020-10-8 19:10
死循环的话
for(unsigned char d;;d++)
{
     放你要死循环的程序
}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1