C51:无聊到写了16个延时函数---------2019年8月初的日子里

前言

老师发了辆小车,每组都发了。说是让我们练练,让车两轮平衡起来。驱动模块装上,MPU装上凑合能动,正反转和快慢都能,但是几天过去我还是没把MPU的使用弄明白。
于是,现在想写篇博客打发时间。


C51中 里有个 _nop_()函数,用Keil5.20测了下,每用一次是500ns的延时。

另外,如果写个没有参数的空函数的话,调用起来是2us的延时。

处于对这两条规律的信任,我打算写比较精确的延时函数。

//Delay.h
#ifndef _DELAY_H_
#define _DELAY_H_



#include 
#include 


void Delay2us();
void Delay5us();
void Delay10us();
void Delay20us();
void Delay50us();
void Delay100us();
void Delay200us();
void Delay500us();
void Delay1ms();
void Delay10ms();
void Delay20ms();
void Delay50ms();
void Delay100ms();
void Delay200ms();
void Delay500ms();
void Delay1s();



#endif

//Delay.c
#include "Delay.h"




void Delay2us(){

}



void Delay5us(){
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	
}
void Delay10us(){
	
	Delay5us();
	Delay2us();
	_nop_();
	_nop_();
	
}
void Delay20us(){
	Delay10us();
	Delay5us();
	Delay2us();
	_nop_();
	_nop_();
}
void Delay50us(){
	Delay20us();
	Delay20us();
	Delay5us();
	Delay2us();
	_nop_();
	_nop_();
}
void Delay100us(){
	Delay50us();
	Delay20us();
	Delay20us();
	Delay5us();
	Delay2us();
	_nop_();
	_nop_();
	
}
void Delay200us(){
	Delay100us();
	Delay50us();
	Delay20us();
	Delay20us();
	Delay5us();
	Delay2us();
	_nop_();
	_nop_();
}
void Delay500us(){
	Delay200us();
	Delay200us();
	Delay50us();
	Delay20us();
	Delay20us();
	Delay5us();
	Delay2us();
	_nop_();
	_nop_();
}
void Delay1ms(){
	Delay500us();
	Delay200us();
	Delay200us();
	Delay50us();
	Delay20us();
	Delay20us();
	Delay5us();
	Delay2us();
	_nop_();
	_nop_();
}


void Delay10ms(){
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay500us();
	Delay200us();
	Delay200us();
	Delay50us();
	Delay20us();
	Delay20us();
	Delay5us();
	Delay2us();
	_nop_();
	_nop_();
}

void Delay20ms(){
	Delay10ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay500us();
	Delay200us();
	Delay200us();
	Delay50us();
	Delay20us();
	Delay20us();
	Delay5us();
	Delay2us();
	_nop_();
	_nop_();
}
void Delay50ms(){
	Delay20ms();
	Delay20ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay500us();
	Delay200us();
	Delay200us();
	Delay50us();
	Delay20us();
	Delay20us();
	Delay5us();
	Delay2us();
	_nop_();
	_nop_();
}
void Delay100ms(){
	Delay50ms();
	Delay20ms();
	Delay20ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay500us();
	Delay200us();
	Delay200us();
	Delay50us();
	Delay20us();
	Delay20us();
	Delay5us();
	Delay2us();
	_nop_();
	_nop_();
}

void Delay200ms(){
	Delay100ms();
	Delay50ms();
	Delay20ms();
	Delay20ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay500us();
	Delay200us();
	Delay200us();
	Delay50us();
	Delay20us();
	Delay20us();
	Delay5us();
	Delay2us();
	_nop_();
	_nop_();


}
void Delay500ms(){
	Delay200ms();
	Delay200ms();
	Delay50ms();
	Delay20ms();
	Delay20ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay500us();
	Delay200us();
	Delay200us();
	Delay50us();
	Delay20us();
	Delay20us();
	Delay5us();
	Delay2us();
	_nop_();
	_nop_();

}
void Delay1s(){
	Delay500ms();
	Delay200ms();
	Delay200ms();
	Delay50ms();
	Delay10ms();
	Delay10ms();
	Delay10ms();
	Delay10ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay1ms();
	Delay500us();
	Delay200us();
	Delay200us();
	Delay50us();
	Delay20us();
	Delay20us();
	Delay5us();
	Delay2us();
	_nop_();
	_nop_();
}



你可能感兴趣的:(单片机)