delay_7.37m._c

来自「网卡驱动程序」· _C 代码 · 共 65 行

_C
65
字号
#include <macros.h>
#include "Delay_7.37M.h"

/*-----------------------------------------------------------------------
延时函数
系统时钟:7.3728M
-----------------------------------------------------------------------*/
void Delay_1us(void)     //1us+
{
   asm("nop");
}

void Delay_nus(unsigned int n)       //N us延时函数
{
   unsigned int i=0;
   while (n--)
      Delay_1us();
   
}  

//通过int型计数的N us延时函数
//延时计算:t_delay = 6 * nt + 14t
//延时范围:n>=0, n<=65535 (即14t - 393224t )  //8M时,是1.5us - 49153us
void Delay_nus_Count(unsigned int n)    //0.75us+
{ 
   while(n) 
      n--;    
} 


void Delay_1ms(void)                 //1ms延时函数
{
   unsigned int i;
   for (i=0;i<1052;i++); 
}
  
void Delay_nms(unsigned int n)       //N ms延时函数
{
   unsigned int i=0;
   for (i=0;i<n;i++)
   Delay_1ms();
}

//精确1ms延时函数
//延时时间计算: t_delay= 3t + 1t + 1t + n*6t + ( (int(n/256) + 1) * 2t -1t) + 4t
//即: t_delay= n*6t + int(n/128)t + 10t 
//计数计算(1ms):n= (1000 * f - 10) * 128 / 769 
//              n= (1000 * 8 -10 ) * 128 /769 = 1329.93 (取整为n=1330, 再把1330去验证延时时间t_delay的计算)
void Delay_1ms_Preci(void)                 
{
   unsigned int i;
   i=1226;  //7.3728M
   while (i--) 
      ;
}

//N ms精确延时函数
void Delay_nms_Preci(unsigned int n)       
{
   unsigned int i=0;
   for (i=0;i<n;i++)
   Delay_1ms_Preci();
}

⌨️ 快捷键说明

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