历史上的今天
返回首页

历史上的今天

今天是:2025年12月15日(星期一)

正在发生

2022年12月15日 | 51单片机的工作原理

2022-12-15 来源:zhihu

51单片机与很多单片机的工作原理是一致的,而且都遵循冯诺依曼架构,即就是数据区和代码区是区分开来的。在单片机中的具体表现就是程序ROM区和数据RAM区。


本文将以应用最广泛的51单片机为例来解析单片机的工作原理。



一、微处理器

主要包括ALU(算数逻辑运算单元)和控制部件。

先来说ALU,它执行的是单片机的数学运算(如:+、-、*、/、%、<<、>>、++、--等等)。逻辑运算单元执行单片机的逻辑运算(如:与、或、非、==、!、!=、同或、异或、||、&&等等)。其实说到这里,我们很容易就能想到C语言也是在执行以上这些逻辑运算和数学运算。


再来看一下控制部件,它是控制单片机的程序计数器PC向程序存储器获取指令和操作数的重要部件,在取得操作数之后经过译码和控制电路把相应的指令转为不同的电控制信号,从而维持ALU、SFR、外设GPIO、ADC、定时器、中断等外设的正常运作。


二、数据存储区

数据存储区是运行系统栈SP和程序局部变量、数组等数据的区域。

上图所示的程序是51单片机毫秒延时函数,局部变量j、i在RAM中的r3和r5寄存器中,入参n在r7寄存器中,R0-R7寄存器组在RAM中,其实左边调试栏中的寄存器均在RAM中运行。总之,RAM是运行数据的地方,而代码(指令)则是存放在ROM区的。


三、程序存储区

程序存储区是存储常量和代码的区域。

如下图所示:在.m51文件中标红箭头处最左边的“C:”的地方表示的是代码在ROM中,“D:”表示数据在RAM中,“B:”则表示位。

从中我们也可以看出main以及Delay_ms这些函数的地址都是存在ROM中的,也就是我们的所说的代码区。总之,C语言编译成机器码后,其指令和常数全局变量等就存储于ROM中了(PS:掉电不丢失的地方)。


四、中断系统

中断就是当中断管脚有外部信号输入的时候(中断管脚可以设置上升沿、下降沿、高电平或者低电平作为触发中断的条件),微控制器接收到这个控制信号后正在执行的任务会暂时停止,去处理中断里面的任务,处理完成中断任务后又继续从原先中断停止的地方继续执行。


五、其他模块

至于作为外设的GPIO、串口以及定时/计数器就不再赘述了,之所以能正常工作就是因为控制器是沿着总线通过SFR寄存器来控制这些外设正常工作的。


好了,有了上面的基础后我们再来总结一下单片机的工作原理:

首先,系统进行初始化,配置程序中需要的各功能模块。其次,控制器通过PC(程序计数器)从ROM中取得控制指令和操作数送至指令寄存器和译码电路中。再次,经过译码电路将不同的指令译成不同的控制信号。最后,在经过控制器对要执行指令的目标设备进行控制(ALU、GPIO、串口、定时器等)即可。


推荐阅读

史海拾趣

Advanced_Linear_Devices_Inc.公司的发展小趣事

随着市场需求的不断增长,ALD不断拓展其产品线。除了最初的CMOS线性集成电路外,公司还研发出了轨到轨运算放大器、双斜率A/D前端转换器、电压比较器等一系列产品。这些产品不仅满足了不同行业的需求,还进一步提升了ALD在电子行业的市场地位。同时,公司还针对特定应用,如医疗仪器和汽车领域,推出了定制化的解决方案,赢得了客户的广泛赞誉。

兵字(BingZi)公司的发展小趣事

随着公司规模的不断扩大和产品线的日益丰富,兵字公司开始注重品牌建设和市场拓展。公司注册了“BingZi兵字”商标,并通过一系列的市场推广活动,提升了品牌的知名度和美誉度。同时,兵字公司还积极开拓国内外市场,与多家知名企业建立了长期稳定的合作关系,实现了业务的快速增长。

珠海艾派克(APEXMIC)公司的发展小趣事

随着技术的不断进步,艾派克逐渐在打印机芯片领域取得了突破。公司成功研发出一系列从打印机主控SoC芯片到耗材加密芯片的全系列打印机芯片产品,不仅满足了国内市场的需求,还成功打入国际市场,成为全球打印机通用耗材芯片的重要供应商。这一成就标志着艾派克在打印机芯片领域的领先地位得到了进一步巩固。

启攀微(CHIPHOM)公司的发展小趣事

