深入剖析PIC16F870/871微控制器:功能特性与应用指南
在电子设计领域,微控制器是核心组件之一,它如同电子设备的“大脑”,掌控着设备的各种功能和运行逻辑。Microchip的PIC16F870/871微控制器以其丰富的功能和出色的性能,在众多应用场景中得到了广泛应用。今天,我们就来深入剖析这款微控制器,探讨它的特性、应用以及设计要点。
文件下载:PIC16LF870-I/SS.pdf
一、设备概述
PIC16F870/871微控制器有28引脚的PIC16F870和40引脚的PIC16F871两种型号。它采用高性能RISC CPU,指令集简洁,仅需学习35条单字指令,且除程序分支指令为双周期外,其余均为单周期指令,运行速度快,操作频率范围为DC - 20 MHz,指令周期可达DC - 200 ns。
1.1 核心特性
- 高性能RISC CPU:具备强大的运算能力,能高效处理各种任务。
- 精简指令集:35条单字指令,易于学习和使用,降低了开发难度。
- 丰富的内存资源:拥有2K x 14 words的FLASH程序内存、128 x 8 bytes的数据内存(RAM)以及64 x 8 bytes的EEPROM数据内存,满足不同的数据存储需求。
- 多中断源:具备多达11个中断源,可实现快速响应外部事件,提高系统的实时性。
- 低功耗设计:采用低功耗、高速CMOS FLASH/EEPROM技术,在不同工作模式下都能保持较低的功耗,如在5V、4 MHz典型工作条件下电流小于1.6 mA,3V、32 kHz时典型电流为20 μA,待机电流典型值小于1 μA。
- 多种工作模式:支持Power-on Reset(POR)、Power-up Timer(PWRT)、Oscillator Start-up Timer(OST)、Watchdog Timer(WDT)等功能,确保系统的稳定性和可靠性;具备Power saving SLEEP模式,可在不需要工作时降低功耗;还支持In-Circuit Serial Programming(ICSP)和In-Circuit Debugging等功能,方便开发和调试。
1.2 外设特性
- 定时器模块:
- Capture/Compare/PWM模块:可实现16位捕获、比较和PWM功能,捕获分辨率最高可达12.5 ns,比较分辨率最高可达200 ns,PWM分辨率最高可达10位。
- 模拟-to-数字转换器(ADC):28引脚设备有5个输入通道,其他设备有8个输入通道,可实现10位多通道模拟-to-数字转换。
- 通用同步异步收发器(USART):可配置为全双工异步系统或半双工同步系统,支持9位地址检测,具备多处理器通信能力。
- 并行从端口(PSP):仅PIC16F871具备,可作为8位宽的微处理器端口,实现与外部设备的并行通信。
二、内存组织
PIC16F870/871的内存分为程序内存和数据内存,两者拥有独立的总线,可实现并发访问。
2.1 程序内存
程序内存采用13位程序计数器,可寻址8K x 14的程序内存空间,但实际只有2K x 14 words的FLASH程序内存。RESET向量位于0000h,中断向量位于0004h。
2.2 数据内存
数据内存被划分为多个存储体,包含通用寄存器和特殊功能寄存器。通过STATUS寄存器的RP1和RP0位进行存储体选择,每个存储体最大扩展到7Fh(128字节),下部位置保留给特殊功能寄存器,上部为通用寄存器,采用静态RAM实现。部分常用特殊功能寄存器会在不同存储体中镜像,以减少代码量并加快访问速度。
三、I/O端口
PIC16F870/871的I/O端口部分引脚与外设功能复用,当外设启用时,这些引脚可能无法作为通用I/O引脚使用。
3.1 PORTA
6位宽双向端口,对应数据方向寄存器为TRISA。部分引脚可作为模拟输入或VREF输入,RA4引脚还可作为Timer0模块的时钟输入,采用Schmitt Trigger输入和开漏输出。
3.2 PORTB
8位宽双向端口,对应数据方向寄存器为TRISB。部分引脚与低电压编程功能复用,每个引脚都有内部弱上拉电阻,可通过OPTION_REG寄存器的RBPU位统一控制。RB7:RB4引脚具备中断变化功能,可用于按键唤醒等操作。
3.3 PORTC
8位宽双向端口,对应数据方向寄存器为TRISC。部分引脚与多个外设功能复用,采用Schmitt Trigger输入缓冲器。在启用外设功能时,需注意TRIS位的设置。
3.4 PORTD和PORTE(仅PIC16F871)
PORTD为8位端口,可配置为8位宽的微处理器端口(并行从端口),输入缓冲器在I/O模式下为Schmitt Trigger,在并行从端口模式下为TTL。PORTE有三个引脚,可作为通用I/O引脚或并行从端口的控制输入,输入缓冲器同样根据模式不同而变化。
四、定时器模块
定时器模块是PIC16F870/871的重要组成部分,可实现定时、计数等功能。
4.1 Timer0模块
8位定时器/计数器,可读可写,带有8位软件可编程预分频器,可选择内部或外部时钟源,溢出时可产生中断。在定时器模式下,每指令周期递增;在计数器模式下,根据RA4/T0CKI引脚的边沿变化递增。
4.2 Timer1模块
16位定时器/计数器,由TMR1H和TMR1L两个8位寄存器组成,可读可写。可工作在定时器或计数器模式,可通过T1CON寄存器进行配置。在SLEEP模式下,若配置为异步计数器模式,可继续运行并产生溢出中断,唤醒处理器。
4.3 Timer2模块
8位定时器,带有预分频器和后分频器,可作为PWM时间基准。TMR2寄存器可读可写,在设备复位时清零。通过T2CON寄存器可配置预分频器和后分频器,以及定时器的开启和关闭。
五、Capture/Compare/PWM模块
该模块包含一个16位寄存器,可作为16位捕获寄存器、16位比较寄存器或PWM主/从占空比寄存器。
5.1 捕获模式
在捕获模式下,CCPR1H:CCPR1L可捕获TMR1寄存器的16位值,根据不同的事件触发条件进行捕获,如每个下降沿、上升沿、第4个上升沿或第16个上升沿。捕获发生时,中断请求标志位CCP1IF会被置位,需在软件中清除。
5.2 比较模式
在比较模式下,16位CCPR1寄存器的值会与TMR1寄存器的值进行比较,当匹配时,RC2/CCP1引脚会根据配置进行相应操作,同时中断标志位CCP1IF会被置位。
5.3 PWM模式
在PWM模式下,CCP1引脚可产生最高10位分辨率的PWM输出。通过设置PR2寄存器可指定PWM周期,通过设置CCPR1L寄存器和CCP1CON<5:4>位可指定PWM占空比。
六、通用同步异步收发器(USART)
USART模块可配置为异步(全双工)、同步 - 主(半双工)或同步 - 从(半双工)模式,支持9位地址检测,可与多种外设进行通信。
6.1 波特率发生器
BRG是一个专用的8位波特率发生器,可支持USART的异步和同步模式。通过SPBRG寄存器控制8位定时器的周期,在异步模式下,BRGH位也会影响波特率。
6.2 异步模式
在异步模式下,USART采用标准的非归零(NRZ)格式,包括一个起始位、8或9个数据位和一个停止位。发送和接收功能相互独立,但使用相同的数据格式和波特率。
6.3 同步主模式
在同步主模式下,数据以半双工方式传输,处理器在CK线上发送主时钟。发送和接收操作通过TXEN和CREN或SREN位进行控制。
6.4 同步从模式
同步从模式与主模式的操作基本相同,但移位时钟由外部提供,可在SLEEP模式下进行数据传输。
七、模拟-to-数字转换器(ADC)模块
ADC模块有5个输入通道(28引脚设备)或8个输入通道(其他设备),可将模拟输入信号转换为10位数字结果。
7.1 转换过程
转换过程包括配置A/D模块、等待采样时间、启动转换、等待转换完成和读取转换结果等步骤。在转换过程中,需注意采样时间的计算和A/D转换时钟的选择。
7.2 特殊功能
ADC模块可在SLEEP模式下工作,但需将A/D时钟源设置为内部RC振荡器。
八、特殊功能
PIC16F870/871具备多种特殊功能,可提高系统的可靠性和灵活性。
8.1 振荡器选择
支持LP低功耗晶体、XT晶体/谐振器、HS高速晶体/谐振器和RC电阻/电容四种振荡器模式,可通过配置位进行选择。
8.2 RESET功能
包括Power-on Reset(POR)、Power-up Timer(PWRT)、Oscillator Start-up Timer(OST)和Brown-out Reset(BOR)等,可确保系统在不同情况下的稳定启动。
8.3 中断功能
最多有14个中断源,通过INTCON寄存器记录中断请求标志位,可通过全局中断使能位GIE和各个中断使能位进行控制。
8.4 看门狗定时器(WDT)
WDT是一个独立的RC振荡器,可在正常运行时产生设备复位,在SLEEP模式下唤醒设备。可通过配置位永久禁用。
8.5 SLEEP模式
通过执行SLEEP指令进入低功耗模式,WDT可继续运行,I/O端口保持原有状态。可通过外部RESET、WDT唤醒或中断唤醒。
8.6 代码保护
具备代码保护功能,可对EEPROM数据内存和FLASH程序内存进行保护,防止数据和代码被非法读取。
8.7 在线串行编程(ICSP)
支持在线串行编程,可在最终应用电路中对微控制器进行编程,方便产品的生产和更新。
8.8 低电压ICSP编程
通过配置字的LVP位可启用低电压ICSP编程,使用正常工作电压的VDD源进行编程。
8.9 在线调试器
通过配置字的DEBUG位可启用在线调试器功能,方便进行调试和开发。
九、开发支持
Microchip为PIC16F870/871提供了丰富的开发支持工具,包括集成开发环境、汇编器/编译器/链接器、模拟器、仿真器、在线调试器、设备编程器、低成本演示板和评估套件等,可满足不同开发阶段的需求。
9.1 MPLAB集成开发环境软件
提供了便捷的软件开发环境,支持多种调试工具,可实现源代码编辑、编译、下载和调试等功能。
9.2 MPASM汇编器
全功能的通用宏汇编器,可生成可重定位目标文件、Intel标准HEX文件、MAP文件和绝对LST文件等,支持用户自定义宏和条件汇编。
9.3 MPLAB C17和MPLAB C18 C编译器
完整的ANSI C编译器,提供强大的集成能力、优秀的代码优化和易用性,可生成适用于PIC17CXXX和PIC18CXXX系列微控制器的代码。
9.4 MPLINK对象链接器/MPLIB对象库管理器
MPLINK可将MPASM汇编器和MPLAB C17、MPLAB C18 C编译器生成的可重定位对象进行链接,MPLIB可管理预编译代码的库文件。
9.5 MPLAB C30 C编译器
全功能的ANSI兼容优化编译器,可将标准ANSI C程序转换为dsPIC30F汇编语言源代码,支持多种命令行选项和语言扩展。
9.6 MPLAB ASM30汇编器、链接器和库管理器
可生成dsPIC30F设备的可重定位机器代码,支持固定点和浮点数据,具备丰富的指令集和灵活的宏语言。
9.7 MPLAB SIM软件模拟器
可在PC环境中模拟PIC系列微控制器的指令级操作,支持符号调试,可进行单步执行、执行到断点和跟踪模式等操作。
9.8 MPLAB ICE 2000和MPLAB ICE 4000高性能通用在线仿真器
提供完整的微控制器设计工具集,具备高级的跟踪、触发和数据监测功能,可进行实时仿真和调试。
9.9 MPLAB ICD 2在线调试器
低成本、强大的运行时开发工具,可通过RS-232或高速USB接口连接到主机PC,支持在线调试和编程功能。
9.10 设备编程器和演示板
包括PRO MATE II通用设备编程器、PICSTART Plus开发编程器和多种PICDEM演示板,可方便进行设备编程和功能演示。
十、总结
PIC16F870/871微控制器以其丰富的功能、低功耗设计和良好的开发支持,在电子设计领域具有广泛的应用前景。无论是工业控制、消费电子还是物联网等领域,都能发挥其优势。在实际应用中,我们需要根据具体需求合理选择和配置微控制器的各种功能,充分发挥其性能。同时,借助Microchip提供的开发工具,可提高开发效率,缩短开发周期。希望本文能为电子工程师们在使用PIC16F870/871微控制器时提供一些帮助和参考。大家在实际设计过程中遇到过哪些问题呢?欢迎在评论区分享交流。
-
微控制器
+关注
关注
49文章
8830浏览量
165579 -
功能特性
+关注
关注
1文章
72浏览量
112
发布评论请先 登录
深入剖析PIC16F870/871微控制器:功能特性与应用指南
评论