找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用keil调试在delay处停止

[复制链接]
跳转到指定楼层
楼主
ID:102663 发表于 2016-1-10 17:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚接触单片机,师傅们帮看一下下面的小程序在keil调试时停在delay位置就不动了,不知道是什么原因?
编译创建目标文件也没有问题,下载进去就是实现不了循环移位,搞不清楚怎么回事?请师傅多指点一下!
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delay2(uint z)
{
uint x,y;
  for(x=100;x>0;x++)
   for(y=z;y>0;y++);
}
void main()
{
  uchar temp;
  temp=0xfe;
  P1=temp;
while(1)
{
  temp=_crol_(temp,1);
  delay2(600);        //keil调试停在这里就不动了
  P1=temp;
}
}

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

使用道具 举报

沙发
ID:84652 发表于 2016-1-10 18:57 | 只看该作者
x++和y++改成x--和y--试试。
回复

使用道具 举报

板凳
ID:102111 发表于 2016-1-10 19:17 | 只看该作者
根据这个程序,你的delay2延迟为:(65535-600)*3*(65535-100)*3= 4249021725 us 约等于38241s,你这程序必须卡在delay2这里啊
回复

使用道具 举报

地板
ID:102708 发表于 2016-1-10 23:51 | 只看该作者
Y++ X++改成Y-- X--已经是会导致程序溢出
回复

使用道具 举报

5#
ID:118686 发表于 2016-12-22 12:23 | 只看该作者
要实现什么功能?
回复

使用道具 举报

6#
ID:91114 发表于 2016-12-22 12:59 | 只看该作者
好好理解哈for语句,再看看你的逻辑是不是正确,for错了。
回复

使用道具 举报

7#
ID:111634 发表于 2016-12-22 15:17 | 只看该作者
本帖最后由 zl2168 于 2016-12-22 15:20 编辑

for(x=100;x>0;x++) for(y=z;y>0;y++);改为for(x=100;x>0;x--)for(y=z;y>0;y--);
或改为for(x=0;x<100;x++) for(y=0;y<z;y++);

回复

使用道具 举报

8#
ID:153199 发表于 2016-12-25 18:58 | 只看该作者
for语句有错误
回复

使用道具 举报

9#
ID:62803 发表于 2016-12-26 17:09 | 只看该作者
在这里for(x=100;x>0;x++)已经是死循环了
回复

使用道具 举报

10#
ID:157820 发表于 2016-12-26 17:30 | 只看该作者
程序运行到这里遇堵了才不往下运行了
回复

使用道具 举报

11#
ID:143803 发表于 2016-12-28 20:52 来自触屏版 | 只看该作者
第二个for错了,死循环,y大于0一直是成立的!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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