?? timedelay.c
字號:
/************************************************************************
TIMEDELAY.C實現了六個級別的軟件延時,分別為:
void delay_us(); 微秒級延時程序
void delay_10us(unsigned int M); 10微秒級延時程序
void delay_100us(unsigned int M); 100微秒級延時程序
void delay_ms(unsigned int M); 毫秒級延時程序
void delay_10ms(unsigned int M); 10毫秒級延時程序
void delay_100ms(unsigned char M); 100毫秒級延時程序
void delay_s(unsigned char M); 秒級延時程序
TIMEDELAY.C中使用AVRStudio仿真,void delay_us()函數中定時為1us;
后續微秒級延時函數調用此函數實現定時。函數形參M用法如下:
如延時50us,調用delay_10us(5).注釋部分為誤差分析,M取值100時,
AVRStudio仿真中實際運行時間為TIME,ERROR為計算所得誤差。
************************************************************************/
#include <iom16v.h>
#include <macros.h>
void delay_us() //ERROR=0
{
unsigned char M;
NOP();
}
void delay_10us(unsigned int M) //M=100,TIME=995,ERROR=0.5%
{
while(M--)
{
unsigned int I=4;
do
{
delay_us();
}while(I--) ;
}
}
void delay_100us(unsigned int M) // M=100,TIME=10000.75,ERROR=0.0075%
{
while(M--);
{
unsigned int I=5286;
do
{
delay_us();
NOP();
}while(I--);
}
}
void delay_ms(unsigned int M) //M=100,TIME=99996.63,ERROR=0.00337%
{
while(M--)
{
unsigned char I=198;
unsigned char R=3;
do
{
delay_us();
delay_us();
delay_us();
delay_us();
} while(I--);
while(R--)
{
NOP();
}
NOP();
NOP();
NOP();
}
}
void delay_10ms(unsigned int M)
{
while(M--)
{
delay_ms(10);
}
}
void delay_100ms(unsigned int M)
{
while(M--)
{
delay_ms(100);
}
}
void delay_s(unsigned int M)
{
while(M--)
{
delay_ms(1000);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -