当前位置: 首页 > article >正文

51单片机的工作方式

目录

一、51 单片机的时钟电路及时钟信号

(一)时钟电路

(二)时钟信号

二、51 单片机的CPU 时序

(一)时钟周期​

(二)机器周期​

(三)指令周期​

三、51 单片机的复位状态与复位电路

(一)复位的定义与作用​

(二)复位后各寄存器状态​

(三)复位电路的类型​

(四)复位电路设计要点​

四、51 单片机的工作方式

(一)时钟工作方式​

(二)复位方式​

(三)低功耗工作方式​


一、51 单片机的时钟电路及时钟信号

(一)时钟电路

        51单片机内部有产生震荡信号的放大电路,可以用两种方式产生单片机需要的时钟,一种是内部方式,另一种是外部方式。

        下图为典型的51单片机内部时钟方式外部时钟方式电路图:

1、内部时钟方式​

        所谓内部方式,就是利用单片机内部的放大电路,外接晶振等器件构成的震荡电路。

        51单片机内部有一个高增益反相放大器,用于构成振荡器

        在单片机的 XTAL1 和 XTAL2 引脚外接晶体振荡器(简称晶振)和微调电容,就可以组成一个稳定的自激振荡器,为单片机提供时钟信号。​

        如上图所示,晶振 CYS 与单片机的XTAL1、XTAL2引脚相连,电容 C1 和 C2 为微调电容,一端分别连接 XTAL1、XTAL2 引脚,另一端接地。

        典型的晶振频率有 6MHz、12MHz 等,微调电容一般取值在 20pF - 30pF 之间。这种内部时钟方式结构简单,成本低,适用于大多数常规应用场景。

        例如在简单的电子闹钟、温度控制系统等设备中,内部时钟方式能够满足其对时钟稳定性和精度的基本要求。​

2、外部时钟方式​

        所谓外部方式,就是使用外部的时钟信号,接到 XTAL1 和XTAL2 引脚上,给单片机提供基本震荡信号。

        当需要更高精度的时钟信号,或者与其他外部设备进行同步时,可采用外部时钟方式。

        此时,外部时钟信号直接接入 XTAL1 引脚,XTAL2 引脚悬空。外部时钟源可以是高精度的石英晶体振荡器产生的信号,也可以是其他具有稳定频率输出的设备提供的信号。

        在工业自动化控制领域,一些对时间精度要求极高的设备,如工业机器人的运动控制模块,可能会采用外部时钟方式,以确保各个动作的精确同步

(二)时钟信号

        时钟信号是时钟电路产生的周期性脉冲信号,其频率决定了单片机的运行速度。

        对于 51 单片机而言,时钟信号的频率直接影响指令的执行速度。

        例如,当晶振频率为 12MHz 时,时钟周期为 1/12μs。时钟信号在单片机内部起着同步的作用,它像一个指挥家,协调单片机各个部件的工作节奏。各个功能模块,如 CPU、存储器、I/O 接口等,都依据时钟信号来确定何时进行数据的读取、处理和传输。

        在数据从存储器读取到 CPU 进行运算的过程中,时钟信号确保了读取操作和运算操作在正确的时间点进行,避免数据冲突和错误。

二、51 单片机的CPU 时序

        CPU时序本质上就是CPU操作时序,它规定了CPU执行各种操作的时间顺序和时间间隔。而时钟周期机器周期指令周期是描述CPU操作时序的关键指标。​

(一)时钟周期​

        时钟周期是单片机中最基本的时间单位,也称为振荡周期。它是由时钟电路产生的时钟信号的周期决定的。

        如前文所述,当晶振频率为 12MHz 时,时钟周期为 1/12μs。时钟周期是其他时序单位的基础,单片机的所有操作都在这个最基本的时间单位上进行。

        CPU 执行任何操作,都以时钟周期为最小时间刻度来进行同步。例如,在数据传输过程中,数据线上数据的变化、控制信号的发出等,都是按照时钟周期的节奏来进行的。​

(二)机器周期​

        机器周期是完成一个基本操作所需的时间。

        在 51 单片机中,1 个机器周期由 12 个时钟周期组成。例如,执行一条单字节指令,通常需要 1 个机器周期。这意味着在晶振频率为 12MHz 的情况下,执行一条单字节指令需要 1μs 的时间。

        机器周期反映了单片机执行基本操作的时间尺度,不同类型的指令所需的机器周期数不同,这也决定了指令执行的快慢。

        一个机器周期内,CPU 可能完成一次存储器读操作、一次算术逻辑运算等基本操作。这些基本操作是构成复杂指令操作的基础,而机器周期为这些基本操作提供了时间框架。​

