一、EM78P447S单片机的性能特点
EM78系列单片机是采用低功耗、高速CMOS工艺制造的8位单片机。本讲座将以内部带有OTP程序存储器(即可一次编程的只读存储器)的EM78P447S单片机为例,来讲述单片机的功能特点、内部结构、程序存储器、数据存储器、中断系统、输入/输出端口、定时器/计数器、看门狗定时器、时钟振荡器和复位系统等内容。
现将EM78P447S单片机的性能特点归纳如下:
1.工作频率范围宽:DC~20MHz。
2.工作电压范围宽:2.2~5.5V。
3.工作温度范围:0~70℃。
4.功耗低:5V/4M工作条件下电流小于2.2mA,3V/32K条件下电流典型值为30μΑ,休眠模式下电流典型值为1μΑ。
5.自带4K×13位的片内OTP-ROM程序存储器。
6.具有程序加密措施,可以保护程序不能够被非法读出。
7.具备148×8位的片内数据寄存器(即静态存储器,SRAM)。
8.具有3个双向I/O(输入/输出)端口,其各条引脚可以独立编程。
9.具有一个8位宽的定时器/计数器,其信号源、触发沿都可编程,溢出时产生中断。
10.具有两种节电模式(休眠模式),以利于延长供电电池的使用寿命。
11.具备自由运行的看门狗定时器。
12.具有2个硬件中断源:外部引脚触发中断;定时器/计数器溢出中断。
13.具有输入状态变化唤醒功能的引脚10条(可以用于唤醒休眠模式下的单片机)。
14.10条内部上拉功能可编程的I/O引脚。
15.2条内部漏极开路功能可编程的I/O引脚。
16.2条具有R-OPTION功能的I/O引脚(该功能以后讲解)。
17.指令系统中的全部指令采用统一长度,也就是全都整齐划一为13比特长的指令字。在其他一些单片机中(比如常见的8051系列),指令系统中有单字节、双字节和三字节长的指令,指令长度不统一。
18.采取共有5级的硬件堆栈结构,方便堆栈的操作。
19.采取精简指令集(RISC)技术,其指令系统只有58条指令,易学好用。
20.寻址方式简单,容易掌握,便于初学者入门。
21.外围电路简洁。EM78P447S单片机片内集成了上电复位、I/O引脚的上拉、漏极开路、看门狗等功能电路,能够最大程度减少或免用外接电路,便于实现单片机系统“纯单片”应用。
22.每个指令周期内部仅包含2个时钟周期。
23.99.9%的指令是单指令周期的(即在一个指令周期之内即可运行完)。
24.提供两种封装型号:EM78P447SA、EM78P447SB分别为28脚、32脚封装。
25.具有2种封装形式可选:双列直插DIP和表面贴装SOIC。
关于上面提到的一些名词术语,以后在涉及它们的地方再结合具体情况作进一步诠释。
二、 EM78P447S的引脚功能
EM78P447S两种封装形式的引脚排列顺序和逻辑符号分别如图1和图2所示,各引脚功能的说明如表1所示。从图1中可以看出,实际上A型是在B型基础上缩减掉4条引脚P54~P57之后得来的,其他引脚完全兼容,这样非常方便在产品 开发过程中,从A型向B型的扩展。


EM78P447S有28或32只引脚,各引脚的功能千差万别,但是如果按引脚功能的相近程度进行归类的话,不妨可以将所有引脚划分为4类:
●控制类:RESET————-、TCC和INT——-;
●时钟类:OSCI和OSCO;
●电源类:V\(_{DD}\)和V\(_{SS}\);
●端口类:P5、P6和P7共3个输入/输出(I/O)端口。
这样一来,就使得图2所示的逻辑符号看上去比图1显得简洁明了。
三、 EM78P447S内部结构
EM78P447S内部结构的功能框图如图3所示:对于一个单片机芯片,最主要的部分是“CPU内核”,由此向周边扩展,将一些单片机芯片通常都配置的程序存储器和数据存储器包含进来,就构成了单片机芯片的“核心区域”;再向周边扩展,首先就是单片机的一些“功能电路部件”,最后才是一些“外围设备模块”。

