为了破解一块单片机rom是指的ROM,发现从这块ROM的0000H的地址处开始,其连续8个字节的内容为

从数据存储类型来说8051系列有片內、片外程序存储器,片内、片外数据存储器片内程序存储器还分直接寻址区和间接寻址类型,分别对应codedataxdataidata以及根据51系列特点而设萣的pdata类型使用不同的存储器,将使程序执行效率不同在编写C51程序时,最好指定变量的存储类型这样将有利于提高程序执行效率(此问題将在后面专门讲述)。与ANSI-C稍有不同它只分SAMLLCOMPACTLARGE模式,各种不同的模式对应不同的实际硬件系统也将有不同的编译结果。

data:固定指前面0x00-0x7f128RAM可以用acc直接读写的,速度最快生成的代码也最小。

idata:固定指前面0x00-0xff256RAM,其中前128data128完全相同只是因为访问的方式不同。idata是用类似C中的指针方式访问的汇编中的语句为:mox ACC,@Rx.(不重要的补充:cidata做指针式的访问效果很好)

pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写用movx ACC,@Rx读写。這个比较特殊而且C51好象有对此BUG,建议少用但也有他的优点,具体用法属于中级问题这里不提。

code的作用是告诉单片机rom是指我定义的數据要放在ROM(程序存储区)里面,写入后就不能再更改其实是相当与汇编里面的寻址MOVX(好像是),因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器)所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM的意思

程序可以简单的分为code(程序)区,和data (数据)区code区在运行的时候是不可以更改的,data区放全局变量和临时变量是要不断的改变的,cpucode区读取指令对data区的数据进行运算处理,因此code区存储在什么介质上并不重要象以前的计算机程序存储在卡片上,code区也可以放在rom里面也可以放在ram里面,也可以放在flash里面(但是運行速度要慢很多主要读flash比读ram要费时间),因此一般的做法是要将程序放到flash里面然后loadram里面运行的;DATA区就没有什么选择了,肯定要放在RAM裏面放到rom里面改动不了。

bdata如何使用它呢若程序需要8个或者更多的bit变量,如果你想一次性给8个变量赋值的话就不方便了(举个例子说說它的方便之处,想更深入的了解请在应用中自己琢磨)又不可以定义bit数组只有一个方法

64K常规片内外ROM代码区

普通51系列单片机rom是指存储空間资源分配情况:

下表是新型80C51单片机rom是指扩展空间的分配情况:

64K常规片内外ROM代码区

}

格式:DOC ? 页数:13页 ? 上传日期: 13:43:58 ? 浏览次数:1 ? ? 1600积分 ? ? 用稻壳阅读器打开

全文阅读已结束如果下载本文需要使用

该用户还上传了这些文档

}

拍照搜题秒出答案,一键查看所有搜题记录

拍照搜题秒出答案,一键查看所有搜题记录

拍照搜题秒出答案,一键查看所有搜题记录

③上电复位向量地址INT0中断向量哋址,INT1中断向量地址
}

我要回帖

更多关于 单片机的ROM 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信