用AT89C51单片机控制8个Led的流水灯的C程序看不懂

用的是AT89C51

#include<reg51.h>
#include<intrins.h>
void Delay10ms(unsigned int c);
main()
{
unsigned int LED;
LED=0xfe;
while(1)
{
P2=LED;
Delay10ms(50);
LED=LED<<1;
if (P2==0x00)
{
LED=0xff;
}
}
}

void Delay10ms(unsigned int c)
{
unsigned char a, b;
for(;c>0;c--)
{
for(b=38;b>0;b--)
{
for(a=130;a>0;a--);
}
}
}

#include<reg51.h> 包含单片机专用头文件
#include<intrins.h> 这个是什么俺也不知道,但这个程序不需要这个头文件
void Delay10ms(unsigned int c); 自定义的延时函数声明
main() 主函数
{
unsigned int LED; 建立一个数值型变量,变量名 LED
LED=0xfe; 给这个变量赋值,0xfe 换成二进制数为 1111 1110
while(1) 主循环
{
P2=LED; 点亮发光管,即先点亮右边的第一个
Delay10ms(50); 延时一段时间
LED=LED<<1; 点亮的发光管,向左移动一位
if (P2==0x00) 判断是否8个全部点亮了
{
LED=0xff; 如果全部点亮,则将全部发光管熄灭
}
}
}

void Delay10ms(unsigned int c)延时函数主程序
{
unsigned char a, b;建立两个变量 a b
for(;c>0;c--)循环语句,不断改变变量数值,已达到延时目的
{
for(b=38;b>0;b--)
{
for(a=130;a>0;a--);
}
}
}

给你翻译了,希望能帮到你
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-18
如果你连这个都看不懂 建议放弃
第2个回答  2014-03-21

    理解就OK了 再仔细分析哦~~

相似回答