用51单片机做LED流水灯,编译后是这样的
这是C代码,救哪里出问题了呀
#include <REGF51RC.H>
#include <INTRINS.H>
void Delay1ms(unsigned int xms) //@11.0592MHz
{
unsigned char i, j;
while(xms)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
while(1)
{
P2=0xFE;
Delay1ms(500);
P2=0xFD;
Delay1ms(500);
P2=0xFB;
Delay1ms(500);
P2=0xF7;
Delay1ms(500);
P2=0xEF;
Delay1ms(500);
P2=0xDF;
Delay1ms(500);
P2=0xBE;
Delay1ms(500);
P2=0x7F;
Delay1ms(500);
}
}
看下这个头文件的内容,TL2 出现重定义错误
操作LED前必须先了解LED是什么电平点亮,LED连接在什么引脚上,通常需要查找原理图。此处我的8个LED连接在P2口,为低电平点亮(因为灌电流比拉电流能力强)。
根据问题和参考资料,我发现以下问题可能导致编译错误:
#include <reg51.h>
和 #include <intrins.h>
。uint
和 uchar
,但这些类型并没有定义或声明。x
的声明错误:你在代码中使用了变量 x
,但没有声明它的数据类型。下面是修改后的代码:
#include <reg51.h>
#include <intrins.h>
unsigned int x;
unsigned char temp;
void main()
{
x = 50000;
temp = 0x01;
P1 = temp;
while(x--); //延时
while(1)
{
temp = _crol_(temp,1); //调用库函数
P1 = temp;
while(x--);
}
}
希望这能解决你的编译问题。如果还有其他问题,请提供更多详细信息。