51单片机的时钟电路与时序以及 复位电路和电源模式

51单片机的时钟电路与时序以及 复位电路和电源模式

本文主要涉及51单片机的时钟电路以及相关时序的知识,也讲解了了51单片机的复位电路以及电源模式。

文章目录

  • 51单片机的时钟电路与时序以及 复位电路和电源模式
    • 一、时钟电路与时序
      • 1、 时钟电路设计
        • 1.1 内部时钟方式
        • 1.2 外部时钟方式
        • 1.3 时钟信号的输出
      • 2、机器周期、指令周期与指令时序
    • 二、 复位电路和电源模式
      • 1、 复位操作和复位电路
        • 1.1 复位操作
        • 1.2 复位电路设计
      • 2、低功耗节电模式
        • 2.1 空闲模式
        • 2.2 掉电运行模式
        • 2.3 掉电和空闲模式下的WDT

一、时钟电路与时序

时钟电路产生AT89S51工作时所必需的控制信号,在时钟信号的控制下,严格按时序执行指令。
执行指令时,CPU首先到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号完成指令所规定的操作。
CPU发的时序信号两类,一类用对片内各个功能部件控制,用户无须了解;另一类用于对片外存储器或I/O端口的控制,这部分时序对于分析、设计硬件接口电路至关重要。

1、 时钟电路设计

时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式。

1.1 内部时钟方式

AT89S51内部有一个用于构成振荡器的高增益反相放大器,输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器,图2-8是AT89S51内部时钟方式的电路。

在这里插入图片描述

电路中的电容 C1和 C2 的典型值通常选择为 30pF。晶体振荡频率的范围通常是在1.2~12MHz
AT89S51单片机常选择振荡频率6MHz或12MHz的石英晶体。

1.2 外部时钟方式

用现成的外部振荡器产生脉冲信号,常用于多片AT89S51同时工作,以便于多片AT89S51单片机之间的同步。
外部时钟源直接接到XTAL1端,XTAL2端悬空,见图2-9。
在这里插入图片描述

1.3 时钟信号的输出

当使用片内振荡器,XTAL1、XTAL2引脚还能为应用系统中的其他芯片提供时钟,但需增加驱动能力。其引出的方式有两种,如图2-10。
在这里插入图片描述

2、机器周期、指令周期与指令时序

各种指令时序与时钟周期相关。
1.时钟周期
时钟控制信号的基本时间单位。若晶振频率为fosc,则时钟周期Tosc=1/fosc
如fosc=6MHz,Tosc=166.7ns。

2.机器周期
CPU完成一个基本操作所需时间为机器周期。执行一条指令分为几个机器周期。每个机器周期完成一个基本操作,如取指令、读或写数据等。每12个时钟周期为1个机器周期

1个机器周期包括12个时钟周期,分6个状态:S1~S6。每个状态又分两拍P1和P2
因此,一个机器周期中的12个时钟周期表示为S1P1、S1P2、S2P1、S2P2、…、S6P2,如图2-11。
在这里插入图片描述

3.指令周期
执行一条指令所需的时间简单的单字节指令,取出指令立即执行,只需一个机器周期的时间。而有些复杂的指令,如转移指令则需两个或多个机器周期。

从指令执行时间看:

  • 单字节和双字节指令一般为单机器周期双机器周期;
  • 三字节指令都是双机器周期;
  • 乘、除指令占用4个机器周期

二、 复位电路和电源模式

1、 复位操作和复位电路

单片机的初始化操作,给复位脚RST加上大于2个机器周期(即24个时钟振荡周期)的高电平就使AT89S51复位。

1.1 复位操作

复位时,PC初始化为0000H,程序从0000H单元开始执行。
除系统的正常初始化外,当程序出错(如程序跑飞)或操作错误使系统处于死锁状态时,需按复位键使RST脚高电平,使AT89S51摆脱“跑飞”或“死锁”状态而重新启动程序。

