这个延时如何实现延时1秒的

这个延时如何实现延时1秒的


#include 
#define uint unsigned int 
sbit led1 = P2^0;//声明单片机的第一位
uint i,j;
void main()
{
    while(1)
    {
        led1=0;//点亮第一个LED
        for(i = 1000;i>0;i--)//延时
            for(j = 110;j>0;j--);
                led1 = 1;
        for(i = 1000;i>0;i--)//延时
            for(j = 110;j>0;j--);
    }

}

for(i = 1000;i>0;i--)//延时
for(j = 110;j>0;j--);
这个双重for循环一共执行了1000*110=110000次
也就是耗费了110000个时钟周期
那么它乘以你单片机的主频就是耗费的时间
单片机主频不同,你延时的次数肯定也不同
之所以要套两层,而不直接写一个for(int i=0;i<110000;i++)
是因为内层已经整定好了,循环110次刚好1ms,外层1000次就是1秒,这样比较容易修改参数,而不用每次都去拿主频计算

sleep(1000)

#include<windows.h>

#include<windows.h>
#include <REGX52.H>
#define uint unsigned int 
sbit led1 = P2^0;//声明单片机的第一位
uint i,j;
void main()
{
    while(1)
    {
        led1=0;//点亮第一个LED
        for(i = 1000;i>0;i--)//延时
            for(j = 110;j>0;j--);
                led1 = 1;
        for(i = 1000;i>0;i--)//延时
            for(j = 110;j>0;j--);
        sleep(1000);
    }
 
}

sleep(1000)中1000才是一秒!

加个头文件:

#include<windows.h>
sleep(1000);

数字单位:毫秒