我们来谈谈单片机的复位时钟和时序。 之前我们画过单片机的最小系统,但是没有详细分析电路。 那么有同学就问这个单片机的时序电路应该如何分析。 那么通过本期我们给大家简单介绍一下单片机的复位电路,以及时钟和时序。 以下专栏还将向您介绍一些也使用该时钟和时序的外围设备。 微控制器中也有时钟。 周期包括机器周期和指令周期的概念。 后面讲定时计数器的时候,仍然需要用到机器周期的概念,所以我简单介绍一下。
首先我们看一下单片机的复位。 Reset表示有复位电路。 这相当于我们的电脑有一个重置按钮。 按下该按钮后,计算机即可恢复原来的初始操作系统界面。 这是重置。
对于微控制器来说也是如此。 微控制器在启动时也需要复位。 它的复位主要是使CPU或其他功能部件处于某种工作状态,并从该状态开始工作。 这就是我们为微控制器应用所做的事情。 设计时必须考虑到这一点,或者必须将其作为应用程序设计的前提条件。
另外,如果微控制器在运行过程中死机,则必须重置微控制器才能重新开始工作。 因此,为了提高单片机的抗干扰能力,我们通常会添加一个看门狗电路来阻止这个操作过程。 如果发生死机,可以及时复位,恢复工作。 单片机复位后,PC指针指向ROM中的0000来检索该单元,这样单片机就可以从最初的第一条指令代码开始运行程序。 。
另外,我们的微控制器在复位后有一个初始工作状态。 每个人都应该意识到这一点。 我们看一下单片机复位后芯片上各个寄存器的初始状态值。 PC指针复位后为0000H,表示它指向ROM中的第一个单元,就是执行我们的程序代码。 比如我们IO的P0到P3口复位后都是高电平,也就是FFH。 除了SP指向07H外,其他一些寄存器都是00H。 当然,也有两个例外。 一种是SBUF中的值为不确定值,其余均为00H。 您需要对此有一个总体的了解。 这是我们单片机上电后的一个初始状态,但是需要注意的是,如果启动时,RAM中的内容有一个随机值,但是如果在运行过程中按下复位按钮,RAM中的内容就会变成随机值。此时单片机内部的RAM不会发生变化,因为单片机的RAM断电,数据就丢失了,所以在第一次复位后,在运行程序的同时再次数一下复位按钮。 此时RAM的内容不会改变,但寄存器肯定会改变为初始状态值。
微控制器的复位电路是什么样的? 其实在之前的专栏中已经提到过。 微控制器在什么条件下可以产生复位? 这意味着大于两个机器周期的高电平出现在引脚9 RST 上。 这个高电平的要求一般是大于3V,也就是说可以产生大于两个机器周期的高电平,复位后同学可能会问两个机器周期需要多长时间? 后面介绍时序的时候我会告诉大家机器周期时间。
复位电路共有三种类型可供参考。 一种是开机复位,一种是按键复位,还有一种是按键和开机综合复位。 这是用于复位操作的复位电路的基本形式。 所以常用的就是开机和按键复位,这是两者的结合,就是复合复位。 这是我们经常使用的方法。 每个人都需要了解如何实现重置。
大于两个机器周期的大约时间是多少? 比如如果是12兆晶振,我们单片机的机器周期就是2微秒,也就是复位电路。 例如,上电复位是通过电阻和电容参数的匹配来实现的。 如果RST上电后可以复位,产生高电平2微秒,然后变为低电平进入工作状态,这就是一开始的复位状态,即RST为低电平时,为工作状态,当RST产生两个以上机器周期的高电平时,将进入复位状态。
电阻电容参数的原理是什么? 简单的理解就是电容在上电的瞬间通过交流,阻挡直流。 上电瞬间,相当于电容短路,所以RST引脚为高电平。 当电容器充满电时,它变为低电平。 充电时间可以通过这个阻容参数进行匹配,可以使充电时间,即从维持高电平的时间,大于两个机器周期的时间,这会导致单片机上电时产生复位条件。 会维持高电平两个机器周期,然后转为低电平,进入正常工作状态。 这是上电复位。
按钮复位的原理是一样的。 当按钮未被按下时,RST接低电平。 当按钮按下时,高电平就会过来,这会导致按下按钮并释放时另一端产生高电平。 ,这个时间基本都会在毫秒级别,所以肯定大于reset的两个机器周期,因为reset的两个机器周期,就像刚才说的,大概都是微秒级别的,相差一级别和一个数量。 电平,因此该按钮还可以重置我们的微控制器。
这个参数该如何选择呢? 一般我们的设备手册会给您这个阻容参数的推荐匹配值。 以12M晶振为例,取10K或8.2K。 当按钮复位时,我们通常取200欧姆的电阻。 如果有兴趣,还可以查找STC89C51的芯片手册。 它还会有具体的电路设计,并且还会给您提供电阻和电容参数的推荐值。 当然,也可以使用充放电时间常数的公式。 计算也是可能的。 这是单片机的复位,所以基本上我们在单片机电路开始时做的第一个电路就是复位电路,对吗?
单片机的时钟电路需要一个统一的时钟进行时钟控制,才能有序工作。 单片机的工作过程是CPU取一条指令进行译码,译码后进行微操作,然后再取另一条指令进行译码。 微操作,从这个微操作开始,按照连续性,自动完成相应的指定功能。 这种微操作在时间上有严格的顺序。 我们会参考这种微操作的时序。 这就是所谓的时机。
是什么决定了这个微操作的时序、基本时序、或者基本时序的基本单位? 一般来说,如果我们使用内部时钟,则由外部晶振决定。 如果我们使用外部时钟信号,则由外部时钟脉冲的频率决定。
微操作有一个基本时序,那么这个基本时序是如何产生的呢? 那么我们一般有两种方式来生成这个时序电路。 例如,80C51单片机的时钟信号通常有两种方式产生。 一种是使用内部时钟,连接外部晶振,然后使用内部振荡器。 使用这种方法来生成我们的基本时序的最小单位是时钟频率,或者振荡频率,或者时钟周期,或者振荡周期。 计时的最小单位相当于我们在时钟上使用的最小单位。 我们使用的最小单位是一。 就像秒一样,它的最小单位之一是时钟周期或振荡周期。
另一种方法是使用外部时钟。 外部时钟方式是将现有的外部时钟信号引入单片机,因此该引脚连接外部时钟信号。 XTAL2 引脚直接悬空。 您需要从外部提供它。 方波频率信号,然后将其作为其恒定参考。 这种方法一般用在多个单片机同时工作,且要求各个单片机同步运行的情况下。 这样,同一个信号可以用于多个微控制器。 外接时钟信号,可以多台单面机同时工作,方便时钟同步。 在实际应用过程中,我们经常使用内部方法。 内部方法另外需要注意的是,如果使用串行通信,一般建议时钟频率为11.0592MHz。 ,我们后面讲串行通信的时候会强调这一点,因为在这种时钟晶振的情况下,使用定时计数器计算波特率时,是没有错误的。 在使用12MHz和6MHz的时候,是有一个累积误差的,大家需要注意这一点。
那么为什么这个11.0592MHz会出现小数点呢? 这个原因我们稍后会回答并详细解释。 主要用于串行通信,方便将波特率设置为标准标称值。 这是我们典型的时钟电路。
时序的概念,时序是一个对象,一个引脚,或者一个事件,或者一条信息,由时间顺序组成的顺序关系。 大家在学习电气工程的时候,一般都会谈到这个时序。 我们一般可以用状态方程或者状态图、状态表和时序图等几种方式来表示,其中时序图是最常用的。 例如,应该如何查看序列图? 一般来说,时序图实际上是坐标图。 当然,我们实际使用的时候,往往会省略坐标轴。 至于计时,一般来说,横轴代表时间,纵轴一般代表纵坐标。 一般来说,它们代表不同对象的级别。 这个大家应该都大致了解了。
怎么看这个时序呢? 一般来说,我们要按照从上到下、从左到右的顺序来看这个时序。 当然,我们还需要考虑信号,它是有顺序关系的,即时序上有一个关系。 只有满足这个关系,设备才能工作。 特别是在制作一些外部设备时,与微控制器接口时,必须遵循一些时序。 比如我们做R square C 的时候,或者一些XPI设备的接口必须给它提供严格的时序,否则它就无法工作,或者无法响应你单片机的指令。
例如,如上所示,这是一个芯片的时序图。 应该如何看待这个时序图呢? 最左边的地方称为引脚标识,RS引脚,RW引脚,D0至D7。 这是LCD 1602的时序图,它是数据或命令的信号线,读写信号线,可以输出使能信号线,D0到D7的数据是8位的。 交叉线代表这个时序图中的数据,交叉线代表电平的变化。 这代表了一个稳定的数据。 菱形包围的部分代表有效的数据。 数据不变,即该位置的高电平发生变化,该位置的高低电平不再变化。 它已经改变了。 它是原始水平,所以我们的高低水平的变化是在十字线的位置。
水平方向代表时间尺度,代表一段时间的长度,那么这张图应该怎么看呢? 同时看几个引脚,还需要看时间之间的关系,也就是说你要考虑上下的关系,以及时间上的关系。 只有满足这个时序条件,这个数据或者命令,这个设备才能执行,那么时序应该如何分析呢? 您如何看待时机? 一般来说,时序取决于需要多少引脚。 就看这些引脚之间必须满足什么条件才能够正常切换工作。 一般来说,我们操作一个设备的时候,要么写入数据,要么读取数据。 数据要么是写命令,要么是读状态,顺序是从上到下,再从左到右看。 从上到下看,RS被拉为低电平,然后RW被拉为低电平,然后是D0到D7。 该数据将会改变。 刚才我们说了,十字线代表数据变化,所以,比如说如果是P0口,你可以把这个数据发送到P0口,就相当于数据变化了。 那么,如果你想有效地将这个数据发送到总线上,就意味着它可以接收到它。 什么时候有效,就看这个时机了。 ,发现都有效后,把它们拉到一个高的水平。 这个脉冲时间应该控制多长? 要控制TPW这么长的时间,T就是这个脉冲的有效时间,然后E脉冲变成高电平。 经过这么长时间,E被拉至低电平,然后依次将RW和RS拉高。 你什么时候把它们拉高? THD 时间过后需要将其拉至高电平。 这时经过第二次TH后,传输就结束了,那么就可以按照这个时序来写程序了,对吧? 向设备写入数据,或从设备读取数据,或向设备写入指令,即写入命令或读取状态。 设备的操作无非就是写数据和读数据,写命令读取状态。 ,基本上是这样的。
所以后面讲的时候我会给大家详细分析一下如何用程序代码来实现这个时序。 这是一个简单了解时序的图。 简单分析一下。 大家在读电子学硕士的时候,都应该分析一下。 通过这个数字电路的定时。