51单片机流水灯,我自己写出来的程序,可烧进单片机后只有P1的亮着,不知道哪里错了,求大神指点

#include<reg52.h>
sbit p1=P0^1;
sbit p2=P0^2;
sbit p3=P0^3;
sbit p4=P0^4;
sbit p5=P0^5;
sbit p6=P0^6;
void mdelay(unsigned int tms)
{
unsigned int n,t;
for(t=tms;t>=0;t--)
for(n=0;n<=125;n++);
}
void main ()
{
While(1)
{
p1=0;
p2=1;
mdelay(100);
p1=1;
p2=0;
mdelay(100);
p2=1;
p3=0;
mdelay(100);
p3=1;
p4=0;
mdelay(100);
p4=1;
p5=0;
mdelay(100);
p5=1;
p6=0;
mdelay(100);
p6=1;
}
}

按你程序,P0口上所接的6个LED灯,应该是负极接在P0口的各个脚上,你的板子上的LED是这样接的吗?看程序没有问题。追问

板子上没错
找到原因了,我上面写了unsigned后面还写了等于号
大概是负值了
谢谢啦

追答

在哪写的,没看到啊。

追问

前面unsigned后面t>=

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-10-13
试过单独一个灯可以闪烁吗追问

试过了,可以的
不过试的时候是延时是10000ms
可如果是延时的原因的话,
可以告诉我怎么改吗

本回答被提问者采纳

...这是我写的代码。为什么结果是只有P1的第一个灯亮啊??大家帮帮我看...
1,char定义的变量在单片机c语言里可能被认为是带符号数据,所以你可以将char a改为 unsigned char a试试;2,_crol_(a,1);这个函数并不能改变a的值,将其改为a =_crol_(a,1);试试。拙见供参考。

51单片机我写的流水灯程序,效果是灯亮依次向左传递无限循环,想知道这...
不延迟,看不到你想要的效果。应该在 P0= x;之后加上delay()函数。

51单片机流水灯程序
led8 = 0;\/\/点亮剩余的灯 \/\/省略……while(1);}

51单片机我写的流水灯程序,效果是灯亮依次向左传递无限循环,想知道这...
每次都是第二个灯亮,不流动?是因为你的temp没有保存移位后的值.这样改改:for(i=1;i<8;i++){ temp<<=1;P0=temp;delay()}

52单片机,花样流水灯的代码哪里错了
数组定义错了

用51单片机写了一个流水灯程序,有一点问题,请高手解惑
单片机的流水灯程序,因为程序就这么写的,决定了流水灯左移7次,再右移7次,结束两个循环后,才能执行下面的while(!key),按键才有效,而在循环过程中,不执行while(!key),所以按键无效。下图画红框内的两个循环。要想按键随时有效,应该把两个移位函数_cror_,_crol_ 放在主程中,检测key也放在...

谁帮我看下51单片机流水灯怎么不能正常流水闪亮
你程序最后的运行结果是不是所有LED都亮了,如果是这样的话,就是可能你P0口没有加上拉电阻,单片机P0不加上拉电阻的话,是输出不了高电平的。还有,楼主以后问程序问题的同时,最好也把硬件电路图给出,这样大家也才好回答。。。希望可以帮到你。。。

单片机流水灯相关问题
花样流水灯的玩法,一个51单片机8位端口轮流输出16颗灯珠,

51单片机C程序实验LED灯:[2]左到右的流水灯
说明:实现一排灯从左到右依次一个一个点亮熄灭,实现流水灯 proteus电路图 元件清单:(分别是) 51单片机 电容 瓷片电容(也可用普通电容) 晶振 红色二极管 电阻 电路图的连接方法 程序清单 说明:本例有两种程序写法 第一种是入门级别比较基础的写法 先是依旧延时子程序,然后主程序利用直接赋值,与...

51单片机中如何用汇编语言编写流水灯
实现流水灯的三个方法: 第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。 第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间...

相似回答