矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 2024|回复: 15

请教坛友8051端口的问题

[复制链接]
     
发表于 2022-6-24 22:41:25 来自手机 | 显示全部楼层 |阅读模式
最近学8051,在端口这,有点没弄明白,既然有了寄存器相 里边的r0-r7,对应8051的32个引脚,为什么还有个P0-P3,有点糊涂,为什么搞这么多呢
先谢谢各位坛友了
     
发表于 2022-6-24 23:48:56 | 显示全部楼层
r0-r7 是内衣内裤,  P0-P3 是外套和裤子
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2022-6-24 23:58:51 | 显示全部楼层
mapleft 发表于 2022-6-24 23:48
r0-r7 是内衣内裤,  P0-P3 是外套和裤子

谢坛友,要能详细说说就再好不过了!
回复 支持 反对

使用道具 举报

     
发表于 2022-6-25 01:26:08 | 显示全部楼层
本帖最后由 xyz123 于 2022-6-25 01:29 编辑

“既然有了寄存器相 里边的r0-r7,对应8051的32个引脚”这句错的,P0~P3才是对应四组共32个引脚。Rn是快捷寄存器,和Pn是两码事。

这是51体系的特点。快捷寄存器只有8个,指令字中只占3位,缩短了机器码的长度。只寻址Rn的指令,1字节便装下了。
R0~R7对应00H~1FH四组8字节其中的一组,由RS1、RS0切换。频繁调用的子程序,可让其专用一组,减轻往堆栈中保存Rn的开销。未专门占用的组,则同普通存储空间一样供使用。
回复 支持 反对

使用道具 举报

     
发表于 2022-6-25 02:35:11 | 显示全部楼层
还是用C吧,不用管这些乱七八糟的东西。
回复 支持 反对

使用道具 举报

     
发表于 2022-6-25 03:48:48 | 显示全部楼层
本帖最后由 mov99 于 2022-6-25 03:52 编辑

各司其职,分工合作
R0-R7是内部快捷工作寄存器,每个寄存器8位;P0-P3共4个端口,每端口8个I/O引脚(计32个引脚)
在CPU(累加器)的统一领导下,R0-R7主内,用于数据暂存、间接寻址……;P0-P3主外,用于人机交互、数据采集……
可以把R0-R7内容送入P0-P4锁存,通知该做什么,比如:开/关、显示,也可以把P0-P3采集到的信息送入R0-R7暂存,等待CPU处理
回复 支持 反对

使用道具 举报

     
发表于 2022-6-25 09:09:34 | 显示全部楼层
R0-R7是CPU内部的结构,比如暂存运算的中间结果,而不需要去操作寻址周期更长的RAM。P0-P4外设部分,单片机与外界联系的物理接口
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2022-6-25 19:46:43 | 显示全部楼层
xyz123 发表于 2022-6-25 01:26
“既然有了寄存器相 里边的r0-r7,对应8051的32个引脚”这句错的,P0~P3才是对应四组共32个引脚。Rn是快捷 ...

受教了,我自己看了3遍,8051微控制器和嵌入式系统,这本书,没您几句话点拨的清楚,感谢!
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2022-6-25 19:49:28 | 显示全部楼层
huxiangming 发表于 2022-6-25 02:35
还是用C吧,不用管这些乱七八糟的东西。

坛友好,我有几年的c#经验,看c的感觉确实不必考虑这些,容易很多,就是不懂,心里不舒服,毕竟最基本的东西,也许是我想的太多了,再学学试试,不行就放弃,
另外想请教下坛友,如果不学51的汇编,直接入门stm32,没什么问题吧,
51的底层对我来说理解起来都费劲,更别说stm32那些了,
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2022-6-25 19:51:44 | 显示全部楼层
mov99 发表于 2022-6-25 03:48
各司其职,分工合作
R0-R7是内部快捷工作寄存器,每个寄存器8位;P0-P3共4个端口,每端口8个I/O引脚(计32 ...

多谢坛友指教,明白了,一直迷糊在r0-r7 和p0-p3的对应关系,看书看完前边,忘了后边
以后试试所有代码,都在开发板上来一遍,也许会好一点
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2022-6-25 19:54:39 | 显示全部楼层
惭愧啊,刚才明白,寄存器,和ram 不在一个地方,这么低级的问题,老早就知道,竟然忘了
回复 支持 反对

使用道具 举报

     
发表于 2022-7-2 09:24:46 | 显示全部楼层
想再多,说再多也是多余的,还是学着先点亮一个灯开始吧,少说多做
回复 支持 反对

使用道具 举报

     
发表于 2022-7-3 09:59:26 来自手机 | 显示全部楼层
xyn1 发表于 2022-6-25 19:54
惭愧啊,刚才明白,寄存器,和ram 不在一个地方,这么低级的问题,老早就知道,竟然忘了

寄存器和ram一起的,工作寄存器占用ram的00-1fh这段位置,具体由psw的rs0rs1确定
回复 支持 反对

使用道具 举报

     
发表于 2022-7-3 10:41:54 | 显示全部楼层
xyn1 发表于 2022-6-25 19:49
坛友好,我有几年的c#经验,看c的感觉确实不必考虑这些,容易很多,就是不懂,心里不舒服,毕竟最基本的 ...

既然有C#经验,直接学习STM32吧,使用库函数非常方便。ARM相对与51来说,32BIT环境内存大,处理问题会轻松些。
回复 支持 反对

使用道具 举报

     
发表于 2022-7-3 10:58:45 | 显示全部楼层
mapleft 发表于 2022-6-24 23:48
r0-r7 是内衣内裤,  P0-P3 是外套和裤子

这比喻有创意!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-28 07:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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