复位操作还对其他一些寄存器有影响,这些寄存器复位时的状态如表2-8。
在这里插入图片描述

1.2 复位电路设计

由复位电路实现。AT89S51片内复位电路结构见图2-12。
在这里插入图片描述

复位引脚RST通过一个施密特触发器与复位电路相连,施密特触发器用来抑制噪声,在每个机器周期的S5P2,施密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。

复位电路采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路如图2-13所示。
在这里插入图片描述

上电自动复位是给电容C充电加给RST引脚一个短的高电平信号,此信号随着VCC对电容C的充电过程而逐渐回落,即RST引脚上的高电平持续时间取决于电容C充电时间。为保证系统可靠复位,RST引脚上的高电平必须维持足够长的时间。
除了上电复位外,有时还需要按键手动复位。按键手动复位有电平脉冲两种方式。

2、低功耗节电模式

两种低功耗节电工作模式:空闲模式(idle mode)和掉电保持模式(power down mode)。
掉电保持模式下,Vcc可由后备电源供电。图2-17为两种节电模式的内部控制电路。
在这里插入图片描述

两种节电模式可通过PCON的位IDL和位PD的设置来实现。

格式如图2-18。
在这里插入图片描述

PCON寄存器各位定义:
SMOD:串行通信波特率选择。
━ :保留位。
GF1、GF0:通用标志位,两个标志位用户使用。
PD: 掉电保持模式控制位,PD=1,则进入掉电保持模式。
IDL:空闲模式控制位,若IDL=1,则进入空闲运行模式。

2.1 空闲模式
  1. 空闲模式进入
    如把PCON中的IDL位置“1”,通往CPU的时钟信号关断,便进入空闲模式。虽然振荡器运行,但是CPU进入空闲状态。所有外围电路(中断系统、串行口和定时器)仍继续工作,SP、PC、PSW、A、P0–P3端口等所有其他寄存器、内部RAM和SFR中内容均保持进入空闲模式前状态

  2. 空闲模式退出
    两种方法退出,响应中断方式,硬件复位方式。

空闲模式下,若任一个允许的中断请求被响应时,IDL位被片内硬件自动清“0”,从而退出空闲模式。当执行完中断服务程序返回时,将从设置空闲模式指令的下一条指令(断点处)继续执行程序。

当使用硬件复位退出空闲模式时,在复位逻辑电路发挥控制作用前,有长达两个机器周期时间,单片机要从断点处(IDL位置“1”指令的下一条指令处)继续执行程序。在这期间,片内硬件阻止CPU对片内RAM的访问,但不阻止对外部端口(或外部RAM)的访问。为了避免在硬件复位退出空闲模式时出现对端口(或外部RAM)的不希望的写入,在进入空闲模式时,紧随IDL位置1指令后的不应是写端口(或外部RAM)的指令。

2.2 掉电运行模式
  1. 掉电模式的进入
    用指令把PCON寄存器的PD位置1,便进入掉电模式。在掉电模式下,进入时钟振荡器的信号被封锁振荡器停止工作
    由于没有时钟信号,内部的所有功能部件均停止工作,但片内RAM和SFR的原来的内容都被保留,有关端口的输出状态值保存在对应的特殊功能寄存器中。

  2. 掉电模式的退出
    两种方法:硬件复位外部中断
    硬件复位时要重新初始化SFR,但不改变片内RAM的内容。只有当Vcc恢复到正常工作水平时,只要硬件复位信号维持10ms,便可使单片机退出掉电运行模式。

2.3 掉电和空闲模式下的WDT

掉电模式下振荡器停止,意味着WDT也就停止计数。用户在掉电模式下不需操作WDT。

当用硬件复位退出掉电模式时,对WDT的操作与正常情况一样。

在系统进入掉电模式前先对寄存器WDTRST复位。在中断服务程序中复位寄存器WDTRST。

