MICROCHIP PIC12F510 16F506 8 14 引脚 8 位闪存单片机 数据手册_百


2023年12月17日发(作者:ingot)

深圳市粤原点科技有限公司(Microchip Authorized Design Partner)指定授权总部地址:深圳市福田区福虹路世贸广场C座1103座

Add: Room 1103,Block C,World Trade Plaza,9Fuhong Road,Futian District Shen Zhen City

电话(tel) :86-755-83666321,83666320,83666325传真(fax) :86-755-83666329Web:

E-mail:********************@联系人:马先生,王小,汤小

:QQ:42513912MSN:***********************7x24小时在线产品咨询: PIC12F510/16F506数据手册8/14引脚8位闪存单片机*8位8引脚器件受Microchip的低引脚数专利(美国专利号5,847,450)保护。其他美国及外国的专利和应用可能已发布或正在等待批准。 2007 Microchip Technology Inc.初稿DS41268C_CN

请注意以下有关Microchip器件代码保护功能的要点:•••Microchip的产品均达到Microchip数据手册中所述的技术指标。Microchip确信:在正常使用的情况下,Microchip系列产品是当今市场上同类产品中最安全的产品之一。目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以Microchip数据手册中规定的操作规范来使用Microchip产品的。这样做的人极可能侵犯了知识产权。Microchip愿与那些注重代码完整性的客户合作。Microchip或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是“牢不可破”的。••代码保护功能处于持续发展中。Microchip承诺将不断改进产品的代码保护功能。任何试图破坏Microchip代码保护功能的行为均可视为违反了《数字器件千年版权法案(Digital Millennium Copyright Act)》。如果这种行为导致他人在未经授权的情况下,能访问您的软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含的英文部分,因为其中提供了有关Microchip产品性能和使用情况的有用信息。Microchip Technology Inc.及其分公司和相关公司、各级主管与员工及事务代理机构对译文中可能存在的任何差错不承担任何责任。建议参考Microchip TechnologyInc.的英文原版文档。本出版物中所述的器件应用信息及其他类似内容仅为您提供便利,它们可能由更新之信息所替代。确保应用符合技术规范,是您自身应负的责任。Microchip对这些信息不作任何明示或暗示、书面或口头、法定或其他形式的声明或担保,包括但不限于针对其使用情况、质量、性能、适销性或特定用途的适用性的声明或担保。Microchip对因这些信息及使用这些信息而引起的后果不承担任何责任。如果将Microchip器件用于生命维持和/或生命安全应用,一切风险由买方自负。买方同意在由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障Microchip免于承担法律责任,并加以赔偿。在Microchip知识产权保护下,不得暗中或以其他方式转让任何许可证。商标Microchip 的名称和徽标组合、Microchip 徽标、Accuron、dsPIC、KEELOQ、KEELOQ徽标、microID、MPLAB、PIC、PICmicro、PICSTART、PROMATE、rfPIC和SmartShunt均为Microchip Technology Inc.在美国和其他国家或地区的注册商标。AmpLab、FilterLab、Linear Active Thermistor、Migratable

Memory、MXDEV、MXLAB、SEEVAL、SmartSensor和The Embedded Control Solutions Company 均为Microchip

Technology Inc.在美国的注册商标。Analog-for-the-Digital Age、Application Maestro、CodeGuard、dsPICDEM、、dsPICworks、dsSPEAK、ECAN、ECONOMONITOR、FanSense、FlexROM、fuzzyLAB、In-Circuit Serial Programming、ICSP、ICEPIC、Mindi、MiWi、MPASM、MPLAB Certified徽标、MPLIB、MPLINK、PICkit、PICDEM、、PICLAB、PICtail、PowerCal、PowerInfo、PowerMate、PowerTool、REAL ICE、rfLAB、Select Mode、Smart

Serial、SmartTel、Total Endurance、UNI/O、WiperLock和ZENA均为Microchip Technology Inc.在美国和其他国家或地区的商标。SQTP是Microchip Technology Inc.在美国的服务标记。在此提及的所有其他商标均为各持有公司所有。© 2007, Microchip Technology Inc.版权所有。Microchip

位于美国亚利桑那州Chandler和Tempe与位于俄勒冈州Gresham的全球总部、设计和晶圆生产厂及位于美国加利福尼亚州和印度的设计中心均通过了ISO/TS-16949:2002认证。公司在PIC®

MCU与dsPIC® DSC、KEELOQ®跳码器件、串行EEPROM、单片机外设、非易失性存储器和模拟产品方面的质量体系流程均符合ISO/TS-16949:2002。此外,Microchip在开发系统的设计和生产方面的质量体系也已通过了ISO 9001:2000

认证。DS41268C_CN 第ii页初稿 2007 Microchip Technology Inc.

PIC12F510/16F5068/14引脚8位闪存单片机本数据手册包含的器件有:•PIC16F506•PIC12F510•可供选择的振荡器选项:-INTOSC:4/8MHz高精度内部振荡器-EXTRC:外部低成本RC振荡器-XT:标准晶振/谐振器-LP:节能低频晶振-HS:高速晶振/谐振器(仅限PIC16F506)-EC:高速外部时钟输入(仅限PIC16F506)•模数(Analog-to-Digital,A/D)转换器:-8位分辨率-4路输入通道(1路通道专门用于内部0.6V绝对参考电压的转换)•高灌/拉电流能力,可直接驱动LED•带有8位可编程预分频器的8位实时时钟/计数器(TMR0)高性能RISC CPU:•只需学习33条单字指令•除了程序转移指令,所有指令都是单周期指令;程序转移指令是双周期指令•12位宽指令•2层深硬件堆栈•数据和指令采用直接、间接和相对寻址模式•8位宽数据总线•10个特殊功能硬件寄存器(PIC12F510)•13个特殊功能硬件寄存器(PIC16F506)•工作速度:

-DC-8MHz晶振(PIC12F510)-DC-500ns指令周期(PIC12F510)-DC-20MHz晶振(PIC16F506)-DC-200ns指令周期(PIC16F506)低功耗特性/CMOS技术:•工作电流:-2V时< 170µA,4MHz•待机电流:-2V时典型值为100 nA•低功耗高速闪存技术:-闪存耐写次数达100,000次-数据保存时间 > 40年•全静态设计•宽工作电压范围:2.0V至5.5V•宽温度范围:-工业级:-40°C至+85°C-扩展级:-40°C至+125°C单片机特性:•可供选择的4或8MHz高精度内部振荡器:-出厂时精度已校准到±1%•在线串行编程(In-Circuit Serial

Programming™,ICSP™)•在线调试(In-Circuit Debugging,ICD)支持•上电复位(Power-on Reset,POR)•器件复位定时器(Device Reset Timer,DRT):-用于INTOSC、EXTRC和EC的短暂DRT(1.125ms,典型值)-用于HS、XT和LP的DRT(18ms,典型值)•看门狗定时器(Watchdog Timer,WDT),带专用片上RC振荡器以便可靠工作•可编程代码保护•复用的MCLR输入引脚•I/O引脚具有可供选择的内部弱上拉功能•节能休眠模式•在引脚电平变化时从休眠中唤醒•在比较器电平变化时从休眠中唤醒外设特性(PIC12F510):•6个I/O引脚:-5个可单独进行方向控制的I/O引脚-1个仅用作输入的引脚•1个带有绝对参考电压模块的模拟比较器外设特性(PIC16F506):•12个I/O引脚:-11个可单独进行方向控制的I/O引脚-1个仅用作输入的引脚•2个带有绝对参考电压和可编程参考电压模块的模拟比较器 2007 Microchip Technology Inc.初稿DS41268C_CN 第1页

PIC12F510/16F506程序存储器器件闪存(字数)PIC16F506PIC12F51010241024SRAM(字节数)6738126数据存储器I/O8位定时器11引脚图PDIP、SOIC和TSSOPVDDRB5/OSC1/CLKINRB4/OSC2/CLKOUTRB3/MCLR/VPPRC5/T0CKIRC4/C2OUTRC311413VSSRB0/AN0/C1IN+/ICSPDATRB1/AN1/C1IN-/ICSPCLKRB2/AN2/C1OUTRC0/C2IN+RC1/C2IN-RC2/CVREFPIC16F51098PDIP、SOIC和MSOPVDDGP5/OSC1/CLKINGP4/OSC2GP3/MCLR/VPP12348765VSSGP0/AN0/C1IN+/ICSPDATGP1/AN1/C1IN-/ICSPCLKGP2/AN2/T0CKI/C1OUTDFNVDDGP5/OSC1/CLKINGP4/OSC2GP3/MCLR/VPP18VSSGP0/AN0/C1IN+/ICSPDATGP1/AN1/C1IN-/ICSPCLKGP2/AN2/T0CKI/C1OUTIPIC12F510PIC12F510234765DS41268C_CN 第2页初稿 2007 Microchip Technology Inc.

PIC12F510/16F506目录1.0概述..............................................................................................................................................................................................52.0PIC12F510/16F506 器件品种 ......................................................................................................................................................73.0架构概述.......................................................................................................................................................................................94.0存储器构成.................................................................................................................................................................................155.0I/O端口......................................................................................................................................................................................276.0TMR0模块和TMR0寄存器.......................................................................................................................................................397.0比较器.........................................................................................................................................................................................438.0比较器参考电压模块(仅限PIC16F506).................................................................................................................................499.0模数(A/D)转换器...................................................................................................................................................................5110.0CPU的特殊功能.........................................................................................................................................................................5511.0指令集汇总.................................................................................................................................................................................7112.0开发支持.....................................................................................................................................................................................7913.0电气特性.....................................................................................................................................................................................8314.0直流和交流特性图表...................................................................................................................................................................9715.0封装............................................................................................................................................................................................99索引................................................................................................................................................................................................... 109Microchip网站....................................................................................................................................................................................111变更通知客户服务..............................................................................................................................................................................111客户支持.............................................................................................................................................................................................111读者反馈表.........................................................................................................................................................................................112产品标识体系.....................................................................................................................................................................................113致客户我们旨在提供最佳文档供客户正确使用Microchip产品。为此,我们将不断改进出版物的内容和质量,使之更好地满足您的要求。出版物的质量将随新文档及更新版本的推出而得到提升。

