• 首页 |  
  • 查询 |  
  • 供应 |  
  • 求购 |  
  • 资讯 |  
  • 产品中心 |  
  • 技术应用 |  
  • 商务中心 |  
  • IC供货商 |  
  • 下载中心 |  
  • 求职招聘 |  
  • 论坛 |  
  • 博客
  • 您所在的位置: 首页 > 产品中心 > 记忆芯片 > 正文
    文章搜索:
    单片机内部存储器的使用研究

    http://www.ic36.com 2007年2月6日15:23 来源:来源:21IC中国电子网 / 作者:中国石油大学 冯兴田 张加胜

          随着变频调速以及微机控制技术的发展,适应电机控制的Intel 8XC196MC系列单片机应用越来越广泛。    

           与80C196MC相比,87C196MC单片机带有16 KB的OTPROM(One Tline Programmable Read-Only Memory),可以进行片内编程操作,而且可以增强加密功能。对于普通的控制系统来说,其存储容量足够大,不必再使用外部扩展存储器。然而87C196MC单片机的OTPROM存在一个缺点:不可擦除,也就是说只能编程一次,不能实现重复编程,不利于大量普及使用。   

           当程序仿真器移植到单片机的OTPROM时,并不能保证程序的一次成功性,由于单片机的不可擦除性,若程序脱机一次就使用一片单片机,显然将造成巨大的资源浪费。另一方面,对于复杂系统,16KB的O
    TPROM容量如果不够,则需要采用扩展外部存储器,为了保证有效实现加密功能,应保留一部分程序在片内OTPROM,此时便涉及到单片机内、外存储器的衔接问题。   

           本文针对Intel 87C196MC单片机内部存储器的不可擦除性,对两种情况下的使用问题提供了可以有效实现重复编程的方法,并可以推广至其他任何带有OTPROM的单片机系列的编程应用中。

           1 87C196MC单片机内部存储器的编程方式

          
    Intel 87C196MC单片机支持三种编程方式:自动编程方式(使87C196MC单片机不用EPROM编程器即可从外部EPROM对自己编程)、从机编程方式(给外部EPROM编程器提供了一个标准接口)和实时编程方式(运行中编程方式,可以在软件控制下实时对单个EPROM单元编程)。和其他方式不同,实时编程可以在不进入全EPROM编程方式下完成。   

           对于Intel 87C196MC单片机的OTPROM只能编程,不能擦除,但在编程时可以验证是否已确实编程。对0TPROM可以采用2种编程方法:在从机编程方式下或在专门的OTPROM编程方式下编程。OTPROM为87C196MC单片机提供了辅助的存储器保护手段,它可以禁止总线控制器执行外部取指周期,若企图把一个外部地址装载到PC寄存器,芯片将复位。这种自动复位功能对跑飞的代码也提供了一种额外的恢复手段。使用时应根据实际需要采取不同的编程方式。

           2 87C196MC单片机内部存储器的重复编程方法

          
    单片机87C196MC的EA引脚(外部访问允许端,87C196MC PLCC84-36脚)用来控制访问内部存储器或外部存储器。当EA=O时,所有访问都是对片外存储器的;当EA=1时,对2000H~5FFFH单元的访问都是对片内OTPROM/ROM的。编程方式下,EA=12.5 V。由于复位时EA的电平被锁存,难以通过外部硬件电路来实现程序空间的选择。这里通过应用程序语句来控制程序地址范围,相当于EA的电平变化作用。本文主要应用了Intel汇编语言的长跳转指令UMP来实现控制访问内、外存储器的功能,下面介绍两种常用的方法。

           2.1片内编程操作方法   

           所谓87C196MC单片机OTPROM的不可擦除性,实质上是不可实现从“0”到“1”的编程,而只能完成从“1”到“O”的编程。以下通过简单的程序实例来介绍这种方法。

           LJMP NEXTl
           CSEG AT 2600H
           NEXTl:……    
    上述语句实际上代表的是LJMP2600H.其机器码为E79C04,当地址2600H变化时,得到一组对应的机器码,通过对这一组机器码进行分析,就可以得到该方法的原理,如表1所列。

    程序对应机器码表


           机器码E79C04的后两个字节代表了汇编程序语句中的地址(04代表了2600H,14代表了3600H……)。当一个字节从4位全是“1”变成4位全是“O”,且每次只有一个“l”变为“0”时,可以有多种不同的变法,如表2所列。

    字节变化方法表


           由于87C196MC单片机的OTPROM只能完成从“1”到“O”的编程,而87C196MC单片机的程序从2000H开始执行,因此可以在程序从2000H执行一小段后进行跳转,例如首先跳至4100H(对应的机器码为E79C1F)再存储程序的其他部分。下一次使用时,把机器码E79C1F改为E79C1E(对应地址为4000H),程序则跳至4000H开始执行,4100H以后的程序段不再执行。再下一次使用时,把
    机器码E79C1E改为E79C1c(对应地址为3A00H),程序则跳至3A00H开始执行,4000H以后的程序段不再执行,以此类推(即机器码的最后一个字节变化为F→E→c,对应表2中第一组的变化),即可以重复使用同一片单片机进行多次编程操作。   

           这种方法中,单片机87C196MC的引脚EA接高电平。它适用于程序简短且没有扩展外部存储器,只有内部存储器可用的情况。

        2.2片内、外编程操作方法   

           如果内部存储器容量不够或因为其他方面需要,要求扩展外部存储器时,当然可以选择容量较大的外部存储器,而不使用内部存储器,但这样一来,程序的保密性将难以实现,而且浪费了单片机内部的存储器空间。使用内、外结合的方法既可以满足容量需求,叉能方便的实现加密操作。   

           鉴于87C196MC单片机的程序从2000H开始执行,将单片机87C196MC的引脚丽置“1”,那么单片机程序将从内部2000H开始执行。可以在程序从2000H执行一小段后(根据实际需要任意设定)进行跳转,此处与片内跳转的操作有所不同,它将直接跳出单片机87C196MC片内OTPROM的2000H~5FFFH单元的范围。当命令被执行时,会自动转入外部存储器的地址范围内,例如:LJMP8000H,其中8000H是外部存储器的地址入口,这样就从片内存储器转入到外部存储器了。可以通过修改外部存储器(可重复擦写)的程序来进行程序的调试,非常方便。当然,如果需要从外部存储器转入内部存储器时,操作方法是类似的。

           结  语

          
    本文详细分析介绍了两种可以实现可重复编程的单片机的使用方法,而且这两种方法可以推广至其他任何带有0TPROM的单片机编程,编程的思路完全相同,具体实验证实了这两种方法具有切实可行性。


    (关键词):变频调速 存储器 单片机 内部存储器

    IC型号速查
    [0]  [1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]  [9]  [A]  [B]  [C]  [D]  [E]  [F]  [G]  [H]
    [I]  [J]  [K]  [L]  [M]  [N]  [O]  [P]  [Q]  [R]  [S]  [T]  [U]  [V]  [W]  [X]  [Y]  [Z]
    相关链接
    用单片机设计A/D、D/A转换器2006-8-4 11:22:14
    Watchdog在Philips 8XC552系列单片机系统中的应用 2006-6-19 11:45:01
    Watchdog在Philips 8XC552系列单片机系统中的应用 2006-6-19 15:16:46
    Watchdog在Philips 8XC552系列单片机系统中的应用2006-6-20 16:28:09
    存储器市场的大变数 闪存时代是否来临?2006-8-9 14:17:06
    存储器市场的大变数 闪存时代是否来临?2006-8-9 9:21:28
    基于单片机的OLED显示器的应用2006-8-14 13:07:47
     我来评两句
    查看最新评论〗 

    昵称:  匿名
    请您注意:
    ·遵守中华人民共和国的各项有关法律法规
    ·承担一切因您的行为而导致的法律责任
    ·本网留言板管理人员有权删除其管辖留言内容
    ·您在本网的留言,本网有权在网站内转载或引用
    ·参与本留言即表明您已经阅读并接受上述条款

    芯片之家  电子之家  电子元器件之家  半导体之家  微电子之家 
    ·免费发布紧急IC求购 ·到哪里找工厂求购 ·全球最好十个IC网站 ·我为什么选择IC36
    ·IC是怎样炼成的 ·想知道所有的IC封装吗 ·如何鉴别旧货刷新货 ·芯片的前缀代表什么
    ·IC行业的网站体验 ·元器件常见问题解答 ·这里居然可以实时洽谈 ·有问必有答
    ·IC行业之25颗钻石 ·IC代理商查询 ·十家最牛的公司 ·中国IC公司200强
    元器件之家  晶圆之家  集成电路之家  电子元件之家  模块之家  电子管之家
    ·舍我其谁的高级会员 ·IC36是怎样收费的 ·网站广告是如何占领的 ·IC之家的增值服务
    ·我该到哪里去找工作 ·到哪里去招人呢 ·今日芯片需求排行 ·还有我们没有的型号吗
    ·中国IC行业的害群之马 ·中国最优秀的IC供应商 ·国外的IC骗子公司 ·信誉良好的IC供货商
    ·谁是IC之家的明星 ·做我们的代理吧 ·免费注册 机不可失 ·广告热线 010-51653935
    热 点 专 题
    热 点 论 坛
    关于我们 | 增值服务 | 免责条款 | 收费标准 | 付款方式 | 广告服务 | 网站地图 | 联系我们 | 友情链接 | 网站代理
    MSN:ic36@hotmail.com  QQ:IC之家 在线咨询  联系电话:(010)51653935 传真:(010)51653936 客户服务:service@ic36.com
    Copyright © 2003-2006 IC36.COM IC之家 本网站中文域名:IC之家 芯片之家
    京ICP证060068号