在快速发展的过程中,启攀微电子(CHIPHOM)始终注重与产业链上下游企业的合作。公司与多家知名芯片制造商、封装测试厂商和终端产品厂商建立了紧密的合作关系,共同推动产品的研发和市场推广。通过合作共赢的模式,启攀微电子(CHIPHOM)不仅提升了自身的技术水平和市场竞争力,还为整个电子行业的发展做出了积极贡献。

Ceramics公司的发展小趣事

“跨界陶瓷”公司凭借其前瞻性的战略眼光,积极探索与其他行业的跨界合作。该公司与多家科研机构和高新技术企业建立了战略合作关系,共同研发新型陶瓷电子材料和技术。通过跨界合作,跨界陶瓷成功将陶瓷材料应用于新能源汽车、智能家居等新兴领域,为公司开辟了新的发展空间和市场机会。

这些故事虽然基于虚构,但反映了电子行业中Ceramics公司可能面临的机遇和挑战,以及他们如何通过技术创新、环保理念、国际化战略、品质管理和跨界合作等方式实现发展的普遍现象。当然,实际情况中每家公司的具体发展历程和策略都会有所不同,需要根据具体情况进行分析和评估。

ENSIGN公司的发展小趣事

ENSIGN的前身Skylight于1998年在上海成立,专注于商业照明领域。随着市场需求的增长,公司于2003年正式更名为ENSIGN,并开始为零售店铺提供全面的商业照明解决方案。ENSIGN凭借其创新的设计和高质量的产品,逐渐在市场中树立了良好的口碑。

问答坊 | AI 解惑

德州仪器RFID技术应用遍地开花

[摘要]德州仪器公司日前宣布,该公司的RFID Inlay技术获得了在管理图书馆、医疗中心和自助租借业务中的应用。   德州仪器公司日前宣布,该公司的RFID Inlay技术获得了在管理图书馆、医疗中心和自助租借业务中的应用。3M宣布一项新的射频 ...…

查看全部问答>

SystemC介绍

1 SystemC的基本知识   深亚微米半导体技术的进展与成熟使复杂的片上系统(SoC)设计变得越来越普遍,同时对传统的ASIC设计方法和流程提出了挑战。一些新的设计语言被开发出来以支持这些设计技术,例如SystemC[1]、SystemVerilog[6]等。Open Sy ...…

查看全部问答>

弱问:有关运放增益大小的问题

下面的电路直流仿真增益只有300左右 正常吗?是不是太小了啊? 另外交流仿真的时候0HZ附近增益居然达到800左右 这可能是什么问题呢?和加的参考电压VREF有关系吗? 谢谢 …

查看全部问答>

我加入一些代码到WINCE500\PUBLIC\COMMON\OAK\DRIVERS\TOUCH\TCHMAIN\tchmain.c为什么TCHAR str[1

已经#include    提示: BUILD: [01:0000000021:ERRORE] E:\\WINCE500\\PUBLIC\\COMMON\\OAK\\DRIVERS\\TOUCH\\TCHMAIN\\tchmain.c(476) : error C2275: \'TCHAR\' : illegal use of this type as an expression BUILD: [01:00000000 ...…

查看全部问答>

smdk6410开发板屏幕旋转?

我使用的是smdk 6410 三星的开发板 + wince R2,BSP也是三星直接提供的,现在我要将我的屏幕旋转90,我的做法是 直接修改注册表的[HKEY_LOCAL_MACHINE\"System\"GDI\"Rotation],修改\"Angle\"=dword:5A,        这样修改之 ...…

查看全部问答>

三星K9F5608时序

我是新手,以下代码是三星K9F5608的读芯片ID代码,和芯片手册上的时序如何对应上,希望大侠们多多指点,小弟不盛感激! /*============================================================================= //参 数: unsigned int id 送出NandFlash I ...…

查看全部问答>

ST的资料还真是分散

                                 学习一个功能,最少要翻2份PDF......…

查看全部问答>

求救:用TPS62040做C5502内核1.26V电源,遇到问题

LZ是怎么解决的?能不能说出来共享一下? 我用的是LDO,输出电压可调的那种。…

查看全部问答>

3v转5v技巧 汇总

本帖最后由 paulhyde 于 2014-9-15 08:54 编辑 pdf 格式  …

查看全部问答>

元芳,你对此电路有何看法?(2)

元芳:大人!大人醒醒! 狄:元芳……我怎么会在这?(从一堆仪器和电路板中爬起) 元芳:大人昨夜三更就从寝室来到工作室……接通了所有仪器和单板…… 狄:(看着地上一团团的草纸画满了各种符号)唔……看来又夜游了…… 元芳:大人,昨天 ...…

查看全部问答>