深入解析Microchip PIC16F872微控制器

电子说

1.4w人已加入

描述

深入解析Microchip PIC16F872微控制器

在电子工程师的日常工作中,微控制器的选择和应用至关重要。今天,我们就来深入探讨一下Microchip的PIC16F872这款28引脚、8位CMOS闪存微控制器的各项特性与功能。

文件下载:PIC16F872T-I SO.pdf

一、芯片概述

PIC16F872微控制器具有高性能RISC CPU,仅需学习35条单字指令,除程序分支为双周期指令外,其余均为单周期指令,运行速度在直流 - 20 MHz时钟输入、直流 - 200 ns 指令周期范围内。它拥有2K x 14 字的闪存程序存储器、128字节的数据存储器(RAM)以及64字节的EEPROM数据存储器。其引脚与PIC16C72A兼容,具备多达10个中断源、八级硬件堆栈以及直接、间接和相对寻址模式。

这款芯片的外设功能也十分丰富,具有25 mA的高灌/拉电流能力,还集成了Timer0、Timer1、Timer2三个定时器,一个捕获/比较/PWM模块,一个带SPI(主模式)和 (I^{2} C)(主/从模式)的同步串行端口,以及10位、5通道的模数转换器(A/D)。

在CMOS技术方面,它采用低功耗、高速CMOS闪存/EEPROM技术,工作电压范围宽,为2.0V至5.5V,采用完全静态设计,适用于商业、工业和扩展温度范围,典型功耗低,待机电流小于1μA。

二、存储器组织

程序存储器

PIC16F872拥有13位程序计数器,可寻址8K字 x 14位的程序存储器空间,但实际只有2K字的闪存程序存储器。复位向量位于0000h,中断向量位于0004h。当访问超出物理实现地址的位置时,会发生回绕。

数据存储器

数据存储器分为多个存储体,由状态寄存器的RP1和RP0位作为存储体选择位。每个存储体最大扩展到7Fh(128字节),低地址位置保留给特殊功能寄存器,之上是通用寄存器,采用静态RAM实现。部分常用特殊功能寄存器会在不同存储体中镜像,以减少代码量并加快访问速度。

特殊功能寄存器

这些寄存器由CPU和外设模块用于控制设备的所需操作,分为核心(CPU)和外设两类。核心功能相关寄存器包括STATUS、OPTION_REG、INTCON等。例如,STATUS寄存器包含ALU的算术状态、复位状态和数据存储器的存储体选择位;OPTION_REG寄存器包含各种控制位,用于配置TMR0预分频器/WDT后分频器、外部INT中断、TMR0和PORTB上的弱上拉电阻;INTCON寄存器包含TMR0寄存器溢出、RB端口变化和外部RB0/INT引脚中断的各种使能和标志位。

三、外设模块分析

定时器模块

  • Timer0:8位定时器/计数器,具备可读可写功能、8位软件可编程预分频器、内部或外部时钟选择、溢出中断和外部时钟边沿选择等特性。在定时器模式下,每指令周期递增;在计数器模式下,根据RA4/T0CKI引脚的上升或下降沿递增。预分频器在Timer0模块和看门狗定时器之间互斥共享。
  • Timer1:16位定时器/计数器,由两个8位寄存器(TMR1H和TMR1L)组成。可工作在定时器或计数器模式,由时钟选择位TMR1CS决定。在定时器模式下,每指令周期递增;在计数器模式下,在外部时钟输入的上升沿递增。此外,它还可在睡眠模式下通过外部晶体/时钟递增,并有内部“复位输入”,可由CCP模块生成。
  • Timer2:8位定时器,带有预分频器和后分频器,可作为CCP模块PWM模式的时基。TMR2寄存器可读可写,在设备复位时清零。输入时钟(FOSC/4)有1:1、1:4或1:16的预分频选项,后分频器可提供1:1至1:16的缩放。

捕获/比较/PWM模块

该模块包含一个16位寄存器,可作为16位捕获寄存器、16位比较寄存器或PWM主/从占空比寄存器。在捕获模式下,当RC2/CCP1引脚发生特定事件时,捕获TMR1寄存器的16位值;在比较模式下,将16位CCPR1寄存器值与TMR1寄存器对的值进行比较,根据比较结果对引脚进行相应操作;在PWM模式下,CCP1引脚可产生高达10位分辨率的PWM输出。

主同步串行端口(MSSP)模块

