找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2355|回复: 12
打印 上一主题 下一主题
收起左侧

stc89c52rc单片机内存问题请教

[复制链接]
跳转到指定楼层
楼主
ID:73992 发表于 2022-10-27 23:36 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我写1602写指令程序,
…… rs
……rw
mov p0,0x7f;0x7f存放1602指令
……en
使用00h单元到0x7f存放指令都可以正常工作。
用80h到ffh内存单元存放指令,就显示错误。
比如b寄存器地址是f0h,那么我使用f1h到ffh内存单元存放指令,1602就显示不了。
我想问一下,特殊功能寄存器后面的剩余内存单元是什么情况
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2022-10-28 08:29 | 只看该作者
特殊功能寄存器的范围是:80H-FFH。
同是51系列的CPU,型号不同各单元的功能略有不同,但尽可能地统一,以最大可能的让程序通用。
虽然该区域使用的是RAM地址,但硬件结构上与RAM结构还是有区别的。
对于该区域未使用的单元,是禁止使用的(不建议使用),因为它是为后续的CPU的功能扩展预留的。
在你未了解的情况下,使用这些单元,极可能产生不可预期的结果。特别是STC系列的。
STC系列基于标准51,但在特殊功能寄存器区域下足了功夫,例如:扩展了串口2,DPTR指针,CPU运行速率,PWM……。甚至扩充到80H-8FH都不够用了,又借用了部分XRAM区域。
所以STC系列功能远大于标准51。
这也是不同型号CPU之间,程序不能通用的主要原因!
同样一个51系列的C语言程序,烧录到不同的STC系列CPU中,大概率不能通用。
所以编译时,也要告诉编译器,用的是哪种型号的CPU。
回复

使用道具 举报

板凳
ID:1038726 发表于 2022-10-28 10:07 | 只看该作者
楼主的程序有点没不懂,0x80以上要用间接寻址。听说STC是一对一技术服务,你直接联系厂家技术咨询效率会更高
回复

使用道具 举报

地板
ID:624769 发表于 2022-10-28 10:37 | 只看该作者
首先, 寄存器(通常意义上的"内存") 和 特殊功能寄存器, 不是同一个概念. 也不是同一个东西。
特殊功能寄存器并不是“内存”, 之所以说 在 0x80~0xff 这个直接地址,是给你一个 访问路径, 让你可以用 MOV指令 对0x80 这个直接地址的读写操作,作用到 P0 总线上,并不是说这个地址的背后,是一个“内存”,你可以把这个直接地址当作是一个电话号码,当特殊寄存器列表没有 列出最终目标,比如 0xf1~0xff  时,它极大的概率是空号。对这些地址的读写是一个无效操作。即无法保存你写入的值,也无法取回你以为已经写入的值。
而正因为给了特殊寄存器“占用”了0x80~0xff的直接地址。 因此,有256字节标准寄存器的51系列单片机对于高位的 80~ff 地址的“内存”,只能使用间接地址@R1方式访问。
回复

使用道具 举报

5#
ID:1034262 发表于 2022-10-28 10:53 | 只看该作者
LZ可能还不了解51的结构,0x80以上的内存要用简介寻址访问。
回复

使用道具 举报

6#
ID:1039954 发表于 2022-10-28 11:20 | 只看该作者
memcpy函数?
回复

使用道具 举报

7#
ID:88256 发表于 2022-10-28 11:55 | 只看该作者
楼主去了解一下51单片机4组I/O口的地址,就会有所明白了
回复

使用道具 举报

8#
ID:73992 发表于 2022-10-29 14:18 来自手机 | 只看该作者
感谢大家
回复

使用道具 举报

9#
ID:1042619 发表于 2022-11-1 16:51 | 只看该作者
楼主这个问题需要注意不同地址空间的访问方式不一样。

11.jpg.png (84.88 KB, 下载次数: 55)

11.jpg.png
回复

使用道具 举报

10#
ID:73992 发表于 2022-12-24 21:07 | 只看该作者
请问用MOV A,@RI 对80H到FFH寻址的时候,与片外ram的地址是否冲突
回复

使用道具 举报

11#
ID:883242 发表于 2022-12-25 19:50 | 只看该作者
lyonkon 发表于 2022-12-24 21:07
请问用MOV A,@RI 对80H到FFH寻址的时候,与片外ram的地址是否冲突

片外RAM要用MOVX语句访问,你用MOV语句想访问片外,做梦呢?
回复

使用道具 举报

12#
ID:996773 发表于 2022-12-27 09:40 | 只看该作者
看楼主的幼儿园级别的问题所写的程序也不是很大,30H到80H这么多的地址也够用了,干嘛非得去自己不知道80H以上的地方踩雷呢,如果真想用,还是多看看51单片机的硬件结构
回复

使用道具 举报

13#
ID:1042619 发表于 2022-12-28 09:40 | 只看该作者
STC89C52是绝对的经典、绝对的主流,现在的 STC8H8K64U / STC32G12K128 已是 8051世界 的主流!永远的经典!STC8H8K64U-45I-TSSOP20,@1.9,硬件USB直接仿真,硬件USB直接下载!速度快、抗干扰强。32位8051,STC32G12K128,两组CAN,三组LIN,4组串口,3组SPI, I2C!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表