查看: 2328|回复: 5
|
不必为delay的coding再烦恼
[复制链接]
|
|
发表于 16-11-2009 07:55 PM
|
显示全部楼层
用CCS C 写的话,
delay_ms(100); // delay 100ms
delay_us(100); // delay 100us
纯delay, 是浪费MCU 资源, 尤其是长的delay。
这时, 一些人会善用Timer interrupt 来做delay。 |
|
|
|
|
|
|
|
楼主 |
发表于 17-11-2009 10:05 PM
|
显示全部楼层
就是上课没教CCS, 如果得空的话也想学学CCS。我想不会太难吧, 应为我学过C++。 |
|
|
|
|
|
|
|
发表于 18-11-2009 11:35 AM
|
显示全部楼层
原帖由 kslim_84 于 17-11-2009 10:05 PM 发表
就是上课没教CCS, 如果得空的话也想学学CCS。我想不会太难吧, 应为我学过C++。
CCS C 是最适合初学者学的。。他内建的了很多很多的function, 很多的Example code, 可以很快速的上手, 做出一些很棒的东西, 比如我到今天也还是在用CCS C。
但是, 要了解, 它可能不是最好的, 他不是ANSI C。。。你可能不能很详细的控制你的程序,因为用了大量的内建function, 你不能任意换去其他的C, 意思说, 它不是很portable。
学习心态, 和目的很重要。。。
比如有些人,并不是真正的要学, 只是要交功课而已, 有玩过就算, 懂皮毛就好。。那么CCS C 最适合他。
好像你学ASM, 是很好的, 你喜欢的话,做到你会很开心 。。。
但是, ASM 懂就好。。可能不需要很精通, 要精通要付出代价。。 当做一些简单的东西, 随便一个会CCS C的人就可以轻松的打败你。。
其他的C, 有C18, Hitech-C , 他们是ANSI C, 都是就没有内建什么function, 你完全要include 一些人家写便的Library, 不然就自己写, 功能强大, 因为你可以控制每一个细节。
因为CCS C 的不足, 而我现在做的东西也很复杂了, 如有USB, MiWi, Ethernet, 而最可恨的是CCS C 不支持Miwi, 我被逼要学C18 了。。 |
|
|
|
|
|
|
|
发表于 29-11-2009 02:51 AM
|
显示全部楼层
Pic基本上,大多是一个instruction就用一个instruction cycle。对于16f的pic,一个instruction cycle是你用的(crystal frequency )/4 的一周期所需的时间。只有在btfss,btfsc,incfsz 及decfsz的instruction才会用到两个instruction cycle的时间。用这个概念,你应当能明白那些delay code,并自己写你自己的。
基本上,较好的delay code,使用interrupt 来实现的。 |
|
|
|
|
|
|
|
楼主 |
发表于 5-12-2009 11:15 AM
|
显示全部楼层
言之有理!
最近我学了用timer来delay, 它可以更准确delay到我要的时间。
太神奇了。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|