1.2 “Winbond 78E516B”芯片功能详解

本节按照“W78E516B”的芯片资料及结构给大家介绍单片机的原理,为了便于读者的阅读和理解,补充了一些额外的知识点。

如果你是第一次阅读芯片资料可能会觉得这种结构很凌乱,不好理解。的确是这样的,但芯片资料都是这种结构,所以请你多一点耐心把这部分看完,因为对于专业的电子工程师来说,阅读相关的芯片资料是基本功。

1.2.1 芯片概述

1.“W78E516B”介绍

“W78E516B”是一款低功耗8位微控制器;片内具有带ISP功能的“Flash EPROM”;“ISP”功能的“Flash EPROM”可用于固件升级。其指令集同标准“8052”完全兼容。“W78E516B”包含64KB的主ROM,4KB的辅助ROM(位于4KB辅助ROM中的装载(loader)程序,可以让用户更新位于64KB主ROM中的程序内容)。512B片内RAM;4个8位双向、可位寻址的“I/O”口;一个附加的4位“I/O”口P4;3个16位定时/计数器及一个串行口。这些外围设备都由8个中断源和2级中断能力的中断系统的支持。

“W78E516B”内含的ROM允许电编程和电读写,这样用户就可以很方便地进行编程和验证。代码确定后,就可以对代码进行保护。“W78E516B”有两种节电模式:空闲模式和掉电模式,两种模式均可由软件来控制选择。空闲模式下,处理器时钟被关闭,但外设仍继续工作。在掉电模式下晶体振荡器停止工作,以将功耗降至最低。外部时钟可以在任何时间及状态下被关闭,而不影响处理器的运行。

2.特性

● 全静态设计的“CMOS ”8位微处理器频率最高达40MHz。

● 64KB并带“ISP”功能的“Flash EPROM”,用来存储应用程序(APROM)。

● 4KB的辅助ROM,用来存储装载程序(LDROM)。

● 512B片内暂存RAM(包括256B的软件可选的“AUX-RAM”)。

● 64KB程序存储器地址空间和64KB数据存储器地址空间。

● 4个8位双向“I/O”口。

● 一个4位多功能可编程口。

● 3个16位定时/计数器。

● 一个全双工串行口(UART)。

● 8个中断源,2级中断优先级嵌套能力。

● 内建电源管理。

● 代码保护机制。

● 封装:

--DIP40:W78E516B-40

--PLCC44:W78E516BP-40

3.引脚配置

40PIN DIP(W78E516B),如图1-1所示。

图1-1 “W78E516B”芯片引脚封装

1.2.2 引脚描述(见表1-1)

表1-1 芯片引脚描述

注释:类型I:输入;O:输出;I/O双向;H:上拉;L:下拉;D:开漏。

● I:只能作为输入端。

● O:只能作为输出端。

● I/O:双向口,可作为输入和输出。

● H:指芯片内部接有上拉电阻,设计时,可以直接用这类的引脚驱动一些小功率的器件,不需外加电源。

● L:芯片内部接有下拉电阻,作为输入用可以吸收较大的电流。

● D:开漏是指芯片内部引脚以“MOS”的漏极作为输出。它可以吸收很大的电流,但是不能向外输出电流。所以,为了能输入和输出电流,在电路设计时,开漏引脚要和上拉电阻一起使用。上拉电阻的阻值决定了逻辑电平转换的速度,阻值越大、速度越低、功耗越小。电阻通常选用2.2kΩ,4.9kΩ。

1.2.3 功能框图

芯片的功能框图如图1-2所示。

图1-2 芯片功能框图

“W78E516B”芯片兼容了标准的MCS-51芯片的总体结构,并且还扩展了一些功能。它由以下10部分组成:

● 中央处理器;

● 64KB片内可编程程序存储器“EPROM”;

● 512B的数据存储器;

● 4KB的辅助ROM,用来存储装载程序(LDROM),应用于ISP在线编程;

● 特殊功能寄存器“SFR”;

● 32条I/O线(四个8位口P0、P1、P2、P3);

● 3个16位定时/计数器;

● 一个全双工串行口(UART);

● 8个中断源,2级中断优先级嵌套;

● 片内振荡器和时钟电路。

“W78E516B”芯片有两种封装,其中方形封装44引脚的芯片,有四只引脚(P4.0~P4.3)为特殊功能引脚。在工程项目中采用的是40引脚的双列直插封装(DIP40),没有这四个引脚,在这里不做详细介绍。读者可以参见厂家提供的相关芯片资料。

1.2.4 功能描述

1.RAM

“W78E516B”有512B的片内RAM,分2个区,一个256B的暂存RAM区;另一个是256B的辅助RAM区。

● 地址为0H-7FH的RAM:这些RAM可以用与“8051”相同的直接或间接寻址方式来寻址。在选定的RAM区内,寻址指针是R0和R1。

● 地址为“80H-FFH”的RAM:只能用与“8051”相同的间接寻址方式来寻址,在选定的RAM区内,寻址指针是R0和R1。

● 地址范围为“0H-FFH”的辅助RAM(AUX-RAM):寻址方式与用“MOVX”指令访问外部数据存储器的寻址方式相同。在选定的RAM区内,寻址指针是R0、R1和“DPTR”。对地址高于“FFH”的外部数据存储器的访问,寻址方式与“8051”下的“MOVX”指令相同。在复位后,“AUX-RAM”是被关闭的。把“CHPCON”寄存器中的bit 4置位,可以使能对“AUX-RAM”访问。在使能“AUX-RAM”后指令“MOVX @RI”将始终访问片内“AUX-RAM”。当执行的指令来自内部程序存储器时,对“AUX-RAM”的访问不会影响P0、P2口,以及WR、R-D。

补充知识点

寻址方式:这里补充介绍单片机的三种主要寻址方式。也就是直接寻址、间接寻址和外部数据存储器寻址。

1.直接寻址

直接寻址方式中,指令操作数域给出的是参加运算的操作数地址。

比如指令:MOV 58H,A

表示把累加器A中的内容送到58H单元中,其中58H为直接地址,表示内部数据存储器RAM中的一个单元。

2.间接寻址

间接寻址方式中,指令操作数给出的是存放操作数地址的寄存器。可作为间接寻址的工作寄存器只能是R0和R1。

比如指令:MOV @R1,A

表示把累加器A中的内容送到寄存器R1中的数所指定的存储单元。其中R1存放着间接地址。

3.外部数据存储器寻址

主要依靠MOVX指令访问外部RAM。

比如指令:MOVX @R1,A

表示把累加器A中的内容送到寄存器R1中的数所指定的外部存储单元。

以上介绍的各部分RAM寻址方式如图1-3所示。

图1-3 RAM寻址方式

2.定时器0,1,2

定时器0、1、2中都包含两个8位数据寄存器。分别是定时器0的TL0、TH0,定时器1的TL1、TH1,定时器2的TL2、TH2。TCON和TMOD对定时器0、1进行控制。T2CON寄存器对定时器2进行控制。“RCAP2H”,“RCAP2L”是定时器2的重装/捕捉寄存器。定时器0和1的操作与“8051”相同。定时器2为一个16位定时/计数器,通过“T2CON”设定和控制。与定时器0和1相同,定时器2可以根据“T2CON”的“C/T2”位,设定作为外部计数器或内部定时器,定时器2有三个操作模式:捕捉、自动重装和波特率发生器。捕捉或重装模式的时钟速度与定时器0和1相同。

3.晶体振荡器

“W78E516B”包含一个内置的晶体振荡器。为使振荡器工作,在“XTAL1”和“XTAL2”引脚之间必须连接一个石英晶体。此外,必须分别在这两个引脚和地之间连接负载电容。同时,当频率高于24MHz时,需要在“XTAL1”和“XTAL2”引脚间接一个电阻,以防止DC偏压。

