Chinaunix首页 | 论坛 | 博客
  • 博客访问: 962577
  • 博文数量: 175
  • 博客积分: 2788
  • 博客等级: 少校
  • 技术积分: 2060
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-25 12:25
个人简介

知之者不如好之,好之者不如乐之

文章分类

全部博文(175)

文章存档

2016年(1)

2015年(20)

2014年(8)

2013年(68)

2012年(16)

2011年(35)

2010年(1)

2008年(26)

分类: IT业界

2012-03-26 19:44:50

读者gkxlff 在3月23日的来信如下:

 

尊敬的老杨同志

您好!

很高兴这么快就收到了您的回信! 

我一般是网购,书从卓越网上买的。

。。。。。。

非常感谢您推荐的那几本好书,其实我也粗略读过郭老师及林锐老师写的书。一般读的是国外的书,国内的也读过,但好多自学起来没什么兴趣,大都像数据手册。

 

从您写书的定位来看,我觉得写得非常好了!

首先篇幅结构安排就很好,对于有单片机和C语言基础的读者来说,能很好的快速提高。书中一开始就把结构化、模块化编程介绍给读者,这对于硬件人员来说,是个很好的事。还有静态变量、数组、结构,这些好东西您也一一介绍了。

其次读您的书就是在跟您交流,语言生动,读起来感觉特别亲切,好比在跟您学降龙十八掌,感觉您在一掌一掌的教。若不认真地读,就对不起您所花的心血。

另外我希望您能多教几掌,关于调试方法及技巧,毕竟调试很重要,好的程序要经过无数次调试,许多时候,知识是在调试的乐趣中学到的。

看门狗、EEPROMUSB接口、TCP/IP接口、485、各种工业总线的硬件与软件设计也重要。其次希望能看到更多关于,嵌入式系统算法设计、数据结构方面的内容。当然,这些也许能单独出书了,嘿嘿。

还有就是书中关于实物的介绍,若是把它们安排在最前面,能让者先有个感性认识,然后再讲理论方面的知识。

以上几点愚见,见笑了。    

读您的书使我对单片机有了一个更好地认识:

 

单片机的工作原理,硬件部分是《电子技术基础》数字部分的升华,是一个复杂的数字电路。用汇编语言编程能很好地了解它的工作原理,因为那直接在跟硬件打交道,编程时要假设自己就是单片机。

 

您说,单片机的编程就是对其寄存器的控制

通过改变特殊功能寄存器的值,来改变电路,从而改变功能。单片机的可编程,实际上是能改变这些寄存器的值。从数字电路的原理来看,其它数字器件其实也这样,对吗?
    C
语言对单片机编程,其实就是多了一些单片机的寄存器变量,通过对这些变量的操作来实现功能。其中用户自定义的变量,对应单片机中的RAM128位。

所以说在使用一种微控制器的时候,得先了解一下它的体系结构,看看Datasheet有哪些寄存器及如何使用。

因为寄存器是:

软硬件之间的接口,内外部之间的接口,芯片设计工程师和应用工程师之间的接口。这样应用工程师就不需要关心内部电路结构,可以集中精力放在应用上。

 

C语言编程描述怎么解决问题,至于电路怎样实现的我们不用关心。 C时单片机好聪明,竟然懂得高级语言,就能很好的谈谈情,恋恋爱,想怎么表白,就怎么表白。

但我们还是在对硬件操作,还是操作机器,不过我听说比尔.盖茨让它变聪明了,操作系统解决了硬件管理问题,使用我们使用起来更加抽象。

 

汇编则只懂指令系统,跟机器打交道,得用它能懂的语言,而我们不是机器,又要站在它的角度去思考,明显有困难。编程时不仅要知道怎么解决待解决的问题,还得用汇编语言告诉单片机让它来怎么实现。要让笨东西变聪明。

(实际上做了两部分工作,1解决问题,2用汇编实现)

 

我也正在过渡到AVR,也在读您写的《Protues-ATmega8仿真》。

再次感谢您无私的奉献!!

 

最后,第17章,简易万年历,数据是读取了,LED好像不能正常显示。

P343 两处  _nop_(),_nop_();   是不是印刷错误   _nop_(); _nop_();  

 

单片机爱好者   gkxlff

祝:

工作顺利,生活愉快!



我的回信:

亲爱的读者,您好!


 

