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