问一个51单片机LED流水灯的延时问题
-------------------------------------------------------------------------------
* 实 验 名 : 跑马灯实验
* 实验说明 : LED灯做跑马灯左右移动
* 连接方式 : 见接线图
* 注 意 :
*******************************************************************************/
//--包含你要使用的头文件
#include <reg52.h>
//--声明全局函数--//
void Delay10ms(unsigned int c); //延时10ms
//--声明一个全局变量--//
unsigned char LED;
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{
unsigned char i;
//--首先赋值LED--//
LED = 0xFE;
while (1)
{
//--LED往左闪烁--//
for (i = 0 ;i < 7 ; i++)
{
//--将LED 的值赋给P2口--//
P0 = LED;
Delay10ms(50); //延时一下,为了让灯有持续点亮的时间
LED = LED << 1; // 将LED里面的值左移一位,然后重新赋给LED
LED = LED | 0x01; // 移位后,前面的位为高电平
}
//--LED向右显示--//
for (i = 0 ;i < 7 ; i++)
{
P0 = LED;
Delay10ms(50);
LED = LED >> 1; // 右移
LED = LED | 0x80; // 移位后,后面的位为高电平
}
}
}
/*******************************************************************************
* 函 数 名 : Delay10ms
* 函数功能 : 延时函数,延时10ms
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Delay10ms(unsigned int c) //误差 0us
{
unsigned char a, b;
//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
想问下延时函数为什么是循环嵌套,a=130,b=38是什么意思是,