很感谢您对我的书评价这么高,您的评价基本说中了我写书的思路和要点。这本书不敢说是很好,但的确是我单独花了半年多的心血来写的,也总结了我近些年的工作经验、学习过程。国内的书大多是在校老师或公司出版的,大多的目的在职称或开发板,所以鲜见优者,不过像林锐、郭天祥、侯捷、程序匠人。。。。。很多老师的书还都是值得拜读的。

您在来信中提到,调试方法及技巧。有关调试方法,其实我在书中也浅显的讲了些,例如P37的“联合调试”、P57的“调试分析”等。有关调试的技巧,还是主要靠自己平时经验的总结。我很看重良好习惯的培养,这也是我在书中一再强调的。现在我写简单的代码(几千行)大多不需要怎么调试,测试出问题,马上就能想到问题出在哪个模块,大多去看代码就能发现问题。

另外,你提到看门狗、EEPROMUSB接口、TCP/IP接口等,51单片机大多没有内置看门狗,所以在书中没讲到,但就其原理,也就是一个定时器而已,只是一个特殊功能的定时器。EEPROM我们就IICSPI总线倒是提到了一点。其他的都是比较深的内容,都要有专业的教材来写。例如USB接口、TCP/IP接口,这都是可以单独写一本教材的。而且老杨水平也是有限的,带读者走进单片机的大门,这个能力还可以,但要提高为一个真正的“工程师”,老杨是不敢说这样的大话的。

关于书中的实物,我大多在用到的章节,先放置一些图片,然后做的介绍,还是没理解到你的意思,希望再来信时进一步描述你的想法。如果能更好的安排内容的排版,帮助读者,是我高兴看到的。

简单来说说,单片机的编程可以看作是对其寄存器的控制。但我并不希望我的读者就认识到此,还应该有更深入的认识。对寄存器的控制只是了解了怎么去操作单片机,但作为一个真正的嵌入式开发者,我们还要知道为什么要去这样操作,其内部原理是怎样的,因而我上封信推荐您找两本“老古董”来看看,当然直接看数据手册也可以了解单片机的内部结构。

我希望我的读者能轻松的走进单片机的大门,然后是进一步把一款单片机真正的吃透,不管是51AVR还是PIC,但一定要真正的吃透一款单片机,然后再进一步提高,基于ARMDSP等做嵌入式设计就容易走的深、走的稳。

如果临时用一款单片机,如果它的数据手册写的比较好的话,有了数据手册,我们几乎说就可以用来做电路设计、程序设计了。

    低端的单片机像51PIC等,大多都是在上面直接写程序的,而高级一些的如AVRARM,我们会用到BootLoad,也就是写一些基本的程序来引导系统,这样可以方便系统的基本环境测试和系统升级。我的电脑中的BIOS系统就是这个功能。

进一步区分的话,ARM通常又会和Linux等嵌入式系统结合来用。这就有了三层结构,BootLoad用来引导系统,操作系统做底层操作,然后才是我们的应用软件。这样,我们就不用关心底层操作了,直接写应用程序就可以了。

不过在嵌入式系统写应用程序,就没太大的嵌入式开发的意义了,和在电脑上写软件几乎一样了。作为一个嵌入式设计者,我们要追求BootLoad的设计和内置操作系统的移植、裁剪。这也是国内稀缺的人才。

说到BootLoad和嵌入式系统就要说到汇编语言了,这两者都要用到汇编语言。所以说,真正的嵌入式设计人员还是要懂汇编的。那我的书中为什么没讲到呢?这是因为我写这本书的目的是入门级的,有了学习单片机的兴趣,再去学汇编,也就不会感觉那么枯燥了。

就盖茨和他的微软,我并不是特别欣赏,我更欣赏乔布斯和他的苹果。我现在的手机是Windows Mobile 6.1系统,感觉连内存管理都没做好,像他的Windows操作系统一样:烂!乔布斯设计苹果的理念是简单、完美。这是一个设计者应该追求的,虽然在做产品时也要为其商业价值让步。盖茨是个很好的销售者,但乔布斯不仅把其产品高价销售了,而且其能引领电子业这么多年,其理念是更可贵的。建议你可以读一下《乔布斯传》,老外写的那本。

 

P343 两处  _nop_(),_nop_(); 

这两处不算错误,是我的编写习惯。在C语言中是可以这样写的。

 

老杨




阅读(1078) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~