4.时钟

“W78E516B”单片机虽然有内部振荡电路,但要形成时钟,必须外接附加电路。时钟产生方式有内部时钟方式和外部时钟方式两种。

使用外部时钟方式时,外部时钟源连接到引脚“XTAL1”上,引脚“XTAL2”悬空。晶体振荡器要求“XTAL1”上的输入是一个“CMOS”型输入,这样就要求外部时钟信号输入电压应大于3.5V。外部振荡信号输入后首先在内部进行2分频,然后才作为内部时钟信号,故“W78E516B”对外部振荡信号占空比的变化相对不敏感。

补充知识点

时钟:芯片资料上描述的单片机时钟产生方式比较概要。这里加以补充。

1.内部时钟方式

在单片机“XTAL1”和“XTAL2”引脚上外接定时元器件(最常用的方式是采用外接石英晶体和电容组成并联回路),利用单片机片内的振荡电路,在内部产生自激励,以产生时钟信号。

2.外部时钟方式

外部时钟方式是将外部振荡信号直接由“XTAL1”(对于“CMOS”型单片机)或“XTAL2”(对于HMOS型单片机)引脚进入。

外部振荡信号输入后,在内部首先通过一个2 分频的触发器而成为内部时钟信号,MCS-51单片机对外部振荡信号的占空比没有特殊要求。

3.时钟同步

当使用片内振荡器时,可以利用“XTAL1”、“XTAL2”引脚引出时钟,为其他芯片提供时钟。对于“HMOS”型单片机,由“XTAL2”引脚引出。对于“CMOS”型单片机,由“XTAL1”引脚引出。

当系统使用多单片机组成时,为便于各单片机之间的时钟同步,一般选用外部时钟方式。

5.电源管理

1)空闲模式

将“PCON” 寄存器的“IDL”位置位,系统进入空闲模式。这时连接到处理器的内部时钟被关闭。外设和中断逻辑继续工作。当有中断或复位发生时,处理器退出空闲模式。

2)掉电模式

将“PCON”寄存器的PD位置位,处理器进入掉电模式。这时包括振荡器在内的所有时钟被关闭。退出掉电模式的条件是硬件复位或外部中断触发信号。

6.减少“EMI”辐射

为了减少振荡电路中的“EMI”辐射,“W78E516B”允许用户通过编程将安全寄存器的B7位清零,来减少片内振荡放大器的增益。一旦B7置为“0”,放大器就会减少一半的增益。用户在试图减少晶振放大器增益时,必须注意:在高于24MHz的高频下运行时,减少一半的增益也许会使外部晶振工作不正常。当在较低的增益下运行时,应适当调整“XTAL1”与“XTAL2”引脚间电阻以及“XTAL1”、“XTAL2”与地间的电容大小。

7.“I/O”口P4

“I/O”口P4的地址为D8H,是一个4位多功能可编程“I/O”口。每个引脚都可以通过软件来单独设置。“I/O”口P4有4种工作方式。

● 模式0:P4.0~P4.3是与P1口功能相同的双向“I/O”口。如果外部中断使能,P4.2、P4.3复用为输入口。

● 模式1:P4.0~P4.3是在指定地址单元处与信号同步的读信号。这些信号可用做外部设备的片选信号。

● 模式2:P4.0~P4.3是在指定地址单元处与信号同步的读信号。这些信号可用做外部设备的片选信号。

● 模式3:P4.0~P4.3是在指定地址单元处与信号同步的读、写信号。这些信号可用做外部设备的片选信号。

当P4口设置为片选信号时,片选信号地址根据“SFR P4xAH”,“4xAL”,“P4CONA”和“P4CONB”的内容安排。寄存器“P4xAH”和“P4xAL”包含16位基本地址。寄存器“P4CONA”和“P4CONB”为P4口工作模式的控制位。

8.中断源

如表1-2所示,传统“8051”的中断系统有5个独立的中断源,即两个外部中断申请,两个定时器/计数器中断以及一个串口中断。“W78E516B”芯片新增了三个中断:定时器/计数器2中断,外部中断2、3。两个附加的外部中断,与标准的“80C52”中的外部中断0和1的功能相似。这些中断的功能/状态由“XICON”(外部中断控制)寄存器中的设置位表示。

表1-2 8个中断源

“W78E516B”芯片40引脚的双列直插封装(DIP40)没有外部中断2、3。读者可以参见厂家提供的相关的芯片资料。

1.2.5 时序波形图

芯片的时序分析比较有难度,但对于一个硬件工程师来说,时序分析是必须了解和掌握的。在下面的介绍中针对“W78E516B”芯片资料提供的时序波形图,详细讲解MCS-51芯片的时序,希望读者好好阅读这部分内容,在以后的电子设计中,你将受益匪浅。

1.晶振输入波形

如图1-4所示为“XTAL1”引脚输入的晶振振荡信号时序。“TCP”为振荡信号周期,一般大于20ns。“TCH”为振荡信号高电平持续时间,“TCL”为振荡信号低电平持续时间。晶振输入波形参数如表1-3所示。

图1-4 晶振输入波形

表1-3 晶振输入波形参数

注释:1.时钟在任一状态都可以停止。

2.TCP规格用做其他规格的基准。

3.“XTAL1”的输入对占空比没有要求。

本处提到的“振荡周期TCP”概念,在芯片资料中为“时钟周期”,本书为了与单片机概念统一,把晶振周期称为振荡周期,两个振荡周期构成一个时钟周期。

补充知识点

机器周期:一个机器周期由6个时钟周期组成(6个状态,S1-S6),每个时钟周期有两个振荡周期(P1和P2),共包含12个振荡周期(12个节拍),依次表示为“S1P1”、“S1P2”、“S2P1”、“S2P2”、…、“S6P1”和“S6P2”。详细内容可见第3章。

2.外部程序读取周期

在外部存储器取指令期间,P0口(PORT0)和P2口(PORT2)总共16根“I/O”线输出地址码。其中P0口作为分时复用地址/数据总线使用。外部存储器读取周期为一个机器周期,时序图如图1-5所示,图中各参数详见表1-4所示。

表1-4 外部程序读取周期参数

注释:1.在整个存储器存取周期,P0.0~P0.7, P2.0~P2.7保持稳定;

2.存储器访问时间为3Tcp;

3.内部数据锁定先于变为高电平;

4.“△”为20ns(由于缓冲器驱动延迟和线载延迟(wire loading)。

图1-5 外部程序读取周期时序图

时序说明如下:

● P0口作为地址信号线输出线,用于输出程序存储器的低8位地址A0-A7。P2口用于输出程序存储器的高8位地址A8-A15。P2口具有锁存功能。P0口还分时复用位8位地址线,需要用“ALE”锁存信号把P0口输出的低8位地址锁存起来。

● “ALE”是地址锁存信号,该信号每有效一次就能对存储器进行一次读指令操作。“ALE”信号以振荡脉冲六分之一的频率出现。因此,在一个机器周期中(包含12个振荡周期),“ALE”信号两次有效。第一次在“S1P2”和“S2P1”期间,第二次在“S4P2”和“S5P1”期间。有效电平持续时间为一个时钟周期。

● 当“ALE”信号由高变低时,把P0端口的低8位地址选通进入地址锁存器,然后P0口变成浮置状态等待程序存储器读出指令码。P2口输出程序计数器中的高8位地址。

● 外部程序存储器读取指令时,除ALE外,还需要“PSEN”信号,用于片外程序存储器的选通。该信号从“S3P1”开始有效,片外程序存储器选通。“S4P1”时,按PC值读出的指令出现在数据总线P0上,CPU在的上升沿前将指令读入,并寄存到指令寄存器“IR”中。即完成一次读指令操作。从“S4P2”开始第二次读指令操作。

可以看到,在访问外部程序存储器的一个周期时序中,“ALE”信号和PSEN信号两次有效,这表示在一个机器周期中,允许单片机两次访问外部程序存储器,即取出两个指令字节。对于单字节指令,由于程序计数计数器“PC”没有加1,读出的是同一条指令,第二次读出的指令无效。

本时序波形图主要是针对扩展程序存储器的。当片内ROM不够时,就需要扩展片外程序存储器。在工程项目中采用的这款芯片片内有64KB的ROM,足够满足工程的应用了,所以没有进行程序存储器的扩展,其引脚悬空。

3.外部数据读周期

外部数据读时序由两个机器周期组成,第一个周期为取指令周期,第二个周期为读数据周期。从第二个机器周期的“S1P1”开始,读信号变为有效,选通片外RAM,进行RAM的读操作。在S2期间,被寻址的RAM单元把有效数据送入P0口,在信号的上升沿前,数据被读入单片机。时序图如图1-6 所示,外部数据读周期参数详见表1-5所示。

表1-5 外部数据读周期参数

注释:数据存储访问时间为8 TCP;

“△”为20ns(由于缓冲器驱动延迟和线载延迟)。

数据的读取只使用控制线而不用,正是因为如此,数据存储器与程序存储器地址可以完全重叠,均为“0000H-FFFFH”。

图1-6 外部数据读周期时序图

从时序图可以看到,在执行外部数据读“MOVX”指令时,“ALE”信号不是固定频率的信号,不适合作为时钟脉冲。

4.外部数据写周期

外部数据写时序与外部数据读时序相似,也是由两个机器周期组成。第一个周期为取指令周期,第二个周期为写周期。写的过程是CPU先向P0口总线传送低8位地址,然后在第一个机器周期的S6状态将数据传送到P0口。第二个机器周期的“S2P1”开始,写信号变为有效,选通片外RAM,对外部RAM进行写操作。在信号的上升沿前,P0口上的8位数据就写入寻址地址单元。时序图如图1-7所示,图中各参数详见表1-6所示。

表1-6 外部数据写周期参数

注释:“△”为20ns(由于缓冲器驱动延迟和线载延迟)。

图1-7 外部数据写周期时序图

5.端口访问周期

为方便起见,端口的访问时序以“ALE”为参考。在“S5P2”时,读数据。输出的数据在“S6P2”结束时才有效。端口访问周期时序图如图1-8所示,端口访问周期参数详见表1-7所示。

表1-7 端口访问周期参数

图1-8 端口访问周期时序图

6.复位

外部“RESET”信号在机器周期“S5P2”期间被采样。为使复位有效,在振荡器运行时,复位信号至少要保持两个机器周期的高电平。在复位期间,端口地址被初始化为FFH,堆栈指针为07H,“PCON”为00H(“PCON.4”特殊,复位时不对其进行清零),除“SBUF”之外的所有“SFR”寄存器为00H,“SBUF”不被复位。

当“W78E516B”应用一个外部RC网络构成复位电路时,复位引脚的内部触发电路用来防止尖峰脉冲。

1.2.6 电气特性

如表1-8所示为芯片的直流电源电压、输入电压以及工作温度、存储温度的最大绝对额定值。这几个参数很重要,若超出最大绝对额定值使用时,会对器件的可靠性和寿命造成严重损害。

表1-8 最大绝对额定值表

芯片资料中还包括DC特性、典型应用电路等内容。这些内容对于电路设计也很有参考价值,在使用时要仔细阅读。

当然,这部分只是概要地讲解了单片机的内部结构和基本原理。在本书的后续章节,将会对各部分进行更详细的分析。