MSSP模块可用于与其他外设或微控制器设备通信,可工作在SPI或 (I^{2} C) 模式。在SPI模式下,支持所有四种模式,可同步发送和接收8位数据;在 (I^{2} C) 模式下,完全实现所有主和从功能,包括通用呼叫支持,并在硬件中提供START和STOP位的中断,以确定总线空闲状态。

模数转换器(A/D)模块

A/D转换器模块有五个输入通道,可将模拟输入信号转换为相应的10位数字数。该模块具有独特的功能,可在设备处于睡眠模式下工作,但需将A/D时钟源设置为内部RC振荡器。其四个寄存器(ADRESH、ADRESL、ADCON0和ADCON1)可控制模块的操作和端口引脚的配置。

四、特殊功能特性

振荡器选择

PIC16F872可通过配置位FOSC1和FOSC0选择四种不同的振荡器模式,包括LP低功耗晶体、XT晶体/谐振器、HS高速晶体/谐振器和RC电阻/电容。这为不同应用场景提供了灵活的选择,例如,对于对功耗要求较高的应用,可选择LP模式;对于对速度要求较高的应用,可选择HS模式。

复位机制

芯片具有多种复位方式,如上电复位(POR)、掉电复位(BOR)、看门狗定时器复位(WDT)和外部MCLR复位等。上电定时器(PWRT)和振荡器启动定时器(OST)可确保在电源和振荡器稳定后再开始正常工作,减少外部复位电路的使用。

中断系统

该芯片有10个中断源,中断控制寄存器(INTCON)记录各个中断请求的标志位,并具有全局和个别中断使能位。当发生中断时,会将返回地址压入堆栈,并将程序计数器加载为0004h。在处理中断时,需要注意清除相应的中断标志位,以避免递归中断。

看门狗定时器(WDT)

看门狗定时器是一个独立的片上RC振荡器,即使设备处于睡眠状态,WDT也会继续运行。在正常操作中,WDT超时会导致设备复位;在睡眠模式下,WDT超时会使设备唤醒并继续正常操作。WDT可通过配置位WDTE永久禁用。

低功耗睡眠模式(SLEEP)

执行SLEEP指令可进入低功耗模式,此时看门狗定时器会被清除但继续运行,振荡器驱动关闭,I/O端口保持之前的状态。设备可通过外部复位输入、看门狗定时器唤醒或中断从睡眠模式中唤醒。

代码保护

PIC16F872具有代码保护机制,包括EEPROM数据存储器的一位和闪存程序存储器的两位。即使代码保护启用,也可对EEPROM数据存储器进行读写操作。但当代码保护启用时,通过ICSP的外部访问将被禁用,以防止EEPROM数据存储器的内容被读出。

五、开发与使用建议

开发支持

Microchip为PIC16F872提供了丰富的开发工具,包括集成开发环境(MPLAB IDE)、汇编器/编译器/链接器、模拟器、仿真器、在线调试器、设备编程器和低成本演示板等。这些工具为开发者提供了便捷的开发环境,可提高开发效率和质量。

寄存器操作注意事项

在操作特殊功能寄存器时,需要仔细阅读数据手册,了解每个寄存器的功能和位定义。例如,在操作STATUS寄存器时,建议仅使用BCF、BSF、SWAPF和MOVWF指令,因为这些指令不会影响STATUS寄存器中的Z、C或DC位。

应用场景选择

根据PIC16F872的特性,它适用于多种应用场景,如工业控制、消费电子、传感器接口等。在选择应用场景时,需要考虑其性能、功耗、成本等因素。例如,在对功耗要求较高的应用中,可充分利用其低功耗睡眠模式;在对数据处理速度要求较高的应用中,可选择合适的振荡器模式和指令集优化代码。

六、总结

PIC16F872微控制器以其丰富的功能、低功耗、高速度等特性,为电子工程师提供了一个强大而灵活的解决方案。在实际应用中,我们需要深入了解其各项特性和功能,合理选择开发工具和寄存器操作方法,以充分发挥其性能优势。同时,也要注意代码保护和功耗管理等方面的问题,确保系统的稳定性和可靠性。希望各位工程师在使用PIC16F872的过程中,能够不断探索和创新,开发出更优秀的电子产品。你在使用PIC16F872的过程中遇到过哪些问题?又是如何解决的呢?欢迎在评论区分享你的经验和见解。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分