历史上的今天
返回首页

历史上的今天

今天是:2026年01月06日(星期二)

正在发生

2023年01月06日 | 51单片机学习——存储和引脚

2023-01-06 来源:zhihu

前言

首先阅读这篇文章需要有 51 单片机 C 语言编程基础(至少要学完定时器)。这篇文章作为我的一个学习笔记,总结我学到的内容,后面在学习的过程中会慢慢补充,如果有错误的地方欢迎大家批评指正


一、CPU架构和指令集

因为这个不是重点内容,咱们这里不讨论,不是很懂的朋友先去看这个视频

https://www.bilibili.com/video/BV1xE411N74Twww.bilibili.com/video/BV1xE411N74T


二、51单片机地址结构

2.1 普林斯顿与哈佛结构

51 单片机采用哈佛结构,共有 4 个物理存储空间:片内 RAM、片内 ROM、片外 RAM、片外 ROM

上面是三个逻辑空间,因为片内片外 ROM 统一编址


片内和片外

我是这么理解片内和片外的。在下面图片中,芯片封装里面的就是片内,芯片封装外面的就是片外

data:片内 RAM 从 0x00~0x7F

idata:片内 RAM 从 0x00~0xFF

pdata:片外 RAM 从 0x00~0xFF

xdata:片外 RAM 从 0x0000~0xFFFF


2.2 程序存储器 - ROM

1、前面说 ROM 统一编址是什么意思呢?

下面这幅图是给 AT89C51 芯片 EA 引脚传入 1(高电平)的情况。此时使用片内 0000H 到 0FFFH 的地址空间和片外 0FFFH 到 FFFFH 的地址空间作为一个 ROM

下面这幅图是给 AT89C51 芯片 EA 引脚传入 0(低电平)的情况。此时不使用片内地址空间,只使用片外 0000H 到 FFFFH 的地址空间作为一个 ROM

如果上面仿真软件看不懂或者电路图不懂的小伙伴可以去看这个视频

https://www.bilibili.com/video/BV1H7411n7AYwww.bilibili.com/video/BV1H7411n7AY


2、注意

1、从上面的寻址能力来看的话,我们知道地址线是 16 根

单片机内部的程序存储器用于存储单片机工作时候的程序,单片机内部专门设置一个 16 位的程序计数器(PC),用于指示下一时刻单片机要执行的程序在 ROM 空间中的地址位置,即可以存储 64Kb 空间大小

2、程序存储器物理上可以分为片内程序存储器和片外存储器,不同单片机型号有不同的片内程序存储器空间大小。我查了网上的一些人说的,现在可能只有片内内存了,也就是下图的这个芯片包含 64KB ROM 内存(我等一会去查芯片介绍)


3、ROM 简介

ROM 是存放程序、表格或常数,且掉电不丢失

也就是说我们写好的程序(见下图)是存在 ROM 里的


4、ROM 的 6 个特殊存储器单元——用于程序引导

0000H跳转指令(8位)
0001H跳转指令执行的位置(1)
0002H跳转指令执行的位置(2)
0003H跳转指令(8位)
0004H跳转指令执行的位置(3)
0005H跳转指令执行的位置(4)

上面的表格中依次记录着跳转指令和他要跳转的地址。

因为地址是 16 位的,而一个地址里面存 8 位,所以我们要用两个内存地址的空间来存放主程序入口地址。我还没有查询 0001H 和 0002H 两个地址拼接的的时候,哪 8 个字节放在高位,所以后面再来完善一下

主程序一般应安排在 0030H 地址以后 (在有中断需要时)


2.3 RAM

1、RAM 和 ROM

51 单片机采用的是哈佛结构,即数据和程序分开,这样可以提高程序的执行速度,如果是 MOV 21H #35H 这样的指令,#35H 是作为一个立即数,是要和指令放在一起的,就是放在了 rom 里,如果是定义了的变量,那么就会放到数据存储器 ram 里,在定义变量的时候,可以通过命令选择变量放到 rom 或是 ram 中


