jianhong_wu 发表于 2014-10-14 14:37:03

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

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


鸿哥--深圳:
这种驱动我一般用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延时,累计主循环次数,累计定时中断次数是单片机常用的三种方式,我印象中也只有这三种。


页: [1]
查看完整版本: 为什么说用delay延时做模拟驱动时序是不二的选择?已解答。