如果您对本出版物有任何问题和建议,请通过联系我公司TRC经理,地址为******************,或将本数据手册后附的《读者反馈表》传真到86-21-5407 5066。我们期待您的反馈。最新数据手册欲获得本数据手册的最新版本,请查询我公司的网站:查看数据手册中任意一页下边角处的文献编号即可确定其版本。文献编号中数字串后的字母是版本号,例如:DS30000A是DS30000的A版本。勘误表现有器件可能带有一份勘误表,描述了实际运行与数据手册中记载内容之间存在的细微差异以及建议的变通方法。一旦我们了解到器件/文档存在某些差异时,就会发布勘误表。勘误表上将注明其所适用的硅片版本和文件版本。欲了解某一器件是否存在勘误表,请通过以下方式之一查询:•Microchip网站•当地Microchip销售办事处(见最后一页)在联络销售办事处时,请说明您所使用的器件型号、硅片版本和数据手册版本(包括文献编号)。客户通知系统欲及时获知Microchip产品的最新信息,请到我上注册。 2007 Microchip Technology Inc.初稿DS41268C_CN 第3页

PIC12F510/16F506注:DS41268C_CN 第4页初稿 2007 Microchip Technology Inc.

PIC12F510/16F5061.0概述1.1应用Microchip Technology生产的PIC12F510/16F506器件是基于闪存的低成本高性能8位全静态CMOS单片机。它们采用了RISC架构,只有33条单字/单周期指令。除了程序转移指令,所有指令都是单周期指令;程序转移指令是双周期指令。PIC12F510/16F506器件可提供比同等价位竞争产品更高数量级的性能参数。器件的12位宽指令是高度对称的指令,可带来典型的2:1代码压缩,超出其他同类的8位控制器。易于使用和易于记忆的指令集可以显著缩短开发时间。PIC12F510/16F506产品配备了一些特殊的功能,可以降低系统成本和功率要求。上电复位(POR)和器件复位定时器(DRT)使得可以不需要使用外部复位电路。共有4种(PIC16F506上有6种)振荡器配置可供选择,包括INTOSC内部振荡器模式和节能LP(低功耗)振荡器模式。节能休眠模式、看门狗定时器和代码保护等功能可以帮助节省系统成本、功耗和提高可靠性。PIC12F510/16F506器件使客户可以充分利用Microchip在闪存可编程单片机领域的价格领导地位,同时受益于闪存的可编程灵活性。以下工具为PIC12F510/16F506产品提供支持:全功能宏汇编器、软件模拟器、在线仿真器、C编译器、低成本开发编程器和全功能编程器。IBM® PC及其兼容机均支持所有这些工具。PIC12F510/16F506器件可适用于各种应用:从个人护理器具、安全系统到低功耗远程发送器/接收器。闪存技术使定制应用程序(发送器代码、器具设置、接收器频率等)变得极其快速和方便。针对过孔或表面安装而设计的小体积封装,使这些单片机成为具有空间限制的应用的理想选择。低成本、低功耗、高性能、易于使用和I/O灵活性等特点使PIC12F510/16F506器件用途广泛,甚至是在从未考虑使用单片机的领域(例如,较大系统和协处理器应用中的定时器功能、逻辑和PLD)。表1-1:PIC12F510/16F506器件

最大工作频率(MHz)闪存程序存储器数据存储器(字节数)定时器模块在引脚电平变化时从休眠中唤醒I/O引脚仅用作输入的引脚内部上拉在线串行编程指令数封装20102467有111有有3314引脚PDIP、SOIC和TSSOP8102438有51有有338引脚PDIP、SOIC和MSOPTMR0 TMR0

PIC12F510/16F506器件具有上电复位、可供选择的看门狗定时器、可供选择的代码保护、高I/O电流能力和高精度内部振荡器。PIC12F510/16F506器件可通过数据引脚RB0/GP0和时钟引脚RB1/GP1进行串行编程。 2007 Microchip Technology Inc.初稿DS41268C_CN 第5页

PIC12F510/16F506注:DS41268C_CN 第6页初稿 2007 Microchip Technology Inc.

PIC12F510/16F5062.0PIC12F510/16F506 器件品种

2.2器件提供多种封装选项。根据应用和生产要求,可以使用本节中的信息来选择适当的器件选项。在订购时,请使用本数据手册后面的PIC12F510/16F506产品标识体系来指定正确的器件编号。序列化快速批量编程(SQTPSM)器件Microchip提供了一种独特的编程服务,即可在每个器件的一些用户定义的存储单元中烧写入不同的序列号。这些序列号可能是随机、伪随机或顺序性的序列号。串行编程使每个器件可以具有惟一的编号,该编号可以用作登录代码、密码或ID号。2.1快速批量编程(QTP)器件Microchip为工厂生产订单提供了QTP编程服务。该服务针对选择不自行对中到大批量器件进行编程并且器件代码模式已稳定的用户提供。这些器件与闪存器件是完全相同的,只是在出厂时已经烧写了所有闪存存储单元和熔丝选项。在产品发货之前,还会执行一些特定的代码和原型验证步骤。更多详细信息,请与当地的Microchip Technology销售办事处联系。 2007 Microchip Technology Inc.初稿DS41268C_CN 第7页

PIC12F510/16F506注:DS41268C_CN 第8页初稿 2007 Microchip Technology Inc.

PIC12F510/16F5063.0架构概述PIC12F510/16F506器件的高性能归结于许多通常在RISC微处理器中才提供的架构特性。PIC12F510/16F506器件使用了哈佛架构,在该架构中程序和数据通过独立的总线进行访问。其带宽优于传统的冯·诺伊曼架构;在传统架构中,程序和数据通过同一总线进行访问。将程序和数据存储器分离还使得可以规定不同于8位宽数据字的指令大小。指令操作码为12位宽,这使所有指令可以全为单字指令。12位宽的程序存储器访问总线可以在单个周期中取12位指令。器件采用了两级指令流水线,取指令和指令执行可以重叠进行。因此,除了程序转移指令,其他所有指令(33条)都在单个周期(20MHz时为200ns,4MHz时为1µs)内执行。

表3-1列出了PIC12F510/16F506器件的程序存储器(闪存)和数据存储器(RAM)。ALU为8位宽,能进行加法、减法、移位和逻辑运算。除非特别指明,算术运算一般采用二进制补码。在双操作数指令中,一个操作数通常是W(工作)寄存器。另一个操作数是文件寄存器或立即数。在单操作数指令中,操作数是W寄存器或文件寄存器。W寄存器是用于ALU运算的8位工作寄存器。它不是可寻址寄存器。根据所执行的指令,ALU可能会影响STATUS寄存器中的进位标志位(C)、半进位标志位(DC)和全零标志位(Z)的值。在减法运算中,C和DC位分别作为借位位和半借位位。请参见SUBWF和ADDWF指令中的示例。图3-1中给出了PIC12F510的简化框图,表3-2中则描述了相应的器件引脚。图3-2中给出了PIC16F506的简化框图,表3-3中则描述了相应的器件引脚。表3-1:器件PIC12F510/16F506存储器存储器程序数据38 x 867 x 8PIC12F510PIC16F5061024 x 121024 x 12PIC12F510/16F506器件可以对其寄存器文件和数据存储器进行直接或间接寻址。包括PC在内的所有特殊功能寄存器(Special Function Register,SFR)都被映射到数据存储器中。PIC12F510/16F506器件具有高度正交(对称)的指令集,使得可以使用任意寻址模式对任意寄存器执行任意指令。这种对称特性和不存在“特殊最佳情况”使PIC12F510/16F506器件编程变得简单且高效。此外,学习时间也可以显著降低。PIC12F510/16F506器件含有一个8位ALU及工作寄存器。ALU是通用算术运算单元。它在工作寄存器和任意寄存器文件中的数据之间执行算术和布尔运算。 2007 Microchip Technology Inc.初稿DS41268C_CN 第9页

PIC12F510/16F506图3-1:PIC12F510系列框图10-11闪存1K x 12

程序存储器程序总线12指令寄存器直接地址5程序计数器数据总线8GPIOGP0/ICSPDATGP1/ICSPCLKGP2GP3GP4GP51级堆栈2级堆栈RAM地址RAM38字节文件寄存器9地址MUX5-7间接地址FSR寄存器83STATUS寄存器器件复位定时器指令译码和控制时序发生上电复位看门狗定时器内部RC时钟8MUXC1IN+C1IN-C1OUTALU比较器OSC1/CLKINOSC2W寄存器CVREFTimer0MCLRVDD,VSS8位ADCAN0AN1AN2T0CKIDS41268C_CN 第10页初稿 2007 Microchip Technology Inc.

PIC12F510/16F506表3-2:名称GP0/AN0/C1IN+/ICSPDAT引脚说明——PIC12F510

I/O/P类型GP0AN0C1IN+ICSPDAT输入类型TTLANANSTTTLANANSTTTLANST—TTLSTHVTTL—TTLXTALSTPP输出类型CMOS——CMOSCMOS———CMOS——CMOS———CMOSXTALCMOS————说明双向I/O端口。可以通过软件设定内部弱上拉功能和在引脚电平变化时从休眠中唤醒的功能。ADC通道输入。比较器输入。在线串行编程数据引脚。双向I/O端口。可以通过软件设定内部弱上拉功能和在引脚电平变化时从休眠中唤醒的功能。ADC通道输入。比较器输入。在线串行编程时钟引脚。双向I/O端口。ADC通道输入。Timer0的时钟输入。比较器输出。标准TTL输入。可以通过软件设定内部弱上拉功能和在引脚电平变化时从休眠中唤醒的功能。MCLR输入——在该模式下将始终使能弱上拉功能。编程电压输入。双向I/O端口。XTAL振荡器输出引脚。双向I/O端口。XTAL振荡器输入引脚。EXTRC施密特触发器输入。逻辑和I/O引脚的正电源。逻辑和I/O引脚的参考地。GP1/AN1/C1IN-/ICSPCLKGP1AN1C1IN-ICSPCLKGP2/AN2/T0CKI/C1OUTGP2AN2T0CKIC1OUTGP3/MCLR/VPPGP3MCLRVPPGP4/OSC2GP5/OSC1/CLKINGP4OSC2GP5OSC1CLKINVDDVSS图注:VDDVSSI = 输入,O = 输出,I/O = 输入/输出,P = 电源,— = 未使用,TTL = TTL输入,ST = 施密特触发器输入,AN = 模拟电压,HV = 高电压 2007 Microchip Technology Inc.初稿DS41268C_CN 第11页

