标题: 用普中科技单片机学习板的流水灯控制问题? [打印本页]

作者: stc11985    时间: 2018-12-8 16:04
标题: 用普中科技单片机学习板的流水灯控制问题?
为什么前面的左移函数就执行了一次?后面就一直执行最后的语句了 ?
#include "reg52.h"
         #include<intrins.h>
         #define uint unsigned int
         #define uchar unsigned char

void delay(uint i)
{
   while(i--);
}

            uchar i;
  void main()
  {

     while(1)
         {
           P2=0xfe;
          delay(50000);
           for(i=0;i<7;i++)
           {
           P2=_crol_(P2,2);
           delay(50000);
           }
           P2=0x7f;
           delay(50000);
           for(i=0;i<7;i++)
           {
                   P2=_cror_(P2,1);
                delay(50000);
           }
         }
  }


作者: HC6800-ES-V2.0    时间: 2018-12-8 20:42
你的程序打错了啊啊啊啊
           uchar i;
  void main()
看看看看,你的程序
应该这样吧——————
  void main()
{
           uchar i;

作者: stc11985    时间: 2018-12-29 21:21
HC6800-ES-V2.0 发表于 2018-12-8 20:42
你的程序打错了啊啊啊啊
           uchar i;
  void main()

运行没问题啊

作者: shuisheng    时间: 2018-12-29 22:05
你这个程式有点意思,我用你的代码仿真试了一下,前面是跳格向下移7次,后面是紧跟上移7次,如此循环下去..........不过是写的不够严谨!uchar i;不放在任何函数中时是全局变量,就是说你delay中局部变量 i 与main中全局变量 i 发生了中突,仿真可能看不出来,但实际的51单片机可能就会出错。一要么同上面说的将
uchar i;放入main中,使其成局部变量,要么将两个变量不用同一个 i .void delay(uint i)中的 i 改成 t 也行啊!只要变量不中突,单片机是能正常运行的
作者: 哇哈哈964    时间: 2018-12-30 10:41
你把I定义到主函数外面去了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1