5单片机的内部结构分析(三)时序与时钟
- 格式:doc
- 大小:45.50 KB
- 文档页数:4
单片机指令的时钟和定时器控制时钟和定时器控制是单片机中非常重要的功能模块。
单片机的时钟主要用于控制指令的执行过程,而定时器功能则可以实现精确的时间测量和任务调度。
本文将详细介绍单片机指令的时钟和定时器控制。
一、时钟控制在单片机中,时钟是指定时单元(Timer/Counter)的运行时钟。
时钟信号可以是外部晶振信号,也可以是由外部晶振经过分频电路产生的。
时钟信号的频率直接影响到单片机的运行速度和性能。
不同型号的单片机支持的最大工作频率不同,需要根据具体型号的手册来设置时钟频率。
时钟的分频系数可以通过内部的控制寄存器来设置,通常可以选择不同的分频因子来适应不同的应用需求。
在设置时钟的分频系数时,需要考虑到单片机的工作环境、外部设备的要求以及功耗等方面的因素。
在程序中,可以通过配置寄存器来设置时钟源、分频系数等参数。
常见的时钟源有外部晶振,内部振荡器等。
下面是一个简单的示例代码:```C#include <reg51.h>void main(){// 设置时钟源为外部晶振,分频系数为12TMOD = 0x01;TCON = 0x00;TH0 = 0x1A;TL0 = 0x1A;TR0 = 1;while(1){// 在这里编写其他的代码}}```在上面的示例代码中,通过设置TMOD寄存器来配置定时器的工作模式。
TCON寄存器用于启动定时器,并设置定时器的计数初值。
最后通过设置TR0寄存器来启动定时器的计数。
二、定时器控制定时器是单片机中常用的功能模块之一,它可以根据设置的参数自动定时中断,并执行相应的处理函数。
定时器通常用于实现精确的时间测量、任务调度、脉冲计数等应用。
在单片机中,常见的定时器有定时器0和定时器1。
定时器0通常用于系统的时基控制和通信协议的实现,定时器1则通常用于编码器计数、PWM信号生成等应用。
定时器的工作原理是通过计数器的自动累加和溢出来实现的。
当定时器溢出时,会触发相应的中断,并执行中断处理函数。
单片机的时序在电子世界中,单片机就像是一个小巧而强大的智慧核心,掌控着各种设备的运行。
而要理解单片机如何准确无误地执行任务,关键就在于掌握它的时序。
什么是单片机的时序呢?简单来说,时序就是单片机在执行指令和操作外部设备时,各种信号在时间上的先后顺序和持续时间。
就好比我们日常生活中的流程,先做什么,后做什么,每个步骤持续多久,都有一定的规律和节奏。
为了更清晰地理解,我们先来看看单片机的内部结构。
单片机内部有中央处理器(CPU)、存储器、输入输出端口等部分。
这些部分之间的协同工作,都依赖于精确的时序控制。
当我们给单片机下达一个指令时,它并不是立刻就能执行的。
首先,指令会被存储在存储器中,然后 CPU 按照一定的节奏从存储器中读取指令,并进行解码和执行。
这个节奏就是由时钟信号来控制的。
时钟信号就像是单片机的心跳,它以固定的频率跳动,决定了单片机每一步操作的时间间隔。
比如,如果时钟频率是 10MHz,那就意味着每秒钟单片机内部会进行 1000 万次的操作。
单片机在与外部设备进行通信时,时序同样至关重要。
以常见的串口通信为例,发送和接收数据都有严格的时序要求。
发送方要按照特定的时间间隔发送数据位,接收方也要在准确的时刻进行采样,才能保证数据的正确传输。
再来说说单片机对存储器的读写操作。
无论是读取程序存储器中的指令,还是读写数据存储器中的数据,都有明确的时序规定。
比如,在读取数据时,需要先发出读信号,然后等待一定的时间,才能获取到稳定有效的数据。
单片机的时序还与指令的执行周期有关。
不同的指令可能需要不同的执行时间。
有些简单的指令可能在一个时钟周期内就能完成,而复杂的指令可能需要多个时钟周期。
在实际的应用中,如果时序出现问题,可能会导致各种错误。
比如,数据传输错误、设备无法正常工作,甚至整个系统崩溃。
为了确保时序的准确性,在设计单片机系统时,我们需要仔细考虑时钟源的选择和配置。
时钟源可以是外部晶体振荡器,也可以是内部的 RC 振荡器。
51单片机原理介绍单片机是一种控制芯片,一个微型的计算机,而加上晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器),按钮(类似键盘),扩展芯片,接口等那是单片机系统,以下是8051系列单片机原理和内部结构基础介绍外部引脚功能存储空间配置和功能片内RAM结构和功能特殊功能寄存器的用途和功能程序计数器PC的作用和基本工作方式I/O端口结构、工作原理及功能 时钟和时序 复位电路、复位条件和复位后状态 低功耗工作方式的作用和进入退出的方法§2-1 单片机原理简介和引脚功能一、内部结构二、引脚功能40个引脚大致可分为4类:电源、时钟、控制和I/O 引脚。
⒈ 电源: ⑴ VCC - 芯片电源,接+5V;⑵ VSS - 接地端;⒉ 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。
⒊ 控制线:控制线共有4根,⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲① ALE功能:用来锁存P0口送出的低8位地址② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵ PSEN:外ROM读选通信号。
⑶ RST/VPD:复位/备用电源。
① RST(Reset)功能:复位信号输入端。
② VPD功能:在Vcc掉电情况下,接备用电源。
⑷ EA/Vpp:内外ROM选择/片内EPROM编程电源。
① EA功能:内外ROM选择端。
② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
⒋ I/O线80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
单片机时钟原理
单片机时钟原理是指单片机内部系统中的一个计时器电路,用于产生一个稳定的时钟信号。
时钟信号的频率用来控制单片机内部各个模块的运行节奏,以确保它们按照正确的顺序和时间进行工作。
在单片机中,通常采用晶体振荡器作为时钟源。
晶体振荡器是一种稳定的电子振荡器,由晶体和与晶体相连的谐振电路组成。
晶体的内部结构使得它具有一个特定的谐振频率,当外加电压施加到晶体上时,它会开始振荡并产生稳定的振荡信号。
单片机内部的时钟电路通常由一个振荡电路和一个分频电路组成。
振荡电路负责产生一个基准振荡信号,而分频电路则将这个振荡信号分频得到一个较低频率的时钟信号,以满足单片机的工作需求。
在单片机启动过程中,振荡电路通过控制晶体振荡器工作,产生一个基准振荡信号。
这个基准振荡信号经过分频电路的处理,产生一个较低频率的时钟信号。
这个时钟信号可以控制单片机中各个模块的时序,使其在正确的时间进行工作。
在单片机的编程中,开发人员可以通过对时钟寄存器的设置来调整时钟频率。
通过控制时钟频率,可以改变单片机内部各个模块的运行速度,从而满足不同的应用需求。
总的来说,单片机时钟原理是通过振荡电路和分频电路产生一个稳定的时钟信号,用于控制单片机内部各个模块的时序和节
奏。
这个时钟信号在单片机的启动过程中产生,并且可以通过对时钟寄存器的设置来进行调整。
单片机的内外部结构分析(三)
一、延时程序分析
上一次课中,我们已经知道,程序中的符号R7、R6是代表了一个个的RAM单元,是用来放一些数据的,下面我们再来看一下其它符号的含义。
1.MOV:这是一条指令,意思是传递数据。
说到传递,我们都很清楚,传东西要从一个人
的手上传到另一个人的手上,也就是说要有一个接受者,一个传递者和一样东西。
从指
令MOV R7,#250中来分析,R7是一个接受者,250是被传递的数,传递者在这条指令
中被省略了(注意:并不是每一条传递指令都会省的,事实上大部份数据传递指令都会
有传递者)。
它的意义也很明显:将数据250送到R7中去,因此执行完这条指令后,
R7单元中的值就应当是250。
在250前面有个#号,这又是什么意思呢?这个#就是用来说明250就是一个被传递的东西本身,而不是传递者。
那么MOV R6,#250是什么意思,应当不用分析了吧。
2.DJNZ:这是另一条指令,我们来看一下这条指令后面跟着的两个东西,一个是R6,一个
是D2,R6我们当然已知是什么了,查一下D2是什么。
D2在本行的前面,我们已学过,这称之为标号。
标号的用途是什么呢?就是给本行起一个名字。
DJNZ
指令的执行过程是这样的,它将其后面的第一个参数中的值减1,然后看一下,这个值是否等于0,如果等于0,就往下执行,如果不等于0,就转移,转到什么地方去呢?可能大家已猜到了,转到第二个参数所指定的地方去(请大家用自已的话讲一下这
条语句是怎样执行的)。
本条指令的最终执行结果就是,在原地转圈250次。
3.执行完了DJNZ R6,D2之后(也就是R6的值等于0之后),就会去执行下面一行,也
就是DJNZ R7,D1,请大家自行分析一下这句话执行的结果。
(转去执行MOV R6,#250,同时R7中的值减1),最终DJNZ R6,D2这句话将被执行250*250=62500次,执行这么多次同一条指令干吗?就是为了延时。
4.一个问题:如果在R6中放入0,会有什么样的结果。
二、时序分析:
前面我们介绍了延时程序,但这还不完善,因为,我们只知道DJNZ R6,D2这句话会被执行62500次,但是执行这么多次需要多长时间呢?是否满足我们的要求呢?我们还不知道,所以下面要来解决这个问题。
1.时序的由来
我们已经知道单片机执行指令的过程就是顺序从ROM(程序存储器)中取出指令一条一条的顺序执行,然后进行一系列的微操作控制,来完成各种指定的动作。
它在协调内部的各种动作时必须要有一定的顺序,换句话说,就是这一系列的微操作控制信号在时间上要有一个严格的先后次序,这种次序就是单片机的时序。
这就好比学校上课时的电铃,为了保证课堂秩序,学校就必须在铃声的统一协调下安排各个课程和活动。
那么单片机的时序如何规定呢?。
2.时序的周期
计算机访问一次存储器的时间,称之为一个机器周期。
这是一个时间基准,就像我们人用“秒”作为我们的时间基准一样,为什么不干脆用“秒”,多好,很习惯,学下去我们就会知道用“秒”反而不习惯。
一个机器周期包括12个振荡周期,什么是振荡周期?一个振荡周期是多少时间?振荡周期就是振荡源的周期,也就是我们使用的晶振的时间周期,一个12M晶振,它的振荡周期是1/12(微秒)。
那么使用12M晶振的单片机,它的一个机器周期就应该等于12×(1/12)也就是1微秒。
(请计算一个工作于6M晶振的单片机,它的机器周期是多少)。
MCS-51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较慢,得要2个机器周期,还有两条指令要4个机器周期才行。
这也不难再解,不是吗?我让你扫地的执行要完成总得比要你完成擦黑板的指令时间要长。
为了恒量指令执行时间的长短,又引入一个新的概念:指令周期。
所谓指令周期就是指执行一条指令的时间。
INTEL对每一条指令都给出了它的指令周期数,这些数据,大部份不需要我们去记忆,但是有一些指令是需要记住的,如DJNZ指令是双周期指令。
下面让我们来计算刚才的延时。
首先必须要知道晶振的频率,我们设所用晶振为12M,则一个机器周期就是1微秒。
而DJNZ指令是双周期指令,所以执行一次要2个微秒。
一共执行62500次,正好125000微秒,也就是125毫秒。
这么大的数字也就是.125秒,怪不得LED1闪烁的那么快。
(思考:在上次的延时实验中,如何延长闪烁的时间?想想看,怎么做?)
练习:设计一个延时100毫秒的延时程序。
要点分析:1、一个单元中的数是否可以超过255。
2、如何分配两个数。
三、复位电路
任何单片机在工作之前都要有个复位的过程,复位是什么意思呢?它就象是我们上课之前打的预备铃。
预备铃一响,大家就自动地从操场、其它地方进入教室了,在这一段时间里,是没有老师干预的,对单片机来说,是程序还没有开始执行,是在做准备工作。
显然,准备工作不需要太长的时间,复位只需要5ms的时间就可以了。
如何进行复位呢?只要在单片机的RST引脚上加上高
电平,就可以了,按上面所说,时间不少于5ms。
为了达到这个要求,可以用很多种方法,这里提供一种供参考,见图1。
实际上,我们在上一次实验的图中已见到过了。
这种复位电路的工作原理是:通电时,电容两端有短暂的瞬间电流,电容相当于是短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程度,即为低电平,单片机开始正常工作。
四、单片机的时钟电路
大家已经知道,单片机是在一定的时序控制下工作的。
那么时序和时钟又有什么关系呢?时钟是时序的基础,单片机本身就如同一个复杂的同步时序电路,为了保证同步工作方式的实现,电路就要在唯一的时钟信号控制下按时序进行工作,那么单片机内的时钟是如何产生的呢?
1 内部时钟电路
在 MCS-51单片机的内部有一个高增益的反相放大器,其输入端为引脚 XTAL1 19 脚,输出端为XTAL2 18 脚,我们只要在外部接上两个电容和一个晶振就能构成一个稳定的自激振荡器。
它的内部电路的工作原理就不介绍了,这里主要讲一下电容和晶振的选择,看上面的图,晶振的大小与单片机的振荡频率有关,我们到串行接口时再详细讲解,电容的大小影响着振荡器振荡的稳定性和起振的快速性,通常选择 10-30P 的瓷片电容或校正电容,另外在设计电路时,晶振和电容应尽可能的靠近芯片,以减少 PCB 板的分布电容,保证振荡器工作的稳定性,提高系统的抗干扰能力
2 外部时钟电路
除了内部时钟方式外,单片机还可以采用引入外部时钟的振荡方式,什么时候需要采用外部时钟方式呢,当我们的系统由多片单片机组成时,为了保证各单片机之间时钟信号的同步,就应当引入唯一的公用的外部脉冲信号作为各单片机的振荡脉冲,此时应将 XTAL2 悬空不用,外部脉冲信号由 XTAL1引入,如上右图所示。
五、习题
1 什么是单片机的机器周期?什么是振荡周期?什么是指令周期?它们之
间的关系是怎么样的?
2 什么是单片机的时序?
3 单片机有几种振荡方式?
4 简述单片机内部时钟的产生过程。