微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 流水灯程序咨询

流水灯程序咨询

时间:10-02 整理:3721RD 点击:
#include<reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp;
//sbit D1=P1^0;
void delay (unit);
void main()
{
        while(1)
        {
                temp=0xfe;
                P2=temp;
                temp=_cror_(temp,1);
                delay(12000);
                P2=temp;
            //delay(100);
        }
}
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=100;y>0;y--);
}

这个是我自己编写的一个流水灯的程序,在STC90C516RD+ 上面跑。
但是怎么在烧录上去后不动呀。
麻烦给我看一下是哪里有问题
谢谢了

你前面声明延时函数时参数缺少了z,  ”void delay (unit z);“才对

这个少了Z没有问题吧

temp=0xfe;
P2=temp;
这两句放在while(1)上面吧

z没有定义吧。

这样就没问题了,我试过了,        temp=0xfe; P2=temp;要放在while(1){}外面,还有你宏定义的uint跟后面用到的unit不对应,我改过来了。
下面是可以的程序:
#include<reg51.h>
#include <intrins.h>
#define unit unsigned int
#define uchar unsigned char
uchar temp;
//sbit D1=P1^0;
void delay(unit z);
void main()
{                 
            temp=0xfe;
        P2=temp;
        while(1)
        {
               
                temp=_cror_(temp,1);
                delay(100);
                P2=temp;
            //delay(100);
        }
}
void delay(unit z)
{
        unit x,y;
        for(x=z;x>0;x--)
                for(y=100;y>0;y--);
}
       

还有你原来的延时太长了哦

不好意思,按照习惯应写成uint,不小心打成unit了,不过也是可以的

谢谢你   非常感谢!

哈哈,不用谢。

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

网站地图

Top