购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 并行I/O口电路结构

MCS-51共有4个8位的并行I/O口,分别记做P0、P1、P2、P3。每个口都由一个锁存器、一个输出驱动器和两个输入缓冲器所组成。CPU通过4个并行I/O端口的任何一个输出数据时,都可以被锁存,输入数据时可以得到缓冲。实际上,它们已被归入专用寄存器之列,并且具有字节寻址和位寻址功能。

MCS-51还有一个全双工的可编程串行I/O端口,可以将8位的并行数据转换成串行数据一位一位地从发送数据线TXD发送出去,也可以将接收线RXD串行接收到的数据转换成8位并行数据送给CPU。发送和接收可以同时进行,也可以单独进行。

MCS-51单片机在访问片外扩展存储器时,低8位地址和数据由P0口分时传送,高8位地址由P2口传送。在无片外扩展存储器的系统中,这4个口的每一位均可作为双向的I/O端口使用。4个I/O口在结构和特性上是基本相同的,但又各具特点,以下将分别介绍。

2.3.1 P0口结构

P0口的口线逻辑电路如图2-5所示。

图2-5 P0口的口线逻辑电路

由图2-5可见,P0口的一个位电路中,包含有一个数据输出锁存器、两个三态数据输入缓冲器;一个数据输出的驱动电路和一个输出控制电路。其中,输出驱动电路由一对场效应管(FET)V1和V2组成,其工作状态受输出控制电路的控制。

P0口为三态双向口,它可作为输入/输出端口使用,也可作为系统扩展时的低8位地址/8位数据总线使用。P0口内部有一个2选1的MUX开关,当单片机应用系统工作方式不需要外部扩展时,内部控制信号将使MUX开关接通到锁存器,此时P0口作为双向I/O端口使用。当单片机应用系统需要进行外部扩展时,内部控制信号将使MUX开关接通到内部地址/数据线,此时P0口在ALE信号的控制下分时输出低8位地址和8位数据信号。

在访问外部存储器时,P0口是一个真正的双向数据总线口,并分时送出数据和地址的低8位。当从P0口输出地址或数据时,控制信号为高电平“1”,模拟转换开关(MUX)将地址/数据信息经反相器和下拉FET(V2)接通,同时与门开锁。输出地址或数据信号既通过与门去驱动上拉FET(V1),又通过反相器去驱动下拉FET(V2)。例如,若地址/数据信息为0,该0信号一方面通过与门使上拉FET截止,另一方面经反相器使下拉FET导通,从而使引脚上输出相应的0信号。反之,若地址/数据信息为1,将会使上拉FET导通而下拉FET截止,引脚上将出现相应的1信号。在实际应用中,P0口绝大多数情况下都是作为单片机系统的地址数据线使用的,这要比作为一般I/O口应用简单。

若P0口作为一般I/O口使用,当CPU向端口输出数据时,对应的输出控制信号应为0,此时,模拟转换开关将把输出端与锁存器Q端接通。同时,因为与门输出为0,使V1处于截止状态,所以输出极是漏极开漏的开漏电路。当写脉冲加在触发器时钟端CP上时,与内部总线的D端数据取反后出现在 端,再经FET反相,在P0口上出现的数据正好是内部总线的数据。但要注意,当P0口进行一般的I/O输出时,由于输出电路是漏极开路电路,因此必须拉电阻才能有高电平输出。

当从P0口引脚上输入数据时,V1应一直处于截止状态。引脚上的外部信号既加在下面一个三态缓冲器的输入端,又加在V2的漏极。假定在此之前曾输出锁存过数据0,则FET是导通的,这样,引脚上的电位就始终被箝位在0电平,使输入高电平无法读入。因此,当P0口进行一般的I/O输入时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”状态时对引脚读入的干扰。

2.3.2 P1口结构

P1口的口线逻辑电路如图2-6所示。

因为P1口通常是作为通用I/O口,专门供用户使用,所以在电路结构上与P0口有一些不同之处。首先它不再需要多路转接电路MUX;其次是电路的内部有上拉电阻,与场效应管共同组成输出驱动电路。为此,P1口作为输出口使用时,已经能向外提供推拉电流负载,因而无须再外接上拉电阻。当P1口作为输入口使用时,同样也需先向其锁存器写“1”,使输出驱动电路的FET截止。

