AT89S52单片机的最小应用系统

目录

​一.时钟电路设计

1.内部时钟方式

2.外部时钟方式

3.时钟信号的输出

二.机器周期,指令周期与指令时序

1.时钟周期

2.机器周期

3.指令周期

三.复位操作和复位电路

1.复位操作

2 复位电路设计

四.低功耗节电模式


AT89S52本身片内有8KB闪烁存储器,256B的RAM单元,4个I/0口,外接时钟电路和复位电路即构成了一个AT89S52单片机最小应用系统,如图所示:

该最小应用系统只能作为小型的数字量的测控单元


一.时钟电路设计

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

1.内部时钟方式

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

C1和C2的典型值通常选择为30pF。电容大小会影响振荡器频率高低振荡器的稳定性和起振的快速性。晶振频率范围通常是1.2~12MHz串口通信时,为了得到准确的波特率,多采用11.0592M晶体。晶体频率越高,单片机速度就越快
常选6MHz或12MHz的石英晶体。随着集成电路制造工艺技术的发展单片机的时钟频率也在逐步提高,已达33MHz。

2.外部时钟方式

用现成的外部振荡器产生脉冲信号,常用于多片AT89S52同时工作,以便于多片AT89S52单片机之间的同步,一般为低于12MHz的方波。外部时钟源直接接到XTAL1端,XTAL2端悬空,见图:

3.时钟信号的输出

当使用片内振荡器,XTAL1、XTAL2引脚还能为应用系统中的其他芯片提供时钟,但需增加驱动能力。引出的方式有两种,如图所示。

二.机器周期,指令周期与指令时序

各种指令时序与时钟周期相关。

1.时钟周期

时钟控制信号的基本时间单位。若晶振频率为f_{osc},则时钟周期T_{osc}=1/f_{osc}f_{osc}=6MHZ,T_{osc}=166.7ns

2.机器周期

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

1个机器周期包括12个时钟周期,分6个状态: S1~S6。每个状态又分两拍: P1和P2。因此,一个机器周期中的12个时钟周期表示为S1P1、S1P2、S2P1、S2P2、··、S6P2,如图所示。

3.指令周期

执行一条指令所需的时间。简单的单字节指令,取出指令立即执行,只需一个机器周期的时间。而有些复杂的指令,如转移、乘、除指令则需两个或多个机器周期
从指令执行时间看:
单字节和双字节指令一般为单机器周期和双机器周期;

三字节指令都是双机器周期;

乘、除指令占用4个机器周期;

三.复位操作和复位电路

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

1.复位操作

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

复位操作还对其他一些寄存器有影响,这些寄存器复位时的状态如图:


由表可看出,复位时,SP=07H ,而P0~P3引脚均为高电平
在某些控制应用中,要注意考虑PO~P3引脚的高电平对接在这些引脚上的外部电路的影响
例如,当P1口某个引脚外接一个继电器绕组,当复位时,该引脚为高电平继电器绕组就会有电流通过,就会吸合继电器开关,使开关接通,可能会引起意想不到的后果。

2 复位电路设计

AT89S52单片机的复位是由外部的复位电路实现的。复位电路应兼有上电复位(一开机就复位  )和人工按键复位两种功能。典型的复位电路如图:

注:信号一定要>2个机器周期,要想做到这一点,就要使复位的时间长一点,上电复位(电容的充放电速率缓慢),人工按键复位(按下按键的时候停留一会儿,保证>2个机器周期)



当时钟频率选用6MHz时,电容C的参考取值为22uF,两个电阻Rs和Rk的参考阻值分别为220\Omega和1k\Omega

四.低功耗节电模式

两种低功耗节电工作模式:空闲模式(idle mode)和掉电保持模式(power down mode)

空闲模式:表示使CPU停止工作,单片机的中断,串行口定时/计时器继续工作。

掉电模式:使外部时钟停止工作,没有外部时钟信号,内部的部件都不会进行工作。


掉电保持模式下,Vcc可由后备电源供电。图中为两种节电模式的内部控制电路。


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

PCON寄存器各位定义:

SMOD:串行通信波特率选择。

一:保留位。

GF1、GF0:通用标志位,两个标志位用户使用。

PD:掉电保持模式控制位,PD=1,则进入掉电保持模式

IDL:空闲模式控制位,若IDL=1,则进入空闲运行模式

恢复方式:

空闲模式恢复:1.中断信号使IDL=0     2.硬件复位使IDL=0

掉电模式恢复:1.外部中断信号使PD=0    2.硬件复位使PD=0

注:如果是硬件复位,那么之前运行的程序,需要重新开始,如果是中断信号,那么只需要从中断程序继续开始

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redisson分布式锁源码解析

一、使用Redisson步骤 Redisson各个锁基本所用Redisson各个锁基本所用Redisson各个锁基本所用 二、源码解析 lock锁 1) 基本思想: lock有两种方法 一种是空参 另一种是带参 * 空参方法:会默认调用看门狗的过期时间30*1000&…

真实网络中的 bbr

本文包含中心极限定理,大数定律,经济规律等,bbr 倒没多少,不过已经习惯把 bbr 当靶子了。 上周写了 揭秘 bbr 以及 抢带宽的原理,我对自己说,这都是理论上如何,可实际上呢。于是有必要结合更实际…

ubuntu cutecom串口调试工具使用方法(图形界面)

文章目录 Ubuntu下使用CuteCom进行串口调试使用指南什么是CuteCom?主要特点 安装CuteCom使用APT包管理器从源码编译安装 配置串口CuteCom界面解析(启动cutecom)使用CuteCom进行数据发送和接收配置串口参数数据接收数据发送 高级功能和技巧流控…

Vatee万腾的数字化掌舵:Vatee科技解决方案的全面引领

