理论教育 零点起步:PIC单片机基础功能模块与实例

零点起步:PIC单片机基础功能模块与实例

时间:2023-10-19 理论教育 版权反馈
【摘要】:通过图3-1可知基本功能区域主要包括以下7个部分。基本功能区域只有地址和数据两种复用器,是一种信号的选择开关,可根据指令功能的不同而选择其中的一个通路。从图3-4还可以看出大多数引脚除了基本I/O功能外,还配置有其他特殊功能,如模拟量输入通道、串/并

零点起步:PIC单片机基础功能模块与实例

通过图3-1可知基本功能区域主要包括以下7个部分。

●中央处理器(包括运算器和中央控制器)。

●程序存储器区域。

●数据存储器区域。

●EEPROM数据存储器模块。

●输入/输出端口模块。

●多功能定时器模块。

●其他内部模块。

1.中央处理器

同其他计算机一样,PIC16F877的中央处理器(CPU)也是由运算器和控制器两大部件构成。控制器负责协调单片机内各个部件的动作时序,可以理解为硬件体系的后台动作,这部分知识属于计算机原理的内容,这里不详细展开阐述。

PIC16F877中另外一个非常重要的部件就是运算器,也称为算术逻辑单元(ALU),ALU是一个通用的算术逻辑运算单元,用它可以对工作寄存器(W)和任何数据存储器中的两个数进行算术(如加、减、乘、除等)和逻辑运算(如与、或、非等),也就是说PIC的ALU可以直接访问数据存储器,其数据存储器就相当于其他中央处理器中的寄存器,所以在PIC单片机中把数据存储器又称为文件寄存器(File Register)。

ALU的字长是8位。在有两个操作数的指令中,典型的情况是一个操作数在工作寄存器中,而另一个操作数是在数据存储器中,或者是一个立即数。在只有一个操作数的情况下,该数要么是在工作寄存器中,要么是在数据存储器中。工作寄存器是一个专用于ALU操作的寄存器,它是不可寻址的。根据所执行的指令,ALU还可能会影响图3-1中状态寄存器(STATUS)的进位标志C、全零标志Z等。

与ALU关联的特殊功能寄存器主要有以下3种。

(1)工作寄存器(W)

相当于其他单片机中的累加器A,是数据传送的桥梁,是最为繁忙的工作单元。在运算前,工作寄存器可以暂存准备参加运算的一个操作数(称为源操作数);在运算之后,工作寄存器可以暂存运算的结果。

(2)状态寄存器(STATUS)

反映最近一次算术逻辑运算结果的状态特征,如是否产生进位、借位,结果是否为零等,共涉及3个标志位(Z、DC和C)。该寄存器在其他单片机中又称为标志寄存器或程序状态字(PSW)寄存器。另外,状态寄存器还包括数据存储器区域的选择信息IRP、RP1和RP0,RP0、RP1用做直接寻址,RP0与间接寻址寄存器(FSR)配合用做间接寻址。

(3)间接寻址寄存器(FSR)

FSR是与INDF寄存器完成间接寻址的专用寄存器,用于存放间接地址,即预先将要访问单元的地址存入该寄存器。

需要注意的是,只有工作寄存器在文件寄存器中没有映射,其他寄存器在文件寄存器中都有映射。

2.程序存储器区域

PIC16F877带有FLASH程序存储器结构,主要存放由用户预先编制好的程序和一些固定不变的数据。FLASH程序存储器可以通过编程器重复烧写,理论上可擦写10万次。

程序存储器共有8KB×14位程序单元空间,即0000H~1FFFH(H表示十六进制数),如图3-2所示。

978-7-111-33274-9-Chapter03-2.jpg

图3-2 PIC16F877的程序存储器结构和堆栈结构

通过图3-2可知,由程序计数器(PC)提供13条地址线进行单元选择,每个单元宽14位,能够存放一条PIC单片机机器指令。

在系统上电或其他复位情况下,程序计数器均从0000H地址单元开始工作。

