完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
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 指令。 |
|
|
|
在你写好程序后,编译器会根据头文件的各个内存地址定义,然后再根据关键字进行区分各类地址的。比如bit这个关键字就是一个可位寻址的关键字,编译器会将这类的变量存放在头文件中可位寻址的区域中。
|
|
|
|
|
|
|
|
是靠预定义实现的,比如:sfr P0 = 0x80; ***it P0_0 = 0x80;前者声明了P0端口地址位于0x80,后者说明了P0端口的bit0,即P0.0位于位地址空间0x80处。这2个0x80具有完全不同的含义,靠关键字sfr和***it来区别。这样当程序被编译时,编译器会依此编译成相应的汇编语言
|
|
|
|
通过***it来区分位的,编译器自动会在字节里面定义哪个位,除非是指定位置
|
|
|
|
51单片机在设计程序的时候允许使用***it来作为一个变量,这种就是用位操作的方式
|
|
|
|
在数据手册上,根据不同的芯片,是有一个内在分配表的,内部与外部的地址都标清清楚楚了
|
|
|
|
字节地址才可能直接寻址,位地址是依附于字节地址的,要转换处理。
|
|
|
|
是通过***it 与bit 来区分的,要看头文件中的定义地址
|
|
|
|
|
|
|
|
***it来区分位地址,用***it来操作地址的某一位。
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
722 浏览 0 评论
1123 浏览 1 评论
2502 浏览 5 评论
2840 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2683 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
664浏览 9评论
679浏览 7评论
682浏览 5评论
665浏览 5评论
imx6dl芯片与imx6q芯片互换启动无反应请问是什么问题呢
280浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 07:06 , Processed in 1.262867 second(s), Total 103, Slave 83 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号