微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 MikroC 中创建 250 毫秒的延迟

如何解决在 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 毫秒,因此外循环通过运行内循环 itimeitime 毫秒来简单地计算毫秒。

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

,

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?