一个非常奇怪的程序问题,就几句找不到原因

2019-07-15 21:35发布

STC89C52R 的单片机,买的学习板,没问题。P0 口接LED,程序如下:
  1. #include <reg52.h>

  2. main()
  3. {
  4.   unsigned int x, y;
  5.   while(1)
  6.   {
  7.     P0 = 0x2d;
  8.     for(x=0;x<1000;x++)for(y=0;y<1000;y++);
  9.     P0 = 0x1b;
  10.     while(x--)while(y--);
  11.   }
  12. }
复制代码本意是要看0X2D 和 0X1B 是否对应 2578 和 3678 。写了这个简单的程序让两种亮法交替。没想到结果,3678  亮后就不变了,一直亮着。无语啊,总觉得 3678 应该亮的时间短些才对,怎么会不灭了呢,怎么也想不通。发个帖子各位看看,有没有人能给解释下。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
jiakuo25
1楼-- · 2019-07-16 03:13
#include <reg52.h>


main()

{

  unsigned int x, y;

  while(1)

  {

    P0 = 0x2d;

    for(x=0;x<1000;x++)for(y=0;y<1000;y++);

    P0 = 0x1b;

    while(x--)
        {
                y=1000;
                while(y--);
        }

  }

}

这样就行了,y到0后要重新赋值才行,不然的话再减1,就成65535了
愤怒的企鹅
2楼-- · 2019-07-16 03:28
在两个while里面死了,楼上的朋友解释的不错
ST_Lover
3楼-- · 2019-07-16 09:07
在while() 那里出现了问题
zhu9611
4楼-- · 2019-07-16 15:04
                                                   

一周热门 更多>