版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章
PIC16F877硬件系统慨况2.0PIC16F87X芯片引脚图2.140脚PIC16F87X引脚功能说明2.2PIC16F87X内部结构方框图2.3程序存储器和堆栈2.4RAM数据存储器(文件寄存器)2.5PIC系列单片机的复位功能2.6PIC单片机的系统时钟2.040脚DIP封装的PIC16F87X芯片引脚图PIC16F87XmicrochipFLASH型/MCLRRA0RA1RA2RA3RA4RA5RE0RE1RE2VddVssOSC1OSC2RC0RC1RC2RC3RD0RD1RB7RB6RB5RB4RB3RB2RB1RB0VddVssRD7RD6RD5RD4RC7RC6RC5RC4RD3RD2端口A:RA(6线)端口B:RB(8线)端口C:RC(8线)端口D:RD(8线)端口E:RE(3线)注:①只列出引脚的基本功能;②28脚芯片只有RA、RB
和RC端口。返回本章目录课堂练习:PIC16F877A引脚?A,B,C,D,E端口的IO个数?在了解PIC16F877的引脚时,要注意两点:引脚的“复用功能”;通过引脚的复用功能来认知PIC单片机内部各功能模块的结构、特点。2.1:40脚PIC16F87X引脚功能说明(参见25页)引脚名称PID类型复用功能说明(部分)OSC1/CLKIN13I外接晶体振荡器/外时钟输入OSC2/CLKOUT14O外接晶体振荡器/时钟输出端/MCLRVpp1I/O复位端/外加编程+12V电压输入端端口A(6线):输入/输出可编程双向端口、第2、3功能。RA0/AN02I/OI/O口(下同)/第0路模拟信号输入RA1/AN13I/O第1路模拟信号输入端RA2/AN2/Vr-4I/O第2路模拟输入端、负参考电压输入RA3/AN3/Vr+5I/O第3路模拟输入端、正参考电压输入RA4/T0CKI6I/O定时器0时钟输入端RA5/AN4/SS7I/O第4路模拟输入、同步串口选择端。引脚名称PID类型复用功能说明端口B:输入/输出可编程双向端口,做输入时内部有可编程的弱上拉电路。此外还有第2、3功能。RB0/INT33I/OI/O端口(下同)/外中断INT输入端RB134I/ORB235I/ORB3/PGM36I/O低电压编程输入端(内部电源泵)RB437I/O具有电平变化中断功能RB538I/O具有电平变化中断功能RB6/PGC39I/O电平变化中断功能,兼在线调试、串行在线编程的时钟、数据输入。RB7/PGD40I/O引脚名称PID类型复用功能说明端口C:输入/输出可编程双向端口,此外还有第2、3功能。RC0/T1OSO/T1CKI15I/OTMR1的震荡输入
/时钟输出RC1/T1OSI/CCP216I/O可做定时器1震荡输出
/捕捉器2的输入或输出/脉宽调制器PWM2的输出。RC2/CCP117I/O可做捕捉器1的输入,或比较器1的输出,或脉宽调制器PWM1的输出。RC3/SCK/SCL18I/O可做SPI、I2C串口同步脉冲输入、输出RC4/SDI/SDA23I/OSPI数据输入
/I2C数据输入/输出端。RC5/SDO24I/OSPI串口的数据输出端。RC6/TX/CK25I/O还可做同步/异步收发器USART的全双工异步发送脚、半双工同步传送的时钟RC7/RX/DX26I/O还可做同步/异步收发器USART的全双工异步接收脚、半双工同步传送的数据引脚名称PID类型复用功能说明端口D:输入/输出可编程双向端口,此外全部引脚都有第2功能。RD0/PSP019I/O还可作为从动并行端口PSP实现与其他的微处理器总线的连接RD1/PSP120I/ORD2/PSP221I/ORD3/PSP322I/ORD4/PSP427I/ORD5/PSP528I/ORD6/PSP629I/ORD7/PSP730I/O引脚名称PID类型功能说明端口RE:输入/输出可编程双向3线端口,此外全部引脚都有第2、3功能。RE0/RD/AN58I/OPSP的读出控制线/模拟5道RE1/WR/AN69I/OPSP的写入控制线/模拟6道RE2/CS/AN710I/OPSP的片选控制线/模拟7道电源等Vss12,31P接地端Vdd11,32P正电源端返回本章目录2.2:PIC16F87X内部结构方框图为了便于分析、理解,可以将PIC16F87X内部结构分为:内部核心模块、外围模块两个区域。核心模块:是PIC系列单片机任何一款都必不可少的;外围模块:则由生产厂家根据设计目标灵活的“拼装”和“剪裁”,因而派生出许许多多的系列和型号,以使产品在应用中达到最佳的“性价比”。我们仍然以PIC16F87X系列(重点介绍PIC16F877)为主,来分析PIC单片机的内部结构。端口E端口D端口B端口C端口AEEPROM数据存储器A/D转换器捕捉,比较,PWM1捕捉,比较,PWM2同步串口通用同步/异步收发器8位从动并行端口定时器2定时器1定时器0FLASH程序存储器8K*14程序计数器数据存储器RAM368X88级堆栈13位指令寄存器地址复用器间址寄存器状态寄存器数据复用器ALUW寄存器指令译码器时基发生器RAM地址(9位)程序总线(14位)内部数据总线8位直接地址7位PIC16F877结构简图8838返回前一次上电延时起振延时上电复位WDT欠压复位在线调时低压编程2.2.1:PIC16F87X的核心模块区域1.程序存储器:存放程序、常数和表格。规格:8K*14的FLASH;2.程序计数器:为程序存储器提供指令地址的13位计数器(寻址范围8K)。 初始状态为全零,每执行一条指令自动加一;3.堆栈:保存程序断点地址。当调用子程序或发生中断时,将断点地址自动 压入堆栈,结构为8*13即可以有8级的断点保护(不同于 MCS51)。4.指令寄存器:暂存从程序存储器中取出的指令。将指令的操作码和数据进 行分离,分别送到不同的逻辑电路;5.指令译码器和控制器:将指令寄存器送来的操作码进行译码,产生一系列 的微操作,控制个功能电路协调工作,完成指令的功能。结构图6.算术逻辑单元ALU:实现算术和逻辑运算操作;7.工作寄存器W:指令使用频率很高的寄存器,比如存放要参加运算的数据和暂存运算结果,类似MCS-51的累加器A;8.状态寄存器STATUS(类似MCS-51的PSW): ①反映运算结果的状态如:进位、借位、结果是否为全零等; ②控制RAM中4个体的体选。9.数据复用器:用来选择参加运算的数据来源:数据可以是来自RAM存储 器,也可以是来自程序存储器中的常数。10.数据存储器RAM:存放运算的中间结果。RAM单元具有移位、置位、清零和位测试等只有寄存器才有的功能,所以这些RAM单元也称“文件寄存器”。整个分为体0、体1、体2和体3四个体,由status中的rp0、rp1来设定。上电复位时指向体0。结构图11.地址复用器:提供访问数据寄存器所需要的RAM地址。地址可以来源于 间址寄存器FSR,也可来自指令码中的直接地址;12.间址寄存器FSR(文件选择寄存器):存储间接地址,执行相应的指令前要事先将要访问数据的RAM地址存入FSR中(类似于MCS-51的Ri);13.时基发生器:产生内部各功能电路工作时所需的时钟信号;14.上电复位电路:芯片上电后Vdd上升到一定值(1.6~1.8V)后,电路产 生一个复位脉冲使单片机复位。15.上电延时电路:为了保证电源电压上升到足够高时再使单片机工作。电路提供一个72ms的延时时间以确保CPU在电源电压达到正常值时工作(如果CPU在电源电压偏低的情况下工作时,会发生错误的操作)。结构图16.起振延时电路:当芯片上电延时后,该电路再提供一个1024个时钟周 期的延时,以保证振荡器有足够的时间来产生稳定的时钟信号;17.看门狗定时器WDT:自带RC振荡器时钟源的定时器。用来监视程序的运行状态。如果因某种原因使程序“脱离了”正常的“轨道”而“死机”时,能够强行将CPU复位,使系统从0000开始重新执行程序。18.欠压复位电路:当芯片的电源电压低于某个值时,CPU将不能正确的执行指令,这样系统将会产生不可想象的后果。为了防止这种情况的发生,PIC内部设立了电源监控电路,一旦电源电压低于某一个值时,系统将自动产生复位,直到电源Vdd恢复正常后再延时72ms,CPU才由复位状态转向运行状态。结构图19.在线调试电路:实现对于焊接在板子上的PIC16F87X芯片的在线调 试。当然,必须使用microchip公司提供的 “MAPLAB—IDE”调试软件的支持。20.低电压编程电路:PIC16F87X芯片可以实现在线串口编程。使用芯片电源(+5V),通过芯片内部的“电源泵”将5V升为高压完成编程(固化程序),而不是一般的单片机使用的外加高电压输入编程。21.数据总线:8位宽度,内部数据的通道,也是连接各外围模块的连接 通道。22.程序通道:14位的取指高速通道。专职实现从程序存储器到指令寄 存器的指令快速传递。结构图2.2.2:PIC16F87X的外围模块区域PIC的外围模块种类较多、功能也比较复杂,不同的型号其配制不同。对于学习PIC这门课程,可以先“绕过”这里的一些复杂的环节,等到后面的相应章节中作专题讲解。这里先对PIC的外围模块预先做一个简要的介绍:1.端口RA模块:6线可编程I/O端口,有第2、3功能;2.端口RB模块:8线可编程I/O端口,有第2、3功能;3.端口RC模块:8线可编程I/O端口,有第2、3功能;4.定时器TMR0模块:8位可编程定时/计数器。5.定时器TMR1模块:16位可编程定时/计数器,与捕捉/比较/脉宽调制器CCP模块配合使用,实现捕捉、比较功能;6.定时器TMR2模块:8位可编程定时器,不能做计数器使用,与捕捉/比较/脉宽调制器CCP模块配合使用,实现脉宽调制输出功能;7.EEPROM数据存储模块:128*8的电擦/写的存储器,掉电时数据不丢失;8.A/D转换器:10位转换精度,有5/8路;9.捕捉/比较/脉宽调制CCP1、CCP2模块:两个几乎完全一样的CCP模块,与TMR1、TMR2配合使用可以实现输入捕捉,输出比较和脉宽调制PMW输出功能。 ①输入捕捉:用于测量信号的周期、脉宽和频率等;
②输出比较:功能用于产生宽度不同的正负方波信号,用于驱动可控 硅、继电器等;
③脉宽调制输出:用于产生周期固定、脉宽可调的周期性的方波信 号,以驱动可控硅、步进电机等;10.主同步串行端口MSSP模块:
具有SPI和I2C两种工作模式,用于与SPI和I2C串行端口的外接器件或单片机进行通信;
①
SPI:serialperipheralinterface外围串行接口;
②
I2C:interintegratedcircuitbus电路板级集成芯片间总线。11.通用同步/异步收发器USART模块:
用于实现二线式的串行通信,有两种工作方式:
①全双工异步方式。用于与微机或单片机系统的通信; ②半双工同步方式。用于与A/D、D/A、串行EEPROM等器件的通信。12.并行从动端口PSP模块:用于与其它具有开放总线的单片机、数据处理器或微处理器并行数据总线连接,进行高速的数据传送和交换。因为总线的使用、控制权由与PIC连接的外部系统掌握,所以称其为“并行从动端口”;返回本章目录2.3程序存储器和堆栈(参见45页)PIC16F87X系列单片机具有一个13位的程序计数器,其寻址范围为213=8K(1024*8=8192个字节),对应的寻址范围是:0000H~1FFFH。PIC16F87X系列单片机程序存储器容量表型号存储器容量地址范围PIC16F874/8778K*140000~1FFFHPIC16F873/8764K*140000~0FFFHPIC16F870/871/8722K*140000~07FFH堆栈级1堆栈级2……堆栈级8复位矢量中断矢量PC<12:0>0000H0004H1FFFH07FFH0800H第0页第1页第2页第3页1800H17FFH1000H0FFFH1313PIC16F877内部程序存储器和堆栈示意图将程序存储器每2K为一页,这样:PIC16F877的8K*14空间可以划分为四个页(如图所示)。第0页中的0000H、0004H单元为两个特殊的“上电复位矢量”单元和“中断矢量”入口单元”。独立于RAMPIC16F87X系列单片机采用的是“硬件堆栈”方式,堆栈深度为8级。“硬件堆栈”:CPU执行CALL指令或响应中断时,程序跳转且自动地把当前程序计数器PC的内容(断点)压入堆栈;返回时将堆栈中的断点地址自动“弹到”程序计数器PC中,使CPU恢复执行原来的程序——(同MCS-51);由于PIC的堆栈是专门存储程序断点的(13位),所以此堆栈不能用来存储数据,所以PIC没有专用的“进栈”、“出栈”指令——(不同于MCS-51)。返回本章目录2.4RAM数据存储器(文件寄存器)参见47页PIC16F87X系列单片机的RAM单元包含了通用寄存器和专用寄存器。都可以实现:移位、置位、清零和位测试等复杂操作,所以在microchip公司的技术资料中,常常把其RAM又称为“文件寄存器”(在MCS51中只有累加器A才具备上述功能)。由于指令代码中直接寻址位数的限制,将512B的存储空间分为四个体(Bank):即体0、体1、体2和体3。由status中的rp0、rp1来设定。每一个体中有128个单元。PIC16F87X的RAM按照功能划分:①特殊功能寄存器。在每一个体中的上半部分;②通用寄存器。占用每一个体中的下半部分。PIC单片机的RAM操作,首先要通过status中的rp0、rp1位的设置,来确定被访问单元所在的“体”的位置,然后才能对该单元进行访问!这种方式多少为编程者带来了不便。其原因是PIC的指令系统的访问内存指令中的直接地址的有效位数不够(只有7位地址);如果使用C语言编程(PICC)上述问题可以忽略。PIC单片机的RAM访问注意事项PIC16F87X数据存储器RAM结构图(简图)INDFTMR0OP_REGTMR0OP_REGPCLSTATUSFSRPORTATRISA----------------PORTBTRISBPORTBTRISBPORTCTRISC----------------PCLATHINTCON通用寄存器通用寄存器通用寄存器通用寄存器00H1FH80H9FH100H10FH180H18FH20H6FH70H7FHA0HEFHF0HFFH110H16FH170H17FH190H1EFH1F0H1FFH返回上一次2.4.1通用寄存器(参见51页)通用寄存器(GPRgeneralpurposeregisters)PIC16F87X系列不同型号RAM配置的数量不同,在同一型号中的不同的“体”中数量也各不相同(以PIC16F877为例): ①在体0中有96个RAM单元,地址为:20H~7FH; ②在体1中有80个RAM单元,地址为:A0H~EFH; ③在体2中有96个RAM单元,地址为:110H~16FH; ④在体3中有96个RAM单元,地址为:190H~1EFH;注意:体1-体3的最后16个单元实际上是不存在的,但可以使用其地址来访问,但是真正被访问的单元不是地址所对应的体1-体3的对应单元,而是在体0中所“影射”的单元。
【例如】访问体1中的F0H单元时,真正被访问的却是体1中的70H单元。体2、体3也是如此。我们将体0中70H~7FH的16个单元称之为体1-3的影射区;影射区的好处是在一些较特殊的场合(如中断响应时)对数据的保护可以省掉对RAM的体选操作)具体将在后面相关的章节中介绍。PIC16F877RAM中通用寄存器的结构通用寄存器80B映射到70~7FH通用寄存器16B通用寄存器80B映射到70~7FH通用寄存器16B通用寄存器80B映射到70~7FH通用寄存器96B00H1FH20H70H7FH80H9FHA0HEFHF0HFFH100H10FH110H11FH120H16FH170H17FH180H18FH1A0H19FH18FH1EFH1F0H1FFH2.4.2特殊功能寄存器与通用寄存器不同,特殊功能寄存器在PIC16F87X系列中4个体中的布局保持了一致(重叠式设计),这是考虑到编程时节省选体操作、同时工程技术人员在使用PIC16F87X系列中不同产品之间编程时的兼容性(参见结构图)。将特殊功能寄存器划分为:
①与CPU内核相关的特殊功能寄存器; ②与外围模块相关的特殊功能寄存器。为了便于学习和掌握,先分析与CPU相关的特殊功能寄存器,而与外围模块相关的寄存器放到相关的章节中介绍。有六个比较常用、重要的特殊功能寄存器:状态寄存器STATUS;间接寻址寄存器INDF;程序计数器低八位PCL;文件选择寄存器FSR;程序计数器高位锁存器PCLATH;中断控制寄存器INCON。
它们在四个体上地址是互相映像的,在物理上是同一个寄存器单元。还有一些寄存器在体0、体1(或体2、体3)内是相互映像的。这种设计的好处:访问时不受“体选”的约束,简化编程。寄存器简图(一)状态寄存器STATUS
用于记录算术逻辑单元ALU的运算状态和算术特征、CPU的特殊运行状态、以及RAM数据存储器的体选择等信息。在RAM中的地址分别为03H(体0)、83H(体1)、103H(体2)和183H(体3),在四个体上的位置是相互影射的;地址映射可理解为:物理上只有体0上的STATUS,而其它体上的位置为“空”,访问时都与体0的STATUS产生关系。这种设计为编程带来方便,避免了要预先“选体”的麻烦(参见52页)。IRPPR1PR0/TO/PDZDCCyD7D0RAM结构图状态寄存器STATUS详解符号位说明CBit0进位/借位标志DCBit1辅助进位/借位标志位(数据字节中的高4位与低4位之间)ZBit2=1表明运算结果为零;反之=0时表明运算结果不为零。/PDBit3降耗标志位(低电平为有效)。初始加电或看门狗清零(clrwdt)执行后=1,睡眠指令(sleep)执行后该位清零。/TOBit4超时标志(低电平为有效)。初始加电或看门狗清零(clrwdt)执行后=1。若看门狗发生超时/TO=0。PR0PR1Bit5Bit6RAM数据存储器的体选位,仅用于直接寻址。由PR1、PR0的四种组合对应体0~体3。IRPBit7RAM数据存储器的体选位,仅用于间接寻址方式。(二)与间接寻址相关的INDF和FSRINDF是RAM最顶端的寄存器,地址为00H,但是它是一个“空寄存器”,即只有地址而没有其物理上的寄存器;与FSR配合实现间接寻址。当寻址INDF寄存器时,实际上是访问以FSR内容为地址的RAM单元。使用这种方法可以使指令系统得到极大的简化。 例如MOVFINDF,W
;实际上是按照FSR的内容为 地址,从RAM中取数据到W
假如FSR的内容为30H,则指令执行的结果:将RAM30H中的数据送W。这一点FSR很像MCS-51中的简址寄存器Ri,所以FSR要事先赋值(RAM地址)。RAM结构图PIC单片机的RAM有两种寻址方式: ①直接寻址:使用状态寄存器STATUS中的PR1、PR0进行体选;体内的地址(7位)由指令中7位地址码提供; ②间接寻址:使用STATUS中的IRP和FSR的第7位选体,体内地址由FSR的低7位提供(详见下图)。数据存储器RAM的寻址示意图00H7FH80HFFH100H17FH180H1FFH6来自指令
0PR1PR0IRP7FSR寄存器
0
RAM单元选择单元选择间接寻址的体选直接寻址的体选00011011体0体1体2体3STATUS寄存器(三)与程序计数器PC相关的PCL和PCLATH程序计数器PC是一个13位宽度的程序指针(访问空间213=8192),它时刻指向CPU下一步要执行的那条指令。为了能与其他8位宽度的寄存器进行数据交换,将PC设计成PCL(8位)和PCH(5位)两个部分,其中PCL有自己的地址(02H等)以便进行读写,而高5位的PCH却因为没有地址不能用软件访问,即不能直接访问(写入)。PCH(5bit)PCL(8bit)程序计数器PCRAM结构图高5位PCH的修改只能通过PCLATH寄存器以“装载”的方式完成。而装载又分两种情况:①当执行以PC为目标的写操作时,PC的低八位来自ALU,而PC的高5位来自PCLATH的低5位;
②当执行跳转指令GOTO或子程序调用指令CALL时,PC的低11位地址直接来自指令所携带的11位地址,而PCH的高2位来自PCLATH的第3、4位。程序计数器PC中13位地址的形成示意图---PCLATH12PCH87PCL0来自ALU(8位)
------PCLATH12PCH1110PCL0来自指令码(11位)
执行以PCL为目标的指令时执行GOTO或CALL调用指令时(四)电源控制寄存器PCON电源控制寄存器PCON只有两个有效位:bit0、bit1。两个标志位是分别用来:
1,纪录、区分:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度智能农业农药化肥供应及服务合同3篇
- 2025年度年度城市经济适用房购置合同3篇
- 2025年度股东借款及股权激励计划合同3篇
- 2025年农村个人承包土地经营权与农村信息化建设合同3篇
- 二零二五年度农业机械租赁与农业人才培养合作合同3篇
- 二零二五年度医疗耗材研发与创新合作合同3篇
- 二零二五年度合伙经营中式快餐店合同书2篇
- 个人承包城市照明设施维护2025年度合同3篇
- 2025年度绿色生态猪肉直供基地合作协议合同3篇
- 公墓墓位买卖及墓园墓碑售后服务保障协议3篇
- 【个人简历】大学生职业生涯规划书10篇
- 患者满意度调查分析
- YS/T 1149.2-2016锌精矿焙砂化学分析方法第2部分:酸溶锌量的测定Na2EDTA滴定法
- GB/T 11017.1-2002额定电压110kV交联聚乙烯绝缘电力电缆及其附件第1部分:试验方法和要求
- 原料药FDA现场GMP符合性要求与检查实践课件
- 科技创新社团活动教案课程
- 氨碱法纯碱生产工艺概述
- 基础化工行业深度:电解液新型锂盐材料之双氟磺酰亚胺锂(LiFSI)市场潜力可观新型锂盐LiFSI国产化进程加速
- 年产10000吨一次性自然降解环保纸浆模塑餐具自动化生产线技改项目环境影响报告表
- 实战销售培训讲座(共98页).ppt
- 测控电路第7章信号细分与辨向电路
评论
0/150
提交评论