随着数字化时代的到来,Vatee万腾凭借其卓越的科技实力和全面的解决方案,成功地在数字化探索的航程中掌舵引领。 首先,Vatee万腾以其强大的数字化科技实力成为行业的引领者。vatee万腾不仅在人工智能、大数据分析、云计算等前沿领域取得了显著…

PLC通过Modbus转Profinet网关连接安华变频器通讯控制电机案例

背景:近年来,随着自动化技术的不断进步,Modbus与Profinet之间的转换成为了许多工厂和企业普遍关注的问题。 Modbus转Profinet网关作为两个不同协议设备连接的桥梁,安华变频器作为一种电气设备,能够改变电源的频率和电…

Pytorch中的tensor维度理解

Pytorch中的tensor维度理解 文章目录 Pytorch中的tensor维度理解摘要打消心理恐惧,从三维学起三维tensor参考文献 摘要 面对pytorch编程中的tensor时,我不时会感到恐惧。对里面数据是怎么排布的,一直没有一个直观的理解。今天我想把这个事情…

基于VM虚拟机下Ubuntu18.04系统,Hadoop的安装与详细配置

参考博客: https://blog.csdn.net/duchenlong/article/details/114597944 与上面这个博客几乎差不多,就是java环境配置以及后面的hadoop的hdfs-site.xml文件有一些不同的地方。 准备工作 1.更新 # 更新 sudo apt update sudo apt upgrade2.关闭防火…

MS2401隔离Σ-Δ调制器,可替代ADI的AD7401

产品简述 MS2401 是一款二阶 Σ-Δ 调制器,集成片上数字隔离器,能 将模拟输入信号转换为高速 1 位码流。调制器对输入信号连续 采样,无需外部采样保持电路。模拟信号输入满量程为 320 mV ,转换后的数字码流的最高数据速率为 2…

【MySQL】多表查询、子查询、自连接、合并查询详解,包含大量示例,包你会。

复合查询 前言正式开始一些开胃菜多表查询自连接子查询单行子查询多行子查询in关键字all关键字any关键字多列子查询在from中使用子查询 合并查询union 和 union all 前言 我前面博客讲的所有的查询都是在单表中进行的,从这里开始就要专门针对查询这个话题进行进一步…

GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件

GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件 文章目录 GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件前言一、安装git二、git基本操作2.1 初始化git2.2 配置局部生效2.3 配置全局生效 三、认识工作区…

2018年全国硕士研究生入学统一考试管理类专业学位联考数学试题——解析版

文章目录 2018 年考研管理类联考数学真题一、问题求解(本大题共 5 小题,每小题 3 分,共 45 分)下列每题给出 5 个选项中,只有一个是符合要求的,请在答题卡上将所选择的字母涂黑。真题(2018-01&a…

DRF-项目-(1):构建纯净版的drf项目,不再使用django的后台管理,django的认证,django的session等功能,作为一个纯接口项目

项目的目录结构: -HeartFailure |-- apps |--user |--HeartFailure |-- static |--manage.py 一、django项目相关的 1、命令行中创建django项目 #1、切换到指定的虚拟环境中 workon my_drf#2、该虚拟环境已经安装好django和rest_framework了 django-admin startp…

④【Set】Redis常用数据类型: Set [使用手册]

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ Redis Set ④Redis Set 操作命令汇总1. sadd …

mysql的联合索引最左匹配原则问题

MySQL的联合索引 联合索引的最左匹配原则会一直向右匹配直到遇到范围查询(>、<、between、like) 就会停止匹配。 这个结论并不全对&#xff01;去掉 「between 和 like 」这个结论就没问题了 经过实验的证明&#xff0c;我得出的结论是这样的&#xff1a; 联合索引的最…

【计算机网络学习之路】TCP socket编程

文章目录 前言一. 服务器1. 初始化服务器2. 启动服务器 二. 客户端三. 多进程服务器结束语 前言 本系列文章是计算机网络学习的笔记&#xff0c;欢迎大佬们阅读&#xff0c;纠错&#xff0c;分享相关知识。希望可以与你共同进步。 本篇博客基于UDP socket基础&#xff0c;介绍…

Oracle的控制文件多路复用,控制文件备份,控制文件手工恢复

一.配置控制文件多路复用 1.查询Oracle的控制文件所在位置 SQL> select name from v$controlfile;NAME -------------------------------------------------------------------------------- /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/fast_recovery_a…

【docker】docker总结

一、Docker简介 Docker是开源应用容器引擎&#xff0c;轻量级容器技术。基于Go语言&#xff0c;并遵循Apache2.0协议开源Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的Linux系统上&#xff0c;也可以实现虚拟化容…

No matching variant of com.android.tools.build:gradle:7.4.2 was found.

一、报错信息 创建个新项目&#xff0c;运行直接报错&#xff0c;信息如下&#xff1a; No matching variant of com.android.tools.build:gradle:7.4.2 was found. The consumer was configured to find a runtime of a library compatible with Java 8, packaged as a jar,…

shell 条件语句

目录 测试 test测试文件的表达式 是否成立 格式 选项 比较整数数值 格式 选项 字符串比较 常用的测试操作符 格式 逻辑测试 格式 且 &#xff08;全真才为真&#xff09; 或 &#xff08;一真即为真&#xff09; 常见条件 双中括号 [[ expression ]] 用法 &…

关于一些bug的解决1、el-input的输入无效2、搜索之后发现数据不对3、el多选框、单选框点击无用4、

el-input输入无效 原来的代码是 var test null 但是我发现不能输入任何值 反倒修改test的初始值为123是可以的 于是我确定绑定没问题 就是修改的问题 于是改成 var test ref&#xff08;&#xff09; v-model绑定的值改成test.value就可以了 因为ref是相应式的 可以通过输入…