这个延时如何实现延时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);
数字单位:毫秒