📄 delay.h
字号:
/*********************************************************************
延时函数
编译器:ICC-AVR v6.31A 日期: 12/04/08
目标芯片: M64
晶振频率:7.3728MHZ
*********************************************************************/
#ifndef __delay_h
#define __delay_h
void delay(void);
void delay_1ms(void);
void delay_us(unsigned char i);
void delay_10us(unsigned char i);
void delay_nms(unsigned char n);
/************************************
* 模拟串口专用延时函数 *
************************************/
void delay(void)
{
NOP();
NOP();
NOP();
NOP();
}
/*********************************************
* 微秒级精确延时(ICC) *
*********************************************/
/*======================================
微秒级精确延时函数,晶振8M:
Delay = 0.125 *((tt*4-1)+9)微秒
其中9包括了调用方的 r16 赋值 1t
rcall 3t nop 1t ret 4t
brne指令在当判断条件不成立时是单周期
最后一次判断只有1个周期,补一个nop
简化计算 = 0.5tt + 1 (us)
======================================*/
/*void delay_nus(uchar tt)
{
asm("_L2: subi R16,1");
asm(" nop");
asm(" brne _L2");
asm(" nop");
asm(" ret");
}*/
/****************************************
* 函数名称: void delay_us(uchar i)
* 函数功能:延时函数
* 晶振频率:7.3728MHZ
* 实际延时:
* delay_us(1); //2.71us
* delay_us(2); //3.53us
* delay_us(4); //5.15us
* delay_us(8); //8.41us
* delay_us(16); //14.92us
* delay_us(32); //27.94us
* delay_us(64); //53.98us
* delay_us(128); //106.07us
* delay_us(255); //209.42us
* delay_us(100); //83.28us
* _NOP(); //0.14us
****************************************/
void delay_us(unsigned char i)
{
while(i--);
}
/**************************************
10微秒延时函数
延时时间:i X 10 + 16 t。
CPU频率为:7.3728MHz。
**************************************/
void delay_10us(unsigned char i)
{
unsigned char j;
if (i == 0){return;}
while (i--)
{
for(j=0;j<10;j++)
{
NOP(); NOP(); NOP();
NOP(); NOP();
}
}
}
/****************************************************
毫秒级精确延时(ICC)
*********************** ****************************/
#define xtal 8 //以MHz为单位,不同的系统时钟要修改。
void delay_1ms(void)
{
unsigned int i;
for(i=0;i<(unsigned int)(xtal*143-2);i++);
}
////////////////////////////////////////////////////
/****************************************
* 函数名称: void delay_ms(uint i) *
* 函数功能:延时函数 *
* 晶振频率:7.3728MHZ *
* 实际延时:i mS *
****************************************/
void delay_nms(unsigned char n)
{
unsigned int a;
for(;n;n--)
{
for(a=1220;a;a--){;}
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -