0
点赞
收藏
分享

微信扫一扫

学51单片机原理入门知识点,复位时钟和时序(一)

我们来讲一下单片机的复位时钟和时序,这个之前已经画过单片机的最小系统,但是没有具体的把电路来分析一下,然后也有同学在问这个单片机的包括时序电路应该怎么分析。那我们通过这一期来给大家简单的来介绍一下单片机的复位电路,以及时钟和时序,后面的专栏也会给大家介绍一些外围的器件也会用到这个时钟和时序,单片机当中也有时钟的一个周期,包括机器周期和指令周期的概念,在后面讲定时计数器的时候,还是需要用到机器周期的概念,所以我做一个简单介绍。

首先来看一下单片机的复位,复位的意思就是说有一个复位电路,这个就相当于是我们计算机一样有一个复位按键,按下按键之后,计算机就能够恢复原始的初始的操作系统的界面,这个就是复位。

单片机也是一样的,单片机在启动的时候也是需要复位,它的复位主要是使cpu或者是其它的功能部件能处于一个确定的工作状态,并且要从这个状态开始工作,这个是我们做单片机应用程序设计的时候必须考虑的,或者说是必须要以此作为应用程序设计的一个前提。

另外单片机在运行的时候如果出现死机,也必须要对单片机进行复位使其重新开始工作,所以如果为了提高单片机的抗干扰能力,我们一般的话还会增加看门狗电路,为了防止这个运行的过程当中出现死机,能够及时的复位,能够重新的进行工作,单片机复位之后PC指针指向的是ROM当中的0000来取这个单元,这样单片机才能够从初始的第一条指令代码进行这个程序的一个运行。

另外就是我们单片机复位之后有一个初始的工作状态,这个大家也要清楚,那我们来看一下单片机复位之后,片内各寄存器的一个初始的一个状态值,PC指针复位之后是0000H,也就是指向ROM当中的第一个单元,来执行我们的程序代码。像我们的这个IO的P0到P3口是复位之后是全部呈现的是高电平也就是FFH,其它的一些寄存器除了SP指向07H,其它的一些寄存器都是00H,当然有两个例外,一个是SBUF里面的值是一个不确定的值,剩下都是00H,这个大家要把它大概的了解一下,这个属于我们单片机上电之后的一个初始的一个状态,但是需要注意的是如果说在启动的时候,RAM当中的内容随机的一个值,但是如果运行的过程当中按下复位键,这个时候单片机片内RAM的内容是不改变的,因为单片机的RAM是掉电,数据丢失,所以在第一次复位之后运行程序的过程当中再算一下复位键,这个时候RAM当中的内容是不改变的,但是寄存器肯定是变成这个初始的这种状态值。

单片机的复位电路是什么样子的,实际上在前面的专栏已经讲过了,单片机在满足什么样的条件下能够产生复位?这就是在九号引脚RST这个引脚上出现大于两个机器周期的高电平,这个高电平的要求一般是大于3V以上,也就是说大于两个机器周期时间的高电平能够产生复位,又同学会问两个机器周期的时间大概是多少?我在后面介绍时序的时候会给大家讲机器周期的时间。

复位有这么三种电路可以参考,一个叫做上电复位,另外一个就是按键复位,那还有一个就是按键和上电的一个综合复位,这个是复位操作的一个复位电路的基本的一个形式。所以常用的就是上电和按键复位,就是两者结合,也就复合的一个复位,这是我们经常用的一种方式,大家要理解一下如何实现的复位。

大于两个机器周期的时间大概是多少?比如说如果说是12兆晶振呐,我们这个单片机的它的机器周期就是2个微秒,就是说复位电路,比如说上电复位通过阻容参数的匹配,如果说能够使这个RST在上电的时候产生2个微秒的高电平,然后变成低电平进入工作状态,就是刚开始是复位状态,也就是RST是低电平的时候是工作状态,当RST产生两个机器周期以上的高电平会进入复位状态。

阻容参数这个原理是什么?简单的理解一下就是电容是通交流隔直流,在上电的瞬间。在上电的瞬间,相当于这个电容是一个短路,所以RST引脚上是高电平,随着对这个电容充电充满了之后,就变成了低电平。充电时间可以通过这个阻容参数的匹配,能够使充电时间,也就是说从维持高电平的时间,能够大于两个机器周期的时间,能够使这个单片机产生一个复位条件,在上电的时候会维持两个机器周期的高电平,然后就会变成低电平,进入到正常的工作状态,这个就是上电复位。

按键复位的道理是一样的,当按键没有按下的时候,RST接的低电平,当按键按下的时候高电平会过来,会使另外一端产生高电平,按键按下和松开,这个时间基本上会在毫秒级的,所以肯定是大于复位的两个机器周期,因为复位的两个机器周期,刚才讲的大概是在微秒级的,差着一个等级,差了一个量级,所以按键也能够使我们的单片机进行复位。

这个参数怎么选?,一般在我们的器件手册当中都会给你这个推荐典型的这个阻容参数的匹配值,在12兆晶振的时候,比如说取10K或者是8.2K,按键复位的时候电阻,我们一般取200欧,感兴趣的也可以去找一下STC89C51的那个芯片手册,它里面也会有具体电路的设计,也会给你阻容参数的一个推荐值,当然也可以利用充放电的时间常数的那个公式去计算也是可以的。这个就是单片机的复位,所以呢,我们单片机的电路基本上刚开始做的第一个电路就是做复位电路对吧。

单片机的时钟电路,单片机需要统一的时钟来进行时钟控制,它才能够有条不紊的工作,单片机的工作过程是cpu取一条指令进行译码,译码之后进行微操作,然后再取一条指令译码进行微操作,它就是这样一步一步地自动地由这个微操作,依照持续来完成相应规定的一个功能,这种微操作在时间上是有一个严格的次序的,这种微操作的时间次序我们就叫做时序。

这个微操作的这个时间次序,基本的定时,或者说基本时序的这个基本单位是由什么决定的?我们一般是如果说使用内部时钟的话是由外部的这个晶振,是由这个晶振决定的,如果说使用的是外部时钟信号的话,那就是说是由外部的时钟脉冲的频率来决定的。

微操作它有一个基本的时序,那这个基本的时序它怎么样来产生的?那我们一般有两种方式来产生这个时序电路。比如说80C51单片机的这个时钟信号,通常有两种方式产生,一种是使用内部时钟的方式,在外部接一个晶振,然后使用内部的振荡器,使用这种方式来产生我们的一个基本的一个最小的一个定时单位,也就是时钟频率,或者叫做振荡频率,叫做时钟周期,或者说振荡周期这么一个最小的一个定时单位,最小的一个单位就相当于时钟上我们人用的最小的单位是一秒钟一样,它的一个最小单位,就是时钟周期,或者叫作振荡周期。

另外一种方式就是使用外部时钟的方式,外部时钟的方式是把外部已有的时钟信号引入到单片机内部,所以引脚是接外部的时钟信号,XTAL2这个引脚直接是悬空,外部你要提供方波的一个频率信号,然后给它作为它的始终基准,这种方式,一般是用于多片单片机同时工作,并要求各单片机能够同步运行的场合,这样的话可以给多个单片机使用同一个外部时钟信号,多个单面机就可以同时进行工作,便于时钟同步。我们在实际的应用过程当中,经常使用的是内部的使用方式,内部的使用方式还需要一个注意的就是如果说使用了串行通信,一般推荐大家选用的时钟频率是选用11.0592MHz的这个时钟频率,这个我们后面讲串行通信的时候还会强调,因为在这个时钟晶振的情况下,用定时计数器来计算波特率的时候,它没有误差啊,用12MHz和6MHz的时候,是有一个累积误差在那边,这个大家需要注意。

所以为什么会出现这个11.0592MHz,有个小数点,这个原因我们后面回答一下,具体解释,主要是用于串行通信,便于设定波特率为标准的一个标称值,这个就是我们的典型的一个时钟电路。