PIC12F510/16F506图3-2:PIC16F506系列框图10程序计数器闪存1K x 12程序存储器程序总线数据总线8PORTBRB0/ICSPDATRB1/ICSPCLKRB2RB3RB4RB5PORTC间接地址RC0RC1RC2RC3RC4RC5C1IN+C1IN-C1OUT1级堆栈2级堆栈RAM67字节文件寄存器RAM地址910指令寄存器直接地址5地址MUX5-7FSR寄存器83STATUS寄存器

比较器1器件复位定时器指令译码和控制OSC1/CLKINOSC2/CLKOUT时序发生上电复位看门狗定时器内部RC时钟8MUX

0.6V参考电压ALU比较器2W寄存器C2IN+C2IN-C2OUTCVREFCVREFTimer0AN0CVREFMCLRVDD,VSS8位ADCAN1AN2T0CKIDS41268C_CN 第12页初稿 2007 Microchip Technology Inc.

PIC12F510/16F506表3-3:名称RB0/AN0/C1IN+/ICSPDAT引脚说明—— PIC16F506

功能RB0AN0C1IN+ICSPDAT输入类型TTLANANSTTTLANANSTTTLAN—TTLSTHVTTL——TTLXTALSTTTLANTTLANTTL—TTLTTL—TTLSTPP输出类型CMOS——CMOSCMOS———CMOS—CMOS———CMOSXTALCMOSCMOS——CMOS—CMOS—CMOSANCMOSCMOSCMOSCMOS———说明双向I/O端口。可以通过软件设定内部弱上拉功能和在引脚电平变化时从休眠中唤醒的功能。ADC通道输入。比较器1的输入。在线串行编程数据引脚。双向I/O端口。可以通过软件设定内部弱上拉功能和在引脚电平变化时从休眠中唤醒的功能。ADC通道输入。比较器1的输入。在线串行编程时钟引脚。双向I/O端口。ADC通道输入。比较器1的输出。标准TTL输入。可以通过软件设定内部弱上拉功能和在引脚电平变化时从休眠中唤醒的功能。MCLR输入——在该模式下将始终使能弱上拉功能。编程电压输入。双向I/O端口。可以通过软件设定内部弱上拉功能和在引脚电平变化时从休眠中唤醒的功能。XTAL振荡器输出引脚。EXTRC/INTOSC CLKOUT引脚(FOSC/4)。双向I/O端口。XTAL振荡器输入引脚。EXTRC/EC施密特触发器输入。双向I/O端口。比较器2的输入。双向I/O端口。比较器2的输入。双向I/O端口。可编程参考电压输出。双向I/O端口。双向I/O端口。比较器2的输出。双向I/O端口。Timer0的时钟输入。逻辑和I/O引脚的正电源。逻辑和I/O引脚的参考地。RB1/AN1/C1IN-/ICSPCLKRB1AN1C1IN-ICSPCLKRB2/AN2/C1OUTRB2AN2C1OUTRB3/MCLR/VPPRB3MCLRVPPRB4/OSC2/CLKOUTRB4OSC2CLKOUTRB5/OSC1/CLKINRB5OSC1CLKINRC0/C2IN+RC1/C2IN-RC2/CVREFRC3RC4/C2OUTRC5/T0CKIVDDVSS图注:RC0C2IN+RC1C2IN-RC2CVREFRC3RC4C2OUTRC5T0CKIVDDVSSI = 输入,O = 输出,I/O = 输入/输出,P = 电源,— = 未使用,TTL = TTL输入ST = 施密特触发器输入,AN = 模拟电压,HV = 高电压 2007 Microchip Technology Inc.初稿DS41268C_CN 第13页

PIC12F510/16F5063.1时钟分配/指令周期3.2指令流/流水线时钟输入(OSC1/CLKIN引脚)在内部被4分频,以产生4个互不重叠的正交时钟信号,即Q1、Q2、Q3和Q4。在内部,PC在每个Q1递增;在Q4期间,从程序存储器取指令并将指令锁存到指令寄存器中。指令的译码和执行在下一个Q1到Q4周期完成。图3-3和例3-1所示为时钟和指令执行的流程图。一个指令周期包含4个Q周期(Q1、Q2、Q3和Q4)。取指令和执行指令是以流水线方式进行的,用一个指令周期来取指令,而用另一个指令周期译码和执行指令。但由于是流水线操作,所以每条指令的等效执行时间都是一个指令周期。如果某条指令改变了PC(如GOTO),则需要两个指令周期才能完成该指令(例3-1)。取指周期中:PC在Q1周期递增1,开始取指令。指令执行周期中:在Q1周期,将所取指令锁存到指令寄存器(Instruction Register,IR)。在随后的Q2、Q3和Q4周期中译码并执行该指令。其中读数据存储器(读操作数)发生在Q2周期,写操作(写目标寄存器)发生在Q4周期。图3-3:时钟/指令周期Q1OSC1Q1Q2Q3Q4PCPC取指令(PC)执行指令(PC – 1)PC + 1PC + 2内部相位时钟Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4取指令(PC + 1)执行指令(PC)取指令(PC + 2)执行指令(PC + 1)例3-1: SUB_1指令流水线流程取指1执行1取指2执行2取指3执行3取指4清除取指SUB_1执行SUB_ PORTB, BIT1除程序转移指令外,所有的指令都是单周期指令。由于程序转移指令将导致一条已取指令从流水线清除,同时重新取新指令,然后执行指令,所以程序转移指令需要两个周期。

DS41268C_CN 第14页初稿 2007 Microchip Technology Inc.

PIC12F510/16F5064.0存储器构成图4-1:PIC12F510/16F506存储器分为程序存储器和数据存储器。对于程序存储器多于512字节的器件,使用了分页机制。程序存储器页面使用STATUS寄存器位PA0访问。对于PIC12F510和PIC16F506(具有由32个以上寄存器组成的数据存储器寄存器文件),使用了存储器分区机制。数据存储区使用文件选择寄存器(FileSelect Register,FSR)进行访问。PIC12F510/16F506的程序存储器映射和堆栈PC<11:0>101级堆栈2级堆栈CALL, RETLW4.1PIC12F510/16F506的程序存储器构成复位向量(1)0000h用户存储空间PIC12F510/16F506器件具有一个10位的程序计数器(Program Counter,PC),能够寻址2K x 12的程序存储空间。只有第一个1K x 12(0000h-03FFh)是物理实现的(见图4-1)。访问超出上述界限的存储单元,将回到原来的1k x 12空间内。有效复位向量是0000h(见图4-1)。存储单元03FFh含有内部时钟振荡器校准值。始终不应改写该值。片上程序存储器512字01FFh0200h片上程序存储器1024字03FFh0400h7FFh注1:地址0000h是有效复位向量。存储单元03FFh含有MOVLW XX内部振荡器校准值。 2007 Microchip Technology Inc.初稿DS41268C_CN 第15页

PIC12F510/16F5064.2数据存储器构成图4-2:FSR<5>寄存器地址00h01h02h03h04h05h06h07h08h09h0Ah0Fh10h通用寄存器INDF(1)TMR0

PCLSTATUSFSROSCCALGPIOCM1CON0

ADCON0ADRES通用寄存器地址映射到Bank 0中的地址。PIC12F510 寄存器文件映射01数据存储器由寄存器或RAM字节组成。因此,器件的数据存储器由其寄存器文件指定。寄存器文件分为两个功能组:特殊功能寄存器(SFR)和通用寄存器(General Purpose Register,GPR)。特殊功能寄存器包括TMR0寄存器、程序计数器(PCL)、STATUS寄存器、I/O寄存器(端口)和文件选择寄存器(FSR)。此外,特殊功能寄存器还用于控制I/O端口配置和预分频器选项。通用寄存器用于在指令控制下存储数据和控制信息。对于PIC12F510,寄存器文件由10个特殊功能寄存器、6个通用寄存器和32个通过存储区访问的通用寄存器组成(见图4-2)。对于PIC16F506,寄存器文件由13个特殊功能寄存器、3个通用寄存器和64个通过存储区访问的通用寄存器组成(见图4-3)。20h4.2.1通用寄存器文件2Fh30h通用寄存器通用寄存器文件通过文件选择寄存器(FSR)直接或间接访问。请参见第4.8节“间接数据寻址:INDF和FSR寄存器”。1FhBank 0注3FhBank 11:不是实际存在的寄存器。图4-3:FSR<6:5>PIC16F506 寄存器文件映射00INDF(1)TMR0

PCLSTATUSFSROSCCALPORTBPORTCCM1CON0

ADCON0ADRESCM2CON0VRCON20h0140h1060h11寄存器地址00h01h02h03h04h05h06h07h08h09h0Ah0Bh0Ch0Dh0Fh10h地址映射到Bank 0中的地址。通用寄存器2Fh30h4Fh50h6Fh70h通用寄存器1FhBank 03Fh通用寄存器5FhBank 1通用寄存器7FhBank 2通用寄存器Bank 3注1:不是实际存在的寄存器。DS41268C_CN 第16页初稿 2007 Microchip Technology Inc.

PIC12F510/16F5064.2.2特殊功能寄存器特殊功能寄存器(SFR)为CPU和外设模块用来对器件操作进行控制的寄存器(见表4-1)。特殊功能寄存器可分为两类。本节将介绍与“内核”功能相关的特殊功能寄存器。与外设模块相关的特殊功能寄存器将在相应的外设模块功能章节中介绍。表4-1:地址N/AN/A00h01h02h(1)03h04h05h06h07h08h09h特殊功能寄存器汇总——PIC12F510名称TRISOPTIONINDFTMR0

