为什么我的程序在单片机上和proteus只是一直执行第一个while,而不转如下一个while语句啊

#include<reg51.h>#include<intrins.h>unsignedchari;voiddelayms(unsignedcharms)//延时子程序{... #include <reg51.h>
#include <intrins.h>
unsigned char i;
void delayms(unsigned char ms) // 延时子程序
{
while(ms--)
{
for(i = 0; i < 120; i++);
}
}

void main()
{
unsigned char LED;
LED = 0xfe;
i=3;
while(i)
{
P2=0xfe;
delayms(150);
P2=0xff;
delayms(150);
i--;
}
i=3;
while(i)
{
P2=0x7f;
delayms(150);
P2=0xff;
delayms(150);
i--;
}

}
展开
 我来答
thinpov
2012-02-13 · TA获得超过387个赞
知道小有建树答主
回答量:300
采纳率:0%
帮助的人:255万
展开全部
单从程序上看,出了main函数的里面的LED,被赋值了但是根本没有用到,设置了全局变量unsigned char。在proteus下仿真的时候,把选项设置好不过貌似你的主函数里面的没有使用死循环结构,这样你的程序运行运行一遍就停止了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
猫小蓦521
2012-02-13 · TA获得超过133个赞
知道答主
回答量:123
采纳率:0%
帮助的人:42万
展开全部
有没有搞错啊,楼主的主函数里有个i,延时函数里面还有一个i,两个数值不一样啊!!!!!,主函数里的i换成其他的字母就可以了…………KEIL里debug一下不就可以了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
379816764
2012-02-13
知道答主
回答量:45
采纳率:0%
帮助的人:18.4万
展开全部
void main()
是开始执行的开始,unsigned char LED;
LED = 0xfe;
i=3;
while(i)
{
P2=0xfe;
delayms(150);
P2=0xff;
delayms(150);
i--;
}
i=3;】不理解,把图贴出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式