(三)指令周期​

        指令周期是执行一条指令所需要的时间。

        指令周期根据指令的不同而不同,它可能包含 1 个、2 个或 4 个机器周期。

        例如,一些简单的单字节指令,如 MOV 指令,只需要 1 个机器周期;而乘法指令 MUL 等较为复杂的指令,则需要 4 个机器周期。

        了解指令周期对于优化程序执行效率非常重要,在编写程序时,可以尽量使用机器周期数少的指令,以提高程序的运行速度。

        从操作时序角度看,指令周期涵盖了从取指令、译码到执行指令这一系列操作所需的总时间。不同指令的复杂程度不同,涉及的操作步骤也不同,所以指令周期也不同。

       例如 MOV指令只涉及简单的数据传送操作,所以所需机器周期少;而 MUL 指令涉及乘法运算,操作更为复杂,需要更多机器周期来完成。

三、51 单片机的复位状态与复位电路

(一)复位的定义与作用​

        复位是指单片机内部的各种寄存器、计数器等恢复到初始设定值的过程。

        当 51 单片机系统接通电源或者遇到异常情况时,通过复位操作,可以让单片机回到一个已知的、确定的初始状态避免因系统上电时的不确定因素或运行过程中的错误状态导致程序跑飞或系统故障。

        例如,在系统启动时,复位操作能够确保单片机的程序计数器(PC)指向程序的起始地址,从而开始正确执行程序。

        实现复位的方法是通过复位电路,给复单片机复位引脚加复位电平。

(二)复位后各寄存器状态​

1、 程序计数器(PC)

        复位后,PC 的值被初始化为 0000H。这意味着单片机将从内存地址 0000H 处开始读取并执行指令,这是系统程序的入口地址。

        开发人员在编写程序时,通常会将系统初始化代码放置在该地址附近,以便系统启动时能够顺利完成初始化工作。​

2、堆栈指针(SP)

        复位后,SP 的值为 07H。这表明堆栈将从片内数据存储器的 08H 单元开始存放数据。

        需要注意的是,由于 08H - 1FH 单元属于工作寄存器区,在实际应用中,为了避免冲突,通常会重新设置 SP 的值,将堆栈设置在数据存储器的其他合适区域。​

3、端口寄存器(P0 - P3)

        P0 - P3 端口寄存器在复位后被置为 FFH。此时,端口引脚处于高电平状态。

        在一些应用中,比如控制外部设备的输入输出,开发人员需要根据实际需求重新配置端口的状态和功能。

        例如,若要将 P1 口作为输出端口控制 LED 灯,就需要通过程序将相应的端口寄存器位设置为 0 或 1,以点亮或熄灭 LED 灯。​

4、其他特殊功能寄存器

        如定时器 / 计数器控制寄存器(TCON)、串行口控制寄存器(SCON)等,在复位后也都有各自的初始默认值。

        这些初始值决定了单片机内部各功能模块在复位后的初始工作状态。

        例如,定时器 / 计数器在复位后处于停止状态,需要通过软件配置相关寄存器来启动定时器 / 计数器并设置其工作模式。

(三)复位电路的类型​

1、上电复位电路

        这是最基本的复位电路类型。其工作原理基于电容的充电特性。

        在上电瞬间,电源通过电阻对电容进行充电,由于电容两端电压不能突变,RESET引脚会在一段时间内保持高电平

        当电容充电完成后,RESET引脚电压逐渐下降至低电平,完成复位操作。

        典型的上电复位电路中,电阻一般取值为 10kΩ 左右,电容取值为 10μF 左右。这种电路结构简单,成本低,适用于大多数对复位要求不高的场合。

        例如,在一些简单的电子玩具、小型控制系统中,上电复位电路能够满足系统上电时的复位需求。​

2、按键复位电路

        按键复位电路在上电复位电路的基础上增加了一个按键。当系统运行过程中出现异常需要复位时,可以通过按下按键来实现复位操作。

        按下按键时,RESET 引脚直接与电源 VCC 相连,变为高电平,从而触发复位。松开按键后,电容充电过程再次开始,RESET 引脚电平逐渐下降

        按键复位电路为开发人员和用户提供了一种手动复位的方式,方便在系统调试和运行过程中进行干预。在工业控制系统中,当设备出现故障导致程序异常时,操作人员可以通过按下复位按键,使系统重新启动,恢复正常工作。​

3、看门狗复位电路

        看门狗复位电路主要用于防止程序跑飞。

        其原理是通过一个独立的定时器(看门狗定时器),在程序正常运行时,软件会定时向看门狗定时器发送复位信号(俗称 “喂狗”),以确保定时器不会溢出。

        当程序出现异常,无法按时 “喂狗” 时,看门狗定时器就会溢出,从而产生一个复位信号,使单片机复位。

        看门狗复位电路在一些对可靠性要求极高的应用场景中尤为重要,如工业自动化生产线、智能交通控制系统等。在这些系统中,一旦程序出现异常,看门狗复位电路能够及时复位单片机,避免因系统长时间异常运行而导致严重后果。