PCLSTATUSFSROSCCALGPIOCM1CON0ADCON0ADRESBit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0上电复位时的值--11 11111111 1111xxxx xxxxxxxx xxxx1111 1111CWUFPA0TOPDZDCC0001 1xxx100x xxxxCAL4GP5C1POLADCS1CAL3GP4C1T0CSADCS0CAL2GP3C1ONCHS1CAL1GP2C1NREFCHS0CAL0GP1C1PREFGO/DONE—GP0C1WUADON1111 111---xx xxxx1111 11111111 1100xxxx xxxxI/O控制寄存器(TRISGPIO)含有用于配置Timer0和Timer0/WDT预分频器的控制位使用FSR的内容来寻址数据存储器(不是实际存在的寄存器)Timer0模块寄存器PC的低8位GPWUF间接数据存储器地址指针CAL6—C1OUTANS1ADC转换结果CAL5—C1OUTENANS0图注:x = 未知,u = 不变,– = 未实现,读为0(如适用)。阴影单元 = 未实现或未用。注1:程序计数器的高字节不可直接访问。关于如何访问这些位的说明,请参见第4.6节“程序计数器”。表4-2:地址N/AN/A00h01h02h(1)03h04h05h06h07h08h09h0Ah0Bh0Ch名称TRISOPTIONINDFTMR0

PCLSTATUSFSR特殊功能寄存器汇总——PIC16F506Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0上电复位时的值--11 11111111 1111xxxx xxxxxxxx xxxx1111 1111CWUFCAL5——C1OUTENANS0PA0CAL4RB5RC5C1POLADCS1TOCAL3RB4RC4C1T0CSADCS0PDCAL2RB3RC3C1ONCHS1ZCAL1RB2RC2C1NREFCHS0DCCAL0RB1RC1C1PREFGO/DONEC—RB0RC0C1WUADON0001 1xxx100x xxxx1111 111---xx xxxx--xx xxxx1111 11111111 1100xxxx xxxxC2POLVRRC2PREF2—C2ONVR3C2NREFVR2C2PREF1VR1C2WUVR01111 1111001- 1111I/O控制寄存器(TRISB和TRISC)含有用于配置Timer0和Timer0/WDT预分频器的控制位使用FSR的内容来寻址数据存储器(不是实际存在的寄存器)Timer0模块寄存器PC的低8位RBWUFCAL6——C1OUTANS1ADC转换结果C2OUTVRENC2OUTENVROE间接数据存储器地址指针OSCCALPORTBPORTCCM1CON0ADCON0ADRESCM2CON0VRCON图注:x = 未知,u = 不变,– = 未实现,读为0(如适用)。阴影单元 = 未实现或未用。注1:程序计数器的高字节不可直接访问。关于如何访问这些位的说明,请参见第4.6节“程序计数器”。 2007 Microchip Technology Inc.初稿DS41268C_CN 第17页

PIC12F510/16F5064.3STATUS寄存器该寄存器中包含ALU的算术运算状态、复位状态和页面预选位。STATUS寄存器与任何其他寄存器一样,可以作为任何指令的操作目标。如果一条影响Z、DC或C位的指令以STATUS寄存器作为目标寄存器,那么对这三个位的写操作将被禁止。这些位根据器件逻辑被置1或清零。而且,TO和PD位均为不可写位。因此,当执行一条将STATUS寄存器作为目标寄存器的指令时,运行结果可能会与预想的不同。例如,指令CLRF STATUS将会清除状态寄存器中的高三位,并将Z标志位置1。这将使STATUS寄存器中的值成为000u u1uu(其中u = 不变)。因此,建议仅使用BCF、BSF和MOVWF指令来更改STATUS寄存器。这些指令不会影响STATUS寄存器的Z、DC或C位。关于其他不影响状态位的指令,请参见第11.0节“指令集汇总”。

寄存器4-1:R/W-0GPWUFbit 7图注:R = 可读位-n = POR时的值bit 7STATUS:状态寄存器(PIC12F510)R/W-0CWUFR/W-0PA0R-1TOR-1PDR/W-xZR/W-xDCR/W-xCbit 0W = 可写位U = 未实现位,读为0x = 未知1 = 置1 0=清零GPWUF:GPIO复位位1 = 由于在引脚电平变化时从休眠中唤醒而复位0 = 在上电或其他复位后复位CWUF:比较器复位位1 = 由于在比较器电平变化时从休眠中唤醒而复位0 = 在上电或其他复位后复位bit 6bit 5PA0:程序页面预选位1 = 页面1(200h-3FFh)0 = 页面0(000h-1FFh)每个页面为512字节。建议不要在不使用PA0位进行程序页面预选的器件中将PA0位用作通用读/写位,因为这可能会影响与未来产品的向上兼容性。TO:超时位1 = 在上电、执行CLRWDT或SLEEP指令后0 = 产生了WDT超时PD:掉电位1 = 在上电或执行CLRWDT指令后0 = 执行SLEEP指令Z:全零位1 = 算术运算或逻辑运算的结果为零0 = 算术运算或逻辑运算的结果不为零DC:半进位/借位位(对于ADDWF和SUBWF指令)ADDWF:1 = 结果的第4个低位发生了进位0 = 结果的第4个低位未发生进位SUBWF:1 = 结果的第4个低位未发生借位0 = 结果的第4个低位发生了借位C:进位/借位位(对于ADDWF、SUBWF和RRF、RLF指令)ADDWF:SUBWF:RRF或 RLF:1 = 发生了进位1 = 未发生借位分别将LSb或MSb装入位中0 = 未发生进位0 = 发生了借位bit 4bit 3bit 2bit 1bit 0DS41268C_CN 第18页初稿 2007 Microchip Technology Inc.

PIC12F510/16F506

寄存器4-2:R/W-0RBWUFbit 7图注:R = 可读位-n = POR时的值bit 7STATUS:状态寄存器(PIC16F506)R/W-0CWUFR/W-0PA0R-1TOR-1PDR/W-xZR/W-xDCR/W-xCbit 0W = 可写位U = 未实现位,读为0x = 未知1 = 置1 0=清零RBWUF:PORTB复位位1 = 由于在引脚电平变化时从休眠中唤醒而复位0 = 在上电或其他复位后复位CWUF:比较器复位位1 = 由于在比较器电平变化时从休眠中唤醒而复位0 = 在上电或其他复位后复位bit 6bit 5PA0:程序页面预选位1 = 页面1(200h-3FFh)0 = 页面0(000h-1FFh)每个页面为512字节。建议不要在不使用PA0位进行程序页面预选的器件中将PA0位用作通用读/写位,因为这可能会影响与未来产品的向上兼容性。TO:超时位1 = 在上电、执行CLRWDT或SLEEP指令后0 = 产生了WDT超时PD:掉电位1 = 在上电或执行CLRWDT指令后0 = 执行SLEEP指令Z:全零位1 = 算术运算或逻辑运算的结果为零0 = 算术运算或逻辑运算的结果不为零DC:半进位/借位位(对于ADDWF和SUBWF指令)ADDWF:1 = 结果的第4个低位发生了进位0 = 结果的第4个低位未发生进位SUBWF:1 = 结果的第4个低位未发生借位0 = 结果的第4个低位发生了借位C:进位/借位位(对于ADDWF、SUBWF和RRF、RLF指令)ADDWF:SUBWF:RRF或 RLF:1 = 发生了进位1 = 未发生借位分别将LSb或MSb装入位中0 = 未发生进位0 = 发生了借位bit 4bit 3bit 2bit 1bit 0 2007 Microchip Technology Inc.初稿DS41268C_CN 第19页

PIC12F510/16F5064.4OPTION寄存器OPTION寄存器是8位宽只写寄存器,其中包含用于配置Timer0/WDT预分频器和Timer0的各种控制位。通过执行OPTION指令,可以将W寄存器的内容传送到OPTION寄存器。发生复位时,会将OPTION<7:0>位置1。注1:如果将TRIS位设置为0,则将禁止对应引脚的在电平变化时唤醒和上拉功能(也即,TRIS会改写OPTION寄存器对GPPU/。RBPU和GPWU/RBWU的控制)2:如果将T0CS位设置为1,则它将改写TRIS对T0CKI引脚的作用。

寄存器4-3:W-1GPWUbit 7图注:R = 可读位-n = POR时的值bit 7OPTION_REG:选项寄存器(PIC12F510)W-1GPPUW-1T0CSW-1T0SEW-1PSAW-1PS2W-1PS1W-1PS0bit 0W = 可写位U = 未实现位,读为0x = 未知1 = 置1 0=清零GPWU:引脚电平变化唤醒使能位(GP0、GP1和GP3)1 = 禁止0 = 使能GPPU:弱上拉使能位(GP0、GP1和GP3)1 = 禁止0 = 使能T0CS:Timer0时钟源选择位1 = T0CKI引脚上的电平跳变0 = 内部指令周期时钟(CLKOUT)T0SE:Timer0时钟源边沿选择位1 = 在T0CKI引脚信号从高至低跳变时,递增计数0 = 在T0CKI引脚信号从低至高跳变时,递增计数PSA:预分频器分配控制位1 = 预分频器分配给WDT0 = 预分频器分配给Timer0PS<2:0>:预分频比选择位bit 6bit 5bit 4bit 3bit 2-0位值1Timer0预分频比WDT预分频比1 : 21 : 41 : 81 : 161 : 321 : 641 : 1281 : 2561 : 11 : 21 : 41 : 81 : 161 : 321 : 641 : 128DS41268C_CN 第20页初稿 2007 Microchip Technology Inc.

PIC12F510/16F506

寄存器 4-4: OPTION_REG:选项寄存器存器(PIC16F506)W-1RBWUbit 7图注:R = 可读位-n = POR时的值bit 7W = 可写位U = 未实现位,读为0x = 未知1 = 置1 0=清零RBWU:引脚电平变化唤醒使能位(RB0、RB1、RB3和RB4)1 = 禁止0 = 使能RBPU:弱上拉使能位(RB0、RB1、RB3和RB4)1 = 禁止0 = 使能T0CS:Timer0时钟源选择位1 = T0CKI引脚上的电平跳变0 = 内部指令周期时钟(CLKOUT)T0SE:Timer0时钟源边沿选择位1 = 在T0CKI引脚信号从高至低跳变时,递增计数0 = 在T0CKI引脚信号从低至高跳变时,递增计数PSA:预分频器分配控制位1 = 预分频器分配给WDT0 = 预分频器分配给Timer0PS<2:0>:预分频比选择位W-1RBPUW-1T0CSW-1T0SEW-1PSAW-1PS2W-1PS1W-1PS0bit 0bit 6bit 5bit 4bit 3bit 2-0位值1Timer0预分频比WDT预分频比1 : 21 : 41 : 81 : 161 : 321 : 641 : 1281 : 2561 : 11 : 21 : 41 : 81 : 161 : 321 : 641 : 128 2007 Microchip Technology Inc.初稿DS41268C_CN 第21页