如果遇到调用子程序或系统产生中断,都将把当前程序断点处的地址送入8级×14位的硬件堆栈区域进行保护。此硬件堆栈是一个独立的存储区域,无法用软件直接操作,只能通过子程序调用或中断事件来自动压栈,在子程序或中断服务程序执行完后,再把断点地址出栈放到程序计数器中,使主程序得以继续执行。

通过14位程序总线,取出对应程序指令的机器码,送入指令寄存器,将组成的操作码和操作数进行有效分离。如果操作数为地址,则进入地址复用器;如果操作数为数据,则进入数据复用器。操作码将在指令译码和控制单元中转化为相应的功能操作。

3.数据存储器区域

PIC16F877数据存储器也可以称之为随机存储器(RAM),用于存取CPU在执行程序过程中产生的中间数据或预置的参数。但由于RAM可以由ALU直接访问,所以其每个存储单元除具备普通存储器功能之外,还能实现移位、置位、复位和位测试等通常只有寄存器才能完成的操作。这种结构使PIC单片机访问RAM的效率比其他单片机高很多。

PIC16F877共有512个字节单元空间(包括无效的地址单元),即000H~1FFH,如图3-3所示。

978-7-111-33274-9-Chapter03-3.jpg(www.daowen.com)

图3-3 PIC16F877的数据存储器结构

数据存储器主要包括特殊功能寄存器(SFR)和通用存储器(GR)两部分。图3-3中的地址复用器组合9条地址线,实现512个数据存储器单元地址的有效选择。由于PIC16F877的ALU是8位的,所以其数据存储器以80H为单位长度划分为4个存储区,术语称为4个bank。在访问不同bank内的数据时,需要对STATUS相关内容做特殊操作。

对于不同的数据访问,地址复用器的组合方式也存在差异。当采用直接寻址时,RAM地址的形成采用7加2模式,即7位数据来源于指令操作数,2位数据来源于状态寄存器RP1、RP0;当采用间接寻址时,RAM地址的形成采用8加1模式,即8位数据来源于文件选择寄存器,1位数据来源于状态寄存器的IRP位内容。

基本功能区域只有地址和数据两种复用器,是一种信号的选择开关,可根据指令功能的不同而选择其中的一个通路。

4.EEPROM数据存储器模块

PIC16F877嵌入一个256×8位EEPROM数据存储器模块。它与RAM最大的差异在于存储的内容掉电时也不会丢失,通常用来保存单片机系统的重要运行参数。由于PIC单片机指令集没有提供现成的机器指令来直接访问EEPROM,所以必须通过相关特殊功能寄存器来访问。

5.输入/输出端口模块

PIC16F877具有丰富的接口资源,共设置有5个输入/输出(Input/Output,I/O)端口,分别为RA(6位)、RB(8位)、RC(8位)、RD(8位)、和RE(3位),合计共有33位,与单片机外形中的33个引脚一一对应,如图3-4所示。其中,RA0~RA5为RA端口的6位,其他端口同理。

从图3-4还可以看出大多数引脚除了基本I/O功能外,还配置有其他特殊功能,如模拟量输入通道、串/并行通信线和ICSP/ICD2专用编程线等。这些端口引脚在使用中存在着差异,特别是RA(6位)和RE(3位)中所涉及的模拟量输入/输出通道,只有当对ADCON1进行设置后才能用做数字量输入/输出引脚。另外,RB端口的高4位具有特殊的电平变化中断功能,为实时监控提供了很大方便。RC端口拥有各类串行通信功能,包括主控同步串行通信MSPP(SPI、I2C)和通用同步/异步收发器(USART)。

978-7-111-33274-9-Chapter03-4.jpg

图3-4 PIC16F877引脚封装顺序

6.多功能定时器模块

PIC16F877配置有3个功能较强的多功能定时器模块,包括8位的TMR0、16位的TMR1和8位的TMR2。它们都是具有不同位宽的可编程定时器,除TMR2以外都可作为外部计数器使用。每个定时器/计数器模块都配有不同比例的预分频器或后分频器。另外,还有两个重要的专门用途:当设置在同步计数方式下时,TMR1可与捕捉/比较/脉宽调制(CCP)模块配合实现捕捉和比较功能;TMR2可以与CCP模块配合实现脉宽调制输出功能。

