这个流水灯居然不行?

2019-07-16 05:04发布

#include<reg52.h>  
void delay(void)
{
unsigned int n;
  for(n=0;n<60000;n++)      ;
}
void main(void)
{  
  unsigned char i;
  while(1)
  {
    P0=0xff;
  delay();
  for(i=0;i<8;i++)//设置循环次数为8
   {
     P0=P0>>1;   //每次循环P0的各二进位右移1位,高位补0
   delay();    //调用延时函数
   }
   }  
}
程序来自论坛内《十天学会单片机实例100》的实例18  我只把P1口改为了P2口  试验时只有最高位那个灯闪烁  但是做软件仿真时 发现在第一个循环8次内 P0的值会发生一位变化  在第二次while循环内 P0赋为0xff,接着for循环一次 P0就变成0x00了,之后一直为0x00,直到重新进行下一个while循环
1.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
随喜_寻满世界
1楼-- · 2019-07-16 23:18
我一般是用P0++ 自动循环,比楼上的好
zzwan
2楼-- · 2019-07-17 03:44
这个跟MCU与开发环境有关系
zhlndsq-484
3楼-- · 2019-07-17 06:10
 精彩回答 2  元偷偷看……
骑士城堡
4楼-- · 2019-07-17 12:08
zzwan 发表于 2012-7-25 19:53
这个跟MCU与开发环境有关系

不好意思  请你将具体一点
oyl
5楼-- · 2019-07-17 14:17
楼主要继续加油啊。
骑士城堡
6楼-- · 2019-07-17 17:11
oyl 发表于 2012-7-26 10:08
楼主要继续加油啊。

那必须的  活到老学到老

一周热门 更多>