PIC12F510/16F5064.5

OSCCAL寄存器振荡器校准(OSCCAL)寄存器用于校准内部高精度4/8MHz振荡器。它含有7个校准位。注:擦除器件也会擦除预先设定的内部振荡器的内部校准值。在擦除器件之前,必须先读取校准值,以便稍后可以正确地重新设定它。在写入校准常数之后,不要再更改该值。请参见第10.2.5节“内部4/8MHz RC振荡器”。

寄存器4-5:R/W-1CAL6bit 7图注:R = 可读位-n = POR时的值bit 7-1OSCCAL:振荡器校准寄存器R/W-1CAL5R/W-1CAL4R/W-1CAL3R/W-1CAL2R/W-1CAL1R/W-1CAL0U-0—bit 0W = 可写位U = 未实现位,读为0x = 未知1 = 置1 0=清零CAL<6:0>:振荡器校准位0111111 = 最高频率•••0000001

0000000 = 中心频率1111111•••1000000 = 最低频率未实现:读为0bit 0DS41268C_CN 第22页初稿 2007 Microchip Technology Inc.

PIC12F510/16F5064.6程序计数器4.6.1复位的影响执行一条程序指令时,程序计数器(PC)中将包含要执行的下一条程序指令的地址。除非指令更改了PC值,否则每隔一个指令周期,PC值递增1。对于GOTO指令,PC位8:0由GOTO指令字提供。程序计数器(PCL)被映射到PC<7:0>。STATUS寄存器的bit 5为PC的bit 9提供页面信息(图4-4)。对于CALL指令或以PCL作为操作目标的任何指令,PC的位7:0也由指令字提供。但是,PC<8>并不由指令字提供,而是始终清零(图4-4)。以PCL作为操作目标或修改PCL的指令包括MOVWFPC、ADDWF PC和BSF PC, 5。注:因为在CALL指令或任何修改PCL的指令中,PC<8>被清零,所以所有子程序调用或计算得到的跳转都限制在任何程序存储器页面(512字长)的前256个存储单元。在复位时,PC会被置1,这意味着PC寻址最后一个页面的最后一个单元(也即,振荡器校准指令)。在执行MOVLW XX之后,PC将返回到单元00h,并开始执行用户代码。STATUS寄存器页面预选位在复位时会被清零,这意味着预选页面是页面0。因此,在复位时,GOTO指令将自动使程序跳转到页面0,直到页面位的值更改为止。

4.7堆栈PIC12F510/16F506具有2层深度的12位宽硬件压入/弹出堆栈。CALL指令会将第1层堆栈的当前值压入第2层堆栈,然后将当前的PC值(递增1)压入第1层堆栈。如果连续执行了多于两条的CALL指令,则将仅存储最近的两个返回地址。RETLW指令会将第1层堆栈的内容弹出到PC中,然后将第2层堆栈的内容复制到第1层堆栈。如果连续执行了多于两条的RETLW指令,则堆栈中将填充先前存储在第2层堆栈中的地址。注1:W寄存器中将装入指令中指定的立即数。这对于在程序存储器内实现数据查表特别有用。2:不存在指明堆栈是否上溢或下溢的状态标志位。3:不存在被称为PUSH或POP的指令助记符。这些是在执行CALL和RETLW指令时发生的操作。图4-4:GOTO指令装入PC跳转指令987PCPCL指令字PA00STATUS07CALL或修改PCL的指令987PCPCL指令字复位为0PA0070STATUS 2007 Microchip Technology Inc.初稿DS41268C_CN 第23页

PIC12F510/16F5064.8间接数据寻址:INDF和FSR寄存器例4-1:MOVLWMOVWFNEXTCLRFINCFBTFSCGOTOCONTINUE::如何使用间接寻址清零RAM0x10FSRINDFFSR,FFSR,4NEXT;initialize pointer;to RAM;clear INDF register;inc pointer;all done?;NO, clear next;YES, continueINDF寄存器不是实际存在的寄存器,寻址INDF实际上是对地址包含在FSR寄存器中的寄存器进行寻址(FSR是一个指针)。这是间接寻址。4.8.1••••••间接寻址示例寄存器文件07中含有值10h寄存器文件08中含有值0Ah将值07装入FSR寄存器读INDF寄存器将返回值10h将FSR寄存器的值递增1(FSR = 08)读INDR寄存器现在将返回值0AhFSR是一个5位宽寄存器。它与INDF寄存器联合用于对数据存储区进行间接寻址。FSR<4:0>位用于选择数据存储器地址00h至1Fh。PIC16F506——使用FSR<6:5>。从Bank 0至Bank 3进行选择。FSR<7>未实现,读为1。间接对INDF进行读操作(FSR = 0)将返回00h。间接对INDF寄存器进行写操作将导致空操作(尽管可能会影响状态位)。例4-1给出了一个使用间接寻址将RAM地址单元10h-1Fh清零的简单程序。PIC12F510——使用FSR<5>。从Bank 0至Bank 1进行选择。FSR<7:6>未实现,读为11。图4-5:(FSR)654直接/间接寻址(PIC12F510)

直接寻址(操作码)321065间接寻址(FSR)43210存储区选择存储单元选择0000h地址映射到Bank 0中的地址。数据存储器(1)0Fh10h01存储区选择存储单元选择1FhBank 0注3FhBank 11:关于寄存器映射的详细信息,请参见图4-2。DS41268C_CN 第24页初稿 2007 Microchip Technology Inc.

PIC12F510/16F506图4-6:直接/间接寻址(PIC16F506)直接寻址(FSR)65(操作码)432106间接寻址(FSR)543210存储区选择 存储单元选择0000h地址映射到Bank 0中的地址。数据存储器(1)0Fh10h011011存储区存储单元选择选择1Fh 3Fh 5Fh 7FhBank 0注Bank 1Bank 2Bank 31:关于寄存器映射的详细信息,请参见图4-3。 2007 Microchip Technology Inc.初稿DS41268C_CN 第25页

PIC12F510/16F506注:DS41268C_CN 第26页初稿 2007 Microchip Technology Inc.

PIC12F510/16F5065.0I/O端口5.4I/O接口连接与任何其他寄存器一样,I/O寄存器也可以在程序控制下进行读写。但是,无论I/O引脚的输入/输出模式如何,读指令(例如,MOVF PORTB, W)始终都会读I/O引脚。在复位时,所有I/O端口都定义为输入(输入处于高阻态),因为所有I/O控制寄存器都被置1。

注:在PIC12F510上,I/O PORTB称为GPIO。在PIC16F506上,I/O PORTB称为PORTB。图5-1中给出了I/O端口引脚的等效电路。所有端口引脚(RB3/GP3除外,该引脚仅用作输入)都可以用于输入和输出操作。对于输入操作,这些端口不进行锁存。所有输入必须一直保持到被输入指令(例如,MOVFPORTB, W)读取为止。输出将进行锁存,并在输出锁存器被重新写入之前保持不变。要将某个端口引脚用作输出,必须将TRIS中对应的方向控制位清零(= 0)。如果要用作输入,则对应的TRIS位必须置1。所有I/O引脚(RB3/GP3除外)都可以单独设定为输入或输出。5.1PORTB/GPIO图5-1:数据总线数据总线接口PORTB/GPIO是8位I/O寄存器。只使用其低6位(RB/GP<5:0>)。bit 7和bit 6未实现,读为0。请注意,RB3/GP3是仅用作输入的引脚。配置字可以将几个I/O设置为备用功能。在用作备用功能时,在端口读操作期间,引脚将读为0。引脚RB0/GP0、RB1/GP1、RB3/GP3和RB4(仅限PIC16F506)可以配置为带有弱上拉和在电平变化时唤醒的功能。在电平变化时唤醒和弱上拉功能不是可由引脚选择的。如果RB3/GP3/MCLR配置为MCLR,则始终使能该引脚的弱上拉功能,并禁止该引脚在电平变化时唤醒的功能。PIC12F510/16F506引脚驱动器的等效电路(2)VDDVDDP(1)NQI/O引脚VSS5.2PORTC(仅限PIC16F506)

QVSSPORTC是8位I/O寄存器。只使用其低6位(RC<5:0>)。bit 7和bit 6未实现,读为0。5.3TRIS寄存器注复位1:GP3/RB3具有仅连接至VSS的保护二极管。2:关于引脚具体信息,请参见图5-2至图5-13。执行TRIS f指令时,输出驱动器控制寄存器中将装入W寄存器的内容。TRIS寄存器位为1时,对应的输出驱动器将处于高阻抗模式。寄存器位为0时,会将输出数据锁存器的内容送到选定引脚,并使能输出缓冲器。RB3/GP3则例外,该引脚是仅用作输入的引脚;T0CKI引脚也例外,该引脚可以通过OPTION寄存器进行控制。请参见寄存器4-3。

注:对端口的读操作将会读取引脚,而不是读取输出数据锁存器。也即,如果使能了某个引脚上的输出驱动器并将该引脚驱动为高电平,但外部系统将该引脚保持为低电平,则对端口的读操作将指示引脚为低电平。注:TRIS寄存器是“只写”寄存器,在复位时会被置1(输出驱动器被禁止)。 2007 Microchip Technology Inc.初稿DS41268C_CN 第27页

PIC12F510/16F506图5-2:GPPURBPUGPPURBPU数据总线写端口MCLREDQ 数据锁存器CKQ复位W寄存器I/O引脚(1)I/O引脚(1)GP0/RB0和GP1/RB1框图 图5-3:GP3/RB3框图(带有弱上拉和在电平变化时唤醒的功能)

D TRIS锁存器CKQTRIS ‘f’Q数据总线复位读端口ADC引脚使能COMP引脚使能QDCK读端口不匹配QDCK 不匹配

