本帖最后由 sdzd 于 2013-12-25 10:05 编辑
单片机中,用C语言进行编程时,时延函数如下编写,似乎无法确切对应,假设晶振为8Mhz,问:(1)对应1微秒(us),方式一、方式二哪个更准确呢?
(2)1毫秒(ms)的书写方式‘M*143-2’能推算出到底是怎么推理得到的么?
期待高手详细指点,谢谢~!
方式一:
void Delay1us(int i)
{
unsigned char j;
for(;i-->0;)
{
for(j=5;j-->0;)
{}
}
}
方式二:
void delay_us(unsigned int
time)
{
unsigned int t;
for(t=time;t>0;t--)
{
asm("nop");
asm("nop");
}
}
ms时延:
void delay_ms( )
{
uint i
for(i=1;i<M*143-2;i++); //M=8mhz,晶振频率
}
{
unsigned char i;
for(i=0;i<0x0a;i++)
{
TH0=0x3c;
TL0=0xb0;
TR0=1;
while(!TF0);
TF0=0;
}
}
一周热门 更多>