单片机的时序
- 格式:ppt
- 大小:888.00 KB
- 文档页数:25
单片机IO口结构及上拉电阻MCS-51有4组8位I/O口:P0、P1、P2和P3口,P1、P2和P3为准双向口,P0口则为双向三态输入输出口,下面我们分别介绍这几个口线。
一、P0口和P2口图1和图2为P0口和P2口其中一位的电路图。
由图可见,电路中包含一个数据输出锁存器(D触发器)和两个三态数据输入缓冲器,另外还有一个数据输出的驱动(T1和T2)和控制电路。
这两组口线用来作为CPU与外部数据存储器、外部程序存储器和I/O扩展口,而不能象P1、P3直接用作输出口。
它们一起可以作为外部地址总线,P0口身兼两职,既可作为地址总线,也可作为数据总线。
图1 单片机P0口内部一位结构图图2 单片机P2口内部一位结构图P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15,P0口由ALE选通作为地址总线的低8位输出口AB0-AB7。
外部的程序存储器由PSEN信号选通,数据存储器则由WR和RD读写信号选通,因为2^16=64k,所以MCS-51最大可外接64kB的程序存储器和数据存储器。
二、P1口图3为P1口其中一位的电路图,P1口为8位准双向口,每一位均可单独定义为输入或输出口,当作为输入口时,1写入锁存器,Q(非)=0,T2截止,内上拉电阻将电位拉至"1",此时该口输出为1,当0写入锁存器,Q(非)=1,T2导通,输出则为0。
图3 单片机P2口内部一位结构图作为输入口时,锁存器置1,Q(非)=0,T2截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,正因为这个原因,所以P1口常称为准双向口。
需要说明的是,作为输入口使用时,有两种情况:1.首先是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读—修改—写操作,象JBC(逻辑判断)、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)和ORL(逻辑或)指令均属于这类操作。
2.读P1口线状态时,打开三态门G2,将外部状态读入CPU。
51单片机指令周期,机器周期,时钟周期详解51单片机有指令周期,机器周期,时钟周期的说法,看似相近,但是又都不太一样,很容易混淆。
还是详细分析一下。
时钟周期:单片机外接的晶振的振荡周期就是时钟周期,时钟周期=振荡周期。
比方说,80C51单片机外接了一个11.0592M的晶体振荡器,那我们就说这个单片机系统的时钟周期是1/11.0592M,这里要注意11.0592M是频率,周期是频率的倒数。
机器周期:单片机执行指令所消耗的最小时间单位。
我们都知道51单片机采用的CISC(复杂指令指令集),所以有很多条指令,并且各条指令执行的时间也可能不一样(有一样的哦),但是它们执行的时间必须是机器周期的整数倍,这就是机器周期的意义所在。
8051系列单片机又在这个基础上进行细分,将一个机器周期划分为6个状态周期,也就是S1-S6,每个状态周期又由两个节拍组成,P1和P2,而P1=P2=时钟周期。
这也就是经常说的8051系列单片机的的时钟频率是晶振频率的12分频,或者是1/12,就是这个意思。
现在(截至2012)新的单片机已经能做到不分频了,就是机器周期=时钟周期。
指令周期:指令周期执行某一条指令所消耗的时间,它等于机器周期的整数倍。
传统的80C51单片机的指令周期大多数是单周期指令,也就是指令周期=机器周期,少部分是双周期指令。
现在(截至2012)新的单片机已经能做到不分频了,并且尽量单指令周期,就是指令周期=机器周期=时钟周期。
来看这张8051单片机外部数据,这里ALE和$PSEN$的变化频率已经小于一个机器周期,如果使用C语言模拟这个信号是没有办法做到的一一对应的,所以只能尽量和上面的时序相同,周期延长。
四川工程职业技术学院单片机应用技术课程电子教案Copyright © 第讲58051及P89V51RD2单片机的时钟、时序和复位本讲主要内容5-1. 标准80C51的时钟电路、时间单位与时序5-2. P89V51RD2单片机的时钟电路、时间单位与时序5-3. P89V51RD2单片机的复位与复位电路时钟电路——用于产生供单片机各部分同步工作的时钟信号方法1:用石英晶体振荡器方法2:从外部输入时钟信号(80C51)80C51振荡器C1C2CYS80C51悬空外部时钟信号XTAL1XTAL2XTAL2XTAL1单片机内部的时间单位S1S2S3S4S5S6机器周期T CY分频器振荡器晶振周期时钟周期(S 状态)80C51P1P2ALE 信号单片机内部的时间单位✧振荡频率f osc = 石英晶体频率或外部输入时钟频率振荡周期= 振荡频率的倒数✧机器周期机器周期是单片机应用中衡量时间长短的最主要的单位在多数51系列单片机中:1机器周期= 12×1/ fosc✧指令周期——执行一条指令所需要的时间单位:机器周期51单片机中:单周期指令、双周期指令、四周期指令单片机内部的时间单位课堂练习:如果某单片机的振荡频率f=12MHz,则:osc振荡周期=S=mS=uS;机器周期=uS;已知乘法指令“MUL AB”是一条4周期指令,则执行这条指令需要uS;加法指令“ADD A,#01H”是单周期指令,那么1S内该单片机可以进行次加法运算。
单片机内部的时序单片机执行各种操作时,CPU都是严格按照规定的时间顺序完成相关的工作,这种时间上的先后顺序成为时序。
✧单周期指令的操作时序S1S2S3S4S5S61个机器周期P1P2ALE读操作码空读S1S2S3S4S5S61个机器周期P1P2ALE读操作码读第二字节单字节指令双字节指令单片机内部的时序✧双周期指令的操作时序S1S2S3S4S5S6第1机器周期P1P2ALE读操作码空读3次S1S2S3S4S5S6第2机器周期时钟电路✧时钟电路参数:频率范围:0~40MHz C1、C2:20~30pF80C51振荡器C1C2CYSXTAL2XTAL1P89V51RD2的两种时钟模式✧X1模式✧X2模式器件含有一个时钟加倍选项,可以加速器件的运行速度。
单片机同步采样adc时序英文回答:Synchronizing ADC (Analog-to-Digital Converter) sampling in microcontrollers is crucial for accurate and reliable data acquisition. There are several ways to achieve synchronization, depending on the specific requirements and capabilities of the microcontroller.One common method is to use a timer peripheral to trigger the ADC conversion at regular intervals. The timer generates an interrupt or a pulse that initiates the ADC conversion. By configuring the timer and ADC settings appropriately, you can ensure that the ADC sampling occurs at precise time intervals.For example, let's say we have a microcontroller with a timer peripheral and an ADC. We want to sample an analog signal at a frequency of 1 kHz. Here's how we can synchronize the ADC sampling using a timer:1. Configure the timer to generate an interrupt or a pulse every 1 ms.2. Enable the ADC and configure its settings, such as the input channel, resolution, and reference voltage.3. In the timer interrupt handler, start the ADC conversion.4. After the ADC conversion is complete, read the digital value from the ADC register and process it as required.This method ensures that the ADC sampling occurs at regular 1 ms intervals, synchronized with the timer interrupt. The accuracy of the synchronization depends on the precision of the timer and the ADC conversion time.Another way to synchronize ADC sampling is to use a hardware trigger signal. Some microcontrollers have dedicated pins or peripherals that can generate triggersignals for ADC conversions. By connecting an external signal or using another peripheral's output as a trigger, you can synchronize the ADC sampling with external events.For example, let's say we have a microcontroller with an external interrupt pin and an ADC. We want to sample an analog signal whenever the external interrupt occurs.Here's how we can synchronize the ADC sampling using an external trigger:1. Configure the external interrupt pin to generate an interrupt whenever the desired event occurs.2. Enable the ADC and configure its settings.3. In the external interrupt handler, start the ADC conversion.4. After the ADC conversion is complete, read the digital value and process it.In this case, the ADC sampling is synchronized with theexternal interrupt, allowing us to capture the analog signal precisely when the desired event occurs.中文回答:单片机中实现ADC同步采样的时序是确保准确和可靠的数据采集的关键。
单片机时序的相关概念
单片机时序的相关概念包括以下几个方面:
1. 时钟频率:单片机的工作时钟频率决定了其内部指令和数据的处理速度,一般以赫兹(Hz)为单位表示,如8MHz、
16MHz等。
2. 时钟周期:时钟周期是指单片机内部时钟的一个完整震荡周期,它是时钟频率的倒数,表示为T,单位为秒。
时钟周期包
括一个上升沿(脉冲从低电平到高电平)和一个下降沿(脉冲从高电平到低电平)。
3. 机器周期:机器周期是指一条指令(机器指令)的执行时间,它由若干个时钟周期组成。
不同的指令由于执行的操作不同,其机器周期也不同,一般以个别时钟周期的数量表示。
4. 外设时序:单片机与外设设备进行通信时,要求时序满足一定要求,如数据的传输速率、读写操作的时序等。
外设时序的合理设计和控制是保证系统正常工作的重要因素。
5. 中断时序:中断是单片机响应外部事件的一种方式。
在中断发生时,单片机要保存当前执行的指令和相关寄存器的状态,跳转到中断服务程序执行相应的处理,处理完后再返回原程序继续执行。
中断时序涉及到中断请求、中断响应、中断服务程序的执行等过程。
计算机工作时,是在统一的时钟脉冲控制下一拍一拍地进行的。
这个脉冲是由单片机控制器中的时序电路发出的。
单片机的时序就是CPU在执行指令时所需控制信号的时间顺序,为了保证各部件间的同步工作,单片机内部电路应在唯一的时钟信号下严格地控时序进行工作,在学习51单片机的时序之前,我们先来了解下时序相关的一些概念。
既然计算机是在统一的时钟脉冲控制下工作的,那么,它的时钟脉冲是怎么来的呢?要给我们的计算机CPU提供时序,就需要相关的硬件电路,即振荡器和时钟电路。
我们学习的8051单片机内部有一个高增益反相放大器,这个反相放大器的作用就是用于构成振荡器用的,但要形成时钟,外部还需要加一些附加电路。
8051单片机的时钟产生有以下两种方法:1. 内部时钟方式:利用单片机内部的振荡器,然后在引脚XTAL1(18脚)和XTAL2(19脚)两端接晶振,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路,外接晶振时,晶振两端的电容一般选择为30PF左右;这两个电容对频率有微调的作用,晶振的频率范围可在1.2MHz-12MHz之间选择。
为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。
2. 外部时钟方式:此方式是利用外部振荡脉冲接入XTAL1或XTAL2。
HMOS和CHMOS单片机外时钟信号接入方式不同,HMOS型单片机(例如8051)外时钟信号由XTAL2端脚注入后直接送至内部时钟电路,输入端XTAL1应接地。
由于XTAL2端的逻辑电平不是TTL的,故建议外接一个上接电阻。
对于CHMOS型的单片机(例如80C51),因内部时钟发生器的信号取自反相器的输入端,故采用外部时钟源时,接线方式为外时钟信号接到XTAL1而XTAL2悬空。
如下图外接时钟信号通过一个二分频的触发器而成为内部时钟信号,要求高、低电平的持续时间都大于20ns,一般为频率低于12MHz的方波。
片内时钟发生器就是上述的二分频触发器,它向芯片提供了一个2节拍的时钟信号。
单片机时序图MCS51单片机的指令时序接下来我们分别对几个典型的指令时序加以说明。
·单字节单周期指令:单字节单周期指令只进行一次读指令操作,当第二个ALE信号有效时,PC并不加1,那么读出的还是原指令,属于一次无效的读操作。
·双字节单周期指令:这类指令两次的ALE信号都是有效的,只是第一个ALE信号有效时读的是操作码,第二个ALE信号有效时读的是操作数。
·单字节双周期指令:两个机器周期需进行四读指令操作,但只有一次读操作是有效的,后三次的读操作均为无效操作。
单字节双周期指令有一种特殊的情况,象MOVX这类指令,执行这类指令时,先在ROM 中读取指令,然后对外部数据存储器进行读或写操作,头一个机器周期的第一次读指令的操作码为有效,而第二次读指令操作则为无效的。
在第二个指令周期时,则访问外部数据存储器,这时,ALE信号对其操作无影响,即不会再有读指令操作动作。
上页的时序图中,我们只描述了指令的读取状态,而没有画出指令执行时序,因为每条指令都包含了具体的操作数,而操作数类型种类繁多,这里不便列出,有兴趣的读者可参阅有关书籍时序是用定时单位来描述的,MCS-51的时序单位有四个,它们分别是节拍、状态、机器周期和指令周期,接下来我们分别加以说明。
·节拍与状态:我们把振荡脉冲的周期定义为节拍(为方便描述,用P表示),振荡脉冲经过二分频后即得到整个单片机工作系统的时钟信号,把时钟信号的周期定义为状态(用S表示),这样一个状态就有两个节拍,前半周期相应的节拍我们定义为1(P1),后半周期对应的节拍定义为2(P2)。
·机器周期:MCS-51有固定的机器周期,规定一个机器周期有6个状态,分别表示为S1-S6,而一个状态包含两个节拍,那么一个机器周期就有12个节拍,我们可以记着S1P1、S1P2……S6P1、S6P2,一个机器周期共包含12个振荡脉冲,即机器周期就是振荡脉冲的12分频,显然,如果使用6MHz的时钟频率,一个机器周期就是2us,而如使用12MHz的时钟频率,一个机器周期就是1us。