|
发表于 2014-11-24 20:05:46
|
显示全部楼层
本帖最后由 我0621 于 2014-11-24 20:10 编辑
aoliwom 发表于 2014-11-5 22:28 
这个要顶,楼主开的好贴、谢谢。
还有,那位一串数字做网名的“高手”,如果您不想或不屑把我们菜鸟的问题 ...
我想他不是反对跑马灯本身,而是反对现在单片机入门教程教人入门的方式。上来就用C点亮跑马灯,固然可以让新手找到成就感,增强将单片机继续学下去的信心,但会使新手至少在包括学习期内的很长一段时间养成不好的思维定势。单片机片内资源极其有限,虽然实际开发大都用C,但过去学单片机往往从汇编入门,思维方面问题少点,而现在基本上没人愿意看汇编了,所以很多人看不懂调试,一旦有问题就立即上论坛“大神求助。。。。”云云。我不反对上手第一课用跑马灯,但建议楼主先声明跑马灯的缺点:1、跑马灯的目的是为了让你能点亮LED让单片机运行起来,但增强完信心后就忘了吧,以后你再也不会用到它了;2、跑马灯主要涉及的就两点,一个是延时,一个是IO口操作;3、对于延时程序最好能讲明白延时程序原理,不求能了解寄存器操作以达到精确延时的水平,至少能通过看调试信息来控制延时;4、提醒不能过分依赖延时,因为有了跑马灯定势,所以以后有需要等待的上来就延时,都知道单片机资源紧缺,一个延时就占用了几乎所有片内资源,1ms没问题人无法察觉,要是加起来需要延时一秒的地方,单片机就什么也不做就这样全速空转一秒?想象下你按一个按键等一秒后才有反应的情形。这些是单片机资源少实时性差的先天问题,需要养成正确的编程习惯才行。5、对IO口最好能说明不同口的驱动能力,别今天照葫芦画瓢用P1口点亮了,明天用P0口点不亮,后天换个驱动电流不同的LED还是不亮,就不知怎么办了;6、IO口操作上,最好习惯使用位操作LED = (0xfe << i),这是C51语言的特性,别来个循环,里面{LED = 0x11111110;delay;LED = 0x11111101;delay;LED = 0x11111011;delay;LED = 0x11110111;delay;LED = 0x11101111;delay;LED = 0x11011111;delay;LED = 0x10111111;delay;LED = 0x01111111;delay;}说白了,还是节省资源的问题,你想想后一种要多存储多少字节啊,明白点的可以比较下两者生成的汇编代码;7、有人说现在单片机存储资源都提高了,像STC动不动就64k、128k,我想说别提STC,除了学生,你在其他场合见过STC吗,实际可靠性。。。。8、如果你只是想玩玩,建议出门右拐,玩Arduino吧,其实就是封装好的AVR,编程更简单,功能更强大,资料多,比单片机容易上手的多。 |
评分
-
1
查看全部评分
-
|