对于EM78系列中的任何一款单片机来说,其“核心区域”是唯一的也是必不可少的,“功能电路部件”也是普遍配置的,而“外围设备模块”的种类和数量,完全可以由厂家根据单片机的设计目标和用途灵活变通和增减。以下我们先对EM78P447S的核心区域所包含的单元电路以及它们的功能进行全面而又简要的介绍,尽快使读者对单片机的核心硬件建立一个宏观认识。而对于周边各种功能部件和外围模块,由于功能相对独立也比较复杂,准备在以后的各章节中再作专题讲解。
1. 核心区域的单元电路及其功能
(1) 数据总线:
8比特宽,作为数据传输的专用通道。将各个外围模块以及核心部分的PC、FSR、STATUS、WDT、ALU、RAM等功能部件联系起来;
(2) 程序总线:
13比特宽,作为提取程序指令的高速通道。专职实现从程序存储器到指令寄存器快速及时地输送每一条指令;
(3) 程序存储器(ROM):
存放由用户预先编制好的用户程序和一些固定不变的数据;
(4) 程序计数器(PC):
产生并提供从程序存储器单元中提取指令所需的12比特地址码,每执行一条指令,地址码自动加1;
(5) 指令寄存器:
暂存从程序存储器中取出的指令,并将指令按不同的字段分解为操作码(指挥CPU执行何种性质的操作,如加、减等)和操作数(表示参加操作的数据本身或者数据所在地址)两部分,分别送到不同的目的地;
(6) 指令译码和控制逻辑:
这部分电路由庞大而又复杂的译码矩阵构成,将指令系统中的某条指令的操作码部分“解译”成一系列的微操作控制信号,去控制所有参与操作的各功能电路进行协调运作,最后实现指令规定的特定运算;
(7) 算术逻辑单元(ALU):
是一个非常重要的单元电路,实现加、减、乘、除等算术运算和左移、右移、置位、清位、位测试等逻辑运算操作;
(8) 累加器(ACC或A):
是一个最重要也使用最频繁的中心寄存器,许多指令的操作过程都把它作为数据的中转地。比如,暂存准备参加运算的一个数据,或者暂存运算产生的结果。换句话说,在运算之前ACC是原始数据的出发地,在运算之后ACC又是结果数据的落脚地;
(9) 状态寄存器(STATUS):
主要来记录ALU中运算结果的一些算术特征,比如是否产生进位、借位、全零等;
(10) 数据存储器(RAM):
用于存储CPU在执行程序过程中所产生的中间数据。普通的RAM存储器一般只能实现数据的写入和读出,而EM78中的RAM存储器的一些存储单元功能要强大得多,除了具备普通存储器功能之外,还能实现移位、置位、清位、位测试等一系列只有“寄存器”才能完成的复杂操作;
(11) 数据复用器:
由它选择和传递参加运算的另一个源操作数,既可以来源于数据存储器RAM,也可以直接来源于指令码中;
(12) 地址复用器:
访问(就是进行读取或者写入)数据存储器所需的地址经地址复用器选择和传递,该地址既可以来源于“间接寻址寄存器RSR”,也可以直接来源于指令码。来源于RSR的地址叫做间接地址,来源于指令码的地址叫做直接地址;
(13) 间接寻址寄存器RSR:
用于数据存储器RAM的间接地址。预先将打算访问的某个工作寄存器的地址放到RSR寄存器中;
(14) 硬件堆栈:
保存程序断点地址。在程序执行过程中,有时需要跳转“子程序”,在进入子程序之前,必须保存主程序断点处的地址,以便在子程序执行完后,再恢复断点地址,使主程序得以继续执行。
2. 功能部件及其功能
以下有必要对于几个功能部件进行简要说明:
(1) 时钟振荡器:
就是时基发生器,产生单片机芯片内部各功能电路工作所需的时钟脉冲信号。最常用的一种电路连接方法是,在OSCI和OSCO两只引脚之间外接一只晶体振荡器XTAL和两只电容C1和C2到地,如图4所示,与片内电路共同构成一个方波振荡器电路。其工作频率取决于XTAL的固有频率。
(2) 复位逻辑:
当单片机芯片初始加电并且电源V\(_{DD}\)上升到适合芯片工作的电压值时,或者人为从外部引脚送入一个低电平复位信号时,在复位逻辑的控制下单片机进行可靠复位,然后从头开始执行程序。最简单的一种电路连接方法是,将该脚直接接电源正极,如图4所示。
(3) 电源电路:
该电路负责将V\(_{DD}\)和V\(_{SS}\)引脚之间施加的电源电压分配到单片机芯片内的各个功能电路。只要电源电压不超出2.2~5.5V的范围,就能够保障单片机正常工作。
(4) 监视定时器(俗称看门狗WDT):
只有在单片机执行程序的过程中,脱离正常轨道而进入死机或混乱状态,看门狗才发挥作用,它强行将单片机复位,以使其重新从头开始执行程序,回复到正常工作状态。其实WDT是一个自带时钟发生器的递增计数器,一旦发生溢出,就引发单片机复位。它与定时器/计数器TCC模块抢占同一个分频器。
(5) 中断逻辑:
中断功能就是为了增强单片机处理各种突发事件的能力而设计的。当单片机系统正在执行程序时,出现了某种特殊状况(比如定时时间到等),此时单片机需要暂时停止当前执行的主程序,转去执行处理特殊情况的子程序,待子程序执行完毕,再回到主程序的断点处去执行,这就形成了一次中断过程。各种外设模块或功能部件引起的中断过程都是由中断逻辑来统一管理的。
(6) 睡眠与唤醒逻辑:
为了降低单片机待机状态下的功耗,令其进入睡眠状态是一种有效的方法。一旦需要单片机全功能运行时,就将单片机从睡眠状态下唤醒,进入正常处理工作状态。对于睡眠与唤醒过程的管理工作就需要该电路逻辑来实现。
对于监视定时器、中断逻辑和睡眠与唤醒逻辑,在后面还有专门章节结合应用实例作详细介绍。
3.外设模块及其功能
对于EM78P447S单片机来说,片内配置了两种类型的4个外设模块:
(1) 输入/输出端口模块P5、P6和P7:
都包含8条可以独立设定I/O方向的端口引脚。2个端口模块具有大同小异的电路结构。其主要功能是与外部电路交换信息。
(2) 定时器/计数器TCC模块:
该模块主要用来实现定时或者对于外部事件进行计数。它与看门狗WDT抢占同一个分频器。关于它的电路结构、工作原理以及应用实例,以后作专题介绍。
下期,我们将为大家介绍EM78P447S的程序存储器、数据存储器及I/O端口的结构和工作原理等知识。
读者在阅读、学习本系列文章时如果有什么问题可Email至computer@radio.com.cn,我们将与作者联系,予以解答。
(大海创作室)