分享

51单片机就用STC51,手把手教你STC51的ISP

 beifeng523 2013-10-30

51单片机就用STC51,手把手教你STC51的ISP

51单片机就用STC51,手把手教你STC51的ISP标签: stcstc89c52stc89c54stc89c58stc11f01stc12c520stc12c5204stc10f杂谈分类: 解决方案与参考设计 用51单片机就用STC51,手把手教你STC51的ISP    说起我从认识学习使用C51单片机到现在有两年多,时间不长,菜鸟一只。从用TOP151烧写AT89C51,到用easy51pro在线编程AT89S51,再到用STC-ISP软件在线编程STC89C51,最后现在变得越来越懒,干脆用protues仿真单片机外围电路。
 
    现在简单的总结一下,入门级的C51学习在没有昂贵的单片机仿真器情况下,怎样算是方便调试又花费少吧。
 
    先说说AT89C51,噢,差点忘了,这型号的单片机不知何年被停产了,现在就靠它的库存仍在这个历史的舞台上挣扎。
 
缺点:对入土为安的芯片没什么好说了。
 
    那就说AT89S51,这可是一个令人振奋的产物,最大的特点莫过于它的ISP(在线编程)功能,就是使用者每编译好程序,就可以立即通过ISP下载线写到单片机上去。而且ISP下载线的制作简单令单片机和我们的距离更加接近了。它的ISP原理图如下:
点击查看大图

其中ISP下载程序可以用easy 51pro v2.0。相比昂贵的仿真器,做上图的元器件总共也就十块钱左右吧。
 
缺点:一、并口连接电脑,1.可能占用打印机口;2.是笔记本是没有并口的。
 
      二、下载线制作一次成功率不大,不是漏接了这个脚就是那个口,对于新手而言尤其这样。
 
      三、下载线寿命不长,一两次不知明的原因(通常静电),就可以把里面的那块芯片(74LS244)烧坏。并且,实际你都不知道到底哪里出毛病了。
 
    也许,世界上真的没有最好,只要更好,自从好友张JL和陈Y介绍了STC的51系列单片机给我之后,发现竟然有这么方便好用功能强大的单片机。
 
    STC51单片机的型号跟ATMEL的大致一样,有STC89C51,C52等,对应于AT89C51,C52等对应它们的内部RAM内部ROM中断口等,是完全一样的。
 
    当然,STC系列单片机是改进型的单片机,它的热重启,串口ISP等功能确实为我准备介绍给大家提供了理由。
 
    先说说ISP功能,它跟电脑连接就只有三根线,就是通过RS-232传输。它ISP过程是这样的:冷重启(上电)-单片机运行系统ISP监控程序(出厂时已烧到里面)-检测P3.0/RXD有没有合法下载命令流,有的话,就下载用户程序进户程序区;没有的话,就跳到用户程序区,运行用户程序。  所以,第一次下载程序,用户需要先点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元左右)。附上原理图
点击查看大图

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多