2、RAM 的区域

总共有 256 字节的区域,低 128 位存储的内容如下

用户 RAM 区是用来压栈保护寄存器的数据的。在处理中断的时候要中断当前函数,此时就要保存当前函数中的一些变量的内容,然后跳转到中断处理函数执行。执行完了中断处理函数,把压入到栈中的当前函数产量恢复,从而从断点处继续执行当前函数


高 128 字节存储的内容如下

我们程序里面设置 P0 口输出什么之类的,就是修改这一块的地址存放的内容


3、寻址方式示例代码


三、引脚

3.1 时序电路

时序在上一篇文章中有讲解,这里简单的再介绍一下,上面那个电路给我们单片机产生如下波形的输入

假设这个波是 12HZ,就是 1 秒产生 12 个波峰。经过下面的公式计算,就是 1 秒就是 1 个指令周期,汇编指令有很多,要用的指令周期也不相同,但是都在 1 - 4 周期之中


3.2 复位电路

每次开机或者按下按钮以后就会复位


复位条件:在 RST/VPD 引脚端出现 ≥10ms 时间的高电平 (≥3V) 的状态


推荐阅读

史海拾趣

Henkel公司的发展小趣事

HellermannTyton公司在电子行业的发展历程中,积累了丰富的经验和成就,以下是五个与其发展相关的事实性故事:

1. 创立与初期发展

HellermannTyton的起点可以追溯到其成立之初。作为一家专注于紧固、连接、布线、保护和标识解决方案的全球制造商,HellermannTyton在创立时就明确了其市场定位和技术方向。公司凭借其创新的产品和优质的服务,在电子行业迅速站稳脚跟。初期,公司通过不断研发和改进产品,满足了市场对高品质电子配件的需求,逐步建立起稳定的客户群体和市场基础。

2. 全球化布局与扩张

随着业务的不断发展,HellermannTyton开始实施全球化战略。公司在全球范围内设立办事处和生产基地,以更好地服务全球客户。这一战略不仅提升了公司的市场影响力,还促进了产品的国际化销售。目前,HellermannTyton在30多个国家设有办事处,并拥有稳定的财务状况和良好的行业前景。其全球化布局为公司的持续发展和创新提供了强有力的支持。

3. 技术创新与产品研发

HellermannTyton一直将技术创新视为企业发展的核心驱动力。公司投入大量资源进行产品研发和技术创新,不断推出符合市场需求的新产品。例如,在数据和网络技术领域,HellermannTyton开发了领先的系统,被认为是行业中的领军者。这些创新产品不仅提升了公司的市场竞争力,还为客户提供了更加高效、可靠的解决方案。

4. 中国市场的深耕与发展

在中国市场,HellermannTyton同样取得了显著的成绩。海尔曼太通(无锡)电器配件有限公司作为HellermannTyton在中国的子公司,自1997年成立以来,一直致力于为全球客户设计、生产电线装配及网络连接产品。公司位于中国无锡新加坡工业园,拥有先进的生产设备和完善的质量管理体系。在中国市场的深耕与发展过程中,HellermannTyton凭借其优质的产品和服务赢得了广泛的认可和好评。

5. 多元化业务与可持续发展

HellermannTyton的业务范围不仅限于紧固、连接、布线等传统领域,还积极拓展多元化业务。公司致力于为客户提供全方位的解决方案,以满足不同行业的需求。同时,HellermannTyton还注重可持续发展,通过采用环保材料和绿色生产方式,减少对环境的影响。这种多元化业务和可持续发展的战略为公司的长期发展奠定了坚实的基础。

以上五个故事展示了HellermannTyton在电子行业中的发展历程和成就,体现了其作为全球领先制造商的实力和影响力。

C&H Technology公司的发展小趣事

随着技术实力的不断提升,C&H Technology开始积极拓展海外市场。公司首先在欧洲设立了办事处,通过与当地电信运营商和设备制造商的合作,成功将产品打入欧洲市场。随后,公司又进军北美和亚洲其他地区,逐步建立了全球化的销售网络。在市场拓展的过程中,C&H Technology始终坚持以客户为中心的服务理念,不断优化产品性能和服务质量,赢得了客户的信赖和好评。

