delay.h
来自「用SL811做USB主机的源码」· C头文件 代码 · 共 40 行
H
40 行
#include "comm_def.h"
/*======================================
微秒级精确延时函数,晶振8M:
Delay = 0.125 *((tt*4-1)+9)微秒
其中9包括了调用方的 r16 赋值 1t
rcall 3t nop 1t ret 4t
brne指令在当判断条件不成立时是单周期
最后一次判断只有1个周期,补一个nop
简化计算 = 0.5tt + 1 (us)
======================================*/
/*======================================
微秒级精确延时函数,晶振16M:
Delay = 0.0625 *((tt*4-1)+9)微秒
其中9包括了调用方的 r16 赋值 1t
rcall 3t nop 1t ret 4t
brne指令在当判断条件不成立时是单周期
最后一次判断只有1个周期,补一个nop
简化计算 = 0.25tt + 0.5 (us)
======================================*/
void delayus(unsigned char tt)
{
asm("_L2: subi R16,1");
asm(" nop")
asm(" brne _L2");
asm(" nop");
asm(" ret");
}
void delayms(unsigned int tt)
{
uint16 i,j;
for(j=0;j<tt;j++)
{
for(i=1;i<20;i++)
delayus(198); // delay 50us
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?