图2-6 P1口的口线逻辑电路

2.3.3 P2口结构

P2口的口线逻辑电路如图2-7所示。P2口电路比P1口电路多了一个多路转接电路MUX,这又正好与P0口一样。P2口可以作为通用I/O口使用,这时多路转接电路开关倒向锁存器Q端。通常情况下,P2口是作为高位地址线使用的,此时多路转接电路开关应倒向相反方向。

图2-7 P2口的口线逻辑电路

2.3.4 P3口结构

P3口的口线逻辑电路如图2-8所示。

图2-8 P3口的口线逻辑电路

P3口的特点在于,为适应引脚信号第二功能的需要,增加了第二功能控制逻辑电路。由于第二功能信号有输入和输出两类,因此分两种情况说明。

①P3口作为通用I/O口使用。

当CPU对P3口进行SFR寻址(位或字节)访问时,自动将第2功能输出线置1,此时与非门打开,P3口作为通用的I/O口。输出锁存器的状态通过与非门送至输出FET。

当P3口作为输入使用时,应预先对P3口置“1”使输出FET场效应管截止。P3端口可作为高阻输入。输入信息经端口和两个缓冲器,在“读引脚”信号有效时,送内部总线。

②P3口用做第2功能使用。

8个引脚功能可按位独立定义。各功能详见表2-1。

当P3口某一位用于第2功能作为输出时,由内部硬件将该位锁存器置“1”使与非门对第2输出功能端是畅通的。如TXD、 经与非门,送至输出FET场效应管,再输出到引脚端口。

但对输入而言,无论该位是做通用输入口或做第二功能输入口,相应的输出锁存器和选择输出功能端都应置“1”。实际上由于8051单片机所有口锁存器在上电复位时均置为“1”自然满足了上述条件,所以用户不必做任何工作,就可以直接使用P3口的第二功能。

图2-8下方的输入通道中有两个缓冲器,第二功能的专用输入信号取自第一个缓冲器输出端,通用输入信号取自读引脚缓冲器的输出端。 cLuK1IwTCtLagV1rAHRpXrd8LqLMVMTvCmbklXgWZl/bX6Td2noUwKSxt1SeGTuA



2.4 时钟电路与复位电路

时钟电路用于产生单片机工作所需要的时钟信号,而时序研究的是指令执行中各信号之间的相互关系。单片机本身就如一个复杂的同步时序电路,为了保证工作方式的同步,所有的工作都必须在唯一的时钟信号控制下严格地按时序进行。时序就是单片机内部及内部与外部相互遵守的规律。

2.4.1 单片机的时钟电路与时序

1.时钟信号的产生

在MCS-51芯片内部有一个高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。而在芯片的外部,XTAL1和XTAL2之间跨接石英晶体和微调电容,从而构成一个稳定的自激振荡器,振荡频率由外接石英晶体确定。这就是单片机的时钟振荡电路,如图2-9所示。

一般地,电容C1和C2取30 pF左右,晶体的振荡频率范围是1.2~12MHz。如果晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。但通常情况下,使用的振荡频率为6MHz或12MHz。

2.引入外部脉冲信号

在由多片单片机组成的系统中,为了各单片机之间时钟信号的同步,应当引入唯一的公用外部脉冲信号作为各单片机的振荡脉冲。这时,外部的脉冲信号经XTAL2引脚输入,其连接如图2-10所示。

图2-9 时钟振荡电路

图2-10 外部时钟源接法

3.时序

时序是用定时单位来说明的。MCS-51的时序定时单位有振荡周期、时钟周期、机器周期和指令周期。各种周期之间的关系如图2-11所示。

图2-11 各种周期之间的关系图

(1)振荡周期

振荡周期指为单片机提供定时信号的振荡源的周期(用P表示)。

(2)时钟周期

时钟周期又称为状态周期或状态时间(用S表示),是振荡周期的两倍,它分成P1节拍和P2节拍,P1节拍通常完成算术逻辑操作,而内部寄存器间传送通常在P2节拍完成。

(3)机器周期