亿佰特(EBYTE)公司的发展小趣事

亿佰特在技术创新的基础上,积极拓展市场。公司凭借优质的产品和服务,成功打开了国内外市场的大门。产品远销美国、加拿大、德国等50多个国家和地区,覆盖了物联网、消费电子、工控医疗等多个行业。亿佰特通过深入了解市场需求,不断优化产品结构和市场策略,实现了市场的快速扩张。

Goodwork Semiconductor ( GW )公司的发展小趣事
当所接容性和感性负载太重时,可能出现输出电压抖动现象,影响设备的正常运行。
ABB公司的发展小趣事
如果对电源质量要求较高,需要选择波形失真较小的稳压器。
Fuji Teminal Industry Co Ltd公司的发展小趣事
如果对电源质量要求较高,需要选择波形失真较小的稳压器。

问答坊 | AI 解惑

matlab第三课

数组与矩阵运算 这是今天讨论的重点!…

查看全部问答>

TFT液晶彩图显示法(特别适合初学者,详细……)

TFT液晶彩图显示法,很详细,特别适合初学者,高手也可参考参考…… 值得保存………

查看全部问答>

求职时被HR立即否决的9种人

一般来说,下面几类人,容易被HR快速拒绝。 开口言钱者不要 报酬不是不可以问,但得讲究时机和氛围。如果刚一交谈,就开门见山、直奔主题地问起薪酬待遇,会让企业感到很不舒服。 纠缠不休者不要。 招聘都遵循一定的流程,说几时给消息就几时给 ...…

查看全部问答>

wince 6.0 驱动基础问题,请教高手

刚开接触wince 6.0 驱动开发。有些基础问题没有搞清楚,往高手指点,请详细些。 1. sources文件中都会有一个动态库的入口,这个动态库的入口(DLLMain)是什么的?指的是驱动加载时的入口吗?我看了一个简单的按键驱动,在dllmain处只是简单的初始 ...…

查看全部问答>

定制的win ce 5.0 COM1不能输出调试信息,请问这是怎么回事。

我也使用RETAILMSG函数在驱动中添加调试信息,但同样没有调试信息输出。 我修改过WINCE500\\PLATFORM\\smdk2440\\KERNEL\\HAL目录下的debug.c文件中的“NODEBUG”我也修改为0了。 #define                ...…

查看全部问答>

一道汇编题?

25. 内存地址是0000H,若有4KB的存储空间,其内存的最终地址是(  ). A.400H        B.FFFH         C.4FFH      D.1000H 答案是什么?为什么?请高手 ...…

查看全部问答>

北京佳能诚聘c/c++嵌入式开发人员!

公司:佳能 职位:研发工程师 语言:c/c++ 平台:WINCE 经验:3年以上 地点:北京 有意向者,请速联系 msn:mygy2006@hotmail.com 13910500391…

查看全部问答>

wince4.2如何调用软键盘

我装了wince4.2 再装了EVC4.0 后来装了STANDARD_SDK.msi 写了个简单的hello程序 想调用SIP 头文件包含了#include \"sipapi.h\" 工程里添加了连接coredll.lib,调用SipShowIM(SIPF_ON); 怎么就是编译不过去 提示如下 Mystest.obj : error LNK2019: ...…

查看全部问答>

ARM入门

我刚开始上班,好多东西都不懂,经理把板子给我了.让我自己弄. 问其他同事,他们都说忙,好郁闷呀! 主机,ARM开发板,uC OS/II,ADS1.2集成开发环境,JTAG仿真器.都有了. 我下一步该做什么. 是不是安装uC OS/II,然后在上面编程序. 我以前从来没有接触 ...…

查看全部问答>

力科公司确立其在示波器领域的绝对领导地位

力科公司确立其在示波器领域的绝对领导地位…

查看全部问答>