delay.c

来自「C51单片机常用延时子程序(可根据晶振振荡频率自己调整)」· C语言 代码 · 共 105 行

C
105
字号
#include <reg51.h>
sbit LED  =  P3^0;
/************************************************
//延时程序2个指令周期
//输入参数: 时间量	
//延时时间范围:10-510
//延时时间为:i*2(指令周期) 
************************************************/
void delay2us(unsigned char i)
{  
	i-=4;
	while(--i);
}
/************************************************
//延时程序10个指令周期
//输入参数: 时间量	
//延时时间范围:11-2551
//延时时间为:i*10(指令周期)+1
************************************************/
void delay10us(unsigned char i)
{  
	unsigned char j;
	i-=1;
	j=2;
	while(--j);
	do
	{	
		j=3;
		while(--j);
		j=1;
	}
	while(--i);
}
/************************************************
//延时程序25个指令周期
//输入参数: 时间量	
//延时时间范围:30-6380
//延时时间为:i*25(指令周期)+5
************************************************/
void delay25us(unsigned char i)
{  
	unsigned char j;
	do
	{	
		j=11;
		while(--j);
	}
	while(--i);
}
/************************************************
//延时程序100个指令周期
//输入参数: 时间量	
//延时时间范围:105-25505
//延时时间为:i*100(指令周期)+5
************************************************/
void delay100us(unsigned char i)
{  
	unsigned char j;
	do
	{	
		j=48;
		while(--j);
		j=1;
	}
	while(--i);
}
/************************************************
//延时程序1000个指令周期
//输入参数: 时间量	
//延时时间范围:1005-255005
//延时时间为:i*1000(指令周期)+5
************************************************/
void delay1ms(unsigned char i)
{  
	unsigned char j;
	do
	{	
		j=7;
		do{ j+=2;j--; }
		while(j);
		j=1;
	}
	while(--i);
}
void main(void)
{
	unsigned char a;
	delay1ms(20);
	delay1ms(21);
	delay1ms(1);
	delay1ms(255);
	for(a=200;a;a--)
	{
	delay2us(20);
	LED=!LED;
	}
	delay2us(20);
	delay2us(255);
	delay2us(50);
	for(a=201;a;a--)
	delay2us(20);
	for(a=100;a;a--)
	delay2us(21);

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?