在进入空闲模式前,应先设置AUXR中的WDIDLE位,以确认WDT是否继续计数。
当WDIDLE=0,空闲模式下的WDT保持继续计数。为防止复位单片机,用户可设计一定时器。该定时器使器件定时退出空闲模式,然后复位WDTRST,再重新进入空闲模式。
当WDIDLE=1,WDT在空闲模式下暂停计数,退出空闲模式后,方可恢复计数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/231356.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《考虑垃圾处理与调峰需求的可持续化城市多能源系统规划》

这个标题涵盖了城市多能源系统规划中的两个重要方面:垃圾处理和调峰需求,并强调了规划的可持续性。 考虑垃圾处理: 含义: 垃圾处理指的是城市废弃物的管理和处置。这可能涉及到废物分类、回收利用、焚烧或填埋等方法。重要性&…

IOday7作业

1> 使用无名管道完成父子进程间的通信 #include<myhead.h>int main(int argc, const char *argv[]) {//创建存放两个文件描述符的数组int fd[2];int pid -1;//打开无名管道if(pipe(fd) -1){perror("pipe");return -1;}//创建子进程pid fork();if(pid &g…

Linux信息收集

Linux信息收集 本机基本信息 #管理员 $普通用户 之前表示登录的用户名称&#xff0c;之后表示主机名&#xff0c;再之后表示当前所在目录 / 表示根目录 ~表示当前用户家目录1、内核&#xff0c;操作系统和设备信息 uname -a 打印所有可用的系统信息 uname -r 内核版本 u…

scala安装使用教程_一篇搞定!

1、Scala高级语言 1.1 Scala简介 Scala是一门多范式&#xff08;multi-paradigm&#xff09;的编程语言&#xff0c;设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala运行在Java虚拟机上&#xff0c;并兼容现有的Java程序。 Scala源代码被编译成Java字节码&#…

解读Stable Video Diffusion:详细解读视频生成任务中的数据清理技术

Diffusion Models视频生成-博客汇总 前言:Stable Video Diffusion已经开源一周多了,技术报告《Stable Video Diffusion: Scaling Latent Video Diffusion Models to Large Datasets》对数据清洗的部分描述非常详细,虽然没有开源源代码,但是博主正在尝试复现其中的操作。这篇…

DSP处理器及其体系结构特点(您都用过哪些DSP?)

DSP处理器概述 数字信号处理器&#xff08;Digital Signal Processor&#xff0c;DSP&#xff09;是一种专门设计用于执行数字信号处理任务的微处理器类型。与通用微处理器&#xff08;如CPU&#xff09;相比&#xff0c;DSP处理器在处理数字信号时具有更高的性能和效率。 用途…

做抖店代发,新手如何定类目?五大类目优缺点分析!

我是电商珠珠 类目是店铺的方向&#xff0c;只有将店铺的定位确定好&#xff0c;才能超越大部分的同行。 我经常跟我的学生讲&#xff0c;选择类目的时候不能瞎选&#xff0c;要学会去分析市场&#xff0c;由于大部分的学员前期都是新手小白&#xff0c;所以我们这边会负责给…

二维数组附近遍历所有值

二维数组附近遍历所有值 假如以56点为中心&#xff0c;上下左右近距离遍历附近值&#xff0c;看代码&#xff0c;代码把思路写出来了&#xff0c;边界问题暂不处理。 #include<iostream> using namespace std;void FindNearPos(int (*int_arr)[10] , int p_row , int …

解决nuxt使用api代理报错: debug_1$6.Debug.extend is not a function

现象&#xff1a; 这个是使用了nuxt-proxy报的错&#xff0c;但是仅在生产环境才会报错&#xff0c;开发环境没有这个问题。 具体详情可见下面的github issues. nuxt proxy issue 解决办法&#xff1a; 改用代理中间件&#xff1a;nuxt-proxy-request 使用这个中间件的原因…

