首页 > 其他分享 >51单片机 idata pdata xdata

51单片机 idata pdata xdata

时间:2022-08-24 11:57:07浏览次数:72  
标签:idata 字节 RAM 51 单片机 寻址 寄存器 128 堆栈

1 内部RAM

 

内部RAM共256个字节,分为两个部分,低128字节和高128字节,低128字节是传统51单片机的地址,既可以直接寻址也可以间接寻址,高128位是在8052中扩展的,这部分RAM和特殊功能寄存器使用相同的逻辑地址(80H到FFH),但是在物理上是独立的,在使用时通过不同的寻址方式加以区分,高128字节的RAM只能间接寻址,特殊功能寄存器只能直接寻址

低128字节的RAM成为通用RAM区,通用 RAM 区又可分为工作寄存器组区,可位寻址区,用户 RAM区和堆栈区。工作寄存器组区地址从 00H~1FH 共 32 字节单元,分为 4 组,每一组称为一个寄存器组,每组包含 8 个 8 位的工作寄存器,编号均为 R0 ~ R7,但属于不同的物理空间。通过使用工作寄存器组,可以提高运算速度。 R0~R7 是常用的寄存器,提供 4 组是因为 1 组往往不够用。程序状态字 PSW 寄存器中的 RS1 和RS0 组合决定当前使用的工作寄存器组。

可位寻址区的地址从 20H ~ 2FH 共 16 个字节单元。 20H~2FH 单元既可像普通 RAM 单元一样按字节存取,也可以对单元中的任何一位单独存取,共 128 位,所对应的逻辑位地址范围是 00H~7FH。位地址范围是00H~7FH,内部 RAM 低 128 字节的地址也是 00H~7FH,从外表看,二者地址是一样的,实际上二者具有本质的区别;位地址指向的是一个位,而字节地址指向的是一个字节单元,在程序中使用不同的指令区分。

内部 RAM 中的 30H~FFH 单元是用户 RAM 和堆栈区。一个 8 位的堆栈指针(SP),用于指向堆栈区。单片机复位后,堆栈指针 SP 为 07H,指向了工作寄存器组 0 中的 R7,因此,用户初始化程序都应对 SP 设置初值,一般设置在 80H 以后的单元为宜。堆栈指针是一个 8 位专用寄存器。它指示出堆栈顶部在内部 RAM 块中的位置。系统复位后, SP 初始化位 07H,使得堆栈事实上由 08H 单元开始,考虑 08H~1FH 单元分别属于工作寄存器组 1~3,若在程序设计中用到这些区,则最好把 SP 值改变为 80H 或更大的值为宜。 STC8 系列单片机的堆栈是向上生长的,即将数据压入堆栈后, SP 内容增大。

在Keil编程中,高128字节使用许增加 idata 关键字进行间接寻址

直接寻址,表示访问特殊功能寄存器
MOV 0x90, #0x00
间接寻址,表示访问高128字节的RAM
MOV R0, #0x90H,
MOV @R0, #0x00
当一个变量增加idata时,将会生成间接寻址的汇编代码

2 外部RAM

外部RAM在Kernel中使用xdata表示,其中pdata表示xdata的低256个字节 C 语言中定义变量为 pdata 类型后,编译器会自动将变量分配在xdata的 0000H~00FFH 区域,并使用 MOVX @Ri, A 和 MOVX A, @Ri 进行访问,默认情况下xdata使用DPTR进行访问

如这个声明,假如i的地址为0x19,则 xdata int i = 0 生成如下汇编
MOV DPTR,#0x0019
CLR A
MOVX @DPTR, A

如这个声明,假如j的地址为0x19,则 pdata int j = 0 生成如下汇编 MOV R0, #0x19 CLR A MOVX @R0, A

变量在各个RAM区域中使用的指令不一样,导致性能不一样,根据机器码的长度我们大致可以知道,xdata > pdata > idata > data(默认)

 

标签:idata,字节,RAM,51,单片机,寻址,寄存器,128,堆栈
From: https://www.cnblogs.com/sudochen/p/16619348.html

相关文章

  • KBPC1510W-ASEMI金属壳针脚方桥KBPC1510W
    编辑:llKBPC1510W-ASEMI金属壳针脚方桥KBPC1510W型号:KBPC1510W品牌:ASEMI封装:KBPCW-4正向电流:50A反向电压:1000V引脚数量:4芯片个数:4芯片尺寸:120MIL漏电流:>10ua恢复......
  • python学习Day51
    Day51今日内容概要表单标签知识补充CSS层叠样式表作用语法结构注释语法三种编写css的方式CSS选择器基本选择器组合选择器属性选择器分组与嵌套选择器伪......
  • NC51222 Strategic game
    题目链接题目题目描述Bobenjoysplayingcomputergames,especiallystrategicgames,butsometimeshecannotfindthesolutionfastenoughandthenheisvery......
  • NC51178 没有上司的舞会
    题目链接题目题目描述Ural大学有N名职员,编号为1~N。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数\(Hi\)给出,其中......
  • 51单片机如何运行程序
    目录51单片机储存器结构程序存储器数据存储器特殊功能寄存器(SFRs)直接与间接寻址汇编51单片机储存器结构80C51单片机的内部存储器分为内部程序存储器和内部数据存储器,这......
  • 如何使能512个virtio_blk设备
    一例virtio_blk设备中断占用分析背景:这个是在客户的centos8.4的环境上复现的,dpu是目前很多云服务器上的网卡标配了,在云豹的dpu产品测试中,dpu实现的virtio_blk设备在申请......
  • 使用线程池,并发计算1~50、51~100的和,再进⾏汇总统计。
    知识点:获取线程池、提交任务、获取返回值 获取线程池的几种方式:newFixedThreadPool(intnThreads)获取固定数量的线程池。参数:指定线程池中线程的数量。(使用这种)newC......
  • 《GB27951-2011》PDF下载
    《GB27951-2011皮肤消毒剂卫生要求》PDF下载《GB27951-2011》简介本标准规定了皮肤消毒剂的技术要求、试验方法、使用方法、标签和说明书以及使用注意事项;本标准适用......
  • 《GB5135.21-2011》PDF下载
    《GB5135.21-2011自动喷水灭火系统第21部分:末端试水装置》PDF下载《GB5135.21-2011》简介GB5135的本部分规定了自动喷水灭火系统用末端试水装置的术语和定义、分类、......
  • 2022年多校冲刺NOIP联训测试13 && 51nod2023省选联训 第三场
    A隔离二分答案,简单\(check\)一下即可code#include<cstring>#include<algorithm>#include<cstdio>#include<queue>#include<vector>#include<set>#include<map>......