如何解决在 MikroC 中创建 250 毫秒的延迟
我希望使用 MikroC 创建 250 毫秒延迟功能。在下面的代码中,我不明白第二部分中的 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
循环可能需要大约 1 毫秒,因此外循环通过运行内循环 itime
次 itime
毫秒来简单地计算毫秒。
您不应该使用这样的方法,因为它高度特定于以特定时钟速度运行的特定 PIC,并且还取决于编译器,而不是简单地优化整个循环。无论您为哪个 PIC 构建,内置延迟功能都应该始终做正确的事情。
,Mikroc 中已经提供了一个函数,它负责产生毫秒级的延迟,即 delay_ms() ,程序中的嵌套循环什么都不做,但它使微控制器忙碌了一些微秒或毫秒,从而防止程序在没有完成循环的情况下继续前进,而只是进入循环周期,微控制器只是执行特定指令,如 nop(在汇编中),这些指令需要一些指令周期,需要时间来执行(与 FSOC 成反比),因此无需更改程序中的任何内容,微控制器就会产生延迟。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。