本帖最后由 123478288 于 2012-9-20 20:01 编辑
一楼我自己占了
![](https://staticbbs.elecfans.com/static/image/smiley/default/titter.gif)
更新编程思路、仿真图。
更新程序思路,给一个变量设定一个固定值,这个值是自行车轮子的周长。为了精确我用CM为单位。
磁铁安装在轮子的钢线条上,轮子没转一圈,霍尔感应器感应有一个下降沿跳变,用这个跳变使单片机进入外部中断0。
中断里面开定时器T0,定时器T0设定1ms,设定一个变量t记录时间。当下一次感应的时候,把t的值拿出来赋给t1,并把t清零。t1就是上一圈的时间。
然后以这个时间为依据,算出速度不变时每秒钟走的路程,作为瞬时速度。如果速度一直在变的话,瞬时速度也是一直变的。
平均速度就是总路程除以总时间,这个就不必那么精确了。
这是我主要的编程思路,给大家分享一下。
回答55楼 3htech
“LZ,您说的“这里再感慨一下初学者真的不要用汇编”这句话,我不是很赞同啊,毕竟用C编程之后,编译器编译成汇编代码。
很多的Bug都是在这个转换中出现的。如果不了解汇编,您可能都不能定位这些Bug。
一个我个人认为比较经典的Bug就是(使用C编写):
uint16型变量i,即i是16位的
定时中断中,对i进行++或--操作;
在main函数中中对i和某个立即数进行比较,成立则做一些事情。
这里面就隐藏了一个Bug。”
“你说的这个问题我倒是没有遇到过,不过感谢你提出来,如果以后遇到的话能有个处理思路。
我的意思并不是说C语言一定比汇编好,我知道汇编的执行效率比C高很多。不过,问题在于,我刚开始学单片机的时候,老师教的是汇编,看着那一行行的指令,头都大,很难看得懂。对于初学者来说汇编的可读性太差。而C语言在这个方面就强很多。当然,学精以后用什么编当然是因人而异。”
有一些同学问原理图,这个我一开始就没画,只有protues仿真图,焊板子的时候我就一边想一边画的。。。。截个图给大家看看吧。
有同学问有没有流程图,这个真帮不上忙了,我自己是从来不画的,有心的人还是自己读下程序吧,我编程的时候写了很多注释语句,还是比较好读的。