单片机扩展ram的扩展ram自检的流程

51单片机扩展ram 指令寄存器在存储器(片内数据RAM、片内程序ROM)上吗

  RAM是用来在程序运行中存放随機变量的数据空间51单片机扩展ram默认的内部RAM只有128字节,52单片机扩展ram增加至256字节STC89C52增加到512字节,STC89C54、55、58、516等增加到1280字节对于编程者来说,一個芯片的RAM越多写起程序来就越容易得心应手,不会总考虑RAM不够用而担心这担心那连过多的变量都不敢定义。

  在前面我们写程序时缯讲到过如果定义一个变量后,不对这个变量进行初始化这个变量默认的初值就是0,其实这个结论是需要一定的条件的在用KEIL编写程序时,总程序中所有变量占用的字节之和小于128字节并且存储器模式为small模式的前提下,对定义的变量不进行初始化时编译器会默认将变量值设定为0。一旦程序中的总变量超过128字节必须对所有变量进行初始化,否则没有被初始化的变量默认值将是不确定的。当变量总和超过128字节时必须还要在编译器中重新设定存储器的存储模式,存储器模式一共有3种分别为small、compact和large模式,在KEIL编译器中有选项可进行选择選项表如图4.4.1所示。它决定了没有明确指定存储类型的变量、函数参数等数据的默认存储区域如果在某些函数中需要使用非默认的存储模式,也可以使用关健字直接说明下面对这三种模式分别做介绍。

  small模式中所有缺省变量参数均装入单片机扩展ram内部128字节RAM中,当定义類似如:uchar a; float b;等变量时这些变量都装入内部128字节RAM中。使用该模式的优点是访问速度快缺点是空间有限,而且是对堆栈的空间分配比较少難以把握,碰到需要递归调用的时候需要小心所以这种模式只适用于小程序。

  compact模式中所有缺省变量均位于单片机扩展ram内部256字节RAM中,和在small模式中使用关健字pdata来定义变量的效果相同如:uchar pdata a[100];在该种模式下,程序总变量不得超过256字节对于只有128字节的单片机扩展ram,使用此模式定义变量超过128字节时程序将出错。优点是空间较small模式宽裕速度较small慢,但较large要快是一种中间状态。

  在large模式中所有缺省变量可放在多达64KB的RAM区,包括内部RAM和外部RAM和使用关健字xdata来定义变量的效果相同。这种模式的优点是空间大可存变量多,缺点是访问速度慢尤其对于2个以上的多字节变量访问速度来说更是如此。

  方便起见STC单片机扩展ram要访问扩展RAM时,可直接用以下方法:首先在编译器中设置存储器模式为large模式

  其次,为安全起见当程序中定义多于128字节的其它变量时,最好申明为xdata型如 uchar xdata table[100];意思为定义一个100个字节容量的数组,将其在扩展RAM中分配存储空间另外一定要注意,在large模式下编写程序时,定义的变量总数千万不要超过对应单片机扩展ram的内部最大RAM字节數因为即使超过了,编译器也不会提示错误但是程序必定会出错。

声明:本文由入驻电子说专栏的作者撰写或者网上转载观点仅代表作者本人,不代表电子发烧友网立场如有侵权或者其他问题,请联系举报

我要回帖

更多关于 单片机扩展ram 的文章

 

随机推荐