微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 一个非常奇怪的程序问题,就几句找不到原因

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

时间:10-02 整理:3721RD 点击:
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 应该亮的时间短些才对,怎么会不灭了呢,怎么也想不通。发个帖子各位看看,有没有人能给解释下。

#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了

在两个while里面死了,楼上的朋友解释的不错

在while() 那里出现了问题

                                                   

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top