说起我从认识学习使用C51到现在有两年多,时间不长,菜鸟一只。从用TOP151烧写AT89C51,到用easy51pro在线编程AT89S51,再到用STC-ISP软件在线编程STC89C51,{zh1}现在变得越来越懒,干脆用protues仿真外围电路。 现在简单的总结一下,入门级的C51学习在没有昂贵的单片机仿真器情况下,怎样算是方便调试又花费少吧。 先说说AT89C51,噢,差点忘了,这型号的单片机不知何年被停产了,现在就靠它的库存仍在这个历史的舞台上挣扎。 缺点:对入土为安的芯片没什么好说了。 那就说AT89S51,这可是一个令人振奋的产物,{zd0}的特点莫过于它的ISP(在线编程)功能,就是使用者每编译好程序,就可以立即通过ISP下载线写到单片机上去。而且ISP下载线的制作简单令单片机和我们的距离更加接近了。它的ISP原理图如下: 其中ISP下载程序可以用easy 51pro v2.0。相比昂贵的仿真器,做上图的元器件总共也就十块钱左右吧。 缺点:一、并口连接电脑,1.可能占用打印机口;2.是笔记本是没有并口的。 二、下载线制作一次成功率不大,不是漏接了这个脚就是那个口,对于新手而言尤其这样。 三、下载线寿命不长,一两次不知明的原因(通常静电),就可以把里面的那块芯片(74LS244)烧坏。并且,实际你都不知道到底哪里出毛病了。 也许,世界上真的没有{zh0},只要更好,自从好友张JL和陈Y介绍了STC的51系列单片机给我之后,发现竟然有这么方便好用功能强大的单片机。 STC51单片机的型号跟ATMEL的大致一样,有STC89C51,C52等,对应于AT89C51,C52等对应它们的内部RAM内部ROM中断口等,是xx一样的。 当然,STC系列单片机是改进型的单片机,它的热重启,串口ISP等功能确实为我准备介绍给大家提供了理由。 先说说ISP功能,它跟电脑连接就只有三根线,就是通过RS-232传输。它ISP过程是这样的:冷重启(上电)-单片机运行系统ISP监控程序(出厂时已烧到里面)-检测P3.0/RXD有没有合法下载命令流,有的话,就下载用户程序进户程序区;没有的话,就跳到用户程序区,运行用户程序。 所以,{dy}次下载程序,用户需要先点ISP下载软件的“download”,再把单片机通电。如图: 到了这里,大家不禁会说,下载线虽然简单,但每次都要断电上电,烦不烦?答:我都觉得烦。不过眼睛锐利的读者发现了上图右下片有一段文字。说什么的呢?哦,原来是自定义下载。什么是自定义下载?首先我先说个高兴的事儿——用自定义下载,从此告别断电上电的冷重启ISP下载。 所谓自定义下载,就是我从上面软件的自定义下载命令文本框中打入十六进制数字(如:FEH)然后点击发送,程序自动下载到用户单片机里。神奇吧。 究其不用断电上电冷重启的原因,就是上面我所说的STC单片机具有热重启功能。用户只需简单控制ISP_CONTOR特殊功能寄存器即可实现系统复位了。汇编语句是: MOV 0E7H,#60H 那么,自定义下载又如何做到呢?其编程思想是这样的:主程序开始初始化串口,包括设置波特率和串口中断,然后在串口中断子程序里写上语句判断是否为自定义下载码,再延时一秒左右,和上面的那句话 MOV 0E7H,#60H 。就这样就完了,不难吧。注意,自定义下载那里有一个波特率设置,这个波特率就是你的程序(已下到单片机中的程序哦)里设置的波特率。 下面用汇编写段示例程序: ORG 0000H AJMP START ORG 0023H LJMP ZIJI ORG 0100H START: MOV SP,#70H MOV TMOD,#20H ;T1方式2 MOV TH1,#0F4H ;4800B/S MOV TL1,#0F4H SETB TR1 MOV SCON,#0F8H ;串行口为方式3,允许接收,SM2=1,TB8=1 MOV PCON,#80H ;smod=1 !!!!!!!!! SETB EA ;开所有中断 SETB ES ;开串口中断 CLR RI ..... ORG 0200H ZIJI: CLR RI ;串口中断子程序 PUSH ACC PUSH PSW MOV A,SBUF MOV R1,A XRL A,#0FEH ;判断是否为自定义下载命令(FEH) JZ ISP ... RETURN:PUSH PSW PUSH ACC RETI ISP: CALL DL1S ;调用延时1秒子程序 MOV 0E7H,#60H ;运行重启程序 AJMP RETURN 附上STC的下载线原理图: 刚上网搜到一个简单的电路图(本人没验证,仅供参考) 如果还是觉得用串口实在不方便的话,那我就推荐你使用USB转串口下载线啦。 原理图也不十分难,自己做也可以,只是其中用到的CH341S芯片有点贵(约15元左右)。附上原理图 |