时序的概念,时序的是对象,是引脚,或者事件,或者一个信息,按照时间顺序组成的一个序列关系,大家在学硕电的时候,一般的话都会讲到这个时序,我们一般可以用状态方程或者状态图,状态表和时序图这么几种方法来表示,其中时序图是最为常用的,比如说一个时序图应该怎么看?一般来说时序图它实际上是一个坐标图,当然了,我们实际使用的时候,坐标轴经常是省略的,时序呢,一般来说横轴代表的是时间,纵轴一般是表示纵坐标,一般是表示不同对象的电平,这个大家要大概的知道。

怎么来看这个时序,一般来说,我们要按照从上到下和从左到右的这个次序依次来看这个时序,当然了还要考虑信号,它是有时序的一个前后关系的,就是有一个时间安排顺序的一个关系,只有在满足这个关系的时候器件才能去工作,尤其是做一些外部的一些器件的时候,和单片机做接口的时候,要按照一些时序,比如说我们做R平方C,或者是XPI的一些器件的接口就必须给它提供一个严格的一个时序,否则的话它就没办法工作,或者没办法去响应你单片机的这个指令。

举个例子,如上图,这个就是一个芯片的一个时序图,这个时序图应该怎么看?最左边这个地方叫做引脚的标识,RS引脚,RW引脚,D0到D7,这个是液晶1602的一个时序图,就是数据或者命令的一个信号线,就是读写信号线,能输出使能的一个信号线,D0到D7数据是一个8位的,交叉线在这个时序图当中表示数据,交叉线的时候代表电平的变化。而这种代表一个稳定的一个数据,菱形的封闭的这个部分表示一个数据的一个有效的数据,数据是不改变的,就是高电平是在这个位置发生变化,这个位置高低电平就不再发生改变了,原来是什么电平它就是什么电平,所以就是我们的高低电平的变化是在这个交叉线这个位置。

水平方向代表的是时间尺度,代表的是持续的一个时间长度,所以这个图应该怎么看?要同时看几个引脚,还要看时间的关系,就是说你就要考虑上下之间的关系,还要考虑时间上的关系,只有满足这个时序条件,它这个数据或者命令,这个器件才能够去执行,时序应该怎么分析?时序怎么看呢?一般看时序要几个引脚,要看这几个引脚之间要满足什么样的条件才能够切才能够正常工作,一般来说,我们对一个器件操作,要么就是写数据,要么就是读数据,要么就是写命令,要么就是读状态,顺序就是要从上到下,然后从左到右来看。从上到下看,就是RS拉成低电平,然后RW拉成低电平,接着就是D0到D7,这个数据要发生变化,刚才我们讲这个交叉线代表数据变化,所以,比如说接到P0口,就可以把这个数据送到P0口上,就相当于是数据发生了改变,接着要想使这个数据有效送到总线上,就是说它能够接收到,什么时刻有效那就要看这个时序了,发现它们俩有效之后,拉成高电平,这个脉冲时间要控制多长?要控制TPW这么长的时间,T这个就是这个一脉冲的有效时间,再E脉冲变成高电平,这么长时间之后,把这个E拉成了低电平,然后时序,把RW和RS要拉成高电平。什么时刻把它们拉到高电平?要过THD这个时间之后把它拉成高电平,这个时候过了TH第二这个时间一次传输就结束了,所以就可以根据这个时序来编写程序,对吧?来实现往器件当中写一个数据,或者从器件读一个数据,或者是往器件写一条指令,就是写一个命令或者是读一个状态,对器件操作无外乎就是写数据读数据,写命令读状态,基本上都是这样子。

所以后面讲到的时候会给大家再来具体分析怎么样用程序代码来实现这个时序,这个是简单的了解一下时序的这个图,简单的一个分析,大家在学硕电的时候呢,应该都是分析过这个数字电路的时序的。

由于文章过于长,我把一整片分成了2小节来给大家阅读,下一篇请到我的主页里面查找阅读,喜欢的帮忙收藏点个赞哦,文章内容仅代表个人观点,不喜勿喷,谢谢大家的支持与鼓励!

 

 

 

想学单片机的朋友,可以私信我,我可以发一些资料给大家作为参考学习的内容,有问题的朋友也可以在评论区评论,或者私信我,尽量帮大家解决朋友们提出的问题,谢谢大家

举报

相关推荐

0 条评论