找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5305|回复: 10
收起左侧

单片机底层硬件与软件的关系

[复制链接]
ID:223571 发表于 2017-10-27 11:19 | 显示全部楼层 |阅读模式
随着学习单片机的深入,对单片机的底层结构有一种探知欲,例如51中,80H到FFH为特殊功能寄存器,这一区域里面有许多特殊功能寄存器,我理解为80H到FFH为一栋楼房,每一个字节地址为一个房间,每一个房间指定一个功能,由门牌号(字节名称)所标识;
问题:我存不存在这种可能性,鉴于字节地址空间这一物理结构客观存在,而我只是将不同的功能的寄存器名字换到其他的储存地址里(还是在这个大的空间里80H到FFH),可以的话需要变哪些东西,如果不可以,原因又是什么?


请从单片机设计的角度来解释,谢谢。
回复

使用道具 举报

ID:123289 发表于 2017-10-27 12:49 | 显示全部楼层
如果你对汇编有一定的功底就会知道了。
其实没有什么名子(DPTR、SP、P0……),名子是人为加的,CPU运行时只认代码:
80H就对应端口的8个引脚,不管你给它起什么句子(是不是P0)。【你可以将编译器中的P0改成ANY试试】
从内部硬件上讲80H对应一个寄存器(内存),而端口上有8个引脚,与这个寄存器的输出接在一起了(当然也有输入,结构上你要看IO、P口这一节)。
回复

使用道具 举报

ID:164602 发表于 2017-10-27 15:18 | 显示全部楼层
个人观点:
不可以。
原因嘛,我是看了芯片说明书后,得来的结论。
特殊功能寄存器与硬件直接相关,每个功能的特殊寄存器都是在设计芯片时就定好了的,不然,为什么不同的芯片必须要用相应的头文件呢,而这种头文件里,就是定义了特殊功能寄存器,用直观的英文名称,代替不好记忆的地址。
如果可以随便更改地址,那么于说明书就不会将那些寄存器的地址做专门说明,只需要说明地址段是什么就可以了。
是不是这个理儿?

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:212797 发表于 2017-10-28 15:27 | 显示全部楼层
可以的,但是不建议修改。
单片机的每一项操作都是在实际的寄存器上进行,MCU之所以认识P0、P1这些东西,是因为在reg52.h头文件里面有一个寄存器的映射对应表,我们将P0对应到0x80地址上,其余的以此类推。用P0、P1这样的名字是为了从编程人员的角度上便于理解,如果你把0x80映射的名字改为ligoudan(李狗蛋),在编程中你会发现程序也没有问题,但是我们看到这样的名字,除了写程序的人外,谁都不知道这是什么东西,要想看懂还要去翻看头文件中的定义,查找手册中地址列表;而且如果把你的这个程序拿到其他机器上没法编译(大家用的是通用的名称列表)。
所以从多方面考虑不建议这么做,当然这么思考是对的,可以真正理解单片机的机理。另外,如果想更深层的从寄存器上学习,可以了解单片机汇编语言编程,这样你可以学习到循环到底是怎么实现的,中断实际要经过哪些步骤才能完成、栈原理和操作等等。
回复

使用道具 举报

ID:111634 发表于 2017-10-28 22:08 | 显示全部楼层
你如果是用c 编程,不理解也罢!要深入理解,就要了解单片机汇编语言编程。
回复

使用道具 举报

ID:223571 发表于 2017-11-7 21:13 | 显示全部楼层
HC6800-ES-V2.0 发表于 2017-10-27 15:18
个人观点:
不可以。
原因嘛,我是看了芯片说明书后,得来的结论。

"如果可以随便更改地址,那么于说明书就不会将那些寄存器的地址做专门说明,只需要说明地址段是什么就可以了。"   


我的理解是那一个范围是作为特殊功能寄存器,但是这一范围里面的各个功能可以变换说明
回复

使用道具 举报

ID:223571 发表于 2017-11-7 21:18 | 显示全部楼层
HC6800-ES-V2.0 发表于 2017-10-27 15:18
个人观点:
不可以。
原因嘛,我是看了芯片说明书后,得来的结论。

我这里给你分享一下,头文件只是对于硬件结构的一种说明,我可以更改自己编写头文件呀,就是说给一块裸芯片,已经设计好了哪一块的功能区,但是具体细节功能能否自己更改设置,这才是设计的角度回答。
回复

使用道具 举报

ID:164602 发表于 2017-11-8 08:57 | 显示全部楼层
蓝野 发表于 2017-11-7 21:18
我这里给你分享一下,头文件只是对于硬件结构的一种说明,我可以更改自己编写头文件呀,就是说给一块裸芯 ...

我还是那个观点:每个特殊寄存器的名字随便你取,但第个地址的功能是不会变的。
我这里以STC89C51RC芯片的手册内容为例:如图所示:

1.jpg 2.jpg 3.jpg


你注意看其中的文字,每个特殊功能寄存器的地址是确定的,这里取好的名字,是方便理解记忆的,也是在REG51.H头文件中说明的,你可以改这个头中各寄存器的名字,但不能改它的地址。例如:PSW寄存器,它的地址是D0H,各位也有相应的功能,你可以在头文件中修改这个名字——本来头文件的说明是:sfr PSW  = 0xD0;。你可以改名字,但绝对不能改地址!!!我想,之所以有这个手册,就是要告诉我们使用者,硬件设计师已经通过硬件电路设定好了这些,每个寄存器地址、每个寄存器的功能,甚至每个位的功能都是确定好了的——不能改!!!。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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