ADCCOMP注1:在I/O引脚与VDD和VSS之间连有保护二极管。注1:GP3/MCLR引脚具有仅连接至VSS 的保护二极管。DS41268C_CN 第28页初稿 2007 Microchip Technology Inc.

PIC12F510/16F506图5-4:GP2框图C1OUT数据总线D写端口 数据锁存器CKQC1OUTENW寄存器D TRIS锁存器CKQQW寄存器D TRIS锁存器CKQQ0I/O引脚(1)数据总线D写端口Q 数据锁存器CKQ图5-5:RB2框图C1OUT0I/O引脚(1)11C1OUTENQTRIS ‘f’TRIS ‘f’复位 T0CSC1T0CS ADC引脚使能复位 ADC引脚使能读端口T0CKI读端口ADCADC注1:在I/O引脚与VDD和VSS之间连有保护二极管。注1:在I/O引脚与VDD和VSS之间连有保护二极管。 2007 Microchip Technology Inc.初稿DS41268C_CN 第29页

PIC12F510/16F506图5-6:RB4框图RBPU数据总线数据总线D写端口Q数据锁存器CKQ1 I/O引脚(1)W寄存器写端口0DQ 数据锁存器CKQ I/O引脚(1)图5-7:GP4框图DTRIS锁存器CKQW寄存器FOSC/4TRIS ‘f’D TRIS锁存器CKQQQTRIS ‘f’复位INTOSC/RC复位INTOSC/RC/ECCLKOUT使能(注2)读端口OSC1读端口OSC1振荡器电路注1:在I/O引脚与VDD和VSS之间连有保护二极管。振荡器电路注1:在I/O引脚与VDD和VSS之间连有保护二极管。2:当引脚用于连接振荡器时,输入模式会被禁止。

DS41268C_CN 第30页初稿 2007 Microchip Technology Inc.

PIC12F510/16F506图5-8:数据总线写端口RB5/GP5框图 图5-9:数据总线 I/O引脚(1)写端口RC0/RC1框图DQ 数据锁存器DCKQQ 数据锁存器QCK I/O引脚(1)W寄存器D TRIS锁存器CKQW寄存器D TRIS锁存器CKQTRIS ‘f’QTRIS ‘f’Q复位(注2)复位 比较器引脚使能读端口OSC2注振荡器电路读端口COMP21:在I/O引脚与VDD和VSS之间连有保护二极管。2:当引脚用于连接振荡器时,输入模式会被禁止。注1:在I/O引脚与VDD和VSS之间连有保护二极管。 2007 Microchip Technology Inc.初稿DS41268C_CN 第31页

PIC12F510/16F506图5-10:RC2框图VROE数据总线CVREF数据总线写端口1I/O引脚(1)写端口I/O引脚(1)DQ 数据锁存器Q图5-11:RC3框图CKDQ 数据锁存器0W寄存器D TRIS锁存器CKQQCKQTRIS ‘f’W寄存器DTRIS锁存器CKQ复位TRIS ‘f’Q复位读端口读端口COMP2注1:在I/O引脚与VDD和VSS之间连有保护二极管。注1:在I/O引脚与VDD和VSS之间连有保护二极管。DS41268C_CN 第32页初稿 2007 Microchip Technology Inc.

PIC12F510/16F506图5-12:RC4框图C2OUT数据总线写端口0I/O引脚(1)数据总线写端口I/O引脚(1)DQ 数据锁存器CKQ图5-13:RC5框图DQ 数据锁存器1CKQC2OUTENW寄存器D TRIS锁存器CKQW寄存器D TRIS锁存器CKQTRIS ‘f’QTRIS ‘f’QT0CS复位复位读端口读端口注1:在I/O引脚与VDD和VSS之间连有保护二极管。T0CKI注1:在I/O引脚与VDD和VSS之间连有保护二极管。 2007 Microchip Technology Inc.初稿DS41268C_CN 第33页

PIC12F510/16F506表5-1:地址N/AN/AN/AN/AN/A03h03h06h06h07h图注:注1:2:3:端口寄存器汇总名称TRISGPIO(1)TRISB(2)TRISC(2)OPTION(1)OPTION(2)STATUS(1)STATUS(2)GPIO(1)PORTB(2)PORTC(2)Bit 7———GPWURBWUGPWUFRBWUF———Bit 6———GPPURBPUCWUFCWUF———Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0上电复位时的值--11 1111--11 1111--11 1111PSAPSAPDPDGP3RB3RC3PS2PS2ZZGP2RB2RC2PS1PS1DCDCGP1RB1RC1PS0PS0CCGP0RB0RC01111 11111111 11110001 1xxx0001 1xxx--xx xxxx--xx xxxx--xx xxxx所有其他复位时的值--11 1111--11 1111--11 11111111 11111111 1111qq0q quuu(3)qq0q quuu(3)--uu uuuu--uu uuuu--uu uuuuI/O控制寄存器I/O控制寄存器I/O控制寄存器T0CST0CSPA0PA0GP5RB5RC5TOSETOSETOTOGP4RB4RC4– = 未实现(读为0),x = 未知,u = 不变,q = 取决于具体条件。仅限PIC12F510。仅限PIC16F506。如果复位是由于引脚电平变化时的唤醒引起的,则bit 7 = 1。所有其他复位将导致bit 7 = 0。表5-2:优先级123I/O引脚功能优先级(PIC16F506)RB0AN0/C1IN+TRISB—RB1AN1/C1IN-TRISB—RB2C1OUTAN2TRISBRB3输入/MCLR——RB4OSC2/CLKOUTTRISB—RB5OSC1/CLKINTRISB—表5-3:优先级12I/O引脚功能优先级(PIC16F506)RC0C2IN+TRISCRC1C2IN-TRISCRC2CVREFTRISCRC3TRISC—RC4C2OUTTRISCRC5T0CKITRISC表5-4:优先级1234I/O引脚功能优先级(PIC12F510)GP0AN0/C1IN+TRISIO——GP1AN1/C1IN-TRISIO——GP2C1OUTAN2T0CKITRISIOGP3输入/MCLR———GP4OSC2TRISIO——GP5OSC1/CLKINTRISIO——DS41268C_CN 第34页初稿 2007 Microchip Technology Inc.

PIC12F510/16F506表5-5:CM1CON0C1ONC1PREFC1NREFC1T0CSC1OUTENCM2CON0C2ONC2PREF1C2PREF2C2NREFC2OUTENVRCON0VROEVRENOPTIONT0CSADCON0ANS<1:0>CONFIGMCLREINTOSCLPEXTRCXT注—————————————————————————————————————禁止—禁止——禁止禁止禁止00, 0100, 0100, 01, 1000, 01, 100000————————0——————————————————————————————————————————————————————————————————0————10———0————110——0————1——11———————————————数字引脚工作要求(PIC12F510)GP0GP0GP1GP1GP2GP2GP3GP4GP51:引脚的多列条目说明实现引脚数字功能的不同排列。2:阴影单元表示位状态不会影响引脚数字功能。 2007 Microchip Technology Inc.初稿DS41268C_CN 第35页

PIC12F510/16F506表5-6:CM1CON0C1ONC1PREFC1NREFC1T0CSC1OUTENCM2CON0C2ONC2PREF1C2PREF2C2NREFC2OUTENOPTIONT0CSADCON0ANS<1:0>CONFIGMCLREINTOSCLPEXTRCXTECHSINTOSC CLKOUTEXTRC CLOCKOUT注———————————————————————————————————————————————————————————————0——————————禁止—禁止—禁止禁止禁止——禁止禁止禁止禁止禁止禁止禁止00, 0100, 0100, 0100, 01, 1000, 01, 100000—————————————101————————————————————————————————————————————————————0————10———0————1—0——0————1———1———————————————数字引脚工作要求(PIC16F506 PORTB)(1), (2)

RB0RB0RB0RB1RB1RB2RB2RB3RB4RB51:引脚的多列条目说明实现引脚数字功能的不同排列。2:阴影单元表示位状态不会影响引脚数字功能。表5-7:CM2CON0C2ONC2PREF1C2PREF2C2NREFC2OUTENVRCON0VROEOPTIONT0CS注数字引脚工作要求(PIC16F506 PORTC)(1), (2)

RC00——————RC0100————RC10——————RC11——0———RC2—————0—RC3———————RC40——————RC41———1——RC5——————0RC5———————1:引脚的多列条目说明实现引脚数字功能的不同排列。2:阴影单元表示位状态不会影响引脚数字功能。DS41268C_CN 第36页初稿 2007 Microchip Technology Inc.

PIC12F510/16F5065.55.5.1I/O编程注意事项双向I/O端口例5-1:I/O端口上的读-修改-写指令(以PIC16F506为例)一些指令在内部的操作方式是:先执行读操作,然后再执行写操作。例如,BCF和BSF指令会将完整的端口内容读取到CPU中,然后执行位操作并重新写入结果。当对有一个或多个引脚用作输入/输出的端口执行这些指令时,必须很小心。例如,如果对PORTB/GPIO的bit 5执行BSF操作,则会将PORTB/GPIO的全部8位都读入CPU中,并将bit 5置1,然后将PORTB/GPIO值写入输出锁存器。如果PORTB/GPIO有另一个位用作双向I/O引脚(假定是bit 0),并且在此时它被定义为输入,则送到引脚自身的输入信号将被读入CPU,并重新写入该特定引脚的数据锁存器,改写先前的内容。只要引脚保持在输入模式,就不会发生任何问题。但是,如果稍后将bit 0切换为输出模式,则数据锁存器的内容现在可能变为未知。例5-1显示了对I/O端口连续执行两条读-修改-写指令(如BCF和 BSF等)的影响。在某个引脚正在输出高电平或低电平时,不能同时从外部器件驱动该引脚来更改该引脚的电平(线“或”或线“与”)。所产生的高输出电流可能会损坏芯片。;Initial PORTB Settings;PORTB<5:3> Inputs;PORTB<2:0> Outputs;;PORTB latch;----------BCFPORTB, 5;--01 -pppBCFPORTB, 4;--10 -pppMOVLW007h;TRISPORTB;--10 -ppp;注:PORTB pins------------11 pppp--11 pppp--11 pppp用户可能期望引脚值为“--00 pppp”。第二个BCF导致RB5被锁存为引脚值(高电平)。5.5.2对I/O端口连续执行操作对I/O端口的实际写操作发生在指令周期末尾。但对于读取,数据必须在指令周期开始时就有效(图5-14)。因此,如果对同一I/O端口,在执行读操作之后,又执行一个写操作,则必须非常小心。在下一条指令导致文件被读入CPU中之前,指令序列应当允许引脚电压稳定(取决于负载)。否则,读入CPU中的可能是引脚的先前状态,而不是新状态。在不能确定时,最好使用一条NOP指令或另一条不访问该I/O端口的指令将这些指令隔开。图5-14:连续的I/O操作(PIC16F506)

Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4PCPC + 1MOVF PORTB, WPC + 2NOPQ1Q2Q3Q4PC + 3NOP该示例显示,先对PORTB执行读操作,然后对PORTB执行写操作。数据建立时间 = (0.25 TCY – TPD)其中:TCY = 指令周期TPD = 传输延时此时写端口引脚此时采样端口引脚MOVF PORTB,W(读取PORTB)NOP因此,在较高的时钟频率下,在读操作之后执行写操作可能会产生问题。取指令RB<5:0>MOVWF PORTB执行指令MOVWF PORTB(写入PORTB) 2007 Microchip Technology Inc.初稿DS41268C_CN 第37页

