• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

51内存地址怎么分配

2d475de344a5c143 2019-03-10 浏览量:1459
C51编译器如何区分位地址和字节地址
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • MCS-51的存储器有片内RAM、片外RAM 和 ROM 三个空间。

    片内RAM:

    地址范围是00H到7FH (52系列延伸到FFH)。
    其中00H到1FH,共32字节,分成四个工作寄存器区,每区有寄存器 R0~R7。

    对此区域,可以使用 R0~R7 来操作,代码短捷。

    20H-2FH,共16字节,是位寻址区,共有128个“位”,位地址:00~7FH。
    此区域,也可按照字节寻址,来读写。
    30H-7FH,没有什么特色,只进行字节寻址。
    80H-FFH,共有128个地址号码,其中离散的分布着21个特殊功能寄存器,必须直接寻址才能读写。
    (52系列,在此范围,还有128字节的 RAM,必须间接寻址才能读写)。
    对上述空间读写,必须使用 MOV 指令。

    • 发布于 2019-03-10
    • 举报
    • 评论 0
    • 2
    • 0

其他答案 数量:11
  • 在你写好程序后,编译器会根据头文件的各个内存地址定义,然后再根据关键字进行区分各类地址的。比如bit这个关键字就是一个可位寻址的关键字,编译器会将这类的变量存放在头文件中可位寻址的区域中。
    • 发布于2019-03-10
    • 举报
    • 评论 0
    • 1
    • 0

  • 定义的位地址就是访问位地址,定义的字节地址,就是访问字节地址
    编译器词法分析时候,能识别出来数据的类型,并且做相应的处理
    • 发布于2019-03-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 是靠预定义实现的,比如:sfr P0 = 0x80; sbit P0_0 = 0x80;前者声明了P0端口地址位于0x80,后者说明了P0端口的bit0,即P0.0位于位地址空间0x80处。这2个0x80具有完全不同的含义,靠关键字sfr和sbit来区别。这样当程序被编译时,编译器会依此编译成相应的汇编语言
    • 发布于2019-03-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 通过sbit来区分位的,编译器自动会在字节里面定义哪个位,除非是指定位置
    • 发布于2019-03-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 51单片机在设计程序的时候允许使用sbit来作为一个变量,这种就是用位操作的方式
    • 发布于2019-03-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 在数据手册上,根据不同的芯片,是有一个内在分配表的,内部与外部的地址都标清清楚楚了
    • 发布于2019-03-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 字节地址才可能直接寻址,位地址是依附于字节地址的,要转换处理。
    • 发布于2019-03-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 是通过sbit 与bit 来区分的,要看头文件中的定义地址
    • 发布于2019-03-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 位地址是sbit关键字操作,定义一个位变量之后使用sbit就可以直接操作地址的位,至于字节地址那更简单,使用地址指针就可以了。

    • 发布于2019-03-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 51单片机特有的关键字,sbit和bit,就是来干这个的,当然可位寻址区除了使用位寻址外,也可以直接字节寻址
    • 发布于2019-03-10
    • 举报
    • 评论 0
    • -1
    • 0

相关问题

问题达人换一批

51内存地址怎么分配