若将一条指令的执行过程划分为几个基本操作,则完成一个基本操作所需的时间称为机器周期。一个机器周期由6个状态周期(12个振荡脉冲)组成,分为6个状态:S1~S6。每个状态又分为2拍:P1和P2。因此,一个机器周期中的12个振荡周期表示为SIP1、S1P2、……、S6P1、S6P2。也是振荡脉冲的十二分频。

(4)指令周期

指令周期是最大的时序定时单位,执行一条指令所需要的时间称为指令周期。它一般由若干个机器周期组成。不同的指令,所需要的机器周期数也不相同。通常,包含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令,依此类推。

若外接晶振为6MHz若外接晶振为12MHz

振荡周期:1/6 µs振荡周期:1/12 µs

时钟周期:1/3 µs时钟周期:1/6 µs

机器周期:2 µs机器周期:1 µs

指令周期:2~8 µs指令周期:1~4 µs

4.CPU时序

指令的运算速度与指令所包含的机器周期有关,机器周期数越少的指令,执行速度越快。如图2-12所示的是取MCS-51单片机指令/执行指令的周期时序。

MCS-51单片机共有111条指令,全部指令按其占用的字节数可分为单字节指令、双字节指令和三字节指令。这些指令在执行时所需要的机器周期数是不同的,概括起来有以下几种情况:单字节单周期指令、单字节双周期指令、单字节四周期指令、双字节单周期指令、双字节双周期指令、三字节双周期指令。

图2-12 MCS-51单片机取指令/执行指令的周期时序

5.几个典型指令的时序

①单字节单周期指令:例INC A。

对于单字节单周期指令,只需要进行1次读指令操作。在第2个ALE有效时,由于PC没有加1,读出来的还是原指令,是一次无效操作。

②双字节单周期指令:例ADD A,#data。

对于双字节单周期指令,ALE的两次操作都是有效的,第1次读出来的是指令的第1字节(操作码),第2次读出来的是第2字节。

③单字节双周期指令:例INC DPTR。

对于单字节双周期指令,在2个机器周期中进行4次读指令操作,只有第1次是有效的,后面的3次读操作均无效。

④单字节双周期指令:例MOVX类指令。

在执行这类指令时,CPU先从ROM中读取指令,然后执行对外部RAM的读写操作。在第1机器周期时,第1次读指令操作有效,第2次读指令操作无效。在第2机器周期时,执行对外部RAM的读写操作,与ALE信号无关,因此,不产生ALE信号,也就不产生读指令操作。

2.4.2 单片机的复位电路

复位是使单片机系统进入初始化操作状态,其主要功能是将程序计数器PC内容初始化为0000H,也就是说,让单片机从0000H单元开始执行程序,与此同时,CPU及其他功能寄存器都从一个确定的初始状态下开始工作。单片机系统除了上电需要正常初始化外,在程序运行当中出现断电、受到强制干扰或操作错误等使系统处于“死机”状态时都需要进行复位操作。单片机系统复位后,片内各寄存器的状态见表2-6。

表2-6 复位后片内各寄存器的状态(×表示无关位)

单片机复位的条件是:必须使RST引脚(9)加上持续两个机器周期(即24个振荡周期)的高电平。例如,若时钟频率为 12MHz,每个机器周期为 1 µs,则只需 2 us 以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常见的复位电路如图2-13(a)、(b)所示。

图2-13 单片机常见的复位电路

图2-13(a)为上电复位电路,它是利用电容充电自动实现的。在接电瞬间,RST端的电位V CC 相同,随着充电电流的减少,RST的电位逐渐下降。只要保证RST为高电平的时间大于两个机器周期,便能正常复位。

图2-13(b)为按键复位电路。该电路除具有上电复位功能外,若要复位,只需按RESET键,此时电源V CC 经电阻R1、R2分压,在RST端产生一个复位高电平。

单片机复位期间不产生ALE和PSEN信号,即ALE=1和PSEN=1。这表明单片机复位期间不会有任何取址操作。 cLuK1IwTCtLagV1rAHRpXrd8LqLMVMTvCmbklXgWZl/bX6Td2noUwKSxt1SeGTuA

点击中间区域
呼出菜单
上一章
目录
下一章
×