找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2212|回复: 9
打印 上一主题 下一主题
收起左侧

单片机 重复执行代码

[复制链接]
跳转到指定楼层
楼主


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


可程序里 没有 死循环,只有一个 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;         
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:147710 发表于 2020-10-5 13:12 | 只看该作者
如图修改:



回复

使用道具 举报

板凳
ID:342954 发表于 2020-10-5 14:35 | 只看该作者
把return 0  不要改成FOR();;
回复

使用道具 举报

地板
ID:342954 发表于 2020-10-5 14:37 | 只看该作者
把return 0 不要,改成for(;;){}
回复

使用道具 举报

5#
ID:743654 发表于 2020-10-5 16:22 | 只看该作者
程序末尾写个while(1);不然程序会回到主程序重复执行。
回复

使用道具 举报

6#
ID:453974 发表于 2020-10-7 08:20 | 只看该作者
把return 0换成while(1);
回复

使用道具 举报

7#
ID:187947 发表于 2020-10-7 16:41 | 只看该作者

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

使用道具 举报

8#
ID:187947 发表于 2020-10-7 16:42 | 只看该作者
cheney03 发表于 2020-10-5 16:22
程序末尾写个while(1);不然程序会回到主程序重复执行。

的确如此   
回复

使用道具 举报

9#
ID:187947 发表于 2020-10-7 16:50 | 只看该作者
统一回复  :  
查了资料   单片机  main 函数 结尾 一般做法都要加死循环  

哎 要是一开始找本c 51的书看看 问题就早发现了        
回复

使用道具 举报

10#
ID:808634 发表于 2020-10-8 19:10 | 只看该作者
死循环的话
for(unsigned char d;;d++)
{
     放你要死循环的程序
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表