独闷闷网

 找回密码
 立即注册
搜索
查看: 2607|回复: 0
打印 上一主题 下一主题
收起左侧

[原创] 为什么说用delay延时做模拟驱动时序是不二的选择?已解答。

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-14 14:37:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
阿龙-厦门:
这种时序要如何处理?也用定时器?


鸿哥--深圳:
这种驱动我一般用delay。你就用不同的延时时间来模拟高低电平就可以了。比如时间长的用delay(100),时间长短的用delay(1)。进入驱动程序前,先关闭定时中断,用delay做延时的好处是细分度高,时间可以微调。比如以下延时程序代码:
/* 注释七:
* delay_short(unsigned int uiDelayShort)是小延时函数,
* 专门用在时序驱动的小延时,一般uiDelayShort的数值取10左右,
* 最大一般也不超过100.本例为了解释此函数的特点,取值范围超过100。
* 此函数的特点是时间的细分度高,延时时间不宜过长。uiDelayShort数值
* 的大小就代表里面执行了多少条空指令的时间。数值越大,延时越长。
* 时间精度不要刻意去计算,感觉差不多就行。
*/
void delay_short(unsigned int uiDelayShort)
{
   unsigned int i;  
   for(i=0;i<uiDelayShort;i++)
   {
     ;   //一个分号相当于执行一条空语句
   }
}

阿龙-厦门:
delay也能做?

鸿哥--深圳:
delay在做驱动模拟时序时是不二的选择。

阿龙-厦门:
如果这个是单线通讯的发射端的话也用delay做吗?

鸿哥--深圳:
对。如果你嫌引导码那部分的时间太长,可以考虑用累计定时中断的方式。

阿龙-厦门:
累计定时中断?

鸿哥--深圳:
就是定时器延时。时间延时的三种方式,请看我《从业将近十年...程序框架》第2,3,4节。delay延时,累计主循环次数,累计定时中断次数是单片机常用的三种方式,我印象中也只有这三种。


乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-11-29 18:49 , Processed in 0.159592 second(s), 20 queries .

快速回复 返回顶部 返回列表