//8个发光管来回流动,每个管亮1000ms
#include<reg52.h>
#include <intrins.h>
void delays(int m)
{
int x,y;
for(x=m;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
char temp;
int i;
P1=0xfe; //先点亮第一个灯
while(1)
{
for(i=0;i<8;i++)
{
delays(1000); //亮一秒
temp=_crol_(temp,1); //左移一位,直到移到最高位亮
P1=temp;
}
//此时P1=0111 1111
for(i=0;i<8;i++)
{
delays(1000);
temp=_cror_(temp,1); // 右移一位
P1=temp;
}
}
}
本意是想让8个发光管来回流动,但实际运行,第一个灯亮一秒,然后其余的灯都亮了,不知道哪里出错了,请大家赐教,不甚感激。
6 个解决方案
#1
temp没有初始化,数据是什么都不知道就移位,有什么用呢。
#2
移位的是temp,不是0xfe
#3
temp=_crol_(temp,1); //左移一位,直到移到最高位亮
P1=temp;
这里 _crol_这个函数们没有给出来啊,不知道是否有问题
其实你可以做一个数组还查表这样也很简单
P1=temp;
这里 _crol_这个函数们没有给出来啊,不知道是否有问题
其实你可以做一个数组还查表这样也很简单
#4
不好意思,呵呵_crol_这个函数没有用过之前,呵呵 所以不知道是库函数,见笑了。
确实是temp 没有在左移的之前初始化
确实是temp 没有在左移的之前初始化
#5
自己跟踪看看出了什么问题
#6
P1=0xfe; //先点亮第一个灯
这个应当是temp=0xfe吧,你那个temp识别不了
这个应当是temp=0xfe吧,你那个temp识别不了
#1
temp没有初始化,数据是什么都不知道就移位,有什么用呢。
#2
移位的是temp,不是0xfe
#3
temp=_crol_(temp,1); //左移一位,直到移到最高位亮
P1=temp;
这里 _crol_这个函数们没有给出来啊,不知道是否有问题
其实你可以做一个数组还查表这样也很简单
P1=temp;
这里 _crol_这个函数们没有给出来啊,不知道是否有问题
其实你可以做一个数组还查表这样也很简单
#4
不好意思,呵呵_crol_这个函数没有用过之前,呵呵 所以不知道是库函数,见笑了。
确实是temp 没有在左移的之前初始化
确实是temp 没有在左移的之前初始化
#5
自己跟踪看看出了什么问题
#6
P1=0xfe; //先点亮第一个灯
这个应当是temp=0xfe吧,你那个temp识别不了
这个应当是temp=0xfe吧,你那个temp识别不了