PIC12F510/16F506注:DS41268C_CN 第38页初稿 2007 Microchip Technology Inc.

PIC12F510/16F5066.0••••TMR0模块和TMR0寄存器Timer0模块具有以下特性:8位定时器/计数器寄存器,TMR0可读写8位软件可编程预分频器内部或外部时钟选择:-外部时钟的边沿选择-来自T0CKI引脚或来自比较器输出的外部时钟第二种计数器模式使用比较器输出来递增Timer0。可以通过两种不同方式进入该模式。第一种方式是通过将T0CS位(OPTION<5>)置1,将C1T0CS位(CM1CON0<4>)清零(C1OUTEN [CM1CON0<6>]不影响该工作模式)进行选择。这将使能比较器和Timer0之间的内部连接。第二种方式是通过将T0CS位(OPTION<5>)和C1T0CS位(CM1CON0)置1,并将C1OUTEN位(CM1CON0<6>)清零进行选择。这允许比较器的输出进入T0CKI引脚,而同时保持T0CKI输入有效。因此,COUT引脚上的任何比较器变化都会反馈到T0CKI输入中。T0SE位(OPTION<4>)决定时钟源边沿。清零T0SE位将选择上升沿。第6.1节“Timer0使用外部时钟”中讨论了外部时钟输入的限制条件。预分频器可以由Timer0模块或看门狗定时器使用,但不能由两者同时使用。在软件中通过设定控制位PSA(OPTION< 3> ),可对预分频器的分配进行控制。PSA位清零可将预分频器分配给Timer0。预分频器是不可读写的。将预分频器分配给Timer0模块时,可以选择预分频比1:2、1:4、...、1:256。第6.2节“预分频器”详细说明了预分频器的操作。表6-1中汇总了与Timer0模块相关的寄存器。图6-1给出了Timer0模块的简化框图。通过清零T0CS位(OPTION<5>)选择定时器模式。在定时器模式下,Timer0模块在每个指令周期递增(不带预分频器)。如果对TMR0寄存器执行写操作,则在接下来的两个周期TMR0禁止递增(图6-2和图6-3)。用户可通过将调整值写入TMR0寄存器来避开这一问题。共有两种计数器模式。第一种计数器模式使用T0CKI引脚来递增Timer0。这通过将T0CKI位(OPTION<5>)、C1T0CS位(CM1CON0<4>)和C1OUTEN位(CM1CON0<6>)置1进行选择。在该模式下,Timer0将在T0CKI引脚信号的每个上升沿或下降沿递增。T0SE位(OPTION<4>)决定时钟源边沿。清零T0SE位将选择上升沿。第6.1节“Timer0使用外部时钟”中详细讨论了外部时钟输入的限制条件。图6-1:T0CKI引脚TIMER0框图

数据总线FOSC/4011可编程预分频器(2)3C1T0CS(3)PSOUT与内部时钟同步8TMR0寄存器内部比较器输出10T0SE(1)0PSOUT同步(延时2个TCY)T0CS(1)PS2、PS1和PS0(1)PSA(1)注1:T0CS、T0SE、PSA、PS2、PS1和PS0位于OPTION寄存器中。2:预分频器与看门狗定时器共用(图6-5)。。3:位C1T0CS位于CM1CON0寄存器中(CM1CON0<4>) 2007 Microchip Technology Inc.初稿DS41268C_CN 第39页

PIC12F510/16F506图6-2:PC(程序计数器)取指令TIMER0时序:内部时钟/无预分频

Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4PC - 1PCMOVWF TMR0PC + 1PC + 2PC + 3PC + 4PC + 5PC + 6MOVF TMR0,WMOVF TMR0,WMOVF TMR0,WMOVF TMR0,WMOVF TMR0,WTimer0执行指令T0T0 + 1T0 + 2NT0NT0 + 1NT0 + 2写TMR0已执行读TMR0读NT0读TMR0读NT0读TMR0读NT0读TMR0读NT0 + 1读TMR0读NT0 + 2图6-3:TIMER0时序:内部时钟/预分频比1:2PC(程序计数器)取指令Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4PC - 1PCMOVWF TMR0PC + 1PC + 2PC + 3PC + 4PC + 5PC + 6MOVF TMR0,WMOVF TMR0,WMOVF TMR0,WMOVF TMR0,WMOVF TMR0,WTimer0执行指令T0T0 + 1NT0NT0 + 1写TMR0已执行读TMR0读NT0读TMR0读NT0读TMR0读NT0读TMR0读NT0 + 1读TMR0读NT0 + 2表6-1:地址01h07h08hN/AN/A图注:注名称TMR0

与TIMER0相关的寄存器Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0上电复位时的值xxxx xxxxC1T0CSC1T0CST0SEC1ONC1ONPSAC1NREFC1NREFPS2C1PREFC1PREFPS1C1WUC1WUPS01111 11111111 11111111 1111---- 1111所有其他复位时的值uuuu uuuuuuuu uuuuuuuu uuuu1111 1111--11 1111Timer0——8位实时时钟/计数器C1OUTC1OUTGPWU—C1OUTENC1OUTENGPPU—C1POLC1POLT0CSCM1CON0(2)CM1CON0(3)OPTIONTRISGPIO(1)I/O控制寄存器Timer0不使用阴影单元,– = 未实现,x = 未知,u = 不变。1:当T0CS = 1时,T0CKI引脚的TRIS设置被改写。2:对于PIC12F510。3:对于PIC16F506。DS41268C_CN 第40页初稿 2007 Microchip Technology Inc.

PIC12F510/16F5066.1Timer0使用外部时钟对Timer0使用外部时钟输入时,必须满足一些特定的要求。外部时钟要求是由于内部相位时钟(TOSC)同步而产生的。此外,在同步之后,Timer0的实际递增会有一个延时。当使用预分频器时,外部时钟输入会被异步脉动计数器类型预分频器分频,从而预分频器输出是对称的。要使外部时钟满足采样要求,必须将脉动计数器考虑在内。因此,要求T0CKI或比较器输出必须具有至少4TOSC的周期(以及4Tt0H的短暂RC延时),供预分频器值分频。对T0CKI或比较器输出高电平和低电平时间的惟一要求是它们不会违反最小脉冲宽度要求(Tt0H)。请参见相应器件的电气规范中的参数40、41和42。6.1.1外部时钟同步不使用预分频器时,外部时钟输入等同于预分频器输出。通过对内部相位时钟Q2和Q4周期的预分频器输出进行采样,可实现外部时钟与内部相位时钟的同步(图6-4)。因此,要求T0CKI或比较器输出的高电平状态和低电平状态分别保持至少2TOSC的时间(以及2Tt0H的短暂RC延时)。请参见其相应器件的电气规范说明。6.1.2TIMER0递增延时因为预分频器输出需要与内部时钟进行同步,所以从外部时钟边沿产生的时间到Timer0模块实际递增的时间之间会有一个短暂的延时。图6-4显示了从外部时钟边沿到定时器递增之间的延时。图6-4:TIMER0时序(使用外部时钟)Q1Q2Q3Q4外部时钟输入或预分频器输出(2)外部时钟/采样后的预分频器输出递增Timer0(Q4)Timer0T0T0 + 1T0 + 2(1)(3)Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4小脉冲错过采样注1:从时钟输入变化到Timer0递增之间的延时为3TOSC至7TOSC。(Q的持续时间 = TOSC)。因此,Timer0输入两个边沿之间的时间间隔的测量误差为±4TOSC(最大)。2:如果未选择预分频器,则为外部时钟;否则,则为预分频器输出。3:箭头指示发生采样的时间点。6.2预分频器Timer0模块使用一个8位计数器作为预分频器,该计数器用于看门狗定时器(WDT)时则为后分频器(见图10-12)。为简化起见,该计数器在本数据手册中统称为“预分频器”。

注:预分频器可以由Timer0模块或WDT使用,但不能由两者同时使用。因此,将预分频器分配给Timer0模块意味着WDT没有预分频器,反之亦然。将预分频器分配给Timer0模块时,所有写TMR0寄存器的指令(例如,CLRF1、MOVWF1、BSF1, x等)都会将预分频器清零。将预分频器分配给WDT时,CLRWDT指令会同时将预分频器和WDT清零。预分频器是不可读写的。在复位时,预分频器包含全0。PSA和PS<2:0>位(OPTION<3:0>)决定预分频器分配和预分频比。 2007 Microchip Technology Inc.初稿DS41268C_CN 第41页

PIC12F510/16F5066.2.1切换预分频器的分配预分频器的分配完全由软件控制(即,可以在程序执行过程中对预分频器的分配进行更改)。为避免意外的器件复位,当把预分频器从Timer0重新分配给WDT时,必须执行以下指令序列(例6-1)。将预分频器从WDT分配给Timer0模块时,使用例6-2所示的指令序列。即使禁止了WDT,也必须执行该指令序列。在切换预分频器之前,应当执行CLRWDT指令。

例6-2:CLRWDTMOVLW‘xxxx0xxx’更改预分频器(WDT→TIMER0);Clear WDT and;prescaler;Select TMR0, new

