《PIC16F887系统资源》由会员分享,可在线阅读,更多相关《PIC16F887系统资源(51页珍藏版)》请在金锄头文库上搜索。
1、中山火炬职业技术学院中山火炬职业技术学院第二章 PIC16F877硬件系统慨况2.0 PIC16F87X2.0 PIC16F87X芯片芯片引脚图引脚图2.1 402.1 40脚脚PIC16F87XPIC16F87X引脚功能说明引脚功能说明2.2 PIC16F87X2.2 PIC16F87X内部结构内部结构方框图方框图2.3 2.3 程序存储器和堆栈程序存储器和堆栈2.4 RAM2.4 RAM数据存储器数据存储器(文件寄存器)(文件寄存器)2.5 PIC2.5 PIC系列单片机的系列单片机的复位功能复位功能2.6 PIC2.6 PIC单片机的单片机的系统时钟系统时钟中山火炬职业技术学院中山火炬职
2、业技术学院2.0 40脚DIP封装的PIC16F87X芯片引脚图PIC16F87XmicrochipFLASH型/MCLRRA0RA1RA2RA3RA4RA5RE0RE1RE2V ddV ssOSC1OSC2RC0RC1RC2RC3RD0RD1RB7RB6RB5RB4RB3RB2RB1RB0V ddV ssRD7RD6RD5RD4RC7RC6RC5RC4RD3RD2端口A:RA(6线)端口B:RB(8线)端口C:RC(8线)端口D:RD(8线)端口E:RE(3线)注:只列出引脚的基本功能; 28脚芯片只有RA、 RB 和RC端口。返回本章目录中山火炬职业技术学院中山火炬职业技术学院课堂练习:1
3、.PIC16F877A引脚?2.A,B,C,D,E端口的IO个数?中山火炬职业技术学院中山火炬职业技术学院在了解在了解PIC16F877PIC16F877的引脚时,要注意两点:的引脚时,要注意两点:1.1.引脚的引脚的“ “复用功能复用功能” ”;2.2.通过引脚的复用功能来认知通过引脚的复用功能来认知PICPIC单片机内部各功单片机内部各功能模块的结构、特点。能模块的结构、特点。中山火炬职业技术学院中山火炬职业技术学院2.12.1: 4040脚脚PIC16F87XPIC16F87X引脚功能说明引脚功能说明(参见(参见2525页)页)引脚名称PID类 型复 用 功 能 说 明(部分)OSC1/
4、CLKIN13I外接晶体振荡器/外时钟输入OSC2/CLKOUT14O外接晶体振荡器/时钟输出端/MCLR V pp1I/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路模拟输入、同步串口选择端。中山火炬职业技术学
5、院中山火炬职业技术学院引脚名称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:输入/输
6、出可编程双向端口,此外还有第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的全双工异步发送脚、
7、半双工同步传送的时钟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中山火炬职业技术学院中山火炬职业技术学院引
8、脚名称PID类 型功 能 说 明端口RE:输入/输出可编程双向3线端口,此外全部引脚都有第2、3功能。RE0 / RD / AN58I/OPSP的读出控制线 / 模拟5道RE1 / WR / AN69I/OPSP的写入控制线 / 模拟6道RE2 / CS / AN710I/OPSP的片选控制线 / 模拟7道电源等Vss12,31P接地端Vdd11,32P正电源端返回本章目录中山火炬职业技术学院中山火炬职业技术学院课堂练习:1.外接编程器的IO口是?中山火炬职业技术学院中山火炬职业技术学院课堂练习:1.外部中断输入外部中断输入端口的IO?中山火炬职业技术学院中山火炬职业技术学院课堂练习:1.模拟
9、输入模拟输入端口的IO?中山火炬职业技术学院中山火炬职业技术学院2.2:PIC16F87X内部结构方框图为了便于分析、理解,可以将为了便于分析、理解,可以将PIC16F87XPIC16F87X内部结构分为:内部结构分为:内部核心模块内部核心模块、外围模块外围模块两个区域。两个区域。1.1.核心模块:核心模块:是是PICPIC系列单片机任何一款都必不可少的;系列单片机任何一款都必不可少的;2.2.外围模块:外围模块:则由生产厂家根据设计目标灵活的则由生产厂家根据设计目标灵活的“ “拼装拼装” ”和和“ “剪裁剪裁” ”,因而派生出许许多多的系列和型号,以使,因而派生出许许多多的系列和型号,以使产
10、品在应用中达到最佳的产品在应用中达到最佳的“ “性价比性价比” ”。我们仍然以我们仍然以PIC16F87XPIC16F87X系列(重点介绍系列(重点介绍PIC16F877) PIC16F877) 为为主,来分析主,来分析PICPIC单片机的内部结构。单片机的内部结构。中山火炬职业技术学院中山火炬职业技术学院端口E端口D端口B端口C端口AEEPROM数据存储器A/D转换器捕捉,比较,PWM1捕捉,比较,PWM2同步串口通用同步/异步收发器8位从动并行端口定时器2定时器1定时器0 FLASH程序存储器8K*14程序计数器数据存储器RAM 368X88级堆栈13位指令寄存器地址复用器间址寄存器状态寄
11、存器数据复用器ALUW寄存器指令译码器时基发生器RAM地址(9位)程序总线(14位)内部数据总线8位直接地址7位PIC16F877结构简图8838返回前一次上电延时 起振延时上电复位WDT欠压复位在线调时低压编程中山火炬职业技术学院中山火炬职业技术学院2.2.1:PIC16F87X的核心模块区域1.1.程序存储器:程序存储器:存放程序、常数和表格。规格:存放程序、常数和表格。规格:8K8K* *1414的的FLASHFLASH;2.2.程序计数器:程序计数器:为程序存储器提供指令地址的为程序存储器提供指令地址的1313位计数器(寻址范围位计数器(寻址范围8K8K)。)。 初始状态为全零,每执行
12、一条指令自动加一;初始状态为全零,每执行一条指令自动加一;3.3.堆栈:堆栈:保存程序断点地址。当调用子程序或发生中断时,将断点地址自动保存程序断点地址。当调用子程序或发生中断时,将断点地址自动 压入堆栈,结构为压入堆栈,结构为8 8* *1313即可以有即可以有8 8级的断点保护(不同于级的断点保护(不同于 MCS51MCS51)。)。4.4.指令寄存器指令寄存器:暂存从程序存储器中取出的指令。将指令的操作码和数据进暂存从程序存储器中取出的指令。将指令的操作码和数据进 行分离,分别送到不同的逻辑电路;行分离,分别送到不同的逻辑电路;5.5.指令译码器和控制器指令译码器和控制器:将指令寄存器送
13、来的操作码进行译码,产生一系列将指令寄存器送来的操作码进行译码,产生一系列 的微操作,控制个功能电路协调工作,完成指令的功能。的微操作,控制个功能电路协调工作,完成指令的功能。结构图中山火炬职业技术学院中山火炬职业技术学院6.6.算术逻辑单元算术逻辑单元ALUALU:实现算术和逻辑运算操作;实现算术和逻辑运算操作;7.7.工作寄存器工作寄存器WW:指令使用频率很高的寄存器指令使用频率很高的寄存器, ,比如存放要参加运算的数据比如存放要参加运算的数据和暂存运算结果,和暂存运算结果,类似类似MCS-51MCS-51的累加器的累加器A A;8.8.状态寄存器状态寄存器STATUS STATUS (
14、( 类似类似MCS-51MCS-51的的PSW PSW ) ) : 反映运算结果的状态如:进位、借位、结果是否为全零等;反映运算结果的状态如:进位、借位、结果是否为全零等; 控制控制RAMRAM中中4 4个体的个体的体选体选。9 9. .数据复用器数据复用器:用来选择参加运算的用来选择参加运算的数据数据来源:数据可以是来自来源:数据可以是来自RAMRAM存储存储 器,也可以是来自程序存储器中的常数。器,也可以是来自程序存储器中的常数。10.10.数据存储器数据存储器RAMRAM:存放运算的中间结果。存放运算的中间结果。RAMRAM单元具有单元具有移位、置位、移位、置位、清零清零和和位测试位测试
15、等只有寄存器才有的功能,所以这些等只有寄存器才有的功能,所以这些RAMRAM单元也称单元也称“ “文文件寄存器件寄存器” ”。整个分为体。整个分为体0 0、体、体1 1、体、体2 2和体和体3 3四个体,由四个体,由statusstatus中的中的rp0rp0、rp1rp1来设定。上电复位时指向体来设定。上电复位时指向体0 0。 结构图中山火炬职业技术学院中山火炬职业技术学院11.11.地址复用器:地址复用器:提供访问数据寄存器所需要的提供访问数据寄存器所需要的RAMRAM地址。地址可以来源于地址。地址可以来源于间址寄存器间址寄存器FSRFSR,也可来自指令码中的直接地址;,也可来自指令码中的
16、直接地址;12.12.间址寄存器间址寄存器FSRFSR(文件选择寄存器文件选择寄存器):):存储间接地址,执行相应的指令存储间接地址,执行相应的指令前要事先将要访问数据的前要事先将要访问数据的RAMRAM地址存入地址存入FSRFSR中(类似于中(类似于MCS-51MCS-51的的RiRi););13. 13. 时基发生器:时基发生器: 产生内部各功能电路工作时所需的时钟信号;产生内部各功能电路工作时所需的时钟信号;14.14.上电复位电路:上电复位电路:芯片上电后芯片上电后VddVdd上升到一定值(上升到一定值(1.61.61.8V1.8V)后,电路产)后,电路产 生一个复位脉冲使单片机复位。
17、生一个复位脉冲使单片机复位。15.15.上电延时电路:上电延时电路:为了保证电源电压上升到足够高时再使单片机工作。电为了保证电源电压上升到足够高时再使单片机工作。电路提供一个路提供一个72ms72ms的延时时间以确保的延时时间以确保CPUCPU在电源电压达到正常值时工作在电源电压达到正常值时工作(如果如果CPUCPU在电源电压偏低的情况下工作时,会发生错误的操作)。在电源电压偏低的情况下工作时,会发生错误的操作)。结构图中山火炬职业技术学院中山火炬职业技术学院16.16.起振延时电路:起振延时电路:当芯片上电延时后,该电路再提供一个当芯片上电延时后,该电路再提供一个10241024个时钟周个时
18、钟周期的延时,以保证振荡器有足够的时间来产生稳定的时钟信号;期的延时,以保证振荡器有足够的时间来产生稳定的时钟信号;17.17.看门狗定时器看门狗定时器WDTWDT:自带自带RCRC振荡器时钟源的振荡器时钟源的定时器定时器。用来监视程序。用来监视程序的运行状态。如果因某种原因使程序的运行状态。如果因某种原因使程序“ “脱离了脱离了” ”正常的正常的“ “轨道轨道” ” 而而“ “死机死机” ”时,能够强行将时,能够强行将CPUCPU复位,复位,使系统从使系统从00000000开始重新执行程序开始重新执行程序。18.18.欠压复位电路:欠压复位电路:当芯片的电源电压低于某个值时,当芯片的电源电压
19、低于某个值时,CPUCPU将不能正确的将不能正确的执行指令,这样系统将会产生不可想象的后果。为了防止这种情况的执行指令,这样系统将会产生不可想象的后果。为了防止这种情况的发生,发生,PICPIC内部设立了电源监控电路,一旦电源电压低于某一个值时,内部设立了电源监控电路,一旦电源电压低于某一个值时,系统将自动产生复位,直到电源系统将自动产生复位,直到电源VddVdd恢复正常后再延时恢复正常后再延时72ms72ms,CPUCPU才由复位状态转向运行状态。才由复位状态转向运行状态。结构图中山火炬职业技术学院中山火炬职业技术学院19.19.在线调试电路:在线调试电路:实现对于焊接在板子上的实现对于焊接
20、在板子上的PIC16F87XPIC16F87X芯片的在线调芯片的在线调 试。当然,必须使用试。当然,必须使用microchipmicrochip公司提供的公司提供的 “ “MAPLAB IDE”MAPLAB IDE”调试软件的支持。调试软件的支持。20.20.低电压编程电路:低电压编程电路:PIC16F87XPIC16F87X芯片可以实现在线串口编程。使用芯片芯片可以实现在线串口编程。使用芯片电源(电源(+5V+5V) ),通过芯片内部的,通过芯片内部的“ “电源泵电源泵” ”将将5V5V升为高压完成升为高压完成编程编程(固化程序),而不是一般的单片机使用的外加高电压输入编程。(固化程序),而
21、不是一般的单片机使用的外加高电压输入编程。21.21.数据总线:数据总线:8 8位宽度,内部数据的通道,也是连接各外围模块的连接位宽度,内部数据的通道,也是连接各外围模块的连接 通道。通道。22.22.程序通道:程序通道:1414位的取指高速通道位的取指高速通道 。专职实现从程序存储器到指令寄。专职实现从程序存储器到指令寄 存器的指令快速传递。存器的指令快速传递。结构图中山火炬职业技术学院中山火炬职业技术学院课堂练习:1.PIC16F877堆栈的级别?中山火炬职业技术学院中山火炬职业技术学院课堂练习:1.PIC16F877的上电延时电路的用途?中山火炬职业技术学院中山火炬职业技术学院课堂练习:
22、1.PIC16F877的震荡延时电路的用途?中山火炬职业技术学院中山火炬职业技术学院2.2.2:PIC16F87X的外围模块区域PICPIC的外围模块种类较多、功能也比较复杂,不同的型号其配制不同。的外围模块种类较多、功能也比较复杂,不同的型号其配制不同。对于学习对于学习PICPIC这门课程,可以先这门课程,可以先“ “绕过绕过” ”这里的一些复杂的环节,等这里的一些复杂的环节,等到后面的相应章节中作专题讲解。这里先对到后面的相应章节中作专题讲解。这里先对PICPIC的外围模块预先做一的外围模块预先做一个简要的介绍:个简要的介绍:1.1.端口端口RARA模块:模块:6 6线可编程线可编程I/O
23、I/O端口,有第端口,有第2 2、3 3功能;功能;2.2.端口端口RBRB模块:模块:8 8线可编程线可编程I/OI/O端口,有第端口,有第2 2、3 3功能;功能;3.3.端口端口RCRC模块:模块:8 8线可编程线可编程I/OI/O端口,有第端口,有第2 2、3 3功能;功能;4.4.定时器定时器TMR0TMR0模块:模块:8 8位可编程定时位可编程定时/ /计数器。计数器。5.5.定时器定时器TMR1TMR1模块:模块:1616位可编程定时位可编程定时/ /计数器,与捕捉计数器,与捕捉/ /比较比较/ /脉宽调制器脉宽调制器CCPCCP模块配合使用,实现捕捉、比较功能;模块配合使用,实
24、现捕捉、比较功能;6.6.定时器定时器TMR2TMR2模块:模块:8 8位可编程定时器,不能做计数器使用,与捕捉位可编程定时器,不能做计数器使用,与捕捉/ /比比较较/ /脉宽调制器脉宽调制器CCPCCP模块配合使用,实现脉宽调制输出功能;模块配合使用,实现脉宽调制输出功能;中山火炬职业技术学院中山火炬职业技术学院7.7.EEPROMEEPROM数据存储模块:数据存储模块:128*8128*8的电擦的电擦/ /写的存储器,掉电时数据不丢失;写的存储器,掉电时数据不丢失;8. 8. A/DA/D转换器转换器:1010位转换精度,有位转换精度,有5/85/8路;路;9. 9. 捕捉捕捉/ /比较比
25、较/ /脉宽调制脉宽调制CCP1CCP1、CCP2CCP2模块模块:两个几乎完全一样的:两个几乎完全一样的CCPCCP模块,模块,与与TMR1TMR1、TMR2TMR2配合使用可以实现输入捕捉,输出比较和脉宽调制配合使用可以实现输入捕捉,输出比较和脉宽调制PMWPMW输出功能。输出功能。输入捕捉输入捕捉:用于测量信号的周期、脉宽和频率等;用于测量信号的周期、脉宽和频率等;输出比较输出比较:功能用于产生宽度不同的正负方波信号,用于驱动可控功能用于产生宽度不同的正负方波信号,用于驱动可控 硅、继电器等;硅、继电器等;脉宽调制输出脉宽调制输出:用于产生:用于产生周期固定、脉宽可调周期固定、脉宽可调的
26、周期性的方波信的周期性的方波信 号,以驱动可控硅、步进电机等;号,以驱动可控硅、步进电机等;中山火炬职业技术学院中山火炬职业技术学院10. 10. 主同步串行端口主同步串行端口MSSPMSSP模块:模块:具有具有SPISPI和和I I2 2C C两种工作模式,用于与两种工作模式,用于与SPISPI和和I I2 2C C串行端口的外接器件或单串行端口的外接器件或单片机进行通信;片机进行通信; SPI : serial peripheral interface SPI : serial peripheral interface 外围串行接口外围串行接口 ; I I2 2C : inter inte
27、grated circuit bus C : inter integrated circuit bus 电路板级集成芯片间总线。电路板级集成芯片间总线。 11. 11. 通用同步通用同步/ /异步收发器异步收发器USARTUSART模块模块:用于实现二线式的串行通信,有两种工作方式:用于实现二线式的串行通信,有两种工作方式: 全双工异步方式。用于与微机或单片机全双工异步方式。用于与微机或单片机系统系统的通信;的通信; 半双工同步方式。用于与半双工同步方式。用于与A/DA/D、D/AD/A、串行串行EEPROMEEPROM等等器件器件的通信的通信。12.12.并行从动端口并行从动端口PSPPSP
28、模块:模块:用于与其它具有开放总线的单片机、数据处理用于与其它具有开放总线的单片机、数据处理器或微处理器并行数据总线连接,进行高速的数据传送和交换。因为总器或微处理器并行数据总线连接,进行高速的数据传送和交换。因为总线的使用、控制权由与线的使用、控制权由与PICPIC连接的外部系统掌握,所以称其为连接的外部系统掌握,所以称其为“ “并行从动并行从动端口端口” ”;返回本章目录中山火炬职业技术学院中山火炬职业技术学院课堂练习:1.PIC16F877的EEPROM的容量?中山火炬职业技术学院中山火炬职业技术学院课堂练习:1.PIC16F877的定时器的数量?中山火炬职业技术学院中山火炬职业技术学院
29、2.3 2.3 程序存储器和堆栈(程序存储器和堆栈(参见参见4545页)页)PIC16F87XPIC16F87X系列单片机具有一个系列单片机具有一个1313位的程序计数器,其寻址范围为位的程序计数器,其寻址范围为2 213 13 =8K=8K(10241024* *8=81928=8192个字节),对应的寻址范围是:个字节),对应的寻址范围是:0000H0000H1FFFH1FFFH。PIC16F87XPIC16F87X系列单片机程序存储器容量表系列单片机程序存储器容量表型 号存储器容量地 址 范 围PIC16F874/8778K*1400001FFFHPIC16F873/8764K*1400
30、000FFFHPIC16F870/871/8722K*14000007FFH中山火炬职业技术学院中山火炬职业技术学院堆栈级 1堆栈级 2堆栈级 8复位矢量中断矢量PC0000H0004H1FFFH07FFH0800H第0页第1页第2页第3页1800H17FFH1000H0FFFH1313PIC16F877内部程序存储器和堆栈示意图1.将程序存储器每2K为一页,这样:PIC16F877的8K*14空间可以划分为四个页(如图所示)。2.第0页中的0000H、0004H单元为两个特殊的“上电复位矢量”单元和“中断矢量”入口单元”。独立于RAM中山火炬职业技术学院中山火炬职业技术学院PIC16F87X
31、PIC16F87X系列单片机采用的是系列单片机采用的是“ “硬件堆栈硬件堆栈” ”方式,堆方式,堆栈深度为栈深度为8 8级。级。“ “硬件堆栈硬件堆栈” ” :1.1.CPUCPU执行执行CALLCALL指令指令或或响应中断响应中断时,程序跳转且自动地把时,程序跳转且自动地把当前程序计数器当前程序计数器PCPC的内容(断点)压入堆栈;返回时将的内容(断点)压入堆栈;返回时将堆栈中的断点地址自动堆栈中的断点地址自动“ “弹到弹到” ”程序计数器程序计数器PCPC中,使中,使CPUCPU恢复执行原来的程序恢复执行原来的程序 (同(同MCS-51MCS-51););2.2.由于由于PICPIC的堆栈
32、是专门存储程序的堆栈是专门存储程序断点断点的(的(1313位),所以此位),所以此堆栈不能用来存储数据,所以堆栈不能用来存储数据,所以PICPIC没有专用的没有专用的“ “进栈进栈” ”、“ “出栈出栈” ”指令指令 (不同于(不同于MCS-51MCS-51)。)。返回本章目录中山火炬职业技术学院中山火炬职业技术学院2.4 RAM2.4 RAM数据存储器(文件寄存器)数据存储器(文件寄存器)参见参见4747页页PIC16F87XPIC16F87X系列单片机的系列单片机的RAMRAM单元包含了单元包含了通用寄存器通用寄存器和和专用寄存器专用寄存器。都可以实现:。都可以实现:移位、置位、清零和位测
33、试移位、置位、清零和位测试等等复杂操作,所以在复杂操作,所以在microchipmicrochip公司的技术资料中,常常把公司的技术资料中,常常把其其RAMRAM又称为又称为“ “文件寄存器文件寄存器” ”(在(在MCS51MCS51中只有累加器中只有累加器A A才具备上述功能)。才具备上述功能)。由于指令代码中由于指令代码中直接寻址直接寻址位数的限制,将位数的限制,将512B512B的存储空的存储空间间分为四个体分为四个体(Bank) Bank) :即体:即体0 0、体、体1 1 、体、体2 2 和体和体3 3 。由。由statusstatus中的中的rp0rp0、rp1rp1来设定。每一个
34、体中有来设定。每一个体中有128128个单元。个单元。PIC16F87XPIC16F87X的的RAMRAM按照功能划分:按照功能划分: 特殊功能寄存器特殊功能寄存器。在每一个体中的上半部分;。在每一个体中的上半部分; 通用寄存器通用寄存器。占用每一个体中的下半部分。占用每一个体中的下半部分。中山火炬职业技术学院中山火炬职业技术学院1.1.PICPIC单片机的单片机的RAMRAM操作,首先要通过操作,首先要通过statusstatus中的中的rp0rp0、rp1rp1位的设置,来确定被访问单元所在的位的设置,来确定被访问单元所在的“ “体体” ”的位置,然后才能对该单元进行访问!的位置,然后才能
35、对该单元进行访问!2.2.这种方式多少为编程者带来了不便。其原因是这种方式多少为编程者带来了不便。其原因是PICPIC的指令系统的访问内存指令中的直接地址的有效的指令系统的访问内存指令中的直接地址的有效位数不够(只有位数不够(只有7 7位地址);位地址);3.3.如果使用如果使用C C语言编程(语言编程(语言编程(语言编程(PICCPICC)上述问题可以忽略。上述问题可以忽略。PIC单片机的RAM访问注意事项中山火炬职业技术学院中山火炬职业技术学院PIC16F87X数据存储器RAM结构图(简图)00H1FH80H9FH100H10FH180H18FH20H6FH70H7FHA0HEFHF0HF
36、FH110H16FH170H17FH190H1EFH1F0H1FFHINDFTMR0OP_REGTMR0OP_REGPCLSTATUSFSRPORTATRISA-PORTBTRISBPORTBTRISBPORTCTRISC-PCLATHINTCON通用寄存器通用寄存器通用寄存器通用寄存器返回上一次中山火炬职业技术学院中山火炬职业技术学院2.4.1 通用寄存器(参见(参见5151页)页)通用寄存器通用寄存器(GPR general purpose registers)GPR general purpose registers)PIC16F87XPIC16F87X系列不同型号系列不同型号RAMRA
37、M配置的数量不同,在同一型号配置的数量不同,在同一型号中的不同的中的不同的“ “体体” ”中数量也各不相同(以中数量也各不相同(以P PIC16F877IC16F877为例):为例):在体在体0 0中有中有9696个个RAMRAM单元,地址为:单元,地址为:20H20H7FH7FH;在体在体1 1中有中有8080个个RAMRAM单元,地址为:单元,地址为:A0HA0HEFEFH H;在体在体2 2中有中有9696个个RAMRAM单元单元, ,地址为:地址为:110H110H16F16FH H;在体在体3 3中有中有9696个个RAMRAM单元单元, ,地址为:地址为:190H190H1EF1E
38、FH H;中山火炬职业技术学院中山火炬职业技术学院注意:体注意:体1-1-体体3 3的最后的最后1616个单元实际上是不存在的,但可以个单元实际上是不存在的,但可以使用其地址来访问,但是真正被访问的单元不是地址所对应使用其地址来访问,但是真正被访问的单元不是地址所对应的体的体1-1-体体3 3的对应单元,而是在体的对应单元,而是在体0 0中所中所“ “影射影射” ”的单元。的单元。【例如例如】访问体访问体1 1中的中的F0HF0H单元时,真正被访问的却是体单元时,真正被访问的却是体1 1中中的的70H70H单元。体单元。体2 2、体、体3 3也是如此。也是如此。我们将我们将体体0 0中中70H
39、70H7FH7FH的的1616个单元称之为体个单元称之为体1-31-3的的影射区影射区;影射区的好处是在一些较特殊的场合(如中断响应时)对数影射区的好处是在一些较特殊的场合(如中断响应时)对数据的保护可以省掉对据的保护可以省掉对RAMRAM的体选操作)具体将在后面相关的体选操作)具体将在后面相关的章节中介绍。的章节中介绍。中山火炬职业技术学院中山火炬职业技术学院PIC16F877 RAM中通用寄存器的结构通用寄存器80B映射到707FH通用寄存器16B通用寄存器80B映射到707FH通用寄存器96B通用寄存器16B通用寄存器80B映射到707FH00H1FH20H70H7FH80H9FHA0H
40、EFHF0HFFH100H10FH110H11FH120H16FH170H17FH180H18FH1A0H19FH18FH1EFH1F0H1FFH中山火炬职业技术学院中山火炬职业技术学院2.4.2 特殊功能寄存器与通用寄存器不同,特殊功能寄存器在与通用寄存器不同,特殊功能寄存器在PIC16F87XPIC16F87X系列系列中中4 4个体中的个体中的布局保持了一致(布局保持了一致(重叠式设计重叠式设计),这是考虑到,这是考虑到编程时节省编程时节省选体选体操作、同时工程技术人员在使用操作、同时工程技术人员在使用PIC16F87XPIC16F87X系列中不同产品之间编程时的系列中不同产品之间编程时的
41、兼容性(兼容性(参见结参见结构图构图)。将特殊功能寄存器划分为:将特殊功能寄存器划分为: 与与CPUCPU内核相关内核相关的特殊功能寄存器;的特殊功能寄存器; 与与外围模块相关外围模块相关的特殊功能寄存器。的特殊功能寄存器。为了便于学习和掌握,先分析与为了便于学习和掌握,先分析与CPUCPU相关的特殊功能寄存相关的特殊功能寄存器器, ,而与外围模块相关的寄存器放到相关的章节中介绍。而与外围模块相关的寄存器放到相关的章节中介绍。中山火炬职业技术学院中山火炬职业技术学院有六个比较常用、重要的特殊功能寄存器有六个比较常用、重要的特殊功能寄存器:1.1.状态寄存器状态寄存器STATUSSTATUS;2
42、.2.间接寻址寄存器间接寻址寄存器INDFINDF;3.3.程序计数器低八位程序计数器低八位PCLPCL;4.4.文件选择寄存器文件选择寄存器FSRFSR;5.5.程序计数器高位锁存器程序计数器高位锁存器PCLATHPCLATH;6.6.中断控制寄存器中断控制寄存器INCONINCON。它们在四个体上地址是它们在四个体上地址是互相映像互相映像的,在物理上是的,在物理上是同一个寄同一个寄存器单元存器单元。还有一些寄存器在体。还有一些寄存器在体0 0、体、体1 1(或体(或体2 2、体、体3 3)内是相互映像的。内是相互映像的。这种设计的好处:访问时不受这种设计的好处:访问时不受“ “体选体选”
43、”的约束,简化编程。的约束,简化编程。寄存器简图中山火炬职业技术学院中山火炬职业技术学院(一)状态寄存器STATUS 用于记录算术逻辑单元用于记录算术逻辑单元ALUALU的的运算状态运算状态和和算术特征算术特征、CPUCPU的的特殊运行状态、以及特殊运行状态、以及RAMRAM数据存储器的数据存储器的体选择体选择等信息。等信息。在在RAMRAM中的地址分别为中的地址分别为03H03H(体(体0 0)、)、83H83H(体(体1 1)、)、103H103H(体(体2 2)和)和183H183H(体(体3 3),在四个体上的位置是相互影射的;),在四个体上的位置是相互影射的;地址映射地址映射可理解为
44、:物理上只有体可理解为:物理上只有体0 0上的上的STATUSSTATUS,而其它体,而其它体上的位置为上的位置为“ “空空” ”,访问时都与体,访问时都与体0 0的的STATUSSTATUS产生关系。这产生关系。这种设计为编程带来方便,避免了要预先种设计为编程带来方便,避免了要预先“ “选体选体” ”的麻烦(参的麻烦(参见见5252页)。页)。IRPPR1PR0/TO/PDZ ZDCDCCyCyD7D0RAM结构图中山火炬职业技术学院中山火炬职业技术学院状态寄存器 STATUS 详解符号位说 明CBit 0进位/借位标志DCBit 1辅助进位/借位标志位(数据字节中的高4位与低4位之间)ZB
45、it 2=1表明运算结果为零;反之=0时表明运算结果不为零。/PDBit 3降耗标志位(低电平为有效)。初始加电或看门狗清零(clrwdt)执行后=1,睡眠指令(sleep)执行后该位清零。/TOBit 4超时标志(低电平为有效) 。初始加电或看门狗清零(clrwdt)执行后=1。若看门狗发生超时 /TO=0。PR0PR1Bit 5Bit 6RAM数据存储器的体选位,仅用于直接寻址。由PR1、PR0的四种组合对应体0体3。IRPBit 7RAM数据存储器的体选位,仅用于间接寻址方式。 中山火炬职业技术学院中山火炬职业技术学院(二)与间接寻址相关的INDF和FSRINDFINDF是是RAMRAM
46、最顶端的寄存器,地址为最顶端的寄存器,地址为00H00H,但是它是一个,但是它是一个“ “空寄存器空寄存器” ”,即只有地址而没有其物理上的寄存器;,即只有地址而没有其物理上的寄存器;与与FSRFSR配合实现间接寻址。当寻址配合实现间接寻址。当寻址INDFINDF寄存器时,实际上寄存器时,实际上是访问以是访问以FSRFSR内容为地址的内容为地址的RAMRAM单元单元。使用这种方法可以。使用这种方法可以使指令系统得到极大的简化。使指令系统得到极大的简化。例如例如 MOVF INDFMOVF INDF,WW ;实际上是按照;实际上是按照FSRFSR的内容为的内容为 地址,从地址,从RAMRAM中取
47、数据到中取数据到WW假如假如FSRFSR的内容为的内容为30H30H,则指令执行的结果:将,则指令执行的结果:将RAM30HRAM30H中的数据送中的数据送WW。这一点。这一点FSRFSR很像很像MCS-51 MCS-51 中的简址寄存器中的简址寄存器Ri Ri ,所以,所以FSRFSR要事先赋值(要事先赋值(RAMRAM地址)。地址)。RAM结构图中山火炬职业技术学院中山火炬职业技术学院PICPIC单片机的单片机的RAMRAM有有两种两种寻址方式:寻址方式:直接寻址直接寻址:使用状态寄存器:使用状态寄存器STATUSSTATUS中的中的PR1PR1、PR0PR0进进行体选;体内的地址(行体选
48、;体内的地址(7 7位)由指令中位)由指令中7 7位地址码提供;位地址码提供;间接寻址间接寻址:使用:使用STATUSSTATUS中的中的IRPIRP和和FSRFSR的第的第7 7位选体,位选体,体内地址由体内地址由FSRFSR的低的低7 7位提供(详见下图)。位提供(详见下图)。中山火炬职业技术学院中山火炬职业技术学院数据存储器RAM的寻址示意图00H7FH80HFFH100H17FH180H1FFH6 来自指令 0 PR1 PR0IRP 7 FSR寄存器 0 RAM单元选择单元选择间接寻址的体选直接寻址的体选 00 01 10 11体0 体1 体2 体3 STATUS寄存器中山火炬职业技术
49、学院中山火炬职业技术学院(三)与程序计数器PC相关的PCL和PCLATH程序计数器程序计数器PCPC是一个是一个1313位宽度的程序指针(访问空间位宽度的程序指针(访问空间2 21313=8192=8192),它时刻指向,它时刻指向CPUCPU下一步要执行的那条指令。下一步要执行的那条指令。为了能与其他为了能与其他8 8位宽度的寄存器进行数据交换,将位宽度的寄存器进行数据交换,将PCPC设计成设计成PCLPCL(8 8位)位)和和PCHPCH(5 5位)位)两个部分,其中两个部分,其中PCLPCL有自己的地址有自己的地址(02H02H等)以便进行读写,而高等)以便进行读写,而高5 5位的位的P
50、CHPCH却因为没有地址不却因为没有地址不能用软件访问,即不能直接访问(写入)。能用软件访问,即不能直接访问(写入)。PCH(5bit)PCL(8bit)程序计数器PCRAM结构图中山火炬职业技术学院中山火炬职业技术学院高高5 5位位PCHPCH的修改只能通过的修改只能通过PCLATHPCLATH寄存器以寄存器以“ “装载装载” ”的的方式完成。而装载又分两种情况:方式完成。而装载又分两种情况: 当执行以当执行以PCPC为目标的写操作时,为目标的写操作时,PCPC的低八位来自的低八位来自ALUALU,而,而PCPC的高的高5 5位来自位来自PCLATHPCLATH的低的低5 5位;位; 当执行
51、跳转指令当执行跳转指令GOTOGOTO或子程序调用指令或子程序调用指令CALLCALL时,时,PCPC的低的低1111位地址直接来自指令所携带的位地址直接来自指令所携带的1111位地址,而位地址,而PCHPCH的高的高2 2位来自位来自PCLATHPCLATH的第的第3 3 、4 4位。位。中山火炬职业技术学院中山火炬职业技术学院程序计数器PC中13位地址的形成示意图-PCLATH 12 PCH 8 7 PCL 0来自ALU(8位) -PCLATH 12 PCH11 10 PCL 0来自指令码(11位) 执行以PCL为目标的指令时执行GOTO 或CALL调用指令时中山火炬职业技术学院中山火炬职
52、业技术学院(四)电源控制寄存器(四)电源控制寄存器PCONPCON电源控制寄存器电源控制寄存器PCONPCON只有两个有效位:只有两个有效位:bit0bit0、bit1bit1。两个标志位是分别用来:两个标志位是分别用来: 1 1,纪录、区分:复位是,纪录、区分:复位是上电复位上电复位或或/MCLR/MCLR输入低电平还是输入低电平还是“ “看门狗看门狗” ”引起的复位;引起的复位; 2 2,记录和鉴别是否发生了,记录和鉴别是否发生了掉电掉电(电压跌落)复位。(电压跌落)复位。符号位说 明 /PORbit 1电源上电、复位标志位。=1:没有发生上电复位情况;=0:发生上电复位。当发生上电复位后
53、应将其置一, 以便下次判断的正确性。/BORbit 0掉电锁定复位标志。=1:没有发生掉电锁定复位;=0:发生了掉电锁定复位。当发生了掉电锁定复位后, 应及时将其置一,以便为下次的判断做准备。 返回本章目录中山火炬职业技术学院中山火炬职业技术学院由于由于PICPIC单片机具有多种复位功能。造成复位的原因不同,对单片单片机具有多种复位功能。造成复位的原因不同,对单片机内部寄存器、标志和状态影响都不同,所以应当在程序的开始部机内部寄存器、标志和状态影响都不同,所以应当在程序的开始部分可以加上对分可以加上对/POR/POR和和/BOR/BOR等标志的判断,以查清当前复位产生的等标志的判断,以查清当前
54、复位产生的原因,即程序运行的背景是什么:原因,即程序运行的背景是什么:1.1.是原始的上电复位是原始的上电复位? ?( (/POR=0?/POR=0?) );2.2.是掉电复位是掉电复位? ?( (/BOR=0?/BOR=0?) )3.3.是是WDTWDT复位复位? ?(在(在STATUSSTATUS中的中的/TO=0/TO=0?);?);4.4.单片机在单片机在SLEEPSLEEP状态下由状态下由WDTWDT造成的复位造成的复位?(?(在在STATUSSTATUS中的中的/TO/TO和和/PD=0?)/PD=0?)。可以根据复位的原因可以根据复位的原因, ,程序进行不同的处理。当然,对于一些
55、简单程序进行不同的处理。当然,对于一些简单的程序可以不考虑其复位的原因,只要复位后的程序可以不考虑其复位的原因,只要复位后PC=000HPC=000H后统统从后统统从初始化开始运行初始化开始运行. .中山火炬职业技术学院中山火炬职业技术学院2.5 PIC2.5 PIC系列单片机的复位功能系列单片机的复位功能PIC16F87XPIC16F87X具有完善的复位系通。有具有完善的复位系通。有4 4种复位方式:种复位方式: 人工复位:人工复位:无论单片机处于运行、睡眠或死机状态,只要在引脚无论单片机处于运行、睡眠或死机状态,只要在引脚“/MCLR/MCLR”上加一个低电平,就会令其复位;上加一个低电平
56、,就会令其复位; 上电复位:上电复位:上电时,上电复位电路就要对电压上电时,上电复位电路就要对电压VddVdd进行监控,当电源进行监控,当电源达到达到1.61.61.8V1.8V时就会产生一个复位信号,经时就会产生一个复位信号,经72ms+102472ms+1024个时钟的延个时钟的延时后才会使单片机进入工作状态;时后才会使单片机进入工作状态; 看门狗复位:看门狗复位:只要没有对看门狗定时器只要没有对看门狗定时器WDTWDT及时清零,看门狗定时及时清零,看门狗定时器就会出现超时溢出,引发器就会出现超时溢出,引发WDTWDT对单片机复位。对单片机复位。 欠压复位:欠压复位:当电源电压下降到当电源
57、电压下降到4V4V以下时,欠压复位电路就会产生一以下时,欠压复位电路就会产生一个复位信号,使个复位信号,使CPUCPU进入到复位状态。电源恢复到正常后再延时进入到复位状态。电源恢复到正常后再延时72msCPU72msCPU返回运行状态。返回运行状态。返回本章目录中山火炬职业技术学院中山火炬职业技术学院2.6 PIC单片机的系统时钟PIC16F87XPIC16F87X的内部时钟电路是由一个具有三态控制的反相器、一个反的内部时钟电路是由一个具有三态控制的反相器、一个反馈电阻、外部石英振荡器和两个电容构成的自激多谐振荡器。馈电阻、外部石英振荡器和两个电容构成的自激多谐振荡器。当当CPUCPU执行执行SLEEPSLEEP指令时,将反相器置成高阻状态令电路停振。这指令时,将反相器置成高阻状态令电路停振。这时,单片机内部大部分电路停止工作从而有效的降低电路的功耗时,单片机内部大部分电路停止工作从而有效的降低电路的功耗。(其它三种工作方式略)(其它三种工作方式略)到内部电路执行SLEEP指令C1 OSC1C2 OSC2XTALPIC16F87X f XTALC1C2200K4768p4768p1MH15p15p4MH15p15p时钟电路外围元件返回本章目录作业:PIC16F877单片机管脚和说明返回本章目录