【工程实践】使用modelscope下载大模型文件

前言 Modelscope&#xff08;魔搭社区&#xff09;是阿里达摩院的一款开源模型平台&#xff0c;里面提供了很多的热门模型供使用体验&#xff0c;其中的模型文件可以通过git clone 快速下载。并且为模型提供了Notebook的快速开发体验&#xff0c;使用阿里云服务&#xff0c;不需…

uView框架的安装与Git管理

参考链接&#xff1a;Http请求 | uView - 多平台快速开发的UI框架 - uni-app UI框架 安装 打开我们项目的cmd进行下载&#xff1a; yarn add uview-ui 首先我们要确定&#xff0c;未下载前的文件目录以及下载后&#xff0c;是多了个文件目录node_modules 下载完成之后我们就…

Android之Binder原理剖析

一&#xff1a;Binder的全面介绍 binder的出现 George Hoffman当时任Be公司的工程师&#xff0c;他启动了一个名为OpenBinder 的项目&#xff0c;在Be公司被ParmSource公司收购后&#xff0c; OpenBinder 由Dinnie Hackborn继续开发&#xff0c;后来成为管理ParmOS6 Cobalt O…

GAN:WGAN-DIV

论文&#xff1a;https://arxiv.org/pdf/1712.01026.pdf 代码&#xff1a; 发表&#xff1a;2018 摘要 在计算机视觉的许多领域中&#xff0c;生成对抗性网络已经取得了巨大的成功&#xff0c;其中WGANs系列被认为是最先进的&#xff0c;主要是由于其理论贡献和竞争的定性表…

免费网页抓取工具大全【附下载和工具使用教程】

在当今信息爆炸的时代&#xff0c;获取准确而丰富的数据对于企业决策和个人研究至关重要。而网页抓取工具作为一种高效获取互联网数据的方式&#xff0c;正逐渐成为大家解决数据需求的得力助手。本文将深入探讨网页抓取工具的种类&#xff0c;并为大家提供简单实用的页面采集教…

FL Studio2024永久免费体验版下载

FL Studio中文绿色21版是一款无需要安装的汉化版本&#xff0c;它是一款非常专业的音频编辑软件&#xff0c;可以让你的音乐突破想象力的限制哦&#xff0c;FL Studio21中文版可以制作出不同音律的节奏&#xff0c;FL Studio内置众多电子合成音色&#xff0c;只Styrus可以让人激…

低多边形游戏风格3D模型纹理贴图

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时&#xff0c;有几种不同的风格&#xf…

5G+AI开花结果,助力智慧安检落地

“请带包的乘客过机安检&#xff01;”&#xff0c;深圳地铁、腾讯共同打造的5GAI智慧安检辅助系统亮相福田枢纽站&#xff0c;进一步解放了人力&#xff0c;提高安检效率&#xff0c;为交通安全保驾护航&#xff0c;让智慧出行成为现实。 传统的安检设备均为人工肉眼辨识&…

【Altera】Quartus II 软件怎么更改bank电压

前言 FPGA的bank电压要和物理设计相同&#xff0c;Quartus II 软件怎么更改bank电压&#xff1f; 步骤 启动 Pin Planner&#xff08;快捷方式&#xff1a;CTRL Shift N&#xff09;右键单击 Pin Planner 的背景&#xff0c;然后选择"显示 I/O bank"。右键…

小知识点——Servlet

Servlet 是什么&#xff1f; Java Servlet 是运行在 Web 服务器或应用服务器上的程序&#xff0c;它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet&#xff0c;您可以收集来自网页表单的用户输入&#xff0c;呈…

对python自动生成接口测试的示例讲解

在python中Template可以将字符串的格式固定下来&#xff0c;重复利用。 同一套测试框架为了可以复用&#xff0c;所以我们可以将用例部分做参数化&#xff0c;然后运用到各个项目中。 代码如下&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2…