7.其他内部模块

其他内部模块包括上电复位(POR)、上电延时定时器(PWRT)、WDT复位、欠电压复位(BOR)、起振延时定时器、在线调试和低电压编程等功能电路。其中,前5种功能主要用于系统可靠复位,后两种用来实现与调试器或编程器的接口。

复位逻辑电路用来使器件进入一个已知状态,产生复位的原因可由相关的状态位来判断。PIC16F877的复位逻辑设计降低了系统成本,提高了系统的可靠性

PIC16F877具有多种复位模式,包括上电复位、上电延时定时器、WDT复位、欠电压复位和起振延时定时器。合理地使用这些功能模块能够极大地提高系统的可靠性。现分别介绍如下。

(1)上电复位

器件检测到VDD电压上升时,会产生一个上电复位脉冲。要使用上电复位功能,可直接(也可以通过一个电阻)将978-7-111-33274-9-Chapter03-5.jpg引脚与电源VDD相连,如图3-5所示。这样可以节省一般用于产生一个上电复位所需的外接RC元件。

978-7-111-33274-9-Chapter03-6.jpg

图3-5 简单的上电复位电路

电阻R可省略。

(2)上电延时定时器

在上电复位或欠电压复位时,上电延时定时器提供固定的72ms延时来保证系统的可靠复位。上电延时模块是基于电容效应,当系统芯片加电后,VDD电压会有一个逐渐上升的过程,在达到1.5~1.8V后,上电复位电路将自动产生一个复位脉冲,使单片机复位。(3)欠电压复位

为了保障系统程序安全、可靠运行,当VDD跌落到VBOR(大约4V)的时间大于TBOR(大约100µs)时,如果欠电压复位(又称为掉电复位)功能处于使能方式,将自动产生一个复位信号并使芯片保持在复位状态;而此时如果VDD跌落到VBOR以下的时间小于TBOR,则系统就不会产生复位。直到VDD恢复到正常范围,上电延时电路再通过上电延时定时器提供一个72ms延时,才使CPU从复位状态返回到原正常运行状态。

(4)起振延时定时器

起振延时定时器(OST)将提供1024个振荡周期的延迟时间,以保证晶体陶瓷谐振器能够有足够的时间起振并产生稳定的时序波形。

(5)WDT复位

PIC16F877嵌入了一个具有较强功能的“看门狗”定时器(WDT),能够有效防止因环境干扰而引起的系统程序“跑飞”。WDT的定时/计数脉冲是由芯片内专用的RC振荡器产生的。它的工作既不需要任何外部器件,也与单片机的时钟电路无关,即使单片机的时钟停止,WDT仍能继续工作。

“看门狗”电路在实时控制系统中有着重要的应用价值,可以在18ms基本定时基础上加入1∶1~1∶128的预分频比例,从而达到18~2034ms的定时。一旦在程序中启用“看门狗”电路,定时的长短将直接与“看门狗”复位指令CLRWDT的设置有关。其原则是:程序循环或程序段内插入CLRWDT,确保正常程序运行时“看门狗”电路执行复位(CLRWDT)的间隙时间小于“看门狗”电路设置的溢出时间。

(6)在线调试接口(ICD)和在线低电压编程接口(ISCP)

PIC16F877最具有特色的内容之一就是具有强大的在线调试功能和低电压编程功能。配合低成本的在线调试器ICD(最新版本为3.0,目前常用版本为2.0),可以为初学者提供一个物美价廉的硬件调试编写平台。在Microchip公司提供的集成开发环境MPLAB中,可以直接使用在线调试和在线编写功能。在对PIC16F877进行在线串行编程时,该电路允许使用芯片工作电压VDD作为编程电压,而不需要额外的高电压(如13V)。这也极大地方便了程序的编写和产品的升级。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