(四)复位电路设计要点​

1、复位信号的持续时间

        51 单片机要求复位信号的高电平持续时间至少为 24 个时钟周期。

        在设计复位电路时,需要根据所选用的时钟频率,合理选择电阻和电容的参数,以确保复位信号的持续时间满足要求。

        例如,当时钟频率为 12MHz 时,一个时钟周期为 1/12μs,那么复位信号高电平持续时间至少应为 2μs。通过计算电容充电时间常数(τ = RC),可以选择合适的电阻 R 和电容 C 的值,以保证复位信号的持续时间。​

2、抗干扰能力

        复位电路应具备一定的抗干扰能力,以防止外界干扰信号误触发复位操作。

        在实际应用中,可以在复位电路中增加滤波电容,对电源线上的干扰信号进行滤波。同时,合理布局复位电路的元器件,尽量缩短复位信号的走线长度,减少外界干扰对复位信号的影响。

        例如,在电磁环境复杂的工业现场,通过增加滤波电容和优化电路布局,可以有效提高复位电路的抗干扰能力,确保系统的稳定运行。

四、51 单片机的工作方式

(一)时钟工作方式​

        时钟是单片机工作的 “心跳”,为单片机的各个部件提供定时信号,保证它们协调工作。

        51 单片机可以使用内部时钟外部时钟

        内部时钟方式是利用单片机内部的振荡电路,结合外接的晶体振荡器和电容,产生时钟信号。

        外部时钟方式则是直接由外部电路提供时钟信号输入到单片机的时钟引脚。

        时钟频率决定了单片机的运行速度。例如,在常见的 12MHz 时钟频率下,单片机执行一条单周期指令需要 1μs 时间。不同的应用场景可以根据需求选择合适的时钟频率,以平衡系统性能和功耗。​

(二)复位方式​

        复位是单片机的一个重要工作方式,它使单片机恢复到初始状态。

        51 单片机有上电复位按键复位两种常见方式。

        上电复位是在单片机通电瞬间,通过复位电路使单片机进入复位状态,完成内部寄存器的初始化等操作,确保单片机从一个确定的初始状态开始工作。

        按键复位则是通过按下复位按键,强制单片机进入复位状态,常用于在系统运行出现异常时,将单片机恢复到正常状态。

        复位后,程序计数器 PC 被置为 0x0000,单片机从程序存储器的 0 地址处开始执行程序。

(三)低功耗工作方式​

        51 单片机有两种低功耗工作方式空闲模式掉电模式,以满足不同场景下对功耗的要求。

        在空闲模式下,CPU 停止工作,而片内的中断系统、定时器 / 计数器、串行口等部件仍继续工作。

        这种模式适用于系统暂时不需要 CPU 进行大量运算,但又需要保持部分功能运行的情况,例如在一个电池供电的智能监测设备中,当没有新的数据需要处理时,进入空闲模式可降低功耗,延长电池续航时间。

        在掉电模式下,单片机的所有工作都停止,只有片内的 RAM 数据被保存。

        此时,单片机的功耗极低,一般用于系统长时间不工作且需要保存关键数据的场合,如一些需要在断电后仍保留设置信息的设备,可通过掉电模式来实现。


http://www.kler.cn/a/588095.html

相关文章:

  • 直方图梯度提升:大数据时代的极速决策引擎
  • Windows编译Flash-attention模块
  • 于 Hexo + GitHub Pages 的搭建个人博客网站的详细教程
  • 失败的面试经历(ʘ̥∧ʘ̥)
  • 如何利用物理按键控制LVGL控件的大小与状态
  • 六十天前端强化训练之第二十天React Router 基础详解
  • python-数据类型字符串和列表
  • java学习总结(四)MyBatis多表
  • linux命令-wget与curl命令详解
  • 【Agent】OpenManus-Agent-BaseAgent详细分析
  • 85.HarmonyOS NEXT 网络请求与数据处理:构建可靠的数据层
  • 剖析sentinel的限流和熔断
  • “driver-class-name: com.mysql.cj.jdbc.Driver“报错问题的解决
  • Gitee重新远程连接仓库(Linux)
  • 【Redis】缓存穿透、缓存击穿、缓存雪崩
  • Leetcode2272:最大波动的子字符串
  • 文档搜索引擎
  • Gluten 项目贡献指南
  • 行为模式---模版模式
  • S32K144入门笔记(十):TRGMUX的初始化