Delay_ms延时函数详解
来源:互联网 发布:网络调试方法有哪些 编辑:程序博客网 时间:2024/06/06 19:42
void Delay_ms(unsigned int time){ unsigned char n; while(time>0) { for(n=0;n<187;++n) {asm("nop");}time--;}}
在流程中加入延时函数的原因是:单片机执行命令的速度太快(如果选择1MHz的晶振频率,AVR执行大多数指令的时间仅仅是1),任由单片机;连续改变端口输出的话,由于人眼辨别物体的速度跟不上,我们将看不到任何闪烁的效果,所以加入延时来放慢端口电平的变化速度
软件延时的基本原理是多次重复执行指令,比如1条指令执行需要1微妙的时间,那么执行一千条这个指令 就会消耗一毫秒的时间; 其中asm("nop");语句是插入汇编指令的写法。表示在for循环中插入一条nop指令,这是一个空操作指令;它的执行将消耗掉一个cpu周期,因为我们的目的就是延时,所以空操作就可以;
但是C语言书写的fof循环编译器会加入很多我们看不到的底层实现代码,它们的执行也需要时间,所以循环次数远小于1000;注意:软件延时只能用到要求不高的场合,因为软件延时会无端的浪费掉单片机的资源,延时也容易被打断就不准确了
阅读全文
0 0
- Delay_ms延时函数详解
- Systick 延时函数详解
- IOS延时执行函数详解
- AVR 中 delay 函数的调用注意事项!delay_ns delay_ms
- setsockopt函数详解及设置socket延时
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- STM32硬件调试过程遇中到Delay_ms()函数卡死的问题
- vba遇到转义字符时的更新替换
- c#串口数据接收处理大纲
- Count UVA
- KNN Algorithm
- 三张图读懂机器学习:基本概念、五大流派与九种常见算法
- Delay_ms延时函数详解
- 【常用排序算法】选择排序(Java实现)
- Python 练习实例4
- 鼠标勾选框,框内的物体变颜色
- Older Microsoft Runtimes for older software
- c#中的var关键字
- C#实现表达式求值
- 495. Teemo Attacking
- bash 命令(一)