;prescale value and;clock source例6-1:更改预分频器(TIMER0 → WDT);Clear WDT;Clear TMR0 & Prescaler

;These 3 lines (5, 6, 7);are required only if;desired;PS<2:0> are 000 or 001;Set Postscaler to;desired WDT rateCLRWDTCLRFTMR0

MOVLW‘00xx1111’bOPTIONCLRWDTMOVLW‘00xx1xxx’bOPTIONOPTION图6-5:T0CKI(2)引脚TIMER0/WDT预分频器的框图

TCY(= FOSC/4)数据总线0MUX810T0SE(1)T0CS(1)MUX同步2个周期TMR0寄存器比较器 输出110PSA(1)C1T0CS(3)01MUX8位预分频器88选1 MUXPSA(1)WDT使能位0MUX1PSA(1)PS<2:0>(1)看门狗定时器WDT超时注1:T0CS、T0SE、PSA和PS<2:0>是OPTION寄存器中的位。2:T0CKI在PIC12F510中与GP2引脚共用,在PIC16F506中与RC5共用。3:位C1T0CS位于CM1CON0寄存器中。DS41268C_CN 第42页初稿 2007 Microchip Technology Inc.

PIC12F510/16F5067.0比较器PIC12F510包含一个模拟比较器模块。PIC16F506包含两个比较器和一个比较器参考电压。

寄存器7-1:R-1C1OUTbit 7图注:R = 可读位-n = POR时的值bit 7CM1CON0:比较器C1的控制寄存器(PIC12F510)R/W-1C1OUTENR/W-1C1POLR/W-1C1T0CSR/W-1C1ONR/W-1C1NREFR/W-1C1PREFR/W-1C1WUbit 0W = 可写位U = 未实现位,读为0x = 未知1 = 置1 0=清零C1OUT:比较器输出位1 = VIN+ > VIN-0 = VIN+ < VIN-C1OUTEN:比较器输出使能位(1), (2)1 = 比较器的输出不送到C1OUT引脚0 = 比较器的输出送到C1OUT引脚C1POL:比较器输出极性位(2)1 = 比较器输出不反相0 = 比较器输出反相C1T0CS:比较器TMR0时钟源位(2)1 = TMR0时钟源由T0CS控制位选择0 = 比较器输出用作TMR0时钟源C1ON:比较器使能位1 = 比较器打开0 = 比较器关闭C1NREF:比较器负参考选择位(2)1 = C1IN引脚0 = 0.6V内部参考电压C1PREF:比较器正参考选择位(2)1 = C1IN+引脚0 = C1IN-引脚C1WU:比较器电平变化唤醒使能位(2)1 = 禁止在比较器电平变化时唤醒0 = 使能在比较器电平变化时唤醒1:改写T0CS位,由TRIS控制GP2。2:在比较器打开时,这些控制位下拉为低电平。bit 6bit 5bit 4bit 3bit 2bit 1bit 0注 2007 Microchip Technology Inc.初稿DS41268C_CN 第43页

PIC12F510/16F506

寄存器7-2:R-1C1OUTbit 7图注:R = 可读位-n = POR时的值bit 7CM1CON0:比较器C1的控制寄存器(PIC16F506)R/W-1C1OUTENR/W-1C1POLR/W-1C1T0CSR/W-1C1ONR/W-1C1NREFR/W-1C1PREFR/W-1C1WUbit 0W = 可写位U = 未实现位,读为0x = 未知1 = 置1 0=清零C1OUT:比较器输出位1 = VIN+ > VIN-0 = VIN+ < VIN-C1OUTEN:比较器输出使能位(1), (2)1 = 比较器的输出不送到C1OUT引脚0 = 比较器的输出送到C1OUT引脚C1POL:比较器输出极性位(2)1 = 比较器输出不反相0 = 比较器输出反相C1T0CS:比较器TMR0时钟源位(2)1 = TMR0时钟源由T0CS控制位选择0 = 比较器输出用作TMR0时钟源C1ON:比较器使能位1 = 比较器打开0 = 比较器关闭C1NREF:比较器负参考选择位(2)1 = C1IN引脚0 = 0.6V内部参考电压C1PREF:比较器正参考选择位(2)1 = C1IN+引脚0 = C1IN-引脚C1WU:比较器电平变化唤醒使能位(2)1 = 禁止在比较器电平变化时唤醒0 = 使能在比较器电平变化时唤醒1:改写T0CS位,由TRIS控制GP2。2:在比较器打开时,这些控制位下拉为低电平。否则,其他寄存器将具有优先权。bit 6bit 5bit 4bit 3bit 2bit 1bit 0注DS41268C_CN 第44页初稿 2007 Microchip Technology Inc.

PIC12F510/16F506

寄存器7-3:R-1C2OUTbit 7图注:R = 可读位-n = POR时的值bit 7CM2CON0:比较器C2的控制寄存器(PIC16F506)R/W-1C2OUTENR/W-1C2POLR/W-1C2PREF2R/W-1C2ONR/W-1C2NREFR/W-1C2PREF1R/W-1C2WUbit 0W = 可写位U = 未实现位,读为0x = 未知1 = 置1 0=清零C2OUT:比较器输出位1 = VIN+ > VIN-0 = VIN+ < VIN-C2OUTEN:比较器输出使能位(1), (2)1 = 比较器的输出不送到C2OUT引脚0 = 比较器的输出送到C2OUT引脚C2POL:比较器输出极性位(2)1 = 比较器输出不反相0 = 比较器输出反相C2PREF2:比较器正参考选择位(2)1 = C1IN+引脚0 = C2IN-引脚C2ON:比较器使能位1 = 比较器打开0 = 比较器关闭C2NREF:比较器负参考选择位(2)1 = C2IN-引脚0 = CVREFC2PREF1:比较器正参考选择位(2)1 = C2IN+引脚0 = C2PREF2控制模拟输入选择C2WU:比较器电平变化唤醒使能位(2)1 = 禁止在比较器电平变化时唤醒0 = 使能在比较器电平变化时唤醒1:改写TOCS位,由TRIS控制RC4。2:在比较器打开时,这些控制位下拉为低电平。否则,其他寄存器将具有优先权。bit 6bit 5bit 4bit 3bit 2bit 1bit 0注 2007 Microchip Technology Inc.初稿DS41268C_CN 第45页

PIC12F510/16F506图7-1:PIC12F510/16F506的比较器1框图

C1PREF至数据总线MUXC1IN-C1IN+01RD_CM1CON0DQ3*RD_CM1CON0C1NREFC1ON(1)+-C1C1POLC1OUTQC1WUC1WUFENCLNRESETC1OUTENC1IN-1MUX0.6V0(内部参考)注C1OUT1:当C1ON = 0时,比较器C1将输出0到异或门。图7-2:比较器2 框图(仅限PIC16F506)

至数据总线RD_CM2CON0DC2ON(1)C2IN+1MUX+C2-Q3*RD_CM2CON0NRESETC2OUTENCLQC2WUC2WUFC2PREF1C2PREF2C1IN+1MUX0C2IN-0C2OUTENC2NREFC2IN-1MUXC2POLC2OUTCVREF0注1:当C2ON = 0时,比较器C2将输出0到异或门。DS41268C_CN 第46页初稿 2007 Microchip Technology Inc.

PIC12F510/16F5067.1比较器工作原理注:定义为数字输入的引脚上的模拟电平可能会使输入缓冲器的电流消耗超过规定值。图7-3所示为单比较器以及模拟输入电平与数字输出之间的关系。当VIN+上的模拟输入电平值小于VIN-上的模拟输入值时,比较器输出数字低电平。图7-3中比较器输出的阴影部分表示因输入失调电压和响应时间所造成的输出不确定区域。关于共模电压的信息,请参见表13-1。7.5比较器唤醒标志每当满足以下所有条件时,比较器唤醒标志将置1:

•C1WU =

0(CM1CON0<0>)或C2WU = 0(CM2CON0<0>)•已读取CM1CON0或CM2CON0的内容,以锁存C1OUT和C2OUT位上次的已知状态(MOVF

CM1CON0, W)•器件处于休眠模式•比较器输出的状态发生变化唤醒标志可以用软件清零,也可以通过另外的器件复位清零。图7-3:单个比较器VIN+VIN-+–结果VIN-VIN+7.6休眠期间的比较器操作使能比较器后,比较器将一直工作。要最大程度降低处于休眠模式时的功耗,可以在进入休眠模式之前关闭比较器。7.7结果复位的影响7.2比较器参考电压上电复位(POR)会将CM2CON0寄存器强制设为其复位状态。这会将比较器输入引脚强制设为模拟复位模式。当复位时引脚呈现模拟输入状态,将使得器件电流降至最小。可以根据比较器工作模式来使用内部参考信号。器件将V

IN -上的模拟信号与V

IN +上的信号作比较,并相应地调整比较器的数字输出(图7-3)。关于内部参考电压规范,请参见第8.0节“比较器参考电压模块(仅限PIC16F506)”。7.8模拟输入连接注意事项7.3比较器响应时间响应时间是指从选择新的参考电压或输入电源到比较器产生有效输出电平的最小时间。如果更改了比较器输入,则必须加入一个延时,以允许比较器稳定为其新状态。关于比较器响应时间规范,请参见表13-1。模拟输入的简化电路如图7-4所示。由于模拟引脚被连接到数字输出端,它们与VDD和VSS之间连有反向偏置的二极管。因此,模拟输入必须在VSS和VDD之间。如果输入电压与这一范围偏离的绝对值超过0.6V,就可能发生一个二极管正向导通,从而可能导致锁死发生。模拟信号源的最大阻抗推荐值为10kΩ。任何连接到模拟输入引脚的外部元件(如电容或齐纳二极管),均应保证其只具有极小的泄漏电流。7.4比较器输出通过CM1CON0或CM2CON0寄存器可读取比较器输出。该位是只读的。比较器输出也可以在外部使用,请参见图7-3。 2007 Microchip Technology Inc.初稿DS41268C_CN 第47页


本文发布于:2024-09-21 01:41:50,感谢您对本站的认可!

本文链接:https://www.17tex.com/fanyi/7890.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:寄存器   引脚   指令   输入   器件   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议