电子说
在电子工程师的日常工作中,微控制器的选择和应用至关重要。今天,我们就来深入探讨一下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引脚中断的各种使能和标志位。
该模块包含一个16位寄存器,可作为16位捕获寄存器、16位比较寄存器或PWM主/从占空比寄存器。在捕获模式下,当RC2/CCP1引脚发生特定事件时,捕获TMR1寄存器的16位值;在比较模式下,将16位CCPR1寄存器值与TMR1寄存器对的值进行比较,根据比较结果对引脚进行相应操作;在PWM模式下,CCP1引脚可产生高达10位分辨率的PWM输出。
MSSP模块可用于与其他外设或微控制器设备通信,可工作在SPI或 (I^{2} C) 模式。在SPI模式下,支持所有四种模式,可同步发送和接收8位数据;在 (I^{2} C) 模式下,完全实现所有主和从功能,包括通用呼叫支持,并在硬件中提供START和STOP位的中断,以确定总线空闲状态。
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。在处理中断时,需要注意清除相应的中断标志位,以避免递归中断。
看门狗定时器是一个独立的片上RC振荡器,即使设备处于睡眠状态,WDT也会继续运行。在正常操作中,WDT超时会导致设备复位;在睡眠模式下,WDT超时会使设备唤醒并继续正常操作。WDT可通过配置位WDTE永久禁用。
执行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的过程中遇到过哪些问题?又是如何解决的呢?欢迎在评论区分享你的经验和见解。
全部0条评论
快来发表一下你的评论吧 !