本帖最后由 吴坚鸿 于 2016-1-17 11:32 编辑
前言:
前言_pdf文件.pdf
(30.44 KB, 下载次数: 729)
2016-1-17 11:30 上传
点击文件名下载附件
大家好,我叫吴坚鸿,以前一直想写两本书,一本讲单片机入门基础,一本讲单片机程序框架。现在发现,单片机基础和程序框架并没有明显的分水岭,基础中有框架,框架中有基础,应该合二为一,读起来才会连贯舒畅。所以我决定中止当前已写到55节的
《从业十年,教你单片机入门基础》连载帖,新开此连载帖。
再提一下我2014年写的
《从业将近十年,手把手教你单片机程序框架》,一方面受到很多网友的好评,另一方面也有一些热心网友提出了宝贵的意见,我今天看来,确实还有一些可待改进的地方。本来计划在2017年重写《……单片机程序框架》那个老帖,现在看来不用那么折腾了,只要把《……单片机程序框架》的内容也整合到此新帖里就可以了,这样对我也比较省事。我的时间计划是,先花4年时间写一个初稿,然后再花2年时间重写一次,最后再花1年时间整理成书,整个过程大概7年时间左右,今年是2016年,估计到2023年左右《从单片机基础到程序框架》的新书就可以出版了。
感谢各位朋友的支持。
第八节:把.hex机器码程序烧录到单片机的操作流程。
【8.1 烧录程序的本质。】
“烧录”是比较专业的说法,很多初学者第一次听这词还以为跟火有关,莫名其妙的“烧录”是啥意思?烧录其实就是下载,烧录程序就是下载程序。下载好理解了吧,下载电影,下载歌曲,让播放器去播放。此处的下载程序跟下载歌曲的“下载”完全是一回事。有人会问,下载歌曲到手机,手机是成品,下载程序到单片机,单片机也是成品?新买回来的单片机不是一张白纸的电子元件吗?其实,新买回来的单片机就是一个成品,它不是白纸,它内部已经嵌入了一段系统程序,这个系统程序就像你刚买回来的手机就帮你预装了安卓系统一样,只是它的用户存储区是空白的。比如手机,你往这个存储区里存电影就可以看电影,存音乐就可以听音乐。比如单片机,你往这个存储区存不同的程序就可以让单片机做不同的事。而预装在新单片机内部的系统程序就是专门负责跟外部接口通讯,同时负责把hex格式的程序代码存放在单片机内部正确的位置,这个就是烧录程序(下载程序)的本质。这样一比喻,所以.hex格式的烧录文件跟.MP3格式的音乐文件在存储本质上是一样的。
再回顾总结一下,烧录程序的本质是:把单片机当做一个存储器,每一条程序指令都对应一个唯一的存储地址,把这些指令以字节为单位一条条存储到指定的存储地址中,这就是烧录程序的本质。对于STC89C52RC单片机,在下载程序时需要上位机软件和一根USB转串口线。上位机软件负责把.hex格式的机器码文件打开,机器码文件里面记录着每条程序指令所对应的地址信息,下载过程时,上位机软件根据.hex文件记录的指令内容和对应的地址信息,经过USB转串口线,跟单片机的预置系统程序进行串口通讯,从而把.hex记录的信息传输到单片机内部的flash存储器中,实现了程序的烧录下载。
【8.2 烧录程序所需的工具和软件。】
(1)装有XP或者WIN7系统的电脑一台。
其它更高系统的我还没测试过,应该问题也不大。
8.3.9.png (20.57 KB, 下载次数: 0)
下载附件
2016-3-12 18:20 上传
图8.3.9
第九步:“冷启动”后观察是否操作成功的信息。
执行完前面第九步的“冷启动”后,如果发现有“...操作成功!”的提示信息,就说明程序下载成功了。此时会发现51学习板上面的一颗LED灯不断闪烁,是因为我们的LED灯程序驱动它才开始闪烁的,说明我们的程序在单片机上正常工作了。
补充说明:
(1)以后只要每次重新编译了C源代码后,都会生成最新版本的.hex格式文件,所以每次烧录程序时,必须重新返回第七步,重新执行一次导入最新版本.hex格式文件的操作,确保被烧录的程序是最新版本的.hex烧录文件。
【8.4 51学习板下载程序失败时的解决办法。】
(1)可以先松一下单片机卡座,稍微挪动一下单片机,然后再卡紧单片机。卡座必须卡紧单片机,避免接触不良。
(2)改变供电电源,很多电脑的USB口供电电源干扰非常大,严重影响下载程序,请把USB电源线插入到手机充电器5V的USB接口,效果显著,明显提高了下载的成功率。
(3)检查确保所选择的单片机型号是STC89C/LE52RC,如果软件弹出推荐其它型号的单片机窗口,不用管它,我们就选STC89C/LE52RC。
(4)检查STC-ISP烧写软件是否选择匹配的COM口。
(5)单片机是靠串口烧录程序进去的,单片机的串口是P3.0,P3.1两根线经过232转换芯片,然后才与USB转串口线连接的。因此,在烧录程序时,请确保P3.0,P3.1两个IO口不能跳线连接到其它外围元器件上。
(6)点击“下载/编程”后,记得再断电并且重新上电一次。看看是否烧录成功。
(7)确保最低波特率一直设置为2400,最高波特率为9600。如果还不行再把最高波特率也改成2400试试。
(8)如果还不行,就退出软件,拔掉USB转串口线,同时断电(必须把整根电源线拔出!),重新插入USB串口线,重新插入电源线开电,重新打开软件。
(9)如果还不行,学习板先断电(必须把整根电源线拔出!),然后重启一次电脑。
(10)总之:如果还不行,就按上述步骤多折腾几次。
(11)最后实在不行,就尝试更换到其它USB口,或者尝试更换到其它电脑上试试。
昨晚一夜未眠,因为看到有一些热心网友在批评我,而且他们不是无中生有,他们说的很多都是事实。他们批评的也正是我内心深处最不愿意直视的痛点。但是经过一整夜的反思后,我觉得出来混迟早要还的,躲是躲不过的,只有坦然面对自己过去的不足,才能更好的活在当下和展望未来,所以我决心本着坦白从宽和争取大家尽量原谅的心态,主动交待一下我过去存在的五个问题,并且就这五个问题真诚的向大家道歉。
(1)狂妄自大,目中无人。我曾自称“大师”,“深圳同龄人中最牛的单片机工程师”,“四大天王之一”等等。现在想起来我当年太无知太幼稚了,太不尊重广大热心网友的感受,我为我当初的言论向大家道歉。
(2)爱出名爱炒作太高调。我曾经有一段时间在网上写的所有文章都自带“只要记得这篇文章的原创是吴坚鸿”等文字,想炒作之心路人皆知,正如一些热心网友批评我那样,技术圈不是娱乐圈,想靠炒作出名是行不通的,搞技术必须老老实实搞技术,不能浮躁。我现在接受大家这些批评,我也认识到自己过去的错误,向大家道歉。
(3)我过去很多文章的观点太片面太偏激。以后我决心不再写这类文章,我向大家道歉。
(4)伪善。我表面上看似很无私分享那么多技术经验,其实我一直都有私心,就是爱出名,这点我以后要改,尽量低调谦虚。虽然做不到完全的无私,但是尽量让更多初学者受益。
(5)我的技术水平还不够好,还停留在初级阶段,我现在觉得我写的很多东西确实在很多有经验的工程师眼里不值得一提,所以希望广大网友看我的技术帖不要太过迷信我,要有自己的独立判断然后再吸收对自己有价值的技术。说起这点我确实惭愧,我以前以为自己的技术很完美很无懈可击,但是最近这几年来发表了几个技术连载帖后,经过很多热心网友的提醒和点拨,才暴露了我许多的不足,也因此让我涨进了不少知识和技术。比如我是出来工作六年后才懂多文件编程,才懂static关键字的用途,才知Tab快捷键的用法,这些都得益于广大热心网友,我要感恩。正因为认识到我之前写的很多技术帖还有很多改进的空间,所以我才一直没有急着出书,所以今年我才决定重开新帖重写一遍。
我挺后悔过去在网上发表过的一些欠考虑的言论,现在看到我都会觉得无地自容,但是一旦在互联网上发帖就像泼出去的水难以收回,我虽然曾主动删过自己某些帖,但是觉得删不完,因为有很多帖被转载了,所以我干脆不删帖了,也算留点证据让网友认识我过去不好的一面。即使今后很多网友继续批评我,我也坦然接受大家的批评,然后积极改正自己的错误。
一周热门 更多>