标题:
单片机流水灯程序哪里错了啊?就是一直说LED=0xfe;和左移函数那里语法错误?
[打印本页]
作者:
好好先生gss
时间:
2019-2-9 11:40
标题:
单片机流水灯程序哪里错了啊?就是一直说LED=0xfe;和左移函数那里语法错误?
#include"reg52.h"
#include"intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define LED P2;
void delay(u16 i)
{
while(i--);
}
void main()
{
u8 i=0;
LED=0xfe;
delay(50000);
while(1)
{
delay(50000);
for (i=0;i<7;i++)
{
LED =_cror_(LED,1);
delay(50000);
}
for (i=0;i<7;i++)
{
LED=_cror_(LED,1);
delay(50000);
}
}
}
哪里错了啊就是一直说LED=0xfe;和左移函数那里语法错误
作者:
yaoji123
时间:
2019-2-10 09:20
cror是右移,crol是左移
作者:
angmall
时间:
2019-2-10 09:41
“_crol_” 与“_cror_”其实就是左右循环代码,其具有程序代码简单执行效率高的优点!
现实中的应用很多,例如我们经常见到的流水灯,广告牌,马路上的红绿灯 等。。。
下面是最基本的流水灯代码,流水灯移动的快慢可以改变“void delay()”子程序进行修改,例如:你选用的是20M的精震,你要改成一秒移动一格,那么你就将“for(x=50;x>0;x--)”和“for(y=100;y>0;y--)”的X值和Y值改成500! 改变方向更加简单,只需将“_crol_” 与“_cror_”的代码互换就可以了!
下面是程序代码“
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp;
uint temp1;
uchar i;
void delay();
void main()
{
temp=0xfe;
temp1=0x7f;
while(1)
{
for(i=0;i<8;i++)
{
P2=temp;
temp=_crol_(temp,1);
delay();
}
for(i=0;i<8;i++)
{
P2=temp1;
temp1=_cror_(temp1,1);
delay();
P2=temp;
}
}
}
void delay()
{
uint x,y;
for(x=50;x>0;x--)
for(y=100;y>0;y--);
}
复制代码
作者:
就你****
时间:
2019-2-10 10:33
一看就是答非所问,不能按楼主的意思来回答问题
作者:
w1179benp
时间:
2019-2-10 10:39
angmall 发表于 2019-2-10 09:41
“_crol_” 与“_cror_”其实就是左右循环代码,其具有程序代码简单执行效率高的优点!
现实中的应用很多 ...
第二个for中的P2=temp;无意义,可以不要
作者:
wulin
时间:
2019-2-11 16:20
本帖最后由 wulin 于 2019-2-12 10:33 编辑
//#define LED P2;这里多了一个分号。
//如果单向流水这样写就可以了。
#include"reg52.h"
#include"intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define LED P2
void delay(u16 i)
{
while(i--);
}
void main()
{
LED=0xfe;
delay(50000);
while(1)
{
LED=_cror_(LED,1);
delay(50000);
}
}
作者:
累不死的狗
时间:
2019-2-12 18:19
#include"reg52.h"
#include"intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define LED P2;
void delay(u16 i)
{
while(i--);
}
void main()
{
u8 i=0;
LED=0xfe;
delay(50000);
while(1)
{
delay(50000);
for (i=0;i<7;i++)
{
LED =_cror_(LED,1);
delay(50000);
}
for (i=0;i<7;i++)
{
LED=_cror_(LED,1);
delay(50000);
}
}
}
void delay(u16 i)
{
while(i--);
}
作者:
taotie
时间:
2019-2-16 13:46
将#define LED P2;后面的分号去掉~~~
作者:
taotie
时间:
2019-2-16 13:48
分号 分号 分号--------#define LED P2;
作者:
taotie
时间:
2019-2-16 13:50
分号——————#define LED P2;
将分号去掉就ok
作者:
bluecar
时间:
2019-2-16 14:06
你就将“for(x=50;x>0;x--)”和“for(y=100;y>0;y--)”的X值和Y值改成500! 改变方向更加简单,只需将“_crol_” 与“_cror_”的代码互换就可以了!
作者:
458194106
时间:
2020-8-6 23:02
#define LED P2; 多了分号. LED=_cror_(LED,1);有2个右移重复了,楼主应该是想写一个左移后右移
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1