c-在MikroC中创建250毫秒延迟



我想用MikroC创建250ms延迟函数。在下面的代码中,我不明白第二节的165是做什么的。

void MSDelay(unsigned int itime);  // this is the prototype
void MSDelay(unsigned int itime)  { 
unsigned int i;
unsigned char j;
for(i=0;i<itime;i++) {
for(j=0;j<165;j++); }
}
}

MikroC提供了内置函数Delay_ms,用于产生简单的阻塞软件延迟。

Delay_ms(250);

除非您有其他特定的约束,否则这应该有效。

你展示的方法有点像黑客。对于具有特定时钟的某些特定PIC,具有165次迭代的空for循环可能需要大约1ms,因此外循环通过将内环itime运行itime毫秒来简单地计数毫秒。

您不应该使用这样的方法,因为它高度特定于以特定时钟速度运行的特定PIC,而且还取决于编译器,而不是简单地优化整个循环。内置的延迟函数应该总是做正确的事情,无论你为哪个PIC构建。

Mikroc中已经提供了一个函数,它负责产生毫秒的延迟,即delay_ms((,程序中的嵌套循环什么都不做,但它会让微控制器忙碌几微秒或几毫秒,从而防止程序在没有完成循环的情况下进一步移动,而只是进入循环周期,微控制器只是用来执行特定的指令,如nop(在汇编中(,这些指令需要一些指令周期,需要时间来执行(与FSOC成反比(,因此在不改变程序中任何内容的情况下,微控制器会产生延迟。

相关内容

  • 没有找到相关文章

最新更新