电子工程世界电子工程世界电子工程世界

产品描述

搜索

PIC16LF628A-I-P

器件型号:PIC16LF628A-I-P
器件类别:半导体    嵌入式处理器和控制器   
厂商名称:Microchip
厂商官网:https://www.microchip.com
下载文档

器件描述

8-bit Microcontrollers - MCU 3.5KB 224 RAM 16 I/O

参数
产品属性属性值
Product AttributeAttribute Value
制造商:
Manufacturer:
Microchip
产品种类:
Product Category:
8-bit Microcontrollers - MCU
RoHS:YES
安装风格:
Mounting Style:
Through Hole
封装 / 箱体:
Package / Case:
PDIP-18
系列:
Series:
PIC16
Core:PIC16
Data Bus Width:8 bit
Maximum Clock Frequency:20 MHz
Program Memory Size:2 kB
Data RAM Size:224 B
ADC Resolution:No ADC
Number of I/Os:16 I/O
工作电源电压:
Operating Supply Voltage:
2 V to 5.5 V
最大工作温度:
Maximum Operating Temperature:
+ 85 C
接口类型:
Interface Type:
SCI, USART
封装:
Packaging:
Tube
高度:
Height:
3.3 mm
长度:
Length:
22.86 mm
产品:
Product:
MCU
Program Memory Type:Flash
宽度:
Width:
6.35 mm
商标:
Brand:
Microchip Technology
Data ROM Size:128 B
Data ROM Type:Flash
最小工作温度:
Minimum Operating Temperature:
- 40 C
Number of Timers/Counters:1 Timer
Processor Series:PIC16
工厂包装数量:
Factory Pack Quantity:
25
电源电压-最大:
Supply Voltage - Max:
5.5 V
电源电压-最小:
Supply Voltage - Min:
2 V
商标名:
Tradename:
PIC
单位重量:
Unit Weight:
0.044801 oz

PIC16LF628A-I-P器件文档内容

                                  PIC16F627A/628A/648A

                                  Data Sheet

                                  Flash-Based, 8-Bit CMOS

Microcontrollers with nanoWatt Technology

© 2009 Microchip Technology Inc.  DS40044G
Note the following details of the code protection feature on Microchip devices:

•  Microchip products meet the specification contained in their particular Microchip Data Sheet.

•  Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the

   intended manner and under normal conditions.

•  There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our

   knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data

   Sheets. Most likely, the person doing so is engaged in theft of intellectual property.

•  Microchip is willing to work with the customer who is concerned about the integrity of their code.

•  Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not

   mean that we are guaranteeing the product as “unbreakable.”

Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our

products. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts

allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.

Information    contained   in   this  publication     regarding     device     Trademarks

applications and the like is provided only for your convenience                The Microchip name and logo, the Microchip logo, dsPIC,

and may be superseded by updates. It is your responsibility to                 KEELOQ, KEELOQ logo, MPLAB, PIC, PICmicro, PICSTART,

ensure that your application meets with your specifications.                   rfPIC and UNI/O are registered trademarks of Microchip

MICROCHIP         MAKES         NO    REPRESENTATIONS               OR         Technology Incorporated in the U.S.A. and other countries.

WARRANTIES        OF       ANY  KIND  WHETHER         EXPRESS       OR

IMPLIED,       WRITTEN          OR    ORAL,         STATUTORY       OR         FilterLab, Hampshire, HI-TECH C, Linear Active Thermistor,

OTHERWISE,           RELATED          TO       THE    INFORMATION,             MXDEV, MXLAB, SEEVAL and The Embedded Control

INCLUDING      BUT         NOT  LIMITED        TO    ITS  CONDITION,           Solutions Company are registered trademarks of Microchip

QUALITY,       PERFORMANCE,               MERCHANTABILITY           OR         Technology Incorporated in the U.S.A.

FITNESS      FOR     PURPOSE.       Microchip  disclaims       all  liability  Analog-for-the-Digital Age, Application Maestro, CodeGuard,

arising  from  this  information    and   its  use.  Use  of   Microchip       dsPICDEM, dsPICDEM.net, dsPICworks, dsSPEAK, ECAN,

devices in life support and/or safety applications is entirely at              ECONOMONITOR, FanSense, HI-TIDE, In-Circuit Serial

the buyer’s risk, and the buyer agrees to defend, indemnify and                Programming, ICSP, Mindi, MiWi, MPASM, MPLAB Certified

hold harmless Microchip from any and all damages, claims,                      logo, MPLIB, MPLINK, mTouch, Octopus, Omniscient Code

suits, or expenses resulting from such use. No licenses are                    Generation, PICC, PICC-18, PICDEM, PICDEM.net, PICkit,

conveyed,      implicitly  or   otherwise,     under      any  Microchip       PICtail, PIC32 logo, REAL ICE, rfLAB, Select Mode, Total

intellectual property rights.                                                  Endurance, TSHARC, UniWinDriver, WiperLock and ZENA

                                                                               are trademarks of Microchip Technology Incorporated in the

                                                                               U.S.A. and other countries.

                                                                               SQTP is a service mark of Microchip Technology Incorporated

                                                                               in the U.S.A.

                                                                               All other trademarks mentioned herein are property of their

                                                                               respective companies.

                                                                               © 2009, Microchip Technology Incorporated, Printed in the

                                                                               U.S.A., All Rights Reserved.

                                                                               Printed on recycled paper.

                                                                               Microchip received ISO/TS-16949:2002 certification for its worldwide

                                                                               headquarters, design and wafer fabrication facilities in Chandler and

                                                                               Tempe, Arizona; Gresham, Oregon and design centers in California

                                                                               and India. The Company’s quality system processes and procedures

                                                                               are for its PIC® MCUs and dsPIC® DSCs, KEELOQ® code hopping

                                                                               devices, Serial EEPROMs, microperipherals, nonvolatile memory and

                                                                               analog products. In addition, Microchip’s quality system for the design

                                                                               and manufacture of development systems is ISO 9001:2000 certified.

DS40044G-page 2                                                                                             © 2009 Microchip Technology Inc.
                                              PIC16F627A/628A/648A

      18-pin Flash-Based, 8-Bit CMOS Microcontrollers

                                    with nanoWatt Technology

High-Performance RISC CPU:                                    Low-Power Features:

•  Operating speeds from DC – 20 MHz                          •  Standby Current:

•  Interrupt capability                                          -    100 nA @ 2.0V, typical

•  8-level deep hardware stack                                •  Operating Current:

•  Direct, Indirect and Relative Addressing modes                -    12 μA @ 32 kHz, 2.0V, typical

•  35 single-word instructions:                                  -    120 μA @ 1 MHz, 2.0V, typical

   -  All instructions single cycle except branches           •  Watchdog Timer Current:

                                                                 -    1 μA @ 2.0V, typical

Special Microcontroller Features:                             •  Timer1 Oscillator Current:

•  Internal and external oscillator options:                     -    1.2 μA @ 32 kHz, 2.0V, typical

   -  Precision internal 4 MHz oscillator factory             •  Dual-speed Internal Oscillator:

      calibrated to ±1%                                          -    Run-time selectable between 4 MHz and

   -  Low-power internal 48 kHz oscillator                            48 kHz

   -  External Oscillator support for crystals and               -    4 μs wake-up from Sleep, 3.0V, typical

      resonators

•  Power-saving Sleep mode                                    Peripheral Features:

•  Programmable weak pull-ups on PORTB                        •  16 I/O pins with individual direction control

•  Multiplexed Master Clear/Input-pin                         •  High current sink/source for direct LED drive

•  Watchdog Timer with independent oscillator for             •  Analog comparator module with:

   reliable operation                                            -    Two analog comparators

•  Low-voltage programming                                       -    Programmable on-chip voltage reference

•  In-Circuit Serial Programming™ (via two pins)                      (VREF) module

•  Programmable code protection                                  -    Selectable internal or external reference

•  Brown-out Reset                                               -    Comparator outputs are externally accessible

•  Power-on Reset                                             •  Timer0: 8-bit timer/counter with 8-bit

•  Power-up Timer and Oscillator Start-up Timer                  programmable prescaler

•  Wide operating voltage range (2.0-5.5V)                    •  Timer1: 16-bit timer/counter with external crystal/

•  Industrial and extended temperature range                     clock capability

•  High-Endurance Flash/EEPROM cell:                          •  Timer2: 8-bit timer/counter with 8-bit period

   -  100,000 write Flash endurance                              register, prescaler and postscaler

   -  1,000,000 write EEPROM endurance                        •  Capture, Compare, PWM module:

   -  40 year data retention                                     -    16-bit Capture/Compare

                                                                 -    10-bit PWM

                                                              •  Addressable Universal Synchronous/Asynchronous

                                                                 Receiver/Transmitter USART/SCI

                         Program              Data Memory

                         Memory                                       CCP                                        Timers

      Device                                                     I/O  (PWM)        USART      Comparators        8/16-bit

                         Flash         SRAM          EEPROM

                         (words)       (bytes)       (bytes)

      PIC16F627A              1024            224    128         16   1              Y               2           2/1

      PIC16F628A              2048            224    128         16   1              Y               2           2/1

      PIC16F648A              4096            256    256         16   1              Y               2           2/1

© 2009 Microchip Technology Inc.                                                                         DS40044G-page 3
PIC16F627A/628A/648A

Pin Diagrams

PDIP, SOIC

                                                                                               RA2/AN2/VREF                             1                                     18       RA1/AN1

                                                                                            RA3/AN3/CMP1                                2  27A/628A/648A                      17       RA0/AN0

                                                                             RA4/T0CKI/CMP2                                             3               PIC16F627A/628A/648A  16       RA7/OSC1/CLKIN

                                                                                            RA5/MCLR/VPP                                4                                     15       RA6/OSC2/CLKOUT

                                                                                                                               VSS      5                                     14       VDD

                                                                                                                               RB0/INT  6                                     13       RB7/T1OSI/PGD

                                                                                                                      RB1/RX/DT         7                                     12       RB6/T1OSO/T1CKI/PGC

                                                                                                                      RB2/TX/CK         8                                     11       RB5

                                                                                                                      RB3/CCP1          9                                     10       RB4/PGM

SSOP                                                                                        RB6/T1OSO/T1CKI/PGC                            28-Pin QFN

            RA1/AN1  RA0/AN0      RA7/OSC1/CLKIN  RA6/OSC2/CLKOUT  VDD  VDD  RB7/T1OSI/PGD                       RB5  RB4/PGM                                                             RA4/T0CKI/CMP2  RA3/AN3/CMP1  RA2/AN2/VREF      RA1/AN1  RA0/AN0

            20       19           18              17               16   15   14             13                   12   11                                                                                                              NC                    NC

                                                                                                                                        RA5/MCLR/VPP                                   1  28              27            26            25  24       23       22  21      RA7/OSC1/CLKIN

      PIC16F627A/628A/648A                                                                                                                                                         NC  2                                                                        20      RA6/OSC2/CLKOUT

                                                                                                                                                                              VSS      3                                                                        19      VDD

                                                                                                                      10                                                           NC  4  PIC16F627A/628A 18                                                        NC

            1        2            3               4                5    6    7              8                    9                                                            VSS                         PIC16F648A                                            17

                                                                                                                                                                                       5                                                                                VDD

                                                                                                                                                                                   NC  6                                                                        16      RB7/T1OSI/PGD

                                                                                                                                           RB0/INT                                     7                                10            11  12       13       14  15      RB6/T1OSO/T1CKI/PGC

                                                                                                                                                                                          8               9

      RA2/AN2/VREF  RA3/AN3/CMP1  RA4/T0CKI/CMP2  RA5/MCLR/VPP  VSS   VSS  RB0/INT  RB1/RX/DT  RB2/TX/CK            RB3/CCP1                                                                                                          NC                    NC

                                                                                                                                                                                          RB1/RX/DT       RB2/TX/CK     RB3/CCP1          RB4/PGM  RB5

DS40044G-page 4                                                                                                                                                                                                                                                 © 2009  Microchip Technology  Inc.
                                                             PIC16F627A/628A/648A

Table of Contents

1.0 General Description ........................................................................................................................................................................        7

2.0 PIC16F627A/628A/648A Device Varieties......................................................................................................................................                         9

3.0 Architectural Overview ..................................................................................................................................................................           11

4.0 Memory Organization .................................................................................................................................................................... 17

5.0 I/O Ports ........................................................................................................................................................................................  33

6.0 Timer0 Module .............................................................................................................................................................................. 47

7.0 Timer1 Module .............................................................................................................................................................................. 50

8.0 Timer2 Module ..............................................................................................................................................................................        54

9.0 Capture/Compare/PWM (CCP) Module ........................................................................................................................................                           57

10.0 Comparator Module ....................................................................................................................................................................             63

11.0 Voltage Reference Module .........................................................................................................................................................                 69

12.0 Universal Synchronous Asynchronous Receiver Transmitter (USART) Module.........................................................................                                                    73

13.0 Data EEPROM Memory .............................................................................................................................................................. 91

14.0 Special Features of the CPU ......................................................................................................................................................                 97

15.0 Instruction Set Summary...........................................................................................................................................................                 117

16.0 Development Support ............................................................................................................................................................... 131

17.0 Electrical Specifications ............................................................................................................................................................ 135

18.0 DC and AC Characteristics Graphs and Tables .......................................................................................................................                                151

19.0 Packaging Information ..............................................................................................................................................................               163

Appendix A: Data Sheet Revision History.........................................................................................................................................                        171

Appendix B: Device Differences .......................................................................................................................................................                  171

Appendix C: Device Migrations .........................................................................................................................................................                 172

Appendix D: Migrating from other PIC® Devices ..............................................................................................................................                            172

The Microchip Web Site .................................................................................................................................................................... 173

Customer Change Notification Service .............................................................................................................................................                      173

Customer Support .............................................................................................................................................................................          173

Reader Response .............................................................................................................................................................................           174

Product Identification System ...........................................................................................................................................................               179

                                  TO OUR VALUED CUSTOMERS

It is our intention to provide our valued customers with the best documentation possible to ensure successful use of your Micro-

chip products. To this end, we will continue to improve our publications to better suit your needs. Our publications will be refined

and enhanced as new volumes and updates are introduced.

If you have any questions or comments regarding this publication, please contact the Marketing Communications Department via

E-mail at docerrors@microchip.com or fax the Reader Response Form in the back of this data sheet to (480) 792-4150. We

welcome your feedback.

Most Current Data Sheet

To obtain the most up-to-date version of this data sheet, please register at our Worldwide Web site at:

   http://www.microchip.com

You can determine the version of a data sheet by examining its literature number found on the bottom outside corner of any page.

The last character of the literature number is the version number, (e.g., DS30000A is version A of document DS30000).

Errata

An errata sheet, describing minor operational differences from the data sheet and recommended workarounds, may exist for current

devices. As device/documentation issues become known to us, we will publish an errata sheet. The errata will specify the revision

of silicon and revision of document to which it applies.

To determine if an errata sheet exists for a particular device, please check with one of the following:

•  Microchip’s Worldwide Web site; http://www.microchip.com

•  Your local Microchip sales office (see last page)

When contacting a sales office, please specify which device, revision of silicon and data sheet (include literature number) you are

using.

Customer Notification System

Register on our web site at www.microchip.com to receive the most current information on all of our products.

© 2009 Microchip Technology Inc.                                                                               DS40044G-page 5
PIC16F627A/628A/648A

NOTES:

DS40044G-page 6       © 2009 Microchip Technology Inc.
                                                                        PIC16F627A/628A/648A

1.0       GENERAL DESCRIPTION                                            The HS mode is for High-Speed crystals. The EC mode

                                                                         is for an external clock source.

The PIC16F627A/628A/648A are 18-pin Flash-based                          The Sleep (Power-down) mode offers power savings.

members      of   the   versatile   PIC16F627A/628A/648A                 Users can wake-up the chip from Sleep through several

family  of   low-cost,    high-performance,        CMOS,   fully-        external interrupts, internal interrupts and Resets.

static, 8-bit microcontrollers.

All PIC® microcontrollers employ an advanced RISC                        A highly reliable Watchdog Timer with its own on-chip

architecture.     The     PIC16F627A/628A/648A             have          RC oscillator provides protection against software lock-

enhanced core features, an eight-level deep stack, and                   up.

multiple internal and external interrupt sources. The                    Table 1-1 shows the features of the PIC16F627A/628A/

separate     instruction  and    data  buses   of   the  Harvard         648A mid-range microcontroller family.

architecture allow a 14-bit wide instruction word with                   A simplified block diagram of the PIC16F627A/628A/

the separate 8-bit wide data. The two-stage instruction                  648A is shown in Figure 3-1.

pipeline allows all instructions to execute in a single-                 The PIC16F627A/628A/648A series fits in applications

cycle, except for program branches (which require two                    ranging       from  battery          chargers    to  low   power     remote

cycles). A total of 35 instructions (reduced instruction                 sensors.      The           Flash    technology      makes    customizing

set) are available, complemented by a large register                     application programs (detection levels, pulse genera-

set.                                                                     tion, timers, etc.) extremely fast and convenient. The

PIC16F627A/628A/648A                microcontrollers     typically       small    footprint          packages  makes          this  microcontroller

achieve   a  2:1  code    compression     and      a  4:1  speed         series ideal for all applications with space limitations.

improvement over other 8-bit microcontrollers in their                   Low cost, low power, high performance, ease of use

class.                                                                   and I/O flexibility make the PIC16F627A/628A/648A

PIC16F627A/628A/648A             devices  have        integrated         very versatile.

features to reduce external components, thus reducing                    1.1           Development Support

system cost, enhancing system reliability and reducing

power consumption.                                                       The PIC16F627A/628A/648A family is supported by a

The     PIC16F627A/628A/648A              has      8     oscillator      full-featured macro assembler, a software simulator, an

configurations. The single-pin RC oscillator provides a                  in-circuit emulator, a low cost in-circuit debugger, a low

low-cost solution. The LP oscillator minimizes power                     cost   development                   programmer     and    a  full-featured

consumption, XT is a standard crystal, and INTOSC is                     programmer. A Third Party “C” compiler support tool is

a self-contained precision two-speed internal oscillator.                also available.

TABLE 1-1:             PIC16F627A/628A/648A FAMILY OF DEVICES

                                       PIC16F627A          PIC16F628A    PIC16F648A    PIC16LF627A             PIC16LF628A             PIC16LF648A

Clock        Maximum Frequency            20               20            20                          20                 20             20

             of Operation (MHz)

             Flash Program                1024             2048          4096                        1024      2048                    4096

             Memory (words)

Memory       RAM Data Memory              224              224           256                         224       224                     256

             (bytes)

             EEPROM Data                  128              128           256                         128       128                     256

             Memory (bytes)

             Timer module(s)           TMR0, TMR1,       TMR0, TMR1,     TMR0, TMR1,   TMR0, TMR1,             TMR0, TMR1,             TMR0, TMR1,

                                          TMR2             TMR2          TMR2                        TMR2      TMR2                    TMR2

             Comparator(s)                2                2             2                           2                  2                  2

Peripherals  Capture/Compare/             1                1             1                           1                  1                  1

             PWM modules

             Serial Communications        USART            USART         USART                       USART     USART                   USART

             Internal Voltage             Yes              Yes           Yes                         Yes                Yes            Yes

             Reference

             Interrupt Sources            10               10            10                          10                 10             10

             I/O Pins                     16               16            16                          16                 16             16

Features     Voltage Range (Volts)        3.0-5.5          3.0-5.5       3.0-5.5                     2.0-5.5   2.0-5.5                 2.0-5.5

             Brown-out Reset              Yes              Yes           Yes                         Yes                Yes            Yes

             Packages                  18-pin DIP,         18-pin DIP,   18-pin DIP,         18-pin DIP,       18-pin DIP,             18-pin DIP,

                                       SOIC, 20-pin        SOIC, 20-pin  SOIC, 20-pin  SOIC, 20-pin            SOIC, 20-pin            SOIC, 20-pin

                                          SSOP,            SSOP,         SSOP,                       SSOP,     SSOP,                   SSOP,

                                       28-pin QFN          28-pin QFN    28-pin QFN          28-pin QFN        28-pin QFN              28-pin QFN

All PIC® family devices have Power-on Reset, selectable Watchdog Timer, selectable code-protect and high I/O  current capability.

All PIC16F627A/628A/648A family devices use serial programming with clock pin RB6 and data pin RB7.

© 2009 Microchip Technology Inc.                                                                                                   DS40044G-page 7
PIC16F627A/628A/648A

NOTES:

DS40044G-page 8       © 2009 Microchip Technology Inc.
                                                                     PIC16F627A/628A/648A

2.0        PIC16F627A/628A/648A

           DEVICE VARIETIES

A variety of frequency ranges and packaging options

are available. Depending on application and production

requirements, the proper device option can be selected

using the information in the PIC16F627A/628A/648A

Product Identification System, at the end of this data

sheet. When placing orders, please use this page of

the data sheet to specify the correct part number.

2.1        Flash Devices

Flash     devices  can   be  erased  and      re-programmed

electrically. This allows the same device to be used for

prototype development, pilot programs and production.

A further advantage of the electrically erasable Flash is

that it can be erased and reprogrammed in-circuit, or by

device programmers, such as Microchip’s PICSTART®

Plus or PRO MATE® II programmers.

2.2        Quick-Turnaround-Production

           (QTP) Devices

Microchip    offers  a   QTP     Programming     Service        for

factory   production     orders.  This   service      is   made

available for users who chose not to program a medium

to high quantity of units and whose code patterns have

stabilized. The devices are standard Flash devices, but

with all program locations and configuration options

already programmed by the factory. Certain code and

prototype    verification     procedures      apply        before

production   shipments      are   available.  Please      contact

your    Microchip    Technology   sales       office  for     more

details.

2.3        Serialized Quick-Turnaround-

           Production (SQTPSM) Devices

Microchip offers a unique programming service where

a  few    user-defined   locations   in  each         device  are

programmed with different serial numbers. The serial

numbers      may     be     random,  pseudo-random              or

sequential.

Serial    programming    allows   each   device       to  have  a

unique    number,    which   can  serve  as an entry-code,

password or ID number.

© 2009 Microchip Technology Inc.                                     DS40044G-page 9
PIC16F627A/628A/648A

NOTES:

DS40044G-page 10      © 2009 Microchip Technology Inc.
                                                               PIC16F627A/628A/648A

3.0    ARCHITECTURAL OVERVIEW                                  The PIC16F627A/628A/648A can directly or indirectly

                                                               address its register files or data memory. All Special

The high performance of the PIC16F627A/628A/648A               Function    Registers       (SFR),         including      the     program

family can be attributed to a number of architectural          counter,    are     mapped         in      the    data    memory.     The

features commonly found in RISC microprocessors. To            PIC16F627A/628A/648A have an orthogonal (symmet-

begin  with,  the  PIC16F627A/628A/648A           uses     a   rical) instruction set that makes it possible to carry out

Harvard architecture in which program and data are             any operation, on any register, using any addressing

accessed     from  separate  memories      using  separate     mode. This symmetrical nature and lack of ‘special

busses. This improves bandwidth over traditional Von           optimal    situations’      makes          programming         with   the

Neumann architecture where program and data are                PIC16F627A/628A/648A                   simple        yet  efficient.  In

fetched from the same memory. Separating program               addition, the learning curve is reduced significantly.

and data memory further allows instructions to be sized        The PIC16F627A/628A/648A devices contain an 8-bit

differently  than  8-bit  wide    data  word.     Instruction  ALU    and    working     register.        The       ALU  is   a  general

opcodes are 14-bits wide making it possible to have all        purpose     arithmetic      unit.  It      performs       arithmetic  and

single-word instructions. A 14-bit wide program mem-           Boolean functions between data in the working register

ory access bus fetches a 14-bit instruction in a single        and any register file.

cycle. A two-stage pipeline overlaps fetch and execu-

tion of instructions. Consequently, all instructions (35)      The    ALU    is  8-bits    wide       and      capable   of      addition,

execute in a single-cycle (200 ns @ 20 MHz) except for         subtraction,      shift   and      logical        operations.     Unless

program branches.                                              otherwise mentioned, arithmetic operations are two’s

Table 3-1 lists device memory sizes (Flash, Data and           complement        in  nature.      In      two-operand    instructions,

EEPROM).                                                       typically   one       operand          is  the       working      register

                                                               (W register). The other operand is a file register or an

TABLE 3-1:         DEVICE MEMORY LIST                          immediate constant. In single operand instructions, the

                                                               operand is either the W register or a file register.

                                  Memory                       The W register is an 8-bit working register used for ALU

     Device        Flash          RAM          EEPROM          operations. It is not an addressable register.

                   Program        Data            Data         Depending on the instruction executed, the ALU may

PIC16F627A         1024 x 14      224 x 8      128 x 8         affect the values of the Carry (C), Digit Carry (DC), and

PIC16F628A         2048 x 14      224 x 8      128 x 8         Zero (Z) bits in the Status Register. The C and DC bits

                                                               operate     as    Borrow    and            Digit     Borrow    out    bits,

PIC16F648A         4096 x 14      256 x 8      256 x 8         respectively, in subtraction. See the SUBLW and SUBWF

PIC16LF627A        1024 x 14      224 x 8      128 x 8         instructions for examples.

PIC16LF628A        2048 x 14      224 x 8      128 x 8         A simplified block diagram is shown in Figure 3-1, and

PIC16LF648A        4096 x 14      256 x 8      256 x 8         a description of the device pins in Table 3-2.

                                                               Two    types    of    data  memory              are  provided     on  the

                                                               PIC16F627A/628A/648A                       devices.            Nonvolatile

                                                               EEPROM        data    memory           is  provided       for  long   term

                                                               storage of data, such as calibration values, look-up

                                                               table  data,    and   any   other          data   which   may     require

                                                               periodic updating in the field. These data types are not

                                                               lost when power is removed. The other data memory

                                                               provided is regular RAM data memory. Regular RAM

                                                               data memory is provided for temporary storage of data

                                                               during normal operation. Data is lost when power is

                                                               removed.

© 2009 Microchip Technology Inc.                                                                                    DS40044G-page 11
PIC16F627A/628A/648A

FIGURE  3-1:         BLOCK            DIAGRAM

                                      13                                     Data Bus           8

                                          Program Counter

                     Flash

                     Program

                     Memory                                                       RAM

                                          8-Level Stack                           File

                                                (13-bit)                     Registers

            Program  14                                                                              PORTA

            Bus                                                   RAM  Addr  (1)        9

                     Instruction Reg                                         Addr MUX                             RA0/AN0

                                                                                           Indirect               RA1/AN1

                                          Direct Addr          7                        8    Addr                 RA2/AN2/VREF

                                                                                                                  RA3/AN3/CMP1

                                                                                  FSR Reg                         RA4/T0CK1/CMP2

                                                                                                                  RA5/MCLR/VPP

                                                                                  Status Reg                      RA6/OSC2/CLKOUT

                                      8                                                                           RA7/OSC1/CLKIN

                                          Power-up                        3             MUX          PORTB

                                                Timer                                                             RB0/INT

                     Instruction          Oscillator                                                              RB1/RX/DT

                     Decode &             Start-up Timer                                                          RB2/TX/CK

                     Control                                                 ALU                                  RB3/CCP1

                                          Power-on                     8                                          RB4/PGM

                                                Reset                                                             RB5

                     Timing               Watchdog                           W Reg                                RB6/T1OSO/T1CKI/PGC

                     Generation                 Timer                                                             RB7/T1OSI/PGD

OSC1/CLKIN                                Brown-out

OSC2/CLKOUT                                     Reset

                                          Low-Voltage

                                          Programming

                                          MCLR  VDD, VSS

Comparator               Timer0                 Timer1                                  Timer2

VREF                     CCP1                          USART                      Data EEPROM

Note    1:    Higher order bits are from the Status register.

DS40044G-page 12                                                                                     ©      2009  Microchip Technology Inc.
                                                        PIC16F627A/628A/648A

TABLE 3-2:     PIC16F627A/628A/648A PINOUT DESCRIPTION

         Name                     Function  Input Type  Output Type                      Description

RA0/AN0                           RA0           ST             CMOS  Bidirectional I/O port

                                  AN0           AN             —     Analog comparator input

RA1/AN1                           RA1           ST             CMOS  Bidirectional I/O port

                                  AN1           AN             —     Analog comparator input

RA2/AN2/VREF                      RA2           ST             CMOS  Bidirectional I/O port

                                  AN2           AN             —     Analog comparator input

                                  VREF          —              AN    VREF output

RA3/AN3/CMP1                      RA3           ST             CMOS  Bidirectional I/O port

                                  AN3           AN             —     Analog comparator input

                                  CMP1          —              CMOS  Comparator 1 output

RA4/T0CKI/CMP2                    RA4           ST             OD    Bidirectional I/O port

                                  T0CKI         ST             —     Timer0 clock input

                                  CMP2          —              OD    Comparator 2 output

RA5/MCLR/VPP                      RA5           ST             —     Input port

                                  MCLR          ST             —     Master clear. When configured as MCLR, this

                                                                     pin is an active low Reset to the device.

                                                                     Voltage on MCLR/VPP must not exceed VDD

                                                                     during normal device operation.

                                  VPP           —              —     Programming voltage input

RA6/OSC2/CLKOUT                   RA6           ST             CMOS  Bidirectional I/O port

                                  OSC2          —              XTAL  Oscillator crystal output. Connects to crystal

                                                                     or resonator in Crystal Oscillator mode.

                                  CLKOUT        —              CMOS  In RC/INTOSC mode, OSC2 pin can output

                                                                     CLKOUT, which has 1/4 the frequency of

                                                                     OSC1.

RA7/OSC1/CLKIN                    RA7           ST             CMOS  Bidirectional I/O port

                                  OSC1         XTAL            —     Oscillator crystal input

                                  CLKIN         ST             —     External clock source input. RC biasing pin.

RB0/INT                           RB0           TTL            CMOS  Bidirectional I/O port. Can be software

                                                                     programmed for internal weak pull-up.

                                  INT           ST             —     External interrupt

RB1/RX/DT                         RB1           TTL            CMOS  Bidirectional I/O port. Can be software

                                                                     programmed for internal weak pull-up.

                                  RX            ST             —     USART receive pin

                                  DT            ST             CMOS  Synchronous data I/O

RB2/TX/CK                         RB2           TTL            CMOS  Bidirectional I/O port. Can be software

                                                                     programmed for internal weak pull-up.

                                  TX            —              CMOS  USART transmit pin

                                  CK            ST             CMOS  Synchronous clock I/O

RB3/CCP1                          RB3           TTL            CMOS  Bidirectional I/O port. Can be software

                                                                     programmed for internal weak pull-up.

                                  CCP1          ST             CMOS  Capture/Compare/PWM I/O

Legend:    O  = Output                      CMOS     =  CMOS Output               P      = Power

          —   = Not used                    I        =  Input                     ST = Schmitt Trigger Input

         TTL  = TTL Input                   OD       =  Open Drain Output         AN = Analog

© 2009 Microchip Technology Inc.                                                                      DS40044G-page 13
PIC16F627A/628A/648A

TABLE 3-2:        PIC16F627A/628A/648A PINOUT DESCRIPTION (CONTINUED)

         Name              Function  Input Type  Output Type                    Description

RB4/PGM                    RB4           TTL            CMOS  Bidirectional I/O port. Interrupt-on-pin change.

                                                              Can be software programmed for internal

                                                              weak pull-up.

                           PGM           ST             —     Low-voltage programming input pin. When

                                                              low-voltage programming is enabled, the

                                                              interrupt-on-pin change and weak pull-up

                                                              resistor are disabled.

RB5                        RB5           TTL            CMOS  Bidirectional I/O port. Interrupt-on-pin change.

                                                              Can be software programmed for internal

                                                              weak pull-up.

RB6/T1OSO/T1CKI/PGC        RB6           TTL            CMOS  Bidirectional I/O port. Interrupt-on-pin change.

                                                              Can be software programmed for internal

                                                              weak pull-up.

                           T1OSO         —              XTAL  Timer1 oscillator output

                           T1CKI         ST             —     Timer1 clock input

                           PGC           ST             —     ICSP™ programming clock

RB7/T1OSI/PGD              RB7           TTL            CMOS  Bidirectional I/O port. Interrupt-on-pin change.

                                                              Can be software programmed for internal

                                                              weak pull-up.

                           T1OSI        XTAL            —     Timer1 oscillator input

                           PGD           ST             CMOS  ICSP data I/O

VSS                        VSS          Power           —     Ground reference for logic and I/O pins

VDD                        VDD          Power           —     Positive supply for logic and I/O pins

Legend:  O    = Output               CMOS     =  CMOS Output                 P  = Power

         —    = Not used             I        =  Input                       ST = Schmitt Trigger Input

         TTL  = TTL Input            OD       =  Open Drain Output           AN = Analog

DS40044G-page 14                                                                © 2009 Microchip Technology Inc.
                                                                  PIC16F627A/628A/648A

3.1       Clocking Scheme/Instruction                                         3.2           Instruction Flow/Pipelining

          Cycle                                                               An instruction cycle consists of four Q cycles (Q1, Q2,

The clock input (RA7/OSC1/CLKIN pin) is internally                            Q3    and     Q4).  The    instruction  fetch   and     execute       are

divided   by  four  to  generate       four      non-overlapping              pipelined such that fetch takes one instruction cycle

quadrature    clocks    namely     Q1,    Q2,    Q3  and    Q4.               while decode and execute takes another instruction

Internally, the Program Counter (PC) is incremented                           cycle. However, due to the pipelining, each instruction

every Q1, the instruction is fetched from the program                         effectively   executes       in  one    cycle.      If  an     instruction

memory and latched into the instruction register in Q4.                       causes the program counter to change (e.g., GOTO)

The instruction is decoded and executed during the                            then two cycles are required to complete the instruction

following Q1 through Q4. The clocks and instruction                           (Example 3-1).

execution flow is shown in Figure 3-2.                                        A     fetch   cycle     begins    with    the   program        counter

                                                                              incrementing in Q1.

                                                                              In the execution cycle, the fetched instruction is latched

                                                                              into     the  Instruction    Register   (IR)    in      cycle  Q1.  This

                                                                              instruction is then decoded and executed during the

                                                                              Q2, Q3 and Q4 cycles. Data memory is read during Q2

                                                                              (operand      read)     and  written    during      Q4      (destination

                                                                              write).

FIGURE 3-2:             CLOCK/INSTRUCTION CYCLE

              Q1        Q2         Q3        Q4      Q1           Q2  Q3               Q4         Q1       Q2         Q3          Q4

     OSC1

         Q1

         Q2                                                                                                                                  Internal

         Q3                                                                                                                                  phase

                                                                                                                                             clock

         Q4

         PC                    PC                                     PC + 1                                    PC + 2

CLKOUT

                        Fetch  INST (PC)

                    Execute    INST (PC -    1)             Fetch INST (PC +           1)

                                                            Execute INST (PC)                            Fetch INST (PC + 2)

                                                                                                         Execute INST (PC + 1)

EXAMPLE 3-1:            INSTRUCTION PIPELINE FLOW

1.   MOVLW    55h                  Fetch     1   Execute       1

2.   MOVWF    PORTB                                  Fetch  2     Execute           2

3.   CALL     SUB_1                                                   Fetch      3     Execute        3

4.   BSF      PORTA,    3                                                                  Fetch   4       Flush

                                                                                                         Fetch  SUB_1     Execute            SUB_1

     Note:    All instructions are single cycle except for any program branches. These take two cycles since the fetch

              instruction is “flushed” from the pipeline while the new instruction is being fetched and then executed.

© 2009 Microchip Technology Inc.                                                                                              DS40044G-page 15
PIC16F627A/628A/648A

NOTES:

DS40044G-page 16      © 2009 Microchip Technology Inc.
                                                                PIC16F627A/628A/648A

4.0      MEMORY ORGANIZATION                                    4.2        Data Memory Organization

4.1      Program Memory Organization                            The    data     memory      (Figure 4-2  and      Figure 4-3)  is

                                                                partitioned into four banks, which contain the General

The  PIC16F627A/628A/648A         has     a  13-bit   program   Purpose Registers (GPRs) and the Special Function

counter  capable  of  addressing      an   8K x 14    program   Registers (SFRs). The SFRs are located in the first 32

memory space. Only the first 1K x 14 (0000h-03FFh)              locations of each bank. There are General Purpose

for the PIC16F627A, 2K x 14 (0000h-07FFh) for the               Registers implemented as static RAM in each bank.

PIC16F628A    and     4K x 14     (0000h-0FFFh)       for  the  Table 4-1 lists the General Purpose Register available

PIC16F648A are physically implemented. Accessing a              in each of the four banks.

location above these boundaries will cause a wrap-

around within the first 1K  x 14 space (PIC16F627A),            TABLE 4-1:             GENERAL PURPOSE STATIC

2K x 14  space    (PIC16F628A)         or    4K x 14  space                            RAM REGISTERS

(PIC16F648A). The Reset vector is at 0000h and the                               PIC16F627A/628A              PIC16F648A

interrupt vector is at 0004h (Figure 4-1).

                                                                Bank0                       20-7Fh                20-7Fh

FIGURE 4-1:           PROGRAM MEMORY MAP                        Bank1                   A0h-FF                    A0h-FF

                      AND STACK                                 Bank2            120h-14Fh, 170h-17Fh             120h-17Fh

                      PC<12:0>                                  Bank3                  1F0h-1FFh                  1F0h-1FFh

     CALL,  RETURN                13                            Addresses F0h-FFh, 170h-17Fh and 1F0h-1FFh are

     RETFIE,  RETLW                                             implemented as common RAM and mapped back to

                  Stack Level 1                                 addresses 70h-7Fh.

                  Stack Level 2                                 Table 4-2 lists how to access the four banks of registers

                                                                via the Status register bits RP1 and RP0.

                  Stack Level 8                                 TABLE 4-2:             ACCESS TO BANKS OF

                                                                                       REGISTERS

                  Reset Vector               000h                      Bank                         RP1           RP0

                                                                             0                      0                  0

                                                                             1                      0                  1

                  Interrupt Vector           0004                            2                      1                  0

                  On-chip Program            0005                            3                      1                  1

                      Memory

                  PIC16F627A,                                   4.2.1           GENERAL PURPOSE REGISTER

                  PIC16F628A      and                                           FILE

                  PIC16F648A                                    The    register  file   is  organized    as   224 x 8  in      the

                                             03FFh              PIC16F627A/628A         and  256 x 8     in  the  PIC16F648A.

                  On-chip Program                               Each is accessed either directly or indirectly through

                      Memory                                    the  File    Select    Register     (FSR),   See  Section 4.4

                  PIC16F628A and                                “Indirect Addressing, INDF and FSR Registers”.

                    PIC16F648A

                                             07FFh

                  On-chip Program

                      Memory

                  PIC16F648A only

                                             0FFFh

                                             1FFFh

© 2009 Microchip Technology Inc.                                                                             DS40044G-page 17
PIC16F627A/628A/648A

FIGURE 4-2:        DATA MEMORY MAP OF THE PIC16F627A AND                                    PIC16F628A

                                                                                                                        File

                                                                                                                        Address

Indirect addr.(1)  00h                 Indirect addr.(1)  80h            Indirect addr.(1)  100h     Indirect addr.(1)  180h

      TMR0         01h                 OPTION             81h            TMR0               101h           OPTION       181h

             PCL   02h                 PCL                82h            PCL                102h           PCL          182h

      STATUS       03h                 STATUS             83h            STATUS             103h           STATUS       183h

             FSR   04h                 FSR                84h            FSR                104h           FSR          184h

      PORTA        05h                 TRISA              85h                               105h                        185h

      PORTB        06h                 TRISB              86h            PORTB              106h           TRISB        186h

                   07h                                    87h                               107h                        187h

                   08h                                    88h                               108h                        188h

                   09h                                    89h                               109h                        189h

      PCLATH       0Ah                 PCLATH             8Ah            PCLATH             10Ah           PCLATH       18Ah

      INTCON       0Bh                 INTCON             8Bh            INTCON             10Bh           INTCON       18Bh

          PIR1     0Ch                 PIE1               8Ch                               10Ch                        18Ch

                   0Dh                                    8Dh                               10Dh                        18Dh

      TMR1L        0Eh                 PCON               8Eh                               10Eh                        18Eh

      TMR1H        0Fh                                    8Fh                               10Fh                        18Fh

      T1CON        10h                                    90h

      TMR2         11h                                    91h

      T2CON        12h                 PR2                92h

                   13h                                    93h

                   14h                                    94h

      CCPR1L       15h                                    95h

      CCPR1H       16h                                    96h

      CCP1CON      17h                                    97h

      RCSTA        18h                 TXSTA              98h

      TXREG        19h                 SPBRG              99h

      RCREG        1Ah                 EEDATA             9Ah

                   1Bh                 EEADR              9Bh

                   1Ch                 EECON1             9Ch

                   1Dh                 EECON2(1)          9Dh

                   1Eh                                    9Eh

      CMCON        1Fh                 VRCON              9Fh                               11Fh

                   20h                                    A0h            General            120h

                                                                         Purpose

      General                          General                           Register

      Purpose                          Purpose                           48 Bytes           14Fh

      Register                         Register                                             150h

                                       80 Bytes

      80 Bytes

                   6Fh                                    EFh                               16Fh                        1EFh

                   70h                                    F0h                               170h                        1F0h

      16 Bytes                         accesses                          accesses                          accesses

                                       70h-7Fh                           70h-7Fh                           70h-7Fh

                   7Fh                                    FFh                               17Fh                        1FFh

      Bank 0                           Bank 1                            Bank 2                            Bank 3

             Unimplemented data memory locations,         read as  ‘0’.

Note  1:     Not a physical register.

DS40044G-page 18                                                                                  ©  2009  Microchip  Technology  Inc.
                                                          PIC16F627A/628A/648A

FIGURE 4-3:        DATA MEMORY MAP OF THE PIC16F648A

                                                                                                                     File

                                                                                                                     Address

Indirect addr.(1)  00h                 Indirect addr.(1)  80h            Indirect addr.(1)  100h  Indirect addr.(1)  180h

      TMR0         01h                 OPTION             81h            TMR0               101h  OPTION             181h

             PCL   02h                 PCL                82h            PCL                102h  PCL                182h

      STATUS       03h                 STATUS             83h            STATUS             103h  STATUS             183h

             FSR   04h                 FSR                84h            FSR                104h  FSR                184h

      PORTA        05h                 TRISA              85h                               105h                     185h

      PORTB        06h                 TRISB              86h            PORTB              106h  TRISB              186h

                   07h                                    87h                               107h                     187h

                   08h                                    88h                               108h                     188h

                   09h                                    89h                               109h                     189h

      PCLATH       0Ah                 PCLATH             8Ah            PCLATH             10Ah  PCLATH             18Ah

      INTCON       0Bh                 INTCON             8Bh            INTCON             10Bh  INTCON             18Bh

          PIR1     0Ch                 PIE1               8Ch                               10Ch                     18Ch

                   0Dh                                    8Dh                               10Dh                     18Dh

      TMR1L        0Eh                 PCON               8Eh                               10Eh                     18Eh

      TMR1H        0Fh                                    8Fh                               10Fh                     18Fh

      T1CON        10h                                    90h

      TMR2         11h                                    91h

      T2CON        12h                 PR2                92h

                   13h                                    93h

                   14h                                    94h

      CCPR1L       15h                                    95h

      CCPR1H       16h                                    96h

      CCP1CON      17h                                    97h

      RCSTA        18h                 TXSTA              98h

      TXREG        19h                 SPBRG              99h

      RCREG        1Ah                 EEDATA             9Ah

                   1Bh                 EEADR              9Bh

                   1Ch                 EECON1             9Ch

                   1Dh                 EECON2(1)          9Dh

                   1Eh                                    9Eh

      CMCON        1Fh                 VRCON              9Fh                               11Fh

                   20h                                    A0h                               120h

      General                          General                           General

      Purpose                          Purpose                           Purpose

      Register                         Register                          Register

                                       80 Bytes                          80 Bytes

      80 Bytes

                   6Fh                                    EFh                               16Fh                     1EFh

                   70h                                    F0h                               170h                     1F0h

      16 Bytes                         accesses                          accesses                 accesses

                                       70h-7Fh                           70h-7Fh                  70h-7Fh

                   7Fh                                    FFh                               17Fh                     1FFh

      Bank 0                           Bank 1                            Bank 2                   Bank 3

             Unimplemented data memory locations,         read as  ‘0’.

Note  1:     Not a physical register.

© 2009 Microchip Technology Inc.                                                                  DS40044G-page 19
PIC16F627A/628A/648A

4.2.2       SPECIAL FUNCTION REGISTERS

The SFRs are registers used by the CPU and Periph-

eral functions for controlling the desired operation of

the device (Table 4-3). These registers are static RAM.

The special registers can be classified into two sets

(core and peripheral). The SFRs associated with the

“core” functions are described in this section. Those

related to the operation of the peripheral features are

described in the section of that peripheral feature.

TABLE 4-3:           SPECIAL REGISTERS SUMMARY BANK0

                                                                                                                          Value on       Details

Address     Name     Bit 7  Bit 6              Bit 5       Bit 4    Bit 3    Bit 2                      Bit 1    Bit 0    POR            on Page

                                                                                                                          Reset(1)

Bank 0

00h         INDF     Addressing this location uses contents of FSR to address data memory (not a physical register)       xxxx  xxxx     30

01h         TMR0     Timer0 Module’s Register                                                                             xxxx  xxxx     47

02h         PCL      Program Counter’s (PC) Least Significant Byte                                                        0000  0000     30

03h         STATUS   IRP    RP1                RP0         TO       PD       Z                          DC           C    0001  1xxx     24

04h         FSR      Indirect Data Memory Address Pointer                                                                 xxxx  xxxx     30

05h         PORTA    RA7    RA6                RA5         RA4      RA3      RA2                        RA1      RA0      xxxx  0000     33

06h         PORTB    RB7    RB6                RB5         RB4      RB3      RB2                        RB1      RB0      xxxx  xxxx     38

07h               —  Unimplemented                                                                                        —              —

08h               —  Unimplemented                                                                                        —              —

09h               —  Unimplemented                                                                                        —              —

0Ah         PCLATH   —      —                  —      Write Buffer for upper 5 bits of Program Counter                    ---0  0000     30

0Bh         INTCON   GIE    PEIE               T0IE        INTE     RBIE     T0IF                       INTF     RBIF     0000  000x     26

0Ch         PIR1     EEIF   CMIF               RCIF        TXIF     —        CCP1IF                     TMR2IF   TMR1IF   0000  -000     28

0Dh               —  Unimplemented                                                                                        —              —

0Eh         TMR1L    Holding Register for the Least Significant Byte of the 16-bit TMR1 Register                          xxxx  xxxx     50

0Fh         TMR1H    Holding Register for the Most Significant Byte of the 16-bit TMR1 Register                           xxxx  xxxx     50

10h         T1CON    —      —        T1CKPS1          T1CKPS0       T1OSCEN  T1SYNC                     TMR1CS   TMR1ON   --00  0000     50

11h         TMR2     TMR2 Module’s Register                                                                               0000  0000     54

12h         T2CON    —      TOUTPS3  TOUTPS2          TOUTPS1       TOUTPS0  TMR2ON                     T2CKPS1  T2CKPS0  -000  0000     54

13h               —  Unimplemented                                                                                        —              —

14h               —  Unimplemented                                                                                        —              —

15h         CCPR1L   Capture/Compare/PWM Register (LSB)                                                                   xxxx  xxxx     57

16h         CCPR1H   Capture/Compare/PWM Register (MSB)                                                                   xxxx  xxxx     57

17h         CCP1CON  —      —                  CCP1X       CCP1Y    CCP1M3   CCP1M2                     CCP1M1   CCP1M0   --00  0000     57

18h         RCSTA    SPEN   RX9                SREN        CREN     ADEN     FERR                       OERR     RX9D     0000  000x     74

19h         TXREG    USART Transmit Data Register                                                                         0000  0000     79

1Ah         RCREG    USART Receive Data Register                                                                          0000  0000     82

1Bh               —  Unimplemented                                                                                        —              —

1Ch               —  Unimplemented                                                                                        —              —

1Dh               —  Unimplemented                                                                                        —              —

1Eh               —  Unimplemented                                                                                        —              —

1Fh         CMCON    C2OUT  C1OUT              C2INV       C1INV    CIS      CM2                        CM1      CM0      0000  0000     63

Legend:     - = Unimplemented locations read as ‘0’, u = unchanged, x = unknown, q = value depends on condition, shaded = unimplemented

Note    1:  For the initialization condition for registers tables, refer to Table 14-6 and Table 14-7.

DS40044G-page 20                                                                                                 © 2009 Microchip Technology Inc.
                                                               PIC16F627A/628A/648A

TABLE 4-4:           SPECIAL FUNCTION REGISTERS SUMMARY BANK1

                                                                                                                        Value on         Details

Address     Name     Bit 7          Bit 6     Bit 5        Bit 4          Bit 3   Bit 2                 Bit 1   Bit 0   POR              on Page

                                                                                                                        Reset(1)

Bank 1

80h         INDF     Addressing this location uses contents of FSR to address data memory (not a physical               xxxx  xxxx       30

                     register)

81h         OPTION   RBPU         INTEDG      T0CS         T0SE           PSA     PS2                   PS1     PS0     1111  1111       25

82h         PCL      Program Counter’s (PC) Least Significant Byte                                                      0000  0000       30

83h         STATUS   IRP            RP1       RP0          TO             PD      Z                     DC      C       0001  1xxx       24

84h         FSR      Indirect Data Memory Address Pointer                                                               xxxx  xxxx       30

85h         TRISA    TRISA7       TRISA6      TRISA5       TRISA4         TRISA3  TRISA2                TRISA1  TRISA0  1111  1111       33

86h         TRISB    TRISB7       TRISB6      TRISB5       TRISB4         TRISB3  TRISB2                TRISB1  TRISB0  1111  1111       38

87h               —  Unimplemented                                                                                      —                —

88h               —  Unimplemented                                                                                      —                —

89h               —  Unimplemented                                                                                      —                —

8Ah         PCLATH   —              —              —       Write Buffer for upper 5 bits of Program Counter             ---0  0000       30

8Bh         INTCON   GIE            PEIE      T0IE         INTE           RBIE    T0IF                  INTF    RBIF    0000  000x       26

8Ch         PIE1     EEIE         CMIE        RCIE         TXIE           —       CCP1IE                TMR2IE  TMR1IE  0000  -000       27

8Dh               —  Unimplemented                                                                                      —                —

8Eh         PCON     —              —              —       —              OSCF    —                     POR     BOR     ----  1-0x       29

8Fh               —  Unimplemented                                                                                      —                —

90h               —  Unimplemented                                                                                      —                —

91h               —  Unimplemented                                                                                      —                —

92h         PR2      Timer2 Period Register                                                                             1111  1111       54

93h               —  Unimplemented                                                                                      —                —

94h               —  Unimplemented                                                                                      —                —

95h               —  Unimplemented                                                                                      —                —

96h               —  Unimplemented                                                                                      —                —

97h               —  Unimplemented                                                                                      —                —

98h         TXSTA    CSRC           TX9       TXEN         SYNC           —       BRGH                  TRMT    TX9D    0000  -010       73

99h         SPBRG    Baud Rate Generator Register                                                                       0000  0000       75

9Ah         EEDATA   EEPROM Data Register                                                                               xxxx  xxxx       91

9Bh         EEADR    EEPROM Address Register                                                                            xxxx  xxxx       92

9Ch         EECON1   —              —              —       —        WRERR         WREN                  WR      RD      ----  x000       92

9Dh         EECON2   EEPROM Control Register 2 (not a physical register)                                                ----  ----       92

9Eh               —  Unimplemented                                                                                      —                —

9Fh         VRCON    VREN         VROE        VRR          —              VR3     VR2                   VR1     VR0     000-  0000       69

Legend:     - = Unimplemented locations read as ‘0’, u = unchanged, x = unknown, q = value depends on condition, shaded = unimplemented

Note    1:  For the initialization condition for registers tables, refer to Table 14-6 and Table 14-7.

© 2009 Microchip Technology Inc.                                                                                        DS40044G-page 21
PIC16F627A/628A/648A

TABLE 4-5:          SPECIAL FUNCTION REGISTERS SUMMARY BANK2

                                                                                                                      Value on            Details

Address     Name    Bit 7          Bit 6      Bit 5       Bit 4    Bit 3  Bit 2                         Bit 1  Bit 0  POR                 on Page

                                                                                                                      Reset(1)

Bank 2

100h        INDF    Addressing this location uses contents of FSR to address data memory (not a physical register)    xxxx  xxxx          30

101h        TMR0    Timer0 Module’s Register                                                                          xxxx  xxxx          47

102h        PCL     Program Counter’s (PC) Least Significant Byte                                                     0000  0000          30

103h        STATUS  IRP            RP1        RP0         TO       PD     Z                             DC     C      0001  1xxx          24

104h        FSR     Indirect Data Memory Address Pointer                                                              xxxx  xxxx          30

105h             —  Unimplemented                                                                                     —                   —

106h        PORTB   RB7            RB6        RB5         RB4      RB3    RB2                           RB1    RB0    xxxx  xxxx          38

107h             —  Unimplemented                                                                                     —                   —

108h             —  Unimplemented                                                                                     —                   —

109h             —  Unimplemented                                                                                     —                   —

10Ah        PCLATH  —              —          —           Write Buffer for upper 5 bits of Program Counter            ---0  0000          30

10Bh        INTCON  GIE    PEIE               T0IE        INTE     RBIE   T0IF                          INTF   RBIF   0000  000x          26

10Ch             —  Unimplemented                                                                                     —                   —

10Dh             —  Unimplemented                                                                                     —                   —

10Eh             —  Unimplemented                                                                                     —                   —

10Fh             —  Unimplemented                                                                                     —                   —

110h             —  Unimplemented                                                                                     —                   —

111h             —  Unimplemented                                                                                     —                   —

112h             —  Unimplemented                                                                                     —                   —

113h             —  Unimplemented                                                                                     —                   —

114h             —  Unimplemented                                                                                     —                   —

115h             —  Unimplemented                                                                                     —                   —

116h             —  Unimplemented                                                                                     —                   —

117h             —  Unimplemented                                                                                     —                   —

118h             —  Unimplemented                                                                                     —                   —

119h             —  Unimplemented                                                                                     —                   —

11Ah             —  Unimplemented                                                                                     —                   —

11Bh             —  Unimplemented                                                                                     —                   —

11Ch             —  Unimplemented                                                                                     —                   —

11Dh             —  Unimplemented                                                                                     —                   —

11Eh             —  Unimplemented                                                                                     —                   —

11Fh             —  Unimplemented                                                                                     —                   —

Legend:     - = Unimplemented locations read as ‘0’, u = unchanged, x = unknown, q = value depends on condition, shaded = unimplemented.

Note    1:  For the initialization condition for registers tables, refer to Table 14-6 and Table 14-7.

DS40044G-page 22                                                                                               © 2009 Microchip Technology Inc.
                                                              PIC16F627A/628A/648A

TABLE 4-6:          SPECIAL FUNCTION REGISTERS SUMMARY BANK3

                                                                                                                        Value on         Details

Address     Name    Bit 7          Bit 6  Bit 5           Bit 4    Bit 3   Bit 2                        Bit 1   Bit 0   POR              on Page

                                                                                                                        Reset(1)

Bank 3

180h        INDF    Addressing this location uses contents of FSR to address data memory (not a physical register)      xxxx  xxxx       30

181h        OPTION  RBPU          INTEDG  T0CS            T0SE     PSA     PS2                          PS1     PS0     1111  1111       25

182h        PCL     Program Counter’s (PC) Least Significant Byte                                                       0000  0000       30

183h        STATUS  IRP            RP1    RP0             TO       PD      Z                            DC      C       0001  1xxx       24

184h        FSR     Indirect Data Memory Address Pointer                                                                xxxx  xxxx       30

185h             —  Unimplemented                                                                                       —                —

186h        TRISB   TRISB7        TRISB6  TRISB5          TRISB4   TRISB3  TRISB2                       TRISB1  TRISB0  1111  1111       38

187h             —  Unimplemented                                                                                       —                —

188h             —  Unimplemented                                                                                       —                —

189h             —  Unimplemented                                                                                       —                —

18Ah        PCLATH  —              —      —               Write Buffer for upper 5 bits of Program Counter              ---0  0000       30

18Bh        INTCON  GIE           PEIE    T0IE            INTE     RBIE    T0IF                         INTF    RBIF    0000  000x       26

18Ch             —  Unimplemented                                                                                       —                —

18Dh             —  Unimplemented                                                                                       —                —

18Eh             —  Unimplemented                                                                                       —                —

18Fh             —  Unimplemented                                                                                       —                —

190h             —  Unimplemented                                                                                       —                —

191h             —  Unimplemented                                                                                       —                —

192h             —  Unimplemented                                                                                       —                —

193h             —  Unimplemented                                                                                       —                —

194h             —  Unimplemented                                                                                       —                —

195h             —  Unimplemented                                                                                       —                —

196h             —  Unimplemented                                                                                       —                —

197h             —  Unimplemented                                                                                       —                —

198h             —  Unimplemented                                                                                       —                —

199h             —  Unimplemented                                                                                       —                —

19Ah             —  Unimplemented                                                                                       —                —

19Bh             —  Unimplemented                                                                                       —                —

19Ch             —  Unimplemented                                                                                       —                —

19Dh             —  Unimplemented                                                                                       —                —

19Eh             —  Unimplemented                                                                                       —                —

19Fh             —  Unimplemented                                                                                       —                —

Legend:     - = Unimplemented locations read as ‘0’, u = unchanged, x = unknown, q = value depends on condition, shaded = unimplemented

Note    1:  For the initialization condition for registers tables, refer to Table 14-6 and Table 14-7.

© 2009 Microchip Technology Inc.                                                                                        DS40044G-page 23
PIC16F627A/628A/648A

4.2.2.1           Status Register                                     For example, CLRF        STATUS will clear the upper-three

The Status register, shown in Register 4-1, contains the              bits and set the Z bit.     This leaves the Status register

arithmetic status of the ALU; the Reset status and the                as “000uu1uu” (where u = unchanged).

bank select bits for data memory (SRAM).                              It is recommended, therefore, that only BCF,          BSF,

The  Status  register      can  be  the    destination   for  any     SWAPF and MOVWF instructions are used to alter the

instruction, like any other register. If the Status register          Status register because these instructions do not affect

is the destination for an instruction that affects the Z,             any Status bit. For other instructions, not affecting any

DC   or  C  bits,    then  the  write  to  these  three  bits  is     Status bits, see the “Instruction Set Summary”.

disabled. These bits are set or cleared according to the                         Note:  The C and DC bits operate as a Borrow

device logic. Furthermore, the TO and PD bits are non-                                  and Digit Borrow out bit, respectively, in

writable. Therefore, the result of an instruction with the                              subtraction. See the SUBLW and SUBWF

Status register as destination may be different than                                    instructions for examples.

intended.

REGISTER 4-1:              STATUS – STATUS REGISTER                (ADDRESS: 03h, 83h, 103h, 183h)

                                R/W-0      R/W-0         R/W-0     R-1                  R-1       R/W-x          R/W-x      R/W-x

                                IRP        RP1                RP0  TO                   PD             Z         DC         C

                           bit 7                                                                                                  bit 0

             bit  7        IRP: Register Bank Select bit (used for indirect addressing)

                           1 = Bank 2, 3 (100h-1FFh)

                           0 = Bank 0, 1 (00h-FFh)

             bit  6-5      RP<1:0>: Register Bank Select bits (used for direct addressing)

                           00 = Bank 0 (00h-7Fh)

                           01 = Bank 1 (80h-FFh)

                           10 = Bank 2 (100h-17Fh)

                           11 = Bank 3 (180h-1FFh)

             bit  4        TO: Time Out bit

                           1 = After power-up, CLRWDT instruction or SLEEP instruction

                           0 = A WDT time out occurred

             bit  3        PD: Power-down bit

                           1 = After power-up or by the CLRWDT instruction

                           0 = By execution of the SLEEP instruction

             bit  2        Z: Zero bit

                           1 = The result of an arithmetic or logic operation is zero

                           0 = The result of an arithmetic or logic operation is not zero

             bit  1        DC: Digit Carry/Borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instructions) (for Borrow the polarity

                           is reversed)

                           1 = A carry-out from the 4th low order bit of the result occurred

                           0 = No carry-out from the 4th low order bit of the result

             bit  0        C: Carry/Borrow bit (ADDWF, ADDLW,SUBLW,SUBWF                instructions)

                           1 = A carry-out from the Most Significant bit of the result occurred

                           0 = No carry-out from the Most Significant bit of the result occurred

                                Note:      For Borrow, the polarity is reversed. A subtraction is executed by adding the two’s

                                           complement of the second operand. For rotate (RRF, RLF) instructions, this bit is

                                           loaded with either the high or low order bit of the source register.

                           Legend:

                           R = Readable bit                    W = Writable bit         U = Unimplemented bit, read as ‘0’

                           -n = Value at POR                   ‘1’ = Bit is set         ‘0’ = Bit is cleared  x = Bit is unknown

DS40044G-page 24                                                                                  © 2009 Microchip Technology Inc.
                                                             PIC16F627A/628A/648A

4.2.2.2       OPTION Register

The Option register is a readable and writable register,                    Note:  To achieve a 1:1 prescaler assignment for

which  contains  various  control  bits  to  configure  the                        TMR0, assign the prescaler to the WDT

TMR0/WDT prescaler, the external RB0/INT interrupt,                                (PSA = 1). See Section 6.3.1 “Switching

TMR0 and the weak pull-ups on PORTB.                                               Prescaler Assignment”.

REGISTER 4-2:      OPTION_REG – OPTION REGISTER (ADDRESS: 81h, 181h)

                          R/W-1          R/W-1  R/W-1           R/W-1              R/W-1  R/W-1          R/W-1         R/W-1

                          RBPU     INTEDG       T0CS            T0SE               PSA    PS2            PS1           PS0

                          bit 7                                                                                              bit 0

         bit  7           RBPU: PORTB Pull-up Enable bit

                          1 = PORTB pull-ups are disabled

                          0 = PORTB pull-ups are enabled by individual port latch values

         bit  6           INTEDG: Interrupt Edge Select bit

                          1 = Interrupt on rising edge of RB0/INT pin

                          0 = Interrupt on falling edge of RB0/INT pin

         bit  5           T0CS: TMR0 Clock Source Select bit

                          1 = Transition on RA4/T0CKI/CMP2 pin

                          0 = Internal instruction cycle clock (CLKOUT)

         bit  4           T0SE: TMR0 Source Edge Select bit

                          1 = Increment on high-to-low transition on RA4/T0CKI/CMP2 pin

                          0 = Increment on low-to-high transition on RA4/T0CKI/CMP2 pin

         bit  3           PSA: Prescaler Assignment bit

                          1 = Prescaler is assigned to the WDT

                          0 = Prescaler is assigned to the Timer0 module

         bit  2-0         PS<2:0>: Prescaler Rate Select bits

                                   Bit Value    TMR0 Rate      WDT Rate

                                   000          1:2             1:1

                                   001          1:4             1:2

                                   010          1:8             1:4

                                   011          1 : 16          1:8

                                   100          1 : 32          1 : 16

                                   101          1 : 64          1 : 32

                                   110          1 : 128         1 : 64

                                   111          1 : 256         1 : 128

                          Legend:

                          R = Readable bit                W = Writable bit         U = Unimplemented bit, read as ‘0’

                          -n = Value at POR               ‘1’ = Bit is set         ‘0’ = Bit is cleared  x = Bit is unknown

© 2009 Microchip Technology Inc.                                                                           DS40044G-page 25
PIC16F627A/628A/648A

4.2.2.3       INTCON Register

The  INTCON      register  is     a  readable  and  writable                 Note:  Interrupt flag bits get set when an interrupt

register, which contains the various enable and flag bits                           condition occurs regardless of the state of

for all interrupt sources except the comparator module.                             its corresponding enable bit or the global

See      Section 4.2.2.4       “PIE1  Register”         and                         enable bit, GIE (INTCON<7>).

Section 4.2.2.5 “PIR1 Register” for a description of

the comparator enable and flag bits.

REGISTER 4-3:             INTCON – INTERRUPT CONTROL REGISTER (ADDRESS: 0Bh, 8Bh, 10Bh, 18Bh)

                           R/W-0      R/W-0             R/W-0      R/W-0            R/W-0   R/W-0         R/W-0         R/W-x

                               GIE    PEIE              T0IE       INTE             RBIE    T0IF          INTF          RBIF

                           bit 7                                                                                              bit 0

         bit  7            GIE: Global Interrupt Enable bit

                           1 = Enables all un-masked interrupts

                           0 = Disables all interrupts

         bit  6            PEIE: Peripheral Interrupt Enable bit

                           1 = Enables all un-masked peripheral interrupts

                           0 = Disables all peripheral interrupts

         bit  5            T0IE: TMR0 Overflow Interrupt Enable bit

                           1 = Enables the TMR0 interrupt

                           0 = Disables the TMR0 interrupt

         bit  4            INTE: RB0/INT External Interrupt Enable bit

                           1 = Enables the RB0/INT external interrupt

                           0 = Disables the RB0/INT external interrupt

         bit  3            RBIE: RB Port Change Interrupt Enable bit

                           1 = Enables the RB port change interrupt

                           0 = Disables the RB port change interrupt

         bit  2            T0IF: TMR0 Overflow Interrupt Flag bit

                           1 = TMR0 register has overflowed (must be cleared in software)

                           0 = TMR0 register did not overflow

         bit  1            INTF: RB0/INT External Interrupt Flag bit

                           1 = The RB0/INT external interrupt occurred (must be cleared in  software)

                           0 = The RB0/INT external interrupt did not occur

         bit  0            RBIF: RB Port Change Interrupt Flag bit

                           1 = When at least one of the RB<7:4> pins changes state (must    be cleared    in  software)

                           0 = None of the RB<7:4> pins have changed state

                           Legend:

                           R = Readable bit                W = Writable bit         U = Unimplemented bit, read as ‘0’

                           -n = Value at POR               ‘1’ = Bit is set         ‘0’ = Bit is cleared  x = Bit is unknown

DS40044G-page 26                                                                            © 2009 Microchip Technology Inc.
                                                      PIC16F627A/628A/648A

4.2.2.4       PIE1 Register

This register contains interrupt enable bits.

REGISTER 4-4:    PIE1 – PERIPHERAL INTERRUPT ENABLE REGISTER 1 (ADDRESS: 8Ch)

                 R/W-0            R/W-0        R/W-0    R/W-0    U-0  R/W-0            R/W-0         R/W-0

                 EEIE             CMIE         RCIE     TXIE     —    CCP1IE           TMR2IE        TMR1IE

                 bit 7                                                                                     bit 0

         bit  7  EEIE: EE Write Complete Interrupt Enable Bit

                 1 = Enables the EE write complete interrupt

                 0 = Disables the EE write complete interrupt

         bit  6  CMIE: Comparator Interrupt Enable bit

                 1 = Enables the comparator interrupt

                 0 = Disables the comparator interrupt

         bit  5  RCIE: USART Receive Interrupt Enable bit

                 1 = Enables the USART receive interrupt

                 0 = Disables the USART receive interrupt

         bit  4  TXIE: USART Transmit Interrupt Enable bit

                 1 = Enables the USART transmit interrupt

                 0 = Disables the USART transmit interrupt

         bit  3  Unimplemented: Read as ‘0’

         bit  2  CCP1IE: CCP1 Interrupt Enable bit

                 1 = Enables the CCP1 interrupt

                 0 = Disables the CCP1 interrupt

         bit  1  TMR2IE: TMR2 to PR2 Match Interrupt Enable bit

                 1 = Enables the TMR2 to PR2 match interrupt

                 0 = Disables the TMR2 to PR2 match interrupt

         bit  0  TMR1IE: TMR1 Overflow Interrupt Enable bit

                 1 = Enables the TMR1 overflow interrupt

                 0 = Disables the TMR1 overflow interrupt

                 Legend:

                 R = Readable bit              W = Writable bit  U = Unimplemented bit, read as ‘0’

                 -n = Value at POR             ‘1’ = Bit is set  ‘0’ = Bit is cleared  x = Bit is unknown

© 2009 Microchip Technology Inc.                                                       DS40044G-page 27
PIC16F627A/628A/648A

4.2.2.5        PIR1 Register                                       Note:  Interrupt flag bits get set when an interrupt

This register  contains interrupt flag bits.                              condition occurs regardless of the state of

                                                                          its corresponding enable bit or the global

                                                                          enable     bit,   GIE       (INTCON<7>).  User

                                                                          software    should    ensure     the  appropriate

                                                                          interrupt   flag      bits  are  clear  prior   to

                                                                          enabling an interrupt.

REGISTER       4-5:  PIR1 – PERIPHERAL        INTERRUPT REGISTER 1 (ADDRESS: 0Ch)

                     R/W-0         R/W-0      R-0             R-0         U-0           R/W-0         R/W-0       R/W-0

                     EEIF          CMIF       RCIF          TXIF          —           CCP1IF          TMR2IF      TMR1IF

                     bit 7                                                                                                bit 0

         bit   7     EEIF: EEPROM Write Operation Interrupt Flag bit

                     1 = The write operation completed (must be cleared in software)

                     0 = The write operation has not completed or has not been started

         bit   6     CMIF: Comparator Interrupt Flag bit

                     1 = Comparator output has changed

                     0 = Comparator output has not changed

         bit   5     RCIF: USART Receive Interrupt Flag bit

                     1 = The USART receive buffer is full

                     0 = The USART receive buffer is empty

         bit   4     TXIF: USART Transmit Interrupt Flag bit

                     1 = The USART transmit buffer is empty

                     0 = The USART transmit buffer is full

         bit   3     Unimplemented: Read as ‘0’

         bit   2     CCP1IF: CCP1 Interrupt Flag bit

                     Capture Mode

                     1 = A TMR1 register capture occurred (must be cleared in software)

                     0 = No TMR1 register capture occurred

                     Compare Mode

                     1 = A TMR1 register compare match occurred (must be cleared in software)

                     0 = No TMR1 register compare match occurred

                     PWM Mode

                     Unused in this mode

         bit   1     TMR2IF: TMR2 to PR2 Match Interrupt Flag bit

                     1 = TMR2 to PR2 match occurred (must be cleared in software)

                     0 = No TMR2 to PR2 match occurred

         bit   0     TMR1IF: TMR1 Overflow Interrupt Flag bit

                     1 = TMR1 register overflowed (must be cleared in software)

                     0 = TMR1 register did not overflow

                     Legend:

                     R = Readable bit            W = Writable bit         U = Unimplemented bit, read as ‘0’

                     -n = Value at POR           ‘1’ = Bit is set         ‘0’ = Bit is cleared        x = Bit is unknown

DS40044G-page 28                                                                           © 2009 Microchip Technology Inc.
                                                       PIC16F627A/628A/648A

4.2.2.6  PCON Register

The PCON register contains flag bits to differentiate                    Note:  BOR is unknown on Power-on Reset. It

between a Power-on Reset, an external MCLR Reset,                               must then be set by the user and checked

WDT Reset or a Brown-out Reset.                                                 on subsequent Resets to see if BOR is

                                                                                cleared,  indicating  a        brown-out      has

                                                                                occurred. The BOR Status bit is a “don’t

                                                                                care” and is not necessarily predictable if

                                                                                the    brown-out      circuit  is   disabled  (by

                                                                                clearing  the         BOREN         bit  in   the

                                                                                Configuration Word).

REGISTER 4-6:     PCON – POWER CONTROL                 REGISTER (ADDRESS: 8Eh)

                  U-0             U-0  U-0             U-0                      R/W-1     U-0         R/W-0              R/W-x

                  —               —    —                 —                      OSCF      —                    POR       BOR

                  bit 7                                                                                                       bit 0

         bit 7-4  Unimplemented: Read as ‘0’

         bit 3    OSCF: INTOSC Oscillator Frequency bit

                  1 = 4 MHz typical

                  0 = 48 kHz typical

         bit 2    Unimplemented: Read as ‘0’

         bit 1    POR: Power-on Reset Status bit

                  1 = No Power-on Reset occurred

                  0 = A Power-on Reset occurred (must be set in software after a Power-on Reset occurs)

         bit 0    BOR: Brown-out Reset Status bit

                  1 = No Brown-out Reset occurred

                  0 = A Brown-out Reset occurred (must be set in software after a Brown-out Reset occurs)

                  Legend:

                  R = Readable bit            W = Writable bit                  U = Unimplemented bit, read as ‘0’

                  -n = Value at POR                    ‘1’ = Bit is set         ‘0’ = Bit is cleared  x = Bit is unknown

© 2009 Microchip Technology Inc.                                                                               DS40044G-page 29
PIC16F627A/628A/648A

4.3        PCL and PCLATH                                               The stack operates as a circular buffer. This means that

The Program Counter (PC) is 13-bits wide. The low                       after the stack has been PUSHed eight times, the ninth

                                                                        PUSH overwrites the value that was stored from the

byte comes from the PCL register, which is a readable                   first PUSH. The tenth PUSH overwrites the second

and writable register. The high byte (PC<12:8>) is not                  PUSH (and so on).

directly readable or writable and comes from PCLATH.

On any Reset, the PC is cleared. Figure 4-4 shows the                   Note 1:        There are no Status bits to indicate stack

two situations for loading the PC. The upper example                                   overflow or stack underflow conditions.

in Figure 4-4 shows how the PC is loaded on a write to                             2:  There   are       no    instructions/mnemonics

PCL (PCLATH<4:0> → PCH). The lower example in                                          called PUSH or POP. These are actions

Figure 4-4 shows how the PC is loaded during a CALL                                    that  occur       from  the   execution    of        the

or GOTO instruction (PCLATH<4:3> → PCH).                                               CALL,   RETURN,             RETLW and RETFIE

                                                                                       instructions,     or    the   vectoring    to        an

FIGURE 4-4:                     LOADING OF PC IN                                       interrupt address.

                                DIFFERENT SITUATIONS

                                                                        4.4         Indirect Addressing, INDF and

           PCH                   PCL                                                FSR Registers

       12              8     7                    0  Instruction with   The INDF register is not a physical register. Addressing

PC                                                   PCL as             the INDF register will cause indirect addressing.

                                                     Destination

                    PCLATH<4:0>               8                         Indirect   addressing  is     possible      by  using     the  INDF

           5                                         ALU result

                                                                        register.   Any   instruction    using      the     INDF  register

                       PCLATH                                           actually accesses data pointed to by the File Select

                                                                        Register    (FSR).   Reading     INDF       itself      indirectly  will

           PCH                  PCL                                     produce     00h.  Writing    to  the   INDF     register  indirectly

       12  11   10  8     7                       0                     results in a no-operation (although Status bits may be

PC                                                   GOTO,    CALL      affected).  An    effective   9-bit    address      is  obtained    by

                                                                        concatenating the 8-bit FSR register and the IRP bit

       2   PCLATH<4:3>                    11                            (STATUS<7>), as shown in Figure 4-5.

                                                     Opcode <10:0>

                                                                        A simple program to clear RAM location 20h-2Fh using

                    PCLATH                                              indirect addressing is shown in Example 4-1.

                                                                        EXAMPLE 4-1:                 INDIRECT ADDRESSING

4.3.1           COMPUTED GOTO                                                       MOVLW     0x20           ;initialize        pointer

A computed GOTO is accomplished by adding an offset                                 MOVWF     FSR            ;to   RAM

to the program counter (ADDWF             PCL). When doing a            NEXT        CLRF      INDF           ;clear     INDF    register

table     read  using     a     computed             method,      care              INCF      FSR            ;inc   pointer

                                          GOTO                                      BTFSS     FSR,4          ;all   done?

should be exercised if the table location crosses a PCL                             GOTO      NEXT           ;no   clear    next

memory boundary (each 256-byte block). Refer to the                                                          ;yes   continue

Application Note AN556 “Implementing a Table Read”

(DS00556).

4.3.2           STACK

The    PIC16F627A/628A/648A               family     has  an  8-level

deep x 13-bit wide hardware stack (Figure 4-1). The

stack space is not part of either program or data space

and the Stack Pointer is not readable or writable. The

PC is PUSHed onto the stack when a CALL instruction

is executed or an interrupt causes a branch. The stack

is POPed in the event of a RETURN,                   RETLW or a

RETFIE instruction execution. PCLATH is not affected

by a PUSH or POP operation.

DS40044G-page 30                                                                                     © 2009 Microchip Technology Inc.
                                                                PIC16F627A/628A/648A

FIGURE 4-5:           DIRECT/INDIRECT ADDRESSING PIC16F627A/628A/648A

Status       Direct Addressing                                                  Status       Indirect Addressing

Register                                                                        Register

RP1  RP0     6        from opcode      0                                        IRP          7   FSR Register     0

bank select                       location select                                   bank select  location select

                                       00          01           10          11

                                  00h                                               180h

                RAM

                File

                Registers

                                  7Fh                                               1FFh

                                       Bank 0      Bank 1       Bank 2      Bank 3

     Note:      For memory        map  detail see  Figure 4-3,  Figure 4-2  and Figure 4-1.

© 2009 Microchip Technology Inc.                                                                 DS40044G-page 31
PIC16F627A/628A/648A

NOTES:

DS40044G-page 32      © 2009 Microchip Technology Inc.
                                                                          PIC16F627A/628A/648A

5.0          I/O PORTS                                                    In  one  of  the    comparator  modes      defined   by       the

                                                                          CMCON register, pins RA3 and RA4 become outputs

The PIC16F627A/628A/648A have two ports, PORTA                            of  the  comparators.    The  TRISA<4:3>       bits  must     be

and     PORTB.       Some     pins    for   these      I/O  ports   are   cleared to enable outputs to use this function.

multiplexed with alternate functions for the peripheral

features on the device. In general, when a peripheral is                  EXAMPLE 5-1:             INITIALIZING PORTA

enabled,     that    pin   may    not   be    used     as   a  general    CLRF     PORTA           ;Initialize       PORTA     by

purpose I/O pin.                                                                                   ;setting

                                                                                                   ;output     data   latches

5.1          PORTA and TRISA Registers                                    MOVLW    0x07            ;Turn   comparators         off  and

                                                                          MOVWF    CMCON           ;enable     pins   for   I/O

PORTA is an 8-bit wide latch. RA4 is a Schmitt Trigger                                             ;functions

input and an open drain output. Port RA4 is multiplexed                   BCF      STATUS,    RP1

with the T0CKI clock input. RA5(1) is a Schmitt Trigger                   BSF      STATUS,    RP0 ;Select      Bank1

input only and has no output drivers. All other RA port                   MOVLW    0x1F            ;Value    used    to   initialize

pins have Schmitt Trigger input levels and full CMOS                                               ;data   direction

output drivers. All pins have data direction bits (TRIS                   MOVWF    TRISA           ;Set   RA<4:0>     as   inputs

registers) which can configure these pins as input or                                              ;TRISA<5>       always

output.                                                                                            ;read   as  ‘1’.

                                                                                                   ;TRISA<7:6>

A  ‘1’  in   the  TRISA       register  puts      the  corresponding                               ;depend     on  oscillator

output driver in a High-impedance mode. A ‘0’ in the                                               ;mode

TRISA register puts the contents of the output latch on

the selected pin(s).                                                      FIGURE 5-1:              BLOCK DIAGRAM OF

Reading the PORTA register reads the status of the                                                 RA0/AN0:RA1/AN1 PINS

pins whereas writing to it will write to the port latch. All

write operations are read-modify-write operations. So a                   Data

write to a port implies that the port pins are first read,                Bus          D      Q

then this value is modified and written to the port data                                                                       VDD

latch.                                                                    WR

                                                                          PORTA           CK  Q

The PORTA pins are multiplexed with comparator and

voltage     reference     functions.    The   operation        of  these               Data Latch

pins    are  selected      by   control     bits   in  the     CMCON                   D      Q                                    I/O  Pin

(Comparator Control register) register and the VRCON                      WR

(Voltage     Reference     Control      register)      register.   When   TRISA           CK  Q

selected as a comparator input, these pins will read                                   TRIS Latch         Analog

as ‘0’s.                                                                                           Input Mode                  VSS

   Note 1:        RA5 shares function with VPP. When VPP                                           (CMCON Reg.)

                  voltage  levels     are   applied    to   RA5,    the

                  device will enter Programming mode.                     RD                            Schmitt Trigger

                                                                          TRISA                           Input Buffer

            2:    On Reset, the TRISA register is set to all

                  inputs. The digital inputs (RA<3:0>) are

                  disabled and the comparator inputs are                                                  Q          D

                  forced   to   ground        to   reduce      current

                  consumption.                                                                                 EN

            3:    TRISA<6:7>      is    overridden     by   oscillator

                  configuration.      When        PORTA<6:7>        is    RD PORTA

                  overridden,   the     data  reads    ‘0’     and  the

                  TRISA<6:7> bits are ignored.

TRISA controls the direction of the RA pins, even when                    To Comparator

they are being used as comparator inputs. The user

must make sure to keep the pins configured as inputs

when using them as comparator inputs.

The RA2 pin will also function as the output for the

voltage reference. When in this mode, the VREF pin is a

very high-impedance output. The user must configure

TRISA<2>        bit  as   an  input    and  use    high-impedance

loads.

© 2009 Microchip Technology Inc.                                                                                   DS40044G-page 33
PIC16F627A/628A/648A

FIGURE      5-2:           BLOCK DIAGRAM OF

                           RA2/AN2/VREF PIN

Data

Bus         D           Q

                                                VDD

WR

PORTA          CK       Q

            Data   Latch

            D           Q

WR                                              RA2       Pin

TRISA          CK       Q      Analog

                               Input Mode       VSS

            TRIS   Latch       (CMCON Reg.)

RD                             Schmitt Trigger

TRISA                          Input Buffer

                               Q           D

                                       EN

RD PORTA

To Comparator

               VROE

                   VREF

FIGURE 5-3:                BLOCK  DIAGRAM OF THE RA3/AN3/CMP1 PIN

     Data                                       Comparator Mode = 110  (CMCON Reg.)

     Bus       D           Q                                                                              VDD

     WR                                Comparator Output

     PORTA                                                             1

                   CK      Q

                  Data  Latch                                          0

               D           Q

     WR                                                                                                        RA3  Pin

     TRISA         CK      Q                                                                Analog

                                                                                         Input Mode       VSS

               TRIS     Latch                                                            (CMCON Reg.)

     RD                                                                                  Schmitt Trigger

     TRISA                                                                                  Input Buffer

                                                                          Q              D

                                                                                     EN

     RD PORTA

     To Comparator

DS40044G-page 34                                                                            © 2009 Microchip Technology  Inc.
                                                       PIC16F627A/628A/648A

FIGURE 5-4:         BLOCK         DIAGRAM OF RA4/T0CKI/CMP2 PIN

Data                                     Comparator Mode = 110  (CMCON Reg.)

Bus          D          Q

WR                                Comparator Output

PORTA                                                           1

                CK      Q

             Data   Latch                                       0

             D          Q

WR                                                                                               N                 RA4 Pin

TRISA           CK      Q

             TRIS   Latch                                                                        Vss      Vss

                                                                                      Schmitt Trigger

                    RD TRISA                                                                Input Buffer

                                                                          Q           D

                                                                                  EN

RD PORTA

TMR0 Clock Input

FIGURE 5-5:         BLOCK DIAGRAM OF THE                        FIGURE 5-6:                 BLOCK DIAGRAM OF

                    RA5/MCLR/VPP PIN                                                        RA6/OSC2/CLKOUT PIN

                                                                From OSC1                                 OSC      VDD

                                                                                                          Circuit

          MCLRE (Configuration Bit)                             CLKOUT(FOSC/4)

MCLR                                                                                          1
circuit

          MCLR Filter                                           WR             D      Q       0

Program                 Schmitt Trigger                         PORTA          CK     Q

mode                       Input Buffer

             HV Detect                                          FOSC =    (2)  Data  Latch                         VSS

                                         RA5/MCLR/VPP           101, 111

    Data                                                        WR             D      Q

    Bus                                  VSS                    TRISA          CK

                                                                                      Q

                                                                               TRIS  Latch

                                                                RD                                                 Schmitt

                                                                TRISA                                              Trigger

RD                                                              FOSC =                                             Input Buffer

TRISA               VSS                                         011, 100, 110 (1)

                    Q      D                                                                  Q       D

                           EN                                                                       EN

RD                                                              RD PORTA

PORTA

                                                                Note      1:   INTOSC with RA6 = I/O or RC with RA6 = I/O.

                                                                          2:   INTOSC with RA6 = CLKOUT or RC with

                                                                               RA6 = CLKOUT.

© 2009 Microchip Technology Inc.                                                                          DS40044G-page 35
PIC16F627A/628A/648A

FIGURE 5-7:       BLOCK DIAGRAM OF RA7/OSC1/CLKIN PIN

                  To Clock Circuits

                                                                                 VDD

Data Bus          D       Q

WR PORTA                                                                         RA7/OSC1/CLKIN Pin

                  CK      Q

                  Data    Latch

                  D       Q                                                      VSS

WR TRISA          CK      Q

                  TRIS    Latch

RD TRISA

FOSC = 100,       101(1)

                                     Q      D

                                                                Schmitt Trigger

                                        EN                      Input Buffer

RD PORTA

Note         1:   INTOSC  with CLKOUT   and INTOSC  with  I/O.

DS40044G-page 36                                                                 © 2009 Microchip Technology  Inc.
                                                             PIC16F627A/628A/648A

TABLE 5-1:        PORTA FUNCTIONS

         Name     Function                Input      Output                            Description

                                          Type       Type

RA0/AN0                    RA0            ST         CMOS    Bidirectional I/O port

                           AN0            AN           —     Analog comparator input

RA1/AN1                    RA1            ST         CMOS    Bidirectional I/O port

                           AN1            AN           —     Analog comparator input

RA2/AN2/VREF               RA2            ST         CMOS    Bidirectional I/O port

                           AN2            AN           —     Analog comparator input

                         VREF             —            AN    VREF output

RA3/AN3/CMP1               RA3            ST         CMOS    Bidirectional I/O port

                           AN3            AN           —     Analog comparator input

                         CMP1             —          CMOS    Comparator 1 output

RA4/T0CKI/CMP2             RA4            ST           OD    Bidirectional I/O port. Output is open drain type.

                         T0CKI            ST           —     External clock input for TMR0 or comparator output

                         CMP2             —            OD    Comparator 2 output

RA5/MCLR/VPP               RA5            ST           —     Input port

                         MCLR             ST           —     Master clear. When configured as MCLR, this pin is an

                                                             active low Reset to the device. Voltage on MCLR/VPP must

                                                             not exceed VDD during normal device operation.

                           VPP            HV           —     Programming voltage input

RA6/OSC2/CLKOUT            RA6            ST         CMOS    Bidirectional I/O port

                         OSC2             —          XTAL    Oscillator crystal output. Connects to crystal resonator in

                                                             Crystal Oscillator mode.

                  CLKOUT                  —          CMOS    In RC or INTOSC mode. OSC2 pin can output CLKOUT,

                                                             which has 1/4 the frequency of OSC1.

RA7/OSC1/CLKIN             RA7            ST         CMOS    Bidirectional I/O port

                         OSC1             XTAL         —     Oscillator crystal input. Connects to crystal resonator in

                                                             Crystal Oscillator mode.

                         CLKIN            ST           —     External clock source input. RC biasing pin.

Legend:   O    = Output                          CMOS  =    CMOS Output                 P  = Power

          —    = Not used                        I     =    Input                       ST = Schmitt Trigger Input

          TTL  = TTL Input                       OD    =    Open Drain Output           AN = Analog

TABLE 5-2:        SUMMARY OF REGISTERS ASSOCIATED WITH PORTA

                                                                                                    Value on     Value on

Address     Name  Bit 7           Bit 6   Bit 5      Bit 4   Bit 3       Bit 2  Bit 1   Bit 0       POR          All Other

                                                                                                                 Resets

05h       PORTA   RA7             RA6     RA5(1)       RA4   RA3         RA2    RA1     RA0     xxxx  0000       qqqu        0000

85h       TRISA   TRISA7          TRISA6  TRISA5     TRISA4  TRISA3     TRISA2  TRISA1  TRISA0  1111  1111       1111        1111

1Fh       CMCON   C2OUT           C1OUT   C2INV      C1INV         CIS   CM2    CM1     CM0     0000  0000       0000        0000

9Fh       VRCON   VREN            VROE    VRR          —     VR3         VR2    VR1     VR0     000-  0000       000-        0000

Legend:   - = Unimplemented locations read as ‘0’, u = unchanged, x = unknown, q = value depends on condition. Shaded cells

          are not used for PORTA.

Note  1:  MCLRE configuration bit sets RA5 functionality.

© 2009 Microchip Technology Inc.                                                                           DS40044G-page 37
PIC16F627A/628A/648A

5.2          PORTB and TRISB Registers                                 The interrupt-on-change feature is recommended for

PORTB        is   an     8-bit  wide     bidirectional    port.  The   wake-up on key depression operation and operations

                                                                       where PORTB is only used for the interrupt-on-change

corresponding data direction register is TRISB. A ‘1’ in               feature. Polling of PORTB is not recommended while

the TRISB register puts the corresponding output driver                using the interrupt-on-change feature.

in a High-impedance mode. A ‘0’ in the TRISB register

puts the contents of the output latch on the selected                  FIGURE 5-8:      BLOCK DIAGRAM OF

pin(s).                                                                                 RB0/INT PIN

PORTB        is   multiplexed      with   the   external  interrupt,                                             VDD

USART, CCP module and the TMR1 clock input/output.                     RBPU

The    standard    port       functions   and   the  alternate   port                                            P Weak Pull-up

functions    are      shown     in  Table 5-3.       Alternate   port                                            VDD

functions may override the TRIS setting when enabled.

Reading PORTB register reads the status of the pins,

whereas writing to it will write to the port latch. All write          Data Bus

operations are read-modify-write operations. So a write                             D   Q

to a port implies that the port pins are first read, then                                                             RB0/INT

this value is modified and written to the port data latch.             WR PORTB     CK  Q

Each of the PORTB pins has a weak internal pull-up                                  Data Latch                   VSS

(≈200 μA typical). A single control bit can turn on all the

pull-ups.    This        is   done    by  clearing      the    RBPU

(OPTION<7>) bit. The weak pull-up is automatically                                  D   Q

turned off when the port pin is configured as an output.

The pull-ups are disabled on Power-on Reset.                           WR TRISB     CK  Q

Four of PORTB’s pins, RB<7:4>, have an interrupt-on-                                TRIS Latch

change feature. Only pins configured as inputs can

cause this interrupt to occur (i.e., any RB<7:4> pin

configured as an output is excluded from the interrupt-                RD TRISB                          TTL

on-change comparison). The input pins (of RB<7:4>)                                                       Input

are compared with the old value latched on the last                                                      Buffer

read of PORTB. The “mismatch” outputs of RB<7:4>                                                Q  D

are OR’ed together to generate the RBIF interrupt (flag

latched in INTCON<0>).                                                                             EENN

This interrupt can wake the device from Sleep. The

user,    in  the  interrupt     service   routine,   can  clear  the   RD PORTB

interrupt in the following manner:

a)    Any read or write of PORTB. This will end the                    INT

      mismatch condition.                                                               Schmitt

                                                                                        Trigger

b)    Clear flag bit RBIF.

A mismatch condition will continue to set flag bit RBIF.

Reading PORTB will end the mismatch condition and

allow flag bit RBIF to be cleared.

This   interrupt      on     mismatch     feature,   together    with

software configurable pull-ups on these four pins allow

easy interface to a key pad and make it possible for

wake-up      on   key-depression          (See    Application    Note

AN552        “Implementing         Wake-up      on   Key     Strokes”

(DS00552).

    Note:        If a change on the I/O pin should occur

                 when a read operation is being executed

                 (start   of  the   Q2   cycle),  then    the    RBIF

                 interrupt flag may not get set.

DS40044G-page 38                                                                                © 2009 Microchip Technology Inc.
                                                                        PIC16F627A/628A/648A

FIGURE 5-9:                BLOCK DIAGRAM OF                             FIGURE 5-10:                  BLOCK DIAGRAM OF

                           RB1/RX/DT PIN                                                              RB2/TX/CK PIN

                                                        VDD                                                                    VDD

RBPU                                                         Weak       RBPU                                                       Weak

SPEN                                                    P    Pull-up    SPEN                                                   P Pull-up

                                                             VDD                                                                   VDD

USART Data  Output                                                      USART TX/CK       Output

                                          1                                                                     1

Data Bus            D      Q              0                       RB1/  Data Bus                  D   Q         0                       RB2/

                                                             RX/DT                                                                  TX/CK

WR PORTB            CK     Q                                            WR PORTB                  CK  Q

                    Data   Latch                             VSS                          Data        Latch                         VSS

                    D      Q                                                                      D   Q

WR TRISB            CK     Q                                            WR TRISB                  CK  Q

                    TRIS   Latch                                                          TRIS Latch

Peripheral OE(1)                                                        Peripheral OE(1)

                                                TTL                                                                    TTL

RD TRISB                                        Input                   RD TRISB                                       Input

                                                Buffer                                                                 Buffer

                                  Q          D                                                               Q      D

                                     EN                                                                         EN

RD PORTB                                                                RD PORTB

      USART Receive Input                                                     USART Slave Clock In

                           Schmitt                                                                    Schmitt

                           Trigger                                                                    Trigger

Note  1:    Peripheral OE (output enable) is only active if             Note  1:  Peripheral OE (output enable) is only active if

            peripheral select is active.                                          peripheral select is active.

© 2009 Microchip Technology Inc.                                                                                       DS40044G-page 39
PIC16F627A/628A/648A

FIGURE 5-11:          BLOCK DIAGRAM OF

                      RB3/CCP1 PIN

                                                          VDD

RBPU                                                           Weak

CCP1CON                                                   P Pull-up

                                                               VDD

CCP output

                                            0

Data Bus          D   Q                     1                       RB3/

                                                               CCP1

WR PORTB          CK  Q

                  Data Latch                                   VSS

                  D   Q

WR TRISB          CK  Q

                  TRIS Latch

Peripheral OE(2)

                                                  TTL

RD TRISB                                          Input

                                                  Buffer

                              Q                D

                                 EN

RD PORTB

      CCP In

                      Schmitt

                      Trigger

Note  1:      Peripheral OE (output enable) is only active if

              peripheral select is active.

DS40044G-page 40                                                          © 2009 Microchip Technology Inc.
                                                  PIC16F627A/628A/648A

FIGURE 5-12:        BLOCK         DIAGRAM     OF  RB4/PGM PIN

                                                                                                       VDD

RBPU

                                                                                                       P  weak pull-up

Data Bus

                                      D   Q                                                                 VDD

WR PORTB                              CK  Q

                                  Data Latch

                                      D   Q                                                                      RB4/PGM

WR TRISB                              CK  Q

                                                                                                            VSS

                                  TRIS Latch

RD TRISB

LVP (Configuration  Bit)

RD PORTB

PGM input

                                                  Schmitt             TTL

                                                  Trigger             input

                                                                      buffer

                                                               Q  D

                                                                  EN                                        Q1

Set RBIF

                          From other                           Q  D

                          RB<7:4> pins

                                                                  EN                                        Q3

Note:      The low-voltage programming disables the interrupt-on-change and the weak pull-ups on RB4.

© 2009 Microchip Technology Inc.                                                                       DS40044G-page 41
PIC16F627A/628A/648A

FIGURE 5-13:      BLOCK DIAGRAM        OF  RB5  PIN

                                                                    VDD

RBPU                                                                    weak     VDD

                                                                    P   pull-up

Data Bus                D           Q

                                                                                      RB5 pin

WR PORTB                CK          Q

                        Data Latch

                                                                                 VSS

                        D           Q

WR TRISB

                        CK          Q

                        TRIS Latch                          TTL

                                                            input

                                                            buffer

RD TRISB

                                                     Q  D

RD PORTB

                                                        EN          Q1

              Set RBIF

                        From other                   Q  D

                        RB<7:4> pins

                                                        EN          Q3

DS40044G-page 42                                            © 2009 Microchip Technology Inc.
                                              PIC16F627A/628A/648A

FIGURE 5-14:        BLOCK         DIAGRAM OF  RB6/T1OSO/T1CKI/PGC PIN

                                                                                        VDD

RBPU

                                                                                        P weak pull-up

Data Bus                          D   Q

                                                                                                VDD

WR PORTB                          CK  Q

                                  Data Latch

                                                                                                     RB6/

                                  D   Q                                                              T1OSO/

                                                                                                     T1CKI/

WR TRISB                                                                                             PGC

                                  CK  Q                                                              pin

                                                                                                VSS

                                  TRIS Latch

RD TRISB

T1OSCEN

                                                                                        TTL

                                                                                        input

                                                                                        buffer

RD PORTB

TMR1 Clock

                                              Schmitt

From RB7                                      Trigger

Serial Programming  Clock                                              TMR1 oscillator

                                                                       Q  D

                                                                          EN                    Q1

Set RBIF

                                              From other               Q  D

                                              RB<7:4> pins

                                                                                                Q3

                                                                          EN

© 2009 Microchip Technology Inc.                                                        DS40044G-page 43
PIC16F627A/628A/648A

FIGURE 5-15:        BLOCK DIAGRAM OF THE RB7/T1OSI/PGD  PIN

                                                                          VDD

RBPU

                                                                          P weak pull-up

To RB6                                                  TMR1  oscillator

                                                                               VDD

Data Bus                   D   Q

WR PORTB                   CK  Q                                                    RB7/T1OSI/

                                                                                    PGD pin

                           Data Latch

                           D   Q                                               VSS

WR TRISB                   CK  Q

                           TRIS Latch

RD TRISB

T10SCEN

RD PORTB                                                                       TTL

                                                                               input

                                                                               buffer

Serial Programming  Input

                                                              Schmitt

                                                              Trigger

                                            Q           D

                                                        EN                          Q1

Set RBIF

                              From other    Q           D

                              RB<7:4> pins

                                                        EN                          Q3

DS40044G-page 44                                              © 2009      Microchip Technology Inc.
                                                                  PIC16F627A/628A/648A

TABLE 5-3:         PORTB FUNCTIONS

      Name         Function       Input Type              Output                             Description

                                                          Type

RB0/INT                    RB0            TTL             CMOS      Bidirectional I/O port. Can be software programmed for

                                                                    internal weak pull-up.

                           INT            ST                 —      External interrupt

RB1/RX/DT                  RB1            TTL             CMOS      Bidirectional I/O port. Can be software programmed for

                                                                    internal weak pull-up.

                           RX             ST                 —      USART Receive Pin

                           DT             ST              CMOS      Synchronous data I/O

RB2/TX/CK                  RB2            TTL             CMOS      Bidirectional I/O port

                           TX             —               CMOS      USART Transmit Pin

                           CK             ST              CMOS      Synchronous Clock I/O. Can be software programmed

                                                                    for internal weak pull-up.

RB3/CCP1                   RB3            TTL             CMOS      Bidirectional I/O port. Can be software programmed for

                                                                    internal weak pull-up.

                           CCP1           ST              CMOS      Capture/Compare/PWM/I/O

RB4/PGM                    RB4            TTL             CMOS      Bidirectional I/O port. Interrupt-on-pin change. Can be

                                                                    software programmed for internal weak pull-up.

                           PGM            ST                 —      Low-voltage programming input pin. When low-voltage

                                                                    programming is enabled, the interrupt-on-pin change

                                                                    and weak pull-up resistor are disabled.

RB5                        RB5            TTL             CMOS      Bidirectional I/O port. Interrupt-on-pin change. Can be

                                                                    software programmed for internal weak pull-up.

RB6/T1OSO/T1CKI/           RB6            TTL             CMOS      Bidirectional I/O port. Interrupt-on-pin change. Can be

PGC                                                                 software programmed for internal weak pull-up.

                   T1OSO                  —               XTAL      Timer1 Oscillator Output

                   T1CKI                  ST                 —      Timer1 Clock Input

                           PGC            ST                 —      ICSP™ Programming Clock

RB7/T1OSI/PGD              RB7            TTL             CMOS      Bidirectional I/O port. Interrupt-on-pin change. Can be

                                                                    software programmed for internal weak pull-up.

                   T1OSI                 XTAL                —      Timer1 Oscillator Input

                           PGD            ST              CMOS      ICSP Data I/O

Legend:    O    =  Output                      CMOS       =  CMOS Output                     P  = Power

           —    =  Not used                    I          =  Input                           ST = Schmitt Trigger Input

           TTL  =  TTL Input                   OD         =  Open Drain Output               AN = Analog

TABLE 5-4:         SUMMARY OF REGISTERS ASSOCIATED WITH                            PORTB

                                                                                                          Value on  Value on

Address     Name   Bit 7          Bit 6       Bit 5       Bit 4     Bit 3  Bit 2   Bit 1        Bit 0     POR       All Other

                                                                                                                    Resets

06h, 106h  PORTB   RB7            RB6          RB5        RB4(1)    RB3    RB2     RB1          RB0     xxxx  xxxx  uuuu     uuuu

86h, 186h   TRISB  TRISB7         TRISB6  TRISB5          TRISB4  TRISB3   TRISB2  TRISB1       TRISB0  1111  1111  1111     1111

81h, 181h  OPTION  RBPU           INTEDG      T0CS        T0SE      PSA    PS2     PS1          PS0     1111  1111  1111     1111

Legend:    u = unchanged, x = unknown. Shaded cells are not used for PORTB.

Note  1:   LVP configuration bit sets RB4 functionality.

© 2009 Microchip Technology Inc.                                                                              DS40044G-page 45
PIC16F627A/628A/648A

5.3         I/O Programming Considerations                                    EXAMPLE 5-2:              READ-MODIFY-WRITE

                                                                                                        INSTRUCTIONS ON AN

5.3.1           BIDIRECTIONAL I/O PORTS                                                                 I/O PORT

Any instruction that writes operates internally as a read                     ;Initial   PORT       settings:PORTB<7:4>        Inputs

followed        by  a    write  operation.    The  BCF       and    BSF       ;                               PORTB<3:0>       Outputs

instructions,       for  example,     read    the  register   into  the       ;PORTB<7:6>       have    external  pull-up      and   are

CPU, execute the bit operation and write the result                           ;not   connected      to  other     circuitry

back to the register. Caution must be used when these                         ;

instructions are applied to a port with both inputs and                       ;                               PORT     latchPORT    Pins

                                                                                                              ----------       ----------

outputs defined. For example, a BSF operation on bit 5                              BCF  STATUS,       RP0    ;

of PORTB will cause all eight bits of PORTB to be read                              BCF PORTB,      7         ;01pp      pppp  11pp      pppp

into the CPU. Then the BSF operation takes place on                                 BSF  STATUS,       RP0    ;

bit 5 and PORTB is written to the output latches. If                                BCF  TRISB,     7         ;10pp      pppp  11pp      pppp

another bit of PORTB is used as a bidirectional I/O pin                             BCF TRISB,      6         ;10pp      pppp  10pp      pppp

(e.g., bit 0) and is defined as an input at this time, the                    ;

input signal present on the pin itself would be read into                     ;Note  that      the  user     may  have   expected    the

the CPU and rewritten to the data latch of this particular                    ;pin   values     to  be  00pp      pppp.  The   2nd  BCF

pin, overwriting the previous content. As long as the pin                     ;caused    RB7    to  be  latched   as     the   pin  value

stays in the Input mode, no problem occurs. However,                          ;(High).

if  bit  0  is  switched        into  Output  mode     later  on,   the       5.3.2      SUCCESSIVE OPERATIONS ON I/O

content of the data latch may now be unknown.                                            PORTS

Reading a port register reads the values of the port                          The actual write to an I/O port happens at the end of

pins. Writing to the port register writes the value to the                    an  instruction   cycle,  whereas   for    reading,   the  data

port latch. When using read-modify-write instructions                         must be valid at the beginning of the instruction cycle

(ex. BCF, BSF, etc.) on a port, the value of the port pins                    (Figure 5-16). Therefore, care must be exercised if a

is read, the desired operation is done to this value, and                     write followed by a read operation is carried out on the

this value is then written to the port latch.                                 same I/O port. The sequence of instructions should be

Example 5-2 shows the effect of two sequential read-                          such   to  allow   the    pin  voltage     to   stabilize  (load

modify-write instructions (ex., BCF,               BSF, etc.) on an           dependent) before the next instruction, which causes

I/O port.                                                                     that file to be read into the CPU, is executed. Other-

A pin actively outputting a Low or High should not be                         wise, the previous state of that pin may be read into

driven from external devices at the same time in order                        the CPU rather than the new state. When in doubt, it

to change the level on this pin (“wired-OR”, “wired-                          is better to separate these instructions with a NOP or

AND”). The resulting high output currents may damage                          another instruction not accessing this I/O port.

the chip.

FIGURE 5-16:                    SUCCESSIVE I/O OPERATION

                                Q1    Q2    Q3     Q4  Q1     Q2    Q3    Q4  Q1     Q2  Q3     Q4      Q1   Q2   Q3     Q4

                         PC           PC                          PC + 1             PC + 2                   PC + 3

            Instruction         MOVWF PORTB            MOVF PORTB, W                     NOP                      NOP

                fetched         Write to PORTB          Read to PORTB

                                                                                     Port pin
                                                                                     sampled here

                                                                     TPD

                                                              Execute                Execute                 Execute

                                                              MOVWF                  MOVF                         NOP

                                                              PORTB                  PORTB, W

    Note    1:      This example shows write to PORTB followed by a read from PORTB.

            2:      Data setup time = (0.25 TCY - TPD) where TCY = instruction cycle and TPD = propagation delay of Q1 cycle

                    to output valid. Therefore, at higher clock frequencies, a write followed by a read may be problematic.

DS40044G-page 46                                                                                            © 2009 Microchip Technology Inc.
                                                                        PIC16F627A/628A/648A

6.0        TIMER0 MODULE                                                6.2         Using Timer0 with External Clock

The   Timer0      module     timer/counter      has  the   following    When an external clock input is used for Timer0, it must

features:                                                               meet     certain     requirements.         The   external     clock

•  8-bit timer/counter                                                  requirement     is   due  to     internal  phase  clock    (TOSC)

•  Read/write capabilities                                              synchronization. Also, there is a delay in the actual

                                                                        incrementing of Timer0 after synchronization.

•  8-bit software programmable prescaler

•  Internal or external clock select                                    6.2.1           EXTERNAL CLOCK

•  Interrupt on overflow from FFh to 00h                                                SYNCHRONIZATION

•  Edge select for external clock                                       When no prescaler is used, the external clock input is

Figure 6-1 is a simplified block diagram of the Timer0                  the same as the prescaler output. The synchronization

module. Additional information is available in the “PIC®                of   T0CKI      with    the      internal  phase       clocks  is

Mid-Range MCU Family Reference Manual” (DS33023).                       accomplished by sampling the prescaler output on the

Timer   mode      is  selected   by   clearing       the  T0CS    bit   Q2   and    Q4    cycles     of  the  internal    phase    clocks

                                                                        (Figure 6-1). Therefore, it is necessary for T0CKI to be

(OPTION<5>). In Timer mode, the TMR0 register value                     high for at least 2TOSC (and a small RC delay of 20 ns)

will   increment       every     instruction      cycle      (without   and low for at least 2TOSC (and a small RC delay of

prescaler).   If  the    TMR0    register     is  written    to,  the   20 ns).   Refer     to  the   electrical   specification   of  the

increment is inhibited for the following two cycles. The                desired device.

user can work around this by writing an adjusted value                  When a prescaler is used, the external clock input is

to the TMR0 register.                                                   divided     by  the     asynchronous       ripple-counter      type

Counter mode is selected by setting the T0CS bit. In                    prescaler so that the prescaler output is symmetrical.

this mode the TMR0 register value will increment either                 For    the  external      clock  to        meet   the  sampling

on every rising or falling edge of pin RA4/T0CKI/CMP2.                  requirement,      the   ripple-counter     must   be   taken   into

The incrementing edge is determined by the source                       account. Therefore, it is necessary for T0CKI to have a

edge (T0SE) control bit (OPTION<4>). Clearing the                       period of at least 4TOSC (and a small RC delay of 40 ns)

T0SE bit selects the rising edge. Restrictions on the                   divided by the prescaler value. The only requirement

external    clock     input     are   discussed      in   detail  in    on T0CKI high and low time is that they do not violate

Section 6.2 “Using Timer0 with External Clock”.                         the minimum pulse width requirement of 10 ns. Refer to

The prescaler is shared between the Timer0 module                       parameters 40, 41 and 42 in the electrical specification

and the Watchdog Timer. The prescaler assignment is                     of the desired device. See Table 17-8.

controlled    in      software   by   the       control   bit     PSA

(OPTION<3>).          Clearing   the  PSA   bit   will    assign  the

prescaler to Timer0. The prescaler is not readable or

writable. When the prescaler is assigned to the Timer0

module,     prescale     value   of   1:2,    1:4,...,    1:256   are

selectable.   Section 6.3        “Timer0    Prescaler”         details

the operation of the prescaler.

6.1        Timer0 Interrupt

Timer0 interrupt is generated when the TMR0 register

timer/counter overflows from FFh to 00h. This overflow

sets  the   T0IF   bit.  The    interrupt   can   be     masked   by

clearing    the   T0IE   bit    (INTCON<5>).         The   T0IF   bit

(INTCON<2>)        must   be     cleared    in  software     by   the

Timer0     module     interrupt  service    routine       before  re-

enabling    this  interrupt.    The   Timer0      interrupt    cannot

wake the processor from Sleep since the timer is shut

off during Sleep.

© 2009 Microchip Technology Inc.                                                                                        DS40044G-page 47
PIC16F627A/628A/648A

6.3         Timer0 Prescaler                                                The PSA and PS<2:0> bits (OPTION<3:0>) determine

An   8-bit  counter  is  available  as   a  prescaler  for  the             the prescaler assignment and prescale ratio.

Timer0 module, or as a postscaler for the Watchdog                          When assigned to the Timer0 module, all instructions

Timer. A prescaler assignment for the Timer0 module                         writing to the TMR0 register (e.g., CLRF  1,  MOVWF          1,

means that there is no postscaler for the Watchdog                          BSF  1,    x....etc.) will clear the prescaler. When

Timer, and vice-versa.                                                      assigned to WDT, a CLRWDT instruction will clear the

                                                                            prescaler along with the Watchdog Timer. The prescaler

                                                                            is not readable or writable.

FIGURE 6-1:              BLOCK DIAGRAM OF              THE       TIMER0/WDT

            FOSC/4                                                                                        Data Bus

                                            0                                                             8

     T0CKI                                                              1              SYNC

     pin                                    1                                          2                  TMR0 Reg

                                                                        0              Cycles

                         T0SE               T0CS

                                                                                                                      Set flag bit T0IF

                               TMR1 Clock Source                 PSA                                                  on Overflow

                                    0                  WDT Postscaler/

     Watchdog                       1                  TMR0 Prescaler

            Timer

                                                            8

                                    PSA

                                                            8-to-1MUX                  PS<2:0>

    WDT Enable bit

                                                                 1

                                                                                 WDT

                                                                 0               Time-out

                                                                 PSA

            Note:    T0SE,  T0CS,   PSA.,  PS<2:0>  are bits in the Option  Register.

DS40044G-page 48                                                                                © 2009 Microchip Technology Inc.
                                                                              PIC16F627A/628A/648A

6.3.1        SWITCHING PRESCALER                                              To      change     prescaler    from   the  WDT    to  the  Timer0

             ASSIGNMENT                                                       module, use the sequence shown in Example 6-2. This

                                                                              precaution must be taken even if the WDT is disabled.

The    prescaler     assignment      is  fully  under    software

control  (i.e.,  it  can  be  changed     “on-the-fly”          during        EXAMPLE 6-2:                   CHANGING PRESCALER

program      execution).  Use     the    instruction     sequences                                           (WDT → TIMER0)

shown in Example 6-1 when changing the prescaler

assignment       from     Timer0     to  WDT,        to  avoid         an            CLRWDT                          ;Clear   WDT   and

unintended device Reset.                                                                                             ;prescaler

                                                                                     BSF         STATUS,  RP0

EXAMPLE 6-1:              CHANGING PRESCALER                                         MOVLW       b'xxxx0xxx’         ;Select   TMR0,     new

                                                                                                                     ;prescale     value   and

                          (TIMER0 → WDT)                                                                             ;clock   source

BCF          STATUS,   RP0        ;Skip   if     already           in                MOVWF       OPTION_REG

                                  ;Bank   0                                          BCF         STATUS,  RP0

CLRWDT                            ;Clear        WDT

CLRF         TMR0                 ;Clear TMR0 and

                                  ;Prescaler

BSF          STATUS,   RP0        ;Bank   1

MOVLW        '00101111’b          ;These 3 lines

                                  ;(5, 6, 7)

MOVWF        OPTION_REG           ;are   required        only

                                  ;if    desired         PS<2:0>

                                  ;are

CLRWDT                            ;000   or     001

MOVLW        '00101xxx’b          ;Set   Postscaler             to

MOVWF        OPTION_REG           ;desired       WDT     rate

BCF          STATUS,   RP0        ;Return       to   Bank       0

TABLE 6-1:             REGISTERS ASSOCIATED WITH TIMER0

                                                                                                                     Value on         Value on

Address          Name         Bit 7      Bit 6           Bit 5         Bit 4  Bit 3       Bit 2  Bit 1        Bit 0       POR         All Other

                                                                                                                                         Resets

01h, 101h    TMR0         Timer0 Module Register                                                                     xxxx     xxxx   uuuu     uuuu

0Bh, 8Bh,    INTCON           GIE        PEIE            T0IE          INTE   RBIE        T0IF   INTF         RBIF   0000     000x   0000     000u

10Bh, 18Bh

81h, 181h    OPTION(2)      RBPU         INTEDG       T0CS             T0SE   PSA         PS2    PS1           PS0   1111     1111   1111     1111

85h          TRISA          TRISA7       TRISA6      TRISA5         TRISA4    TRISA3  TRISA2     TRISA1      TRISA0  1111     1111   1111     1111

Legend:      - = Unimplemented locations, read as ‘0’, u = unchanged, x = unknown.               Shaded cells are not used for Timer0.

Note     1:  Option is referred by OPTION_REG in MPLAB® IDE Software.

© 2009 Microchip Technology Inc.                                                                                              DS40044G-page 49
PIC16F627A/628A/648A

7.0       TIMER1 MODULE                                            In          Timer     mode,  the  TMR1        register      pair  value

                                                                   increments every instruction cycle. In Counter mode, it

The Timer1 module is a 16-bit timer/counter consisting             increments on every rising edge of the external clock

of two 8-bit registers (TMR1H and TMR1L) which are                 input.

readable     and    writable.   The     TMR1     register  pair    Timer1           can   be   enabled/disabled  by     setting/clearing

(TMR1H:TMR1L)         increments     from  0000h      to  FFFFh    control bit TMR1ON (T1CON<0>).

and   rolls  over   to  0000h.  The     Timer1   Interrupt,  if

enabled, is generated on overflow of the TMR1 register             Timer1 also has an internal “Reset input”. This Reset

pair  which    latches  the    interrupt   flag  bit      TMR1IF   can be generated by the CCP module (Section 9.0

(PIR1<0>). This interrupt can be enabled/disabled by               “Capture/Compare/PWM                          (CCP)         Module”).

setting/clearing the Timer1 interrupt enable bit TMR1IE            Register 7-1 shows the Timer1 control register.

(PIE1<0>).                                                         For         the  PIC16F627A/628A/648A,        when      the       Timer1

Timer1 can operate in one of two modes:                            oscillator         is  enabled    (T1OSCEN    is     set),  the   RB7/

•  As a timer                                                      T1OSI/PGD              and        RB6/T1OSO/T1CKI/PGC             pins

•  As a counter                                                    become             inputs.  That  is,    the  TRISB<7:6>    value  is

                                                                   ignored.

The Operating mode is determined by the clock select

bit, TMR1CS (T1CON<1>).

REGISTER 7-1:           T1CON – TIMER1 CONTROL REGISTER (ADDRESS: 10h)

                               U-0         U-0             R/W-0   R/W-0              R/W-0          R/W-0       R/W-0         R/W-0

                                —             —           T1CKPS1  T1CKPS0          T1OSCEN          T1SYNC      TMR1CS        TMR1ON

                        bit 7                                                                                                        bit 0

             bit 7-6    Unimplemented: Read as ‘0’

             bit 5-4    T1CKPS<1:0>: Timer1 Input Clock Prescale Select bits

                        11 = 1:8 Prescale value

                        10 = 1:4 Prescale value

                        01 = 1:2 Prescale value

                        00 = 1:1 Prescale value

             bit 3      T1OSCEN: Timer1 Oscillator Enable Control bit

                        1 = Oscillator is enabled

                        0 = Oscillator is shut off(1)

             bit 2      T1SYNC: Timer1 External Clock Input Synchronization Control bit

                        TMR1CS = 1

                        1 = Do not synchronize external clock input

                        0 = Synchronize external clock input

                        TMR1CS = 0

                        This bit is ignored. Timer1 uses the internal clock when TMR1CS = 0.

             bit 1      TMR1CS: Timer1 Clock Source Select bit

                        1 = External clock from pin RB6/T1OSO/T1CKI/PGC (on the rising edge)

                        0 = Internal clock (FOSC/4)

             bit 0      TMR1ON: Timer1 On bit

                        1 = Enables Timer1

                        0 = Stops Timer1

                               Note 1:    The oscillator inverter and feedback resistor are turned off to eliminate        power     drain.

                        Legend:

                        R = Readable bit                     W = Writable bit         U = Unimplemented bit, read as ‘0’

                        -n = Value at POR                    ‘1’ = Bit is set         ‘0’ = Bit is cleared       x = Bit is unknown

DS40044G-page 50                                                                                     © 2009 Microchip Technology Inc.
                                                                        PIC16F627A/628A/648A

7.1       Timer1 Operation in Timer Mode                                   7.2.1          EXTERNAL CLOCK INPUT TIMING

Timer  mode       is    selected   by   clearing   the  TMR1CS                            FOR SYNCHRONIZED COUNTER

(T1CON<1>) bit. In this mode, the input clock to the                                      MODE

timer is FOSC/4. The synchronize control bit T1SYNC                        When an external clock input is used for Timer1 in

(T1CON<2>) has no effect since the internal clock is                       Synchronized         Counter   mode,    it   must  meet      certain

always in sync.                                                            requirements. The external clock requirement is due to

                                                                           internal  phase         clock  (TOSC)   synchronization.        Also,

7.2       Timer1 Operation in Synchronized                                 there is a delay in the actual incrementing of the TMR1

          Counter Mode                                                     register pair value after synchronization.

Counter mode is selected by setting bit TMR1CS. In                         When the prescaler is 1:1, the external clock input is

                                                                           the same as the prescaler output. The synchronization

this mode, the TMR1 register pair value increments on                      of      T1CKI  with     the  internal  phase  clocks     is  accom-

every rising edge of clock input on pin RB7/T1OSI/PGD                      plished by sampling the prescaler output on the Q2 and

when bit T1OSCEN is set or pin RB6/T1OSO/T1CKI/                            Q4 cycles of the internal phase clocks. Therefore, it is

PGC when bit T1OSCEN is cleared.                                           necessary for T1CKI to be high for at least 2 TOSC (and

If T1SYNC is cleared, then the external clock input is                     a small RC delay of 20 ns) and low for at least 2 TOSC

synchronized with internal phase clocks. The synchro-                      (and a small RC delay of 20 ns). Refer to Table 17-8 in

nization      is  done      after  the  prescaler  stage.        The       the Electrical Specifications Section, timing parameters

prescaler stage is an asynchronous ripple-counter.                         45, 46 and 47.

In this configuration, during Sleep mode, the TMR1                         When a prescaler other than 1:1 is used, the external

register  pair    value     will   not  increment  even     if   the       clock input is divided by the asynchronous ripple-counter

external  clock   is    present,   since  the     synchronization          type prescaler so that the prescaler output is symmetri-

circuit is shut off. The prescaler however will continue                   cal. In order for the external clock to meet the sampling

to increment.                                                              requirement,      the   ripple-counter      must   be    taken  into

                                                                           account. Therefore, it is necessary for T1CKI to have a

                                                                           period of at least 4 TOSC (and a small RC delay of 40 ns)

                                                                           divided by the prescaler value. The only requirement on

                                                                           T1CKI high and low time is that they do not violate the

                                                                           minimum pulse width requirements of 10 ns). Refer to

                                                                           the appropriate electrical specifications in Table 17-8,

                                                                           parameters 45, 46 and 47.

FIGURE 7-1:                 TIMER1 BLOCK DIAGRAM

              Set flag bit

              TMR1IF on

              Overflow                                                                    0               Synchronized

                                          TMR1                                                            Clock Input

                                   TMR1H          TMR1L

                                                                                          1

                                                                           TMR1ON

                                                                                     T1SYNC

                                   T1OSC

RB6/T1OSO/T1CKI/PGC                                                        1                              Synchronize

                                                                                     Prescaler

                                                   T1OSCEN       FOSC/4              1, 2, 4, 8                    det

                                                   Enable        Internal  0

RB7/T1OSI/PGD                                     Oscillator(1)  Clock                          2

                                                                                                          Sleep Input

                                                                                     T1CKPS<1:0>

                                                                           TMR1CS

Note      1:      When the T1OSCEN bit is cleared, the inverter and feedback resistor are turned off. This eliminates power drain.

© 2009 Microchip Technology Inc.                                                                                         DS40044G-page 51
PIC16F627A/628A/648A

7.3       Timer1 Operation in                                         EXAMPLE 7-1:              READING A 16-BIT FREE-

          Asynchronous Counter Mode                                                             RUNNING TIMER

If control bit T1SYNC (T1CON<2>) is set, the external                 ;  All   interrupts     are   disabled

                                                                         MOVF         TMR1H,     W    ;Read    high  byte

clock input is not synchronized. The timer continues to                  MOVWF        TMPH            ;

increment asynchronous to the internal phase clocks.                     MOVF         TMR1L,     W    ;Read    low   byte

The timer will continue to run during Sleep and can                      MOVWF        TMPL            ;

generate an interrupt on overflow, which will wake-up the                MOVF         TMR1H,     W    ;Read    high  byte

processor. However, special precautions in software are                  SUBWF        TMPH,   W       ;Sub    1st   read     with

needed to read/write the timer (Section 7.3.2 “Reading                                                ;2nd    read

and     Writing      Timer1    in      Asynchronous       Counter        BTFSC        STATUS,Z        ;Is   result   =    0

Mode”).                                                                  GOTO         CONTINUE        ;Good    16-bit     read

                                                                      ;

Note:          In Asynchronous Counter mode, Timer1                   ;  TMR1L   may  have    rolled     over  between       the

               cannot be used as a time base for capture              ;  read   of   the  high   and  low   bytes.   Reading

               or compare operations.                                 ;  the   high  and  low    bytes   now   will  read    a    good

                                                                      ;  value.

7.3.1          EXTERNAL CLOCK INPUT TIMING                            ;

               WITH UNSYNCHRONIZED CLOCK                                 MOVF         TMR1H,     W    ;Read    high  byte

                                                                         MOVWF        TMPH            ;

If control bit T1SYNC is set, the timer will increment                   MOVF         TMR1L,     W    ;Read    low   byte

completely asynchronously. The input clock must meet                     MOVWF        TMPL            ;

certain minimum high and low time requirements. Refer                 ;  Re-enable    the    Interrupts     (if    required)

to Table 17-8 in the Electrical Specifications Section,               CONTINUE                        ;Continue      with    your

timing parameters 45, 46 and 47.                                                                      ;code

7.3.2          READING AND WRITING TIMER1 IN

               ASYNCHRONOUS COUNTER

               MODE

Reading the TMR1H or TMR1L register, while the timer

is running from an external asynchronous clock, will

produce   a    valid     read  (taken      care  of  in  hardware).

However, the user should keep in mind that reading the

16-bit  timer    in  two  8-bit     values  itself   poses  certain

problems since the timer may overflow between the

reads.

For writes, it is recommended that the user simply stop

the    timer  and     write    the     desired   values.    A  write

contention may occur by writing to the timer registers

while the register is incrementing. This may produce an

unpredictable value in the timer register.

Reading       the    16-bit    value       requires  some      care.

Example 7-1 is an example routine to read the 16-bit

timer   value.     This  is    useful  if  the   timer   cannot  be

stopped.

DS40044G-page 52                                                                                 © 2009 Microchip Technology Inc.
                                                                     PIC16F627A/628A/648A

7.4           Timer1 Oscillator                                             7.5        Resetting Timer1 Using a CCP

A crystal oscillator circuit is built in between pins T1OSI                            Trigger Output

(input) and T1OSO (amplifier output). It is enabled by                      If the CCP1 module is configured in Compare mode to

setting   control  bit  T1OSCEN         (T1CON<3>).        It  will         generate      a            “special  event        trigger”  (CCP1M<3:0>           =

continue to run during Sleep. It is primarily intended for                  1011), this signal will reset Timer1.

a  32.768 kHz      watch   crystal.  Table 7-1         shows   the

capacitor selection for the Timer1 oscillator.                                  Note:        The special event triggers from the CCP1

The user must provide a software time delay to ensure                                        module              will  not    set       interrupt  flag   bit

proper oscillator start-up.                                                                  TMR1IF (PIR1<0>).

                                                                            Timer1     must             be       configured   for       either     timer      or

TABLE 7-1:              CAPACITOR SELECTION FOR                             Synchronized Counter mode to take advantage of this

                        THE TIMER1 OSCILLATOR                               feature. If Timer1 is running in Asynchronous Counter

                                                                            mode, this Reset operation may not work.

         Freq                 C1                       C2                   In the event that a write to Timer1 coincides with a

   32.768 kHz                15 pF              15 pF                       special event trigger from CCP1, the write will take

                                                                            precedence.

   Note:       These values are for design guidance only.                   In  this   mode             of     operation,     the       CCPRxH:CCPRxL

               Consult Application Note AN826 “Crystal                      register pair effectively becomes the period register for

               Oscillator Basics and Crystal Selection for                  Timer1.

               rfPIC® and PIC® Devices” (DS00826) for

               further  information  on         Crystal/Capacitor           7.6        Resetting Timer1 Register Pair

               Selection.

                                                                                       (TMR1H, TMR1L)

                                                                            TMR1H and TMR1L registers are not reset to 00h on

                                                                            a POR or any other Reset except by the CCP1 special

                                                                            event     triggers          (see     Section 9.2.4          “Special         Event

                                                                            Trigger”).

                                                                            T1CON register is reset to 00h on a Power-on Reset or

                                                                            a   Brown-out               Reset,   which        shuts     off  the   timer  and

                                                                            leaves a 1:1 prescale. In all other Resets, the register

                                                                            is unaffected.

                                                                            7.7        Timer1 Prescaler

                                                                            The  prescaler              counter        is  cleared      on   writes  to   the

                                                                            TMR1H or TMR1L registers.

TABLE 7-2:              REGISTERS ASSOCIATED WITH TIMER1 AS A TIMER/COUNTER

                                                                                                                                   Value on        Value on

   Address     Name        Bit 7     Bit 6      Bit 5      Bit 4     Bit 3         Bit 2                Bit 1          Bit 0         POR           all other

                                                                                                                                                   Resets

   0Bh, 8Bh,   INTCON      GIE       PEIE       T0IE       INTE      RBIE          T0IF                 INTF           RBIF   0000      000x       0000   000u

10Bh, 18Bh

     0Ch       PIR1        EEIF     CMIF        RCIF       TXIF      —           CCP1IF                 TMR2IF   TMR1IF       0000      -000       0000   -000

     8Ch       PIE1        EEIE     CMIE        RCIE       TXIE      —           CCP1IE                 TMR2IE   TMR1IE       0000      -000       0000   -000

     0Eh       TMR1L    Holding   Register for  the Least Significant Byte of the 16-bit TMR1 Register                        xxxx      xxxx       uuuu   uuuu

     0Fh       TMR1H    Holding   Register for  the Most Significant Byte of the 16-bit TMR1 Register                         xxxx      xxxx       uuuu   uuuu

     10h       T1CON       —         —          T1CKPS1    T1CKPS0   T1OSCEN     T1SYNC                 TMR1CS   TMR1ON       --00      0000       --uu   uuuu

Legend:        x = unknown, u =   unchanged,    - = unimplemented read as ‘0’. Shaded cells are not used by      the Timer1 module.

© 2009 Microchip Technology Inc.                                                                                                        DS40044G-page 53
PIC16F627A/628A/648A

8.0       TIMER2 MODULE                                              8.1       Timer2 Prescaler and Postscaler

Timer2    is  an   8-bit  timer   with     a   prescaler  and   a    The  prescaler       and  postscaler   counters   are  cleared

postscaler. It can be used as the PWM time base for                  when any of the following occurs:

PWM mode of the CCP module. The TMR2 register is                     •  a write to the TMR2 register

readable and writable, and is cleared on any device                  •  a write to the T2CON register

Reset.                                                               •  any device Reset (Power-on Reset, MCLR Reset,

The input clock (FOSC/4) has a prescale option of 1:1,                  Watchdog Timer Reset or Brown-out Reset)

1:4  or  1:16,  selected      by  control  bits  T2CKPS<1:0>         The  TMR2      register   is  not  cleared  when       T2CON  is

(T2CON<1:0>).                                                        written.

The Timer2 module has an 8-bit period register PR2.

The TMR2 register value increments from 00h until it                 8.2       TMR2 Output

matches the PR2 register value and then resets to 00h

on the next increment cycle. The PR2 register is a                   The TMR2 output (before the postscaler) is fed to the

readable  and      writable   register.  The   PR2   register   is   Synchronous Serial Port module which optionally uses

initialized to FFh upon Reset.                                       it to generate shift clock.

The  match      output    of  Timer2     goes  through    a  4-bit

postscaler (which gives a 1:1 to 1:16 scaling inclusive)             FIGURE 8-1:               TIMER2 BLOCK DIAGRAM

to   generate   a  Timer2     interrupt    (latched  in   flag  bit

TMR2IF, (PIR1<1>)).                                                     Sets flag      TMR2

                                                                        bit TMR2IF     output

Timer2 can be shut off by clearing control bit TMR2ON

(T2CON<2>) to minimize power consumption.                                              Reset                     Prescaler

Register 8-1 shows the Timer2 control register.                                                TMR2 Reg     1:1, 1:4, 1:16    FOSC/4

                                                                          Postscaler           Comparator             2

                                                                          1:1  to   1:16  EQ

                                                                                                                 T2CKPS<1:0>

                                                                                    4              PR2 Reg

                                                                          TOUTPS<3:0>

DS40044G-page 54                                                                                   © 2009 Microchip Technology Inc.
                                                                      PIC16F627A/628A/648A

REGISTER 8-1:             T2CON – TIMER2 CONTROL REGISTER (ADDRESS: 12h)

                          U-0     R/W-0                 R/W-0         R/W-0        R/W-0            R/W-0       R/W-0              R/W-0

                          —       TOUTPS3        TOUTPS2              TOUTPS1      TOUTPS0        TMR2ON        T2CKPS1            T2CKPS0

                       bit 7                                                                                                             bit 0

     bit    7          Unimplemented: Read as ‘0’

     bit    6-3        TOUTPS<3:0>: Timer2 Output Postscale Select bits

                       0000 = 1:1 Postscale Value

                       0001 = 1:2 Postscale Value

                       •

                       •

                       •

                       1111 = 1:16 Postscale

     bit    2          TMR2ON: Timer2 On bit

                       1 = Timer2 is on

                       0 = Timer2 is off

     bit    1-0        T2CKPS<1:0>: Timer2 Clock Prescale Select bits

                       00 = 1:1 Prescaler Value

                       01 = 1:4 Prescaler Value

                       1x = 1:16 Prescaler Value

                       Legend:

                       R = Readable bit                   W = Writable bit         U = Unimplemented bit, read as ‘0’

                       -n = Value at POR                  ‘1’ = Bit is set         ‘0’ = Bit is cleared         x = Bit is unknown

TABLE 8-1:             REGISTERS ASSOCIATED WITH TIMER2 AS A TIMER/COUNTER

                                                                                                                Value on           Value on

Address        Name       Bit 7   Bit 6          Bit 5    Bit 4       Bit 3        Bit 2   Bit 1         Bit 0               POR   all other

                                                                                                                                   Resets

0Bh, 8Bh,      INTCON     GIE     PEIE           T0IE     INTE        RBIE         T0IF    INTF          RBIF   0000         000x  0000  000u

10Bh, 18Bh

0Ch            PIR1       EEIF    CMIF           RCIF     TXIF              —      CCP1IF  TMR2IF   TMR1IF      0000         -000  0000  -000

8Ch            PIE1       EEIE    CMIE           RCIE     TXIE              —      CCP1IE  TMR2IE   TMR1IE      0000         -000  0000  -000

11h            TMR2    Timer2 Module’s Register                                                                 0000         0000  0000  0000

12h            T2CON      —       TOUTPS3        TOUTPS2  TOUTPS1     TOUTPS0      TMR2ON  T2CKPS1  T2CKPS0     -000         0000  -000  0000

92h            PR2     Timer2 Period Register                                                                   1111         1111  1111  1111

Legend:        x = unknown, u = unchanged, - = unimplemented read as  ‘0’. Shaded  cells are not used by the Timer2 module.

© 2009 Microchip Technology Inc.                                                                                             DS40044G-page 55
PIC16F627A/628A/648A

NOTES:

DS40044G-page 56      © 2009 Microchip Technology Inc.
                                                            PIC16F627A/628A/648A

9.0        CAPTURE/COMPARE/PWM                                         TABLE 9-1:   CCP MODE – TIMER

           (CCP) MODULE                                                             RESOURCE

The CCP (Capture/Compare/PWM) module contains a                            CCP Mode                  Timer Resource

16-bit register which can operate as a 16-bit Capture                      Capture                   Timer1

register, as a 16-bit Compare register or as a PWM                         Compare                   Timer1

master/slave Duty Cycle register. Table 9-1 shows the                      PWM                       Timer2

timer resources of the CCP module modes.

CCP1 Module

Capture/Compare/PWM            Register1  (CCPR1)      is

comprised of two 8-bit registers: CCPR1L (low byte)

and  CCPR1H      (high  byte).    The  CCP1CON    register

controls the operation of CCP1. All are readable and

writable.

Additional information on the CCP module is available

in the “PIC® Mid-Range MCU Family Reference Man-

ual” (DS33023).

REGISTER 9-1:           CCP1CON – CCP OPERATION             REGISTER (ADDRESS: 17h)

                        U-0               U-0     R/W-0     R/W-0          R/W-0              R/W-0  R/W-0        R/W-0

                        —                 —       CCP1X     CCP1Y          CCP1M3           CCP1M2   CCP1M1       CCP1M0

                        bit 7                                                                                            bit 0

           bit 7-6      Unimplemented: Read as ‘0’

           bit 5-4      CCP1X:CCP1Y: PWM Least Significant bits

                        Capture Mode

                        Unused

                        Compare Mode

                        Unused

                        PWM Mode

                        These bits are the two LSbs of the PWM duty cycle. The eight MSbs are found in CCPRxL.

           bit 3-0      CCP1M<3:0>: CCPx Mode Select bits

                        0000      =  Capture/Compare/PWM off (resets CCP1 module)

                        0100      =  Capture mode, every falling edge

                        0101      =  Capture mode, every rising edge

                        0110      =  Capture mode, every 4th rising edge

                        0111      =  Capture mode, every 16th rising edge

                        1000      =  Compare mode, set output on match (CCP1IF bit is set)

                        1001      =  Compare mode, clear output on match (CCP1IF bit is set)

                        1010      =  Compare mode, generate software interrupt on match (CCP1IF bit is set, CCP1  pin    is

                                     unaffected)

                        1011      =  Compare mode, trigger special event (CCP1IF bit is set; CCP1 resets TMR1

                        11xx      =  PWM mode

                        Legend:

                        R = Readable bit               W = Writable bit    U = Unimplemented bit, read as ‘0’

                        -n = Value at POR              ‘1’ = Bit is set    ‘0’ = Bit is cleared      x = Bit is unknown

© 2009 Microchip Technology Inc.                                                                     DS40044G-page 57
PIC16F627A/628A/648A

9.1          Capture Mode                                                    9.1.4          CCP PRESCALER

In      Capture      mode,       CCPR1H:CCPR1L              captures    the  There     are  four   prescaler        settings,     specified    by  bits

16-bit value of the TMR1 register when an event occurs                       CCP1M<3:0>. Whenever the CCP module is turned

on pin RB3/CCP1. An event is defined as:                                     off, or the CCP module is not in Capture mode, the

•   Every falling edge                                                       prescaler      counter     is  cleared.      This    means      that  any

                                                                             Reset will clear the prescaler counter.

•   Every rising edge                                                        Switching from one capture prescaler to another may

•   Every 4th rising edge                                                    generate an interrupt. Also, the prescaler counter will not

•   Every 16th rising edge                                                   be cleared, therefore the first capture may be from a

An      event    is  selected    by    control        bits  CCP1M<3:0>       non-zero       prescaler.         Example 9-1              shows      the

(CCP1CON<3:0>).                  When  a  capture           is  made,   the  recommended method for switching between capture

interrupt request flag bit CCP1IF (PIR1<2>) is set. It                       prescalers.    This     example        also  clears  the     prescaler

must be cleared in software. If another capture occurs                       counter and will not generate the “false” interrupt.

before the value in register CCPR1 is read, the old

captured value will be lost.                                                 EXAMPLE 9-1:                   CHANGING BETWEEN

                                                                                                            CAPTURE PRESCALERS

9.1.1            CCP PIN CONFIGURATION                                          CLRF      CCP1CON           ;Turn     CCP      module     off

In Capture mode, the RB3/CCP1 pin should be config-                             MOVLW     NEW_CAPT_PS ;Load           the      W  reg   with

ured as an input by setting the TRISB<3> bit.                                                               ;  the    new      prescaler

                                                                                                            ;  mode       value   and     CCP  ON

    Note:        If   the   RB3/CCP1      is    configured      as      an      MOVWF     CCP1CON           ;Load     CCP1CON     with       this

                 output, a write to the port can cause a                                                    ;  value

                 capture condition.

FIGURE         9-1:              CAPTURE MODE                                9.2          Compare Mode

                                 OPERATION BLOCK                             In Compare mode, the 16-bit CCPR1 register value is

                                 DIAGRAM                                     constantly compared against the TMR1 register pair

                                                                             value. When a match occurs, the RB3/CCP1 pin is:

                                 Set flag bit CCP1IF                         •  Driven high

                 Prescaler       (PIR1<2>)

                     ³ 1, 4, 16                                              •  Driven low

   RB3/CCP1                                     CCPR1H          CCPR1L       •  Remains unchanged

   pin

                      and                 Capture                            The action on the pin is based on the value of control

                 edge detect              Enable                             bits  CCP1M<3:0>           (CCP1CON<3:0>).           At      the  same

                                                TMR1H           TMR1L        time, interrupt flag bit CCP1IF is set.

                      CCP1CON<3:0>                                           FIGURE 9-2:                    COMPARE MODE

                 Q’s

                                                                                                            OPERATION BLOCK

9.1.2            TIMER1 MODE SELECTION                                                                      DIAGRAM

Timer1 must be running in Timer mode or Synchro-                                                                   Set flag bit CCP1IF

nized Counter mode for the CCP module to use the                                                                   (PIR1<2>)

capture feature. In Asynchronous Counter mode, the                                                                                CCPR1H     CCPR1L

capture operation may not work.                                                                 Q    S      Output

                                                                             RB3/CCP1                       Logic     match       Comparator

                                                                             pin                     R

9.1.3            SOFTWARE INTERRUPT                                                   TRISB<3>                                    TMR1H      TMR1L

When the Capture mode is changed, a false capture                                   Output Enable    CCP1CON<3:0>

interrupt may be generated. The user should keep bit                                                 Mode Select

CCP1IE (PIE1<2>) clear to avoid false interrupts and                               Note:     Special event trigger will reset Timer1, but not

should clear the flag bit CCP1IF following any such                                          set interrupt flag bit TMR1IF (PIR1<0>).

change in Operating mode.

DS40044G-page 58                                                                                            © 2009 Microchip Technology Inc.
                                                                PIC16F627A/628A/648A

9.2.1       CCP PIN CONFIGURATION                                      9.2.4        SPECIAL EVENT TRIGGER

The  user   must  configure  the  RB3/CCP1        pin  as   an         In this mode (CCP1M<3:0>=1011), an internal hard-

output by clearing the TRISB<3> bit.                                   ware trigger is generated, which may be used to initiate

Note:       Clearing the CCP1CON register will force                   an action. See Register 9-1.

            the   RB3/CCP1   compare     output   latch     to         The special event trigger output of the CCP occurs

            the default low level. This is not the data                immediately  upon    a     match  between       the  TMR1H,

            latch.                                                     TMR1L register pair and CCPR1H, CCPR1L register

                                                                       pair. The TMR1H, TMR1L register pair is not reset until

9.2.2       TIMER1 MODE SELECTION                                      the next rising edge of the TMR1 clock. This allows the

Timer1 must be running in Timer mode or Synchro-                       CCPR1 register pair to effectively be a 16-bit program-

nized Counter mode if the CCP module is using the                      mable period register for Timer1. The special event

compare feature. In Asynchronous Counter mode, the                     trigger output also starts an A/D conversion provided

compare operation may not work.                                        that the A/D module is enabled.

                                                                         Note:      Removing the match condition by chang-

9.2.3       SOFTWARE INTERRUPT MODE                                                 ing the contents of the CCPR1H, CCPR1L

When generate software interrupt is chosen the CCP1                                 register pair between the clock edge that

pin is not affected. Only a CCP interrupt is generated (if                          generates     the  special  event  trigger  and

enabled).                                                                           the clock edge that generates the TMR1

                                                                                    Reset  will   preclude      the    Reset    from

                                                                                    occuring.

TABLE 9-2:          REGISTERS ASSOCIATED WITH CAPTURE, COMPARE, AND TIMER1

                                                                                                         Value on           Value on

Address     Name     Bit 7        Bit 6  Bit 5         Bit 4    Bit 3    Bit 2      Bit 1         Bit 0         POR         all other

                                                                                                                            Resets

0Bh, 8Bh,   INTCON   GIE          PEIE   T0IE          INTE     RBIE     T0IF       INTF          RBIF   0000   000x   0000     000u

10Bh, 18Bh

0Ch         PIR1     EEIF         CMIF   RCIF          TXIF     —        CCP1IF     TMR2IF       TMR1IF  0000   -000   0000     -000

8Ch         PIE1     EEIE         CMIE   RCIE          TXIE     —        CCP1IE     TMR2IE       TMR1IE  0000   -000   0000     -000

86h, 186h   TRISB    PORTB Data Direction Register                                                       1111   1111   1111     1111

0Eh         TMR1L    Holding Register for the Least Significant Byte of the 16-bit TMR1 Register         xxxx   xxxx   uuuu     uuuu

0Fh         TMR1H    Holding Register for the Most Significant Byte of the 16-bit TMR1 Register          xxxx   xxxx   uuuu     uuuu

10h         T1CON    —            —      T1CKPS1  T1CKPS0       T1OSCEN  T1SYNC     TMR1CS TMR1ON --00          0000   --uu     uuuu

15h         CCPR1L   Capture/Compare/PWM Register1 (LSB)                                                 xxxx   xxxx   uuuu     uuuu

16h         CCPR1H   Capture/Compare/PWM Register1 (MSB)                                                 xxxx   xxxx   uuuu     uuuu

17h         CCP1CON  —            —      CCP1X    CCP1Y         CCP1M3   CCP1M2     CCP1M1     CCP1M0    --00   0000   --00     0000

Legend:     x = unknown, u = unchanged, - = unimplemented read as ‘0’. Shaded cells are not used by Capture and Timer1.

© 2009 Microchip Technology Inc.                                                                                DS40044G-page 59
PIC16F627A/628A/648A

9.3    PWM Mode                                                             A PWM output (Figure 9-4) has a time base (period)

In Pulse Width Modulation (PWM) mode, the CCP1 pin                          and a time that the output stays high (duty cycle). The

                                                                            frequency  of  the  PWM  is  the   inverse     of  the    period

produces up to a 10-bit resolution PWM output. Since                        (frequency = 1/period).

the CCP1 pin is multiplexed with the PORTB data latch,

the TRISB<3> bit must be cleared to make the CCP1                           FIGURE 9-4:              PWM OUTPUT

pin an output.

Note:       Clearing the CCP1CON register will force                                       Period

            the CCP1 PWM output latch to the default

            low level. This is not the PORTB I/O data

            latch.

Figure 9-3  shows   a       simplified  block  diagram             of  the             Duty Cycle

CCP module in PWM mode.                                                                                  TMR2 = PR2

For a step by step procedure on how to set up the CCP

module for PWM operation, see Section 9.3.3 “Set-                                                  TMR2 = Duty Cycle

Up for PWM Operation”.                                                             TMR2 = PR2

FIGURE 9-3:                 SIMPLIFIED PWM         BLOCK                    9.3.1      PWM PERIOD

                            DIAGRAM

                                                                            The PWM period is specified by writing to the PR2

      Duty cycle registers           CCP1CON<5:4>                           register. The PWM period can be calculated using the

CCPR1L                                                                      following formula:

                                                                               PWM period = [(PR2) + 1] ⋅ 4 ⋅ Tosc ⋅ TMR2 prescale

                                                                                                                               value

CCPR1H (Slave)                                                              PWM frequency is defined as 1/[PWM period].

                                                                            When TMR2 is equal to PR2, the following three events

       Comparator                       R      Q                            occur on the next increment cycle:

                                                   RB3/CCP1                 •  TMR2 is cleared

       TMR2         (1)                                                     •  The CCP1 pin is set (exception: if PWM duty

                                        S                                      cycle = 0%, the CCP1 pin will not be set)

     Comparator                                   TRISB<3>                  •  The PWM duty cycle is latched from CCPR1L into

                         Clear Timer,                                          CCPR1H

                         CCP1 pin and

      PR2                latch D.C.

                                                                               Note:   The Timer2 postscaler (see Section 8.0

Note   1:       8-bit timer is concatenated with 2-bit internal Q                      “Timer2       Module”)   is    not  used     in  the

                clock or 2 bits of the prescaler to create 10-bit                      determination of the PWM frequency. The

                time base.                                                             postscaler could be used to have a servo

                                                                                       update rate at a different frequency than

                                                                                       the PWM output.

DS40044G-page 60                                                                                     © 2009 Microchip Technology Inc.
                                                                        PIC16F627A/628A/648A

9.3.2         PWM DUTY CYCLE                                                Maximum PWM resolution (bits) for a given PWM

The    PWM    duty   cycle  is     specified  by    writing  to  the        frequency:

CCPR1L register and to the CCP1CON<5:4> bits. Up                                                       log ⎝⎛ -F----P---W----M------×-----T--F-M---o--R-s--2-c----P----r--e---s--c---a---l-e---r-⎠⎞

to 10-bit resolution is available: the CCPR1L contains                               PWM

the eight MSbs and the CCP1CON<5:4> contains the                                     Resolution     =  --------------------------------------------------------------------------                    bits
                                                                                                                       log(2)
two    LSbs.  This    10-bit       value  is  represented        by

CCPR1L:CCP1CON<5:4>. The following equation is

used to calculate the PWM duty cycle in time:

                                                                                 Note:         If the PWM duty cycle value is longer than

PWM duty cycle =                                                                               the PWM period the CCP1 pin will not be

                                                                                               cleared.

(CCPR1L:CCP1CON<5:4>) ⋅ Tosc ⋅ TMR2 prescale                                For      an     example         PWM        period      and   duty                                                               cycle

                                                    value                   calculation, see the PIC® Mid-Range Reference Man-

CCPR1L and CCP1CON<5:4> can be written to at any                            ual (DS33023).

time,  but    the   duty  cycle    value  is  not   latched      into       9.3.3              SET-UP FOR PWM OPERATION

CCPR1H until after a match between PR2 and TMR2                             The following steps should be taken when configuring

occurs (i.e., the period is complete). In PWM mode,                         the CCP module for PWM operation:

CCPR1H is a read-only register.

The CCPR1H register and a 2-bit internal latch are                          1.       Set  the       PWM     period     by  writing  to   the                                                             PR2

used to double buffer the PWM duty cycle. This double                                register.

buffering is essential for glitchless PWM operation.                        2.       Set  the       PWM      duty   cycle      by  writing                                                           to     the

When     the  CCPR1H        and    2-bit  latch     match    TMR2                    CCPR1L register and CCP1CON<5:4> bits.

concatenated with an internal 2-bit Q clock or 2 bits of                    3.       Make the CCP1 pin an output by clearing the

the TMR2 prescaler, the CCP1 pin is cleared.                                         TRISB<3> bit.

                                                                            4.       Set the TMR2 prescale value and enable Timer2

                                                                                     by writing to T2CON.

TABLE 9-3:            EXAMPLE PWM FREQUENCIES AND RESOLUTIONS AT 20 MHz

                   PWM Frequency                           1.22 kHz     4.88 kHz     19.53 kHz         78.12 kHz       156.3 kHz         208.3 kHz

Timer Prescaler (1, 4, 16)                                   16         4                   1                1                 1                                                                         1

PR2 Value                                                    0xFF       0xFF              0xFF              0x3F           0x1F                                                                      0x17

Maximum Resolution (bits)                                    10         10                10                 8                 7                                                                     6.5

TABLE 9-4:            REGISTERS ASSOCIATED WITH                         PWM AND TIMER2

                                                                                                                           Value on                                                                  Value on

Address       Name          Bit 7  Bit 6            Bit 5        Bit 4  Bit 3        Bit 2          Bit 1       Bit 0          POR                                                                   all other

                                                                                                                                                                                                     Resets

0Bh, 8Bh,     INTCON        GIE    PEIE             T0IE         INTE   RBIE         T0IF           INTF        RBIF       0000    000x                                                              0000   000u

10Bh, 18Bh

0Ch           PIR1          EEIF   CMIF             RCIF         TXIF   —            CCP1IF         TMR2IF   TMR1IF        0000    -000                                                              0000   -000

8Ch           PIE1          EEIE   CMIE             RCIE         TXIE   —            CCP1IE         TMR2IE   TMR1IE        0000    -000                                                              0000   -000

86h, 186h     TRISB       TRISB7   TRISB6         TRISB5     TRISB4     TRISB3       TRISB2         TRISB1   TRISB0        1111    1111                                                              1111   1111

11h           TMR2        Timer2 Module’s Register                                                                         0000    0000                                                              0000   0000

92h           PR2         Timer2 Module’s Period Register                                                                  1111    1111                                                              1111   1111

12h           T2CON         —      TOUTPS3    TOUTPS2        TOUTPS1    TOUTPS0      TMR2ON         T2CKPS1  T2CKPS0       -000    0000                                                              uuuu   uuuu

15h           CCPR1L      Capture/Compare/PWM Register 1 (LSB)                                                             xxxx    xxxx                                                              uuuu   uuuu

16h           CCPR1H      Capture/Compare/PWM Register 1 (MSB)                                                             xxxx    xxxx                                                              uuuu   uuuu

17h           CCP1CON       —      —              CCP1X      CCP1Y      CCP1M3       CCP1M2         CCP1M1   CCP1M0        --00    0000                                                              --00   0000

Legend:       x = unknown, u = unchanged, - = unimplemented read as     ‘0’. Shaded  cells are not  used by PWM and Timer2.

© 2009 Microchip Technology Inc.                                                                                                   DS40044G-page 61
PIC16F627A/628A/648A

NOTES:

DS40044G-page 62      © 2009 Microchip Technology Inc.
                                                           PIC16F627A/628A/648A

10.0  COMPARATOR MODULE                                    The CMCON register, shown in Register 10-1, controls

                                                           the comparator input and output multiplexers. A block

The   comparator   module         contains  two    analog  diagram of the comparator is shown in Figure 10-1.

comparators.  The  inputs  to     the  comparators  are

multiplexed with the RA0 through RA3 pins. The on-chip

Voltage Reference (Section 11.0 “Voltage Reference

Module”) can also be an input to the comparators.

REGISTER 10-1:     CMCON – COMPARATOR CONFIGURATION REGISTER (ADDRESS: 01Fh)

                           R-0              R-0     R/W-0  R/W-0           R/W-0         R/W-0     R/W-0       R/W-0

                   C2OUT               C1OUT       C2INV   C1INV           CIS           CM2       CM1         CM0

                   bit 7                                                                                               bit 0

      bit     7    C2OUT: Comparator 2 Output bit

                   When C2INV = 0:

                   1 = C2 VIN+ > C2 VIN-

                   0 = C2 VIN+ < C2 VIN-

                   When C2INV = 1:

                   1 = C2 VIN+ < C2 VIN-

                   0 = C2 VIN+ > C2 VIN-

      bit     6    C1OUT: Comparator 1 Output bit

                   When C1INV = 0:

                   1 = C1 VIN+ > C1 VIN-

                   0 = C1 VIN+ < C1 VIN-

                   When C1INV = 1:

                   1 = C1 VIN+ < C1 VIN-

                   0 = C1 VIN+ > C1 VIN-

      bit     5    C2INV: Comparator 2 Output Inversion    bit

                   1 = C2 Output inverted

                   0 = C2 Output not inverted

      bit     4    C1INV: Comparator 1 Output Inversion    bit

                   1 = C1 Output inverted

                   0 = C1 Output not inverted

      bit     3    CIS: Comparator Input Switch bit

                   When CM<2:0>: = 001

                   Then:

                   1 = C1 VIN- connects to RA3

                   0 = C1 VIN- connects to RA0

                   When CM<2:0> = 010

                   Then:

                   1 = C1 VIN- connects to RA3

                           C2 VIN- connects to RA2

                   0 = C1 VIN- connects to RA0

                           C2 VIN- connects to RA1

      bit     2-0  CM<2:0>: Comparator Mode bits

                   Figure 10-1 shows the comparator modes             and  CM<2:0>  bit  settings

                   Legend:

                   R = Readable bit                 W = Writable bit       U = Unimplemented bit, read as ‘0’

                   -n = Value at POR                ‘1’ = Bit is set       ‘0’ = Bit is cleared    x = Bit is unknown

© 2009 Microchip Technology Inc.                                                                   DS40044G-page 63
PIC16F627A/628A/648A

10.1   Comparator Configuration                                         If the Comparator mode is changed, the comparator

There  are  eight        modes      of  operation   for  the            output level may not be valid for the specified mode

                                                                        change delay shown in Table 17-2.

comparators. The CMCON register is used to select

the  mode.  Figure 10-1       shows     the  eight  possible            Note 1:      Comparator interrupts should be disabled

modes. The TRISA register controls the data direction                                during  a     Comparator    mode     change,

of the comparator pins for each mode.                                                otherwise a false interrupt may occur.

                                                                             2:      Comparators      can     have   an   inverted

                                                                                     output. See Figure 10-1.

FIGURE 10-1:             COMPARATOR I/O OPERATING MODES

Comparators Reset     (POR Default Value)                           Comparators Off

CM<2:0> = 000                                                       CM<2:0> = 111

                                                                    RA0/AN0          D       VIN-

RA0/AN0            A          VIN-                                                                    C1         Off (Read as ‘0’)

                                        C1   Off (Read as ‘0’)      RA3/AN3/CMP1     D       VIN+

RA3/AN3/CMP1       A          VIN+

                   A          VIN-                                  RA1/AN1          D       VIN-

RA1/AN1                                                                                               C2         Off (Read as ‘0’)

RA2/AN2/VREF       A          VIN+      C2   Off (Read as     ‘0’)  RA2/AN2/VREF     D       VIN+

                                                                                           VSS

Two Independent   Comparators                                       Four Inputs Multiplexed to Two Comparators

CM<2:0> = 100                                                       CM<2:0> = 010

                                                                    RA0/AN0          A

RA0/AN0               A       VIN-                                                           CIS = 0  VIN-

                                        C1          C1VOUT          RA3/AN3/CMP1     A       CIS = 1             C1       C1VOUT

RA3/AN3/CMP1          A       VIN+                                                                    VIN+

                                                                    RA1/AN1          A

                                                                                             CIS = 0  VIN-

RA1/AN1               A       VIN-                                  RA2/AN2/VREF     A       CIS = 1             C2       C2VOUT

                                                    C2VOUT                                            VIN+

RA2/AN2/VREF          A       VIN+      C2

                                                                                                                    From VREF

                                                                                                                     Module

Two Common Reference Comparators                                    Two Common Reference Comparators with        Outputs

CM<2:0> = 011                                                       CM<2:0> = 110

                      A       VIN-                                  RA0/AN0             A       VIN-

RA0/AN0                                                                                         VIN+      C1         C1VOUT

                      D       VIN+      C1          C1VOUT          RA3/AN3/CMP1        D

RA3/AN3/CMP1

                      A       VIN-                                  RA1/AN1             A       VIN-

RA1/AN1                                                                                                   C2         C2VOUT

                      A       VIN+      C2          C2VOUT          RA2/AN2/VREF        A       VIN+

RA2/AN2/VREF

                                                                    RA4/T0CKI/CMP2      Open Drain

One Independent   Comparator                                        Three Inputs Multiplexed to Two Comparators

CM<2:0> = 101                                                       CM<2:0> = 001

RA0/AN0            D     VIN-                                       RA0/AN0          A

                   D     VIN+           C1   Off (Read as     ‘0’)                           CIS = 0  VIN-

RA3/AN3/CMP1                                                        RA3/AN3/CMP1     A       CIS = 1             C1       C1VOUT

                                                                                                      VIN+

                         VSS

RA1/AN1            A     VIN-                                       RA1/AN1          A                VIN-

RA2/AN2/VREF       A     VIN+           C2   C2VOUT                                  A                VIN+       C2       C2VOUT

                                                                    RA2/AN2/VREF

A = Analog Input, port reads zeros always.          D = Digital Input.       CIS (CMCON<3>) is the Comparator Input Switch.

DS40044G-page 64                                                                                   © 2009 Microchip Technology Inc.
                                                               PIC16F627A/628A/648A

The code example in Example 10-1 depicts the steps             FIGURE 10-2:              SINGLE COMPARATOR

required to configure the Comparator module. RA3 and

RA4 are configured as digital output. RA0 and RA1 are                   VIN+             +

configured as the V- inputs and RA2 as the V+ input to                                                        Result

both comparators.                                                       VIN-             –

EXAMPLE 10-1:         INITIALIZING

                      COMPARATOR MODULE

FLAG_REG        EQU                  0X20

CLRF      FLAG_REG    ;Init   flag      register               VIN-

CLRF      PORTA       ;Init   PORTA

MOVF      CMCON,   W  ;Load   comparator        bits

ANDLW     0xC0        ;Mask   comparator        bits           VIN+

IORWF     FLAG_REG,F  ;Store      bits  in   flag  register

MOVLW     0x03        ;Init   comparator        mode

MOVWF     CMCON       ;CM<2:0>    =     011

BSF       STATUS,RP0  ;Select     Bank1

MOVLW     0x07        ;Initialize       data    direction

MOVWF     TRISA       ;Set   RA<2:0>     as   inputs           Result

                      ;RA<4:3>    as    outputs

                      ;TRISA<7:5>       always     read  ‘0’

BCF       STATUS,RP0  ;Select     Bank   0

CALL      DELAY10     ;10Μs    delay                           10.3.1         EXTERNAL REFERENCE SIGNAL

MOVF      CMCON,F     ;Read CMCON to       end  change

                      ;condition                               When     external   voltage     references     are      used,  the

BCF       PIR1,CMIF   ;Clear      pending    interrupts        Comparator     module     can   be  configured      to  have   the

BSF       STATUS,RP0  ;Select     Bank   1                     comparators    operate       from   the    same     or   different

BSF       PIE1,CMIE   ;Enable     comparator       interrupts

BCF       STATUS,RP0  ;Select     Bank   0                     reference      sources.   However,         threshold     detector

BSF       INTCON,PEIE ;Enable     peripheral       interrupts  applications   may  require         the  same  reference.      The

BSF       INTCON,GIE  ;Global     interrupt     enable         reference signal must be between VSS and VDD, and

                                                               can be applied to either pin of the comparator(s).

10.2   Comparator Operation

A single comparator is shown in Figure 10-2 along with         10.3.2         INTERNAL REFERENCE SIGNAL

the relationship between the analog input levels and           The Comparator module also allows the selection of an

the digital output. When the analog input at VIN+ is less      internally     generated     voltage       reference     for   the

than the analog input VIN-, the output of the comparator       comparators.       Section 11.0          “Voltage     Reference

is a digital low level. When the analog input at VIN+ is       Module”, contains a detailed description of the Voltage

greater than the analog input VIN-, the output of the          Reference      module     that  provides    this    signal.    The

comparator is a digital high level. The shaded areas of        internal reference signal is used when the comparators

the output of the comparator in Figure 10-2 represent          are  in  mode    CM<2:0> = 010           (Figure 10-1).  In    this

the uncertainty due to input offsets and response time.        mode, the internal voltage reference is applied to the

See Table 17-2 for Common Mode voltage.                        VIN+ pin of both comparators.

10.3   Comparator Reference                                    10.4        Comparator Response Time

An external or internal reference signal may be used           Response time is the minimum time, after selecting a

depending on the comparator Operating mode. The                new   reference    voltage      or  input  source,    before   the

analog signal that is present at VIN- is compared to the       comparator output is to have a valid level. If the internal

signal at VIN+, and the digital output of the comparator       reference is changed, the maximum delay of the internal

is adjusted accordingly (Figure 10-2).                         voltage reference must be considered when using the

                                                               comparator outputs. Otherwise, the maximum delay of

                                                               the comparators should be used (Table 17-2, page 142).

© 2009 Microchip Technology Inc.                                                                          DS40044G-page 65
PIC16F627A/628A/648A

10.5       Comparator Outputs

The comparator outputs are read through the CMCON

register.  These     bits   are  read-only.  The   comparator

outputs may also be directly output to the RA3 and RA4

I/O pins. When the CM<2:0> = 110 or 001, multiplexors

in the output path of the RA3 and RA4/T0CK1/CMP2

pins will switch and the output of each pin will be the

unsynchronized       output      of  the     comparator.  The

uncertainty of each of the comparators is related to the

input offset voltage and the response time given in the

specifications. Figure 10-3 shows the comparator output

block diagram.

The TRISA bits will still function as an output enable/

disable    for  the  RA3/AN3/CMP1            and  RA4/T0CK1/

CMP2 pins while in this mode.

Note 1:         When reading the PORT register, all pins

                configured as analog inputs will read as a

                ‘0’. Pins configured as digital inputs will

                convert an analog input, according to the

                Schmitt Trigger input specification.

           2:   Analog levels on any pin that is defined as

                a digital input may cause the input buffer

                to   consume     more     current  than      is

                specified.

FIGURE 10-3:                MODIFIED COMPARATOR OUTPUT                 BLOCK   DIAGRAM

           CnINV

To RA3/AN3/CMP1 or

RA4/T0CK1/CMP2 pin                                                                                          CnVOUT

To Data Bus                                                      Q      D

CMCON<7:6>

                                                                                                 Q3

                                                                    EN

RD CMCON

Set CMIF bit                                                        Q       D

                                                                           EN                    Q1

                                                                        CL

                     From other Comparator

                                                                               Reset

DS40044G-page 66                                                                        ©  2009  Microchip  Technology Inc.
                                                                   PIC16F627A/628A/648A

10.6       Comparator Interrupts                                   10.7       Comparator Operation During

The comparator interrupt flag is set whenever there is                        Sleep

a   change  in  the  output  value  of  either  comparator.        When a comparator is active and the device is placed

Software will need to maintain information about the               in Sleep mode, the comparator remains active and the

status of the output bits, as read from CMCON<7:6>, to             interrupt  is  functional     if  enabled.   This   interrupt     will

determine the actual change that has occurred. The                 wake-up the device from Sleep mode when enabled.

CMIF bit, PIR1<6>, is the comparator interrupt flag.               While  the     comparator     is  powered-up,       higher  Sleep

The CMIF bit must be reset by clearing ‘0’. Since it is            currents    than  shown       in  the    power-down         current

also possible to write a ‘1’ to this register, a simulated         specification     will  occur.    Each   comparator         that  is

interrupt may be initiated.                                        operational will consume additional current as shown in

The   CMIE      bit  (PIE1<6>)      and  the    PEIE          bit  the  comparator         specifications.  To  minimize       power

(INTCON<6>) must be set to enable the interrupt. In                consumption       while  in       Sleep  mode,      turn  off     the

addition, the GIE bit must also be set. If any of these            comparators, CM<2:0> = 111, before entering Sleep. If

bits are clear, the interrupt is not enabled, though the           the device wakes up from Sleep, the contents of the

CMIF bit will still be set if an interrupt condition occurs.       CMCON register are not affected.

    Note:   If  a    change  in   the   CMCON   register           10.8       Effects of a Reset

            (C1OUT or C2OUT) should occur when a

            read operation is being executed (start of             A device Reset forces the CMCON register to its Reset

            the Q2 cycle), then the CMIF (PIR1<6>)                 state. This forces the Comparator module to be in the

            interrupt flag may not get set.                        comparator Reset mode, CM<2:0> = 000. This ensures

The user, in the interrupt service routine, can clear the          that all potential inputs are analog inputs. Device current

interrupt in the following manner:                                 is minimized when analog inputs are present at Reset

a)   Any write or read of CMCON. This will end the                 time. The comparators will be powered-down during the

     mismatch condition.                                           Reset interval.

b)   Clear flag bit CMIF.                                          10.9       Analog Input Connection

A mismatch condition will continue to set flag bit CMIF.                      Considerations

Reading CMCON will end the mismatch condition and

allow flag bit CMIF to be cleared.                                 A  simplified  circuit   for  an  analog     input  is    shown   in

                                                                   Figure 10-4. Since the analog pins are connected to a

                                                                   digital output, they have reverse biased diodes to VDD

                                                                   and VSS. The analog input therefore, must be between

                                                                   VSS and VDD. If the input voltage deviates from this

                                                                   range by more than 0.6V in either direction, one of the

                                                                   diodes is forward biased and a latch-up may occur. A

                                                                   maximum        source         impedance      of     10 kΩ         is

                                                                   recommended for the analog sources. Any external

                                                                   component connected to an analog input pin, such as

                                                                   a capacitor or a Zener diode, should have very little

                                                                   leakage current.

© 2009 Microchip Technology Inc.                                                                                DS40044G-page 67
PIC16F627A/628A/648A

FIGURE 10-4:        ANALOG INPUT MODE

                                                       VDD

              RS   < 10 K                                   VT = 0.6V                     RIC

                              AIN

             VA                    CPIN                     VT = 0.6V           ILEAKAGE

                                   5 pF                                         ±500 nA

                                                                                VSS

              Legend:  CPIN        =     Input Capacitance

                       VT          =     Threshold Voltage

                       ILEAKAGE    =     Leakage Current at the Pin

                       RIC         =     Interconnect Resistance

                       RS          =     Source Impedance

                       VA          =     Analog Voltage

TABLE 10-1:       REGISTERS ASSOCIATED WITH COMPARATOR MODULE

                                                                                                  Value on    Value on

Address      Name      Bit 7  Bit 6      Bit 5  Bit 4       Bit 3       Bit 2   Bit 1     Bit 0   POR         All Other

                                                                                                              Resets

1Fh         CMCON   C2OUT     C1OUT      C2INV  C1NV        CIS         CM2     CM1       CM0     0000  0000  0000  0000

0Bh, 8Bh,   INTCON     GIE    PEIE       T0IE   INTE        RBIE        T0IF    INTF      RBIF    0000  000x  0000  000u

10Bh, 18Bh

0Ch         PIR1       EEIF   CMIF       RCIF   TXIF        —           CCP1IF  TMR2IF    TMR1IF  0000  -000  0000  -000

8Ch         PIE1       EEIE   CMIE       RCIE   TXIE        —           CCP1IE  TMR2IE    TMR1IE  0000  -000  0000  -000

85h         TRISA   TRISA7    TRISA6  TRISA5    TRISA4   TRISA3         TRISA2  TRISA1    TRISA0  1111  1111  1111  1111

Legend:     x = Unknown, u = Unchanged, - = Unimplemented, read as ‘0’

DS40044G-page 68                                                                          © 2009 Microchip Technology Inc.
                                                          PIC16F627A/628A/648A

11.0  VOLTAGE REFERENCE                                       The           equations    used  to      calculate                       the  output    of   the

      MODULE                                                  Voltage Reference module are as follows:

The Voltage Reference module consists of a 16-tap                           if VRR = 1:

resistor ladder network that provides a selectable volt-                                 VREF  =    V----R----<----3---:--0--->--  ×  VDD

age reference. The resistor ladder is segmented to pro-                                                24

vide two ranges of VREF values and has a power-down                         if VRR = 0:

function to conserve power when the reference is not

being used.       The VRCON register controls the opera-                    VREF         =  ⎛  VDD  ×  14--⎠⎞  + V----R----<----3---:--0--->-- × VDD

tion of the reference as shown in Figure 11-1. The                                          ⎝                                      32

block diagram is given in Figure 11-1.                        The setting time of the Voltage Reference module must

11.1  Voltage Reference Configuration                         be considered when changing the VREF output

                                                              (Table 17-3). Example 11-1 demonstrates how voltage

The Voltage Reference module can output 16 distinct           reference is configured for an output voltage of 1.25V

voltage levels for each range.                                with VDD = 5.0V.

REGISTER 11-1:         VRCON – VOLTAGE REFERENCE CONTROL REGISTER (ADDRESS: 9Fh)

                       R/W-0            R/W-0  R/W-0          U-0           R/W-0                   R/W-0                          R/W-0              R/W-0

                       VREN             VROE   VRR            —             VR3                     VR2                               VR1             VR0

                       bit 7                                                                                                                          bit 0

             bit  7    VREN: VREF Enable bit

                       1 = VREF circuit powered on

                       0 = VREF circuit powered down, no IDD drain

             bit  6    VROE: VREF Output Enable bit

                       1 = VREF is output on RA2 pin

                       0 = VREF is disconnected from RA2 pin

             bit  5    VRR: VREF Range Selection bit

                       1 = Low range

                       0 = High range

             bit  4    Unimplemented: Read as ‘0’

             bit  3-0  VR<3:0>: VREF Value Selection bits 0 ≤ VR <3:0> ≤ 15

                       When VRR = 1: VREF = (VR<3:0>/ 24) * VDD

                       When VRR = 0: VREF = 1/4 * VDD + (VR<3:0>/ 32) * VDD

                       Legend:

                       R = Readable bit                  W = Writable bit   U = Unimplemented bit, read as ‘0’

                       -n = Value at POR                  ‘1’ = Bit is set  ‘0’ = Bit is cleared               x = Bit is unknown

© 2009 Microchip Technology Inc.                                                                                                       DS40044G-page 69
PIC16F627A/628A/648A

FIGURE 11-1:                VOLTAGE REFERENCE BLOCK DIAGRAM

                                VDD                                16 Stages

     VREN                               8R          R        R                R            R

                                                                                                       8R                VRR

                                                                                                  VSS           VSS

                       VREF                                                                                VR3

                                                                   16-1 Analog Mux                              (From  VRCON<3:0>)

                                                                                                           VR0

         Note:      R is defined in Table 17-3.

EXAMPLE 11-1:               VOLTAGE REFERENCE                      11.5             Connection Considerations

                            CONFIGURATION                          The Voltage Reference module operates independently

MOVLW        0x02           ;4   Inputs     Muxed                  of the Comparator module. The output of the reference

MOVWF        CMCON          ;to   2   comps.                       generator        may       be  connected     to  the  RA2  pin    if  the

BSF          STATUS,RP0     ;go   to  Bank     1                   TRISA<2> bit is set and the VROE bit, VRCON<6>, is

MOVLW        0x07           ;RA3-RA0     are

MOVWF        TRISA          ;outputs                               set. Enabling the Voltage Reference module output onto

MOVLW        0xA6           ;enable     VREF                       the RA2 pin with an input signal present will increase

MOVWF        VRCON          ;low     range     set  VR<3:0>=6      current consumption. Connecting RA2 as a digital output

BCF          STATUS,RP0     ;go   to  Bank     0                   with VREF enabled will also increase current consump-

CALL         DELAY10        ;10μs     delay                        tion.

                                                                   The RA2 pin can be used as a simple D/A output with

11.2       Voltage Reference Accuracy/Error                        limited          drive     capability.  Due  to     the  limited  drive

The full range of VSS to VDD cannot be realized due to             capability, a buffer must be used in conjunction with the

the construction of the module. The transistors on the             Voltage Reference module output for external connec-

top   and    bottom    of   the      resistor  ladder    network   tions to VREF. Figure 11-2 shows an example buffering

(Figure 11-1) keep VREF from approaching VSS or VDD.               technique.

The Voltage Reference module is VDD derived and

therefore, the VREF output changes with fluctuations in

VDD. The tested absolute accuracy of the Voltage Ref-

erence module can be found in Table 17-3.

11.3       Operation During Sleep

When the device wakes up from Sleep through an

interrupt or a Watchdog Timer time out, the contents of

the  VRCON      register    are  not  affected.     To   minimize

current    consumption      in   Sleep   mode,      the  Voltage

Reference module should be disabled.

11.4       Effects of a Reset

A device Reset disables the Voltage Reference module

by clearing bit VREN (VRCON<7>). This Reset also

disconnects the reference from the RA2 pin by clearing

bit VROE (VRCON<6>) and selects the high voltage

range    by  clearing  bit  VRR      (VRCON<5>).        The  VREF

value select bits, VRCON<3:0>, are also cleared.

DS40044G-page 70                                                                                  © 2009 Microchip Technology Inc.
                                                           PIC16F627A/628A/648A

FIGURE 11-2:        VOLTAGE REFERENCE OUTPUT BUFFER EXAMPLE

                                    R(1)      RA2                  Op Amp

                    VREF                                           +

                    Module                                                         VREF Output

                            Voltage

                            Reference

                            Output

                            Impedance

Note     1:  R is dependent upon the voltage reference configuration VRCON<3:0> and VRCON<5>.

TABLE 11-1:         REGISTERS ASSOCIATED WITH VOLTAGE REFERENCE

                                                                                               Value On    Value On

Address      Name   Bit 7         Bit 6   Bit 5    Bit 4   Bit 3   Bit 2   Bit 1   Bit 0        POR        All Other

                                                                                                           Resets

9Fh          VRCON  VREN          VROE    VRR      —       VR3     VR2     VR1     VR0         000-  0000  000-  0000

1Fh          CMCON  C2OUT         C1OUT   C2INV    C1INV   CIS     CM2     CM1     CM0         0000  0000  0000  0000

85h          TRISA  TRISA7        TRISA6  TRISA5   TRISA4  TRISA3  TRISA2  TRISA1  TRISA0      1111  1111  1111  1111

Legend:      - = Unimplemented, read as ‘0’.

© 2009 Microchip Technology Inc.                                                                     DS40044G-page 71
PIC16F627A/628A/648A

NOTES:

DS40044G-page 72      © 2009 Microchip Technology Inc.
                                                                  PIC16F627A/628A/648A

12.0       UNIVERSAL SYNCHRONOUS                                  The USART can be configured in the following modes:

           ASYNCHRONOUS RECEIVER                                  •           Asynchronous (full-duplex)

           TRANSMITTER (USART)                                    •           Synchronous – Master (half-duplex)

           MODULE                                                 •           Synchronous – Slave (half-duplex)

The Universal Synchronous Asynchronous Receiver                   Bit SPEN (RCSTA<7>) and bits TRISB<2:1> have to be

Transmitter  (USART)  is       also     known  as      a  Serial  set in order to configure pins RB2/TX/CK and RB1/RX/DT

Communications Interface (SCI). The USART can be                  as the Universal Synchronous Asynchronous Receiver

configured as a full-duplex asynchronous system that              Transmitter.

can communicate with peripheral devices such as CRT               Register 12-1 shows the Transmit Status and Control

terminals    and     personal  computers,      or  it  can  be    Register    (TXSTA)  and          Register 12-2  shows      the

configured as a half-duplex synchronous system that               Receive Status and Control Register (RCSTA).

can communicate with peripheral devices such as A/D

or D/A integrated circuits, Serial EEPROMs, etc.

REGISTER 12-1:        TXSTA – TRANSMIT STATUS AND CONTROL REGISTER (ADDRESS: 98h)

                               R/W-0       R/W-0          R/W-0   R/W-0         U-0    R/W-0              R-1      R/W-0

                               CSRC        TX9            TXEN    SYNC          —      BRGH               TRMT     TX9D

                      bit 7                                                                                                   bit 0

             bit  7   CSRC: Clock Source Select bit

                      Asynchronous mode

                               Don’t care

                      Synchronous mode

                               1 = Master mode (Clock generated internally from BRG)

                               0 = Slave mode (Clock from external source)

             bit  6   TX9: 9-bit Transmit Enable bit

                      1 = Selects 9-bit transmission

                      0 = Selects 8-bit transmission

             bit  5   TXEN: Transmit Enable bit(1)

                      1 = Transmit enabled

                      0 = Transmit disabled

             bit  4   SYNC: USART Mode Select bit

                      1 = Synchronous mode

                      0 = Asynchronous mode

             bit  3   Unimplemented: Read as ‘0’

             bit  2   BRGH: High Baud Rate Select bit

                      Asynchronous mode

                               1 = High speed

                               0 = Low speed

                      Synchronous mode

                               Unused in this mode

             bit  1   TRMT: Transmit Shift Register Status bit

                      1 = TSR empty

                      0 = TSR full

             bit  0   TX9D: 9th bit of transmit data. Can be parity bit.

                               Note 1:  SREN/CREN overrides TXEN in SYNC mode.

                      Legend:

                      R = Readable bit                      W = Writable bit  U = Unimplemented bit, read as ‘0’

                      -n = Value at POR                     ‘1’ = Bit is set  ‘0’ = Bit is cleared        x = Bit is unknown

© 2009 Microchip Technology Inc.                                                                                 DS40044G-page 73
PIC16F627A/628A/648A

REGISTER 12-2:    RCSTA – RECEIVE STATUS AND CONTROL REGISTER (ADDRESS: 18h)

                  R/W-0          R/W-0         R/W-0   R/W-0          R/W-0  R-0            R-0             R-x

                  SPEN           RX9           SREN    CREN           ADEN   FERR           OERR          RX9D

                  bit 7                                                                                            bit 0

bit 7             SPEN: Serial Port Enable bit

                  (Configures RB1/RX/DT and RB2/TX/CK pins as serial port pins when bits TRISB<2:1> are set)

                  1 = Serial port enabled

                  0 = Serial port disabled

bit 6             RX9: 9-bit Receive Enable bit

                  1 = Selects 9-bit reception

                  0 = Selects 8-bit reception

bit 5             SREN: Single Receive Enable bit

                  Asynchronous mode:

                  Don’t care

                  Synchronous mode - master:

                  1 = Enables single receive

                  0 = Disables single receive

                  This bit is cleared after reception is complete.

                  Synchronous mode - slave:

                  Unused in this mode

bit 4             CREN: Continuous Receive Enable bit

                  Asynchronous mode:

                  1 = Enables continuous receive

                  0 = Disables continuous receive

                  Synchronous mode:

                  1 = Enables continuous receive until enable bit CREN is cleared (CREN overrides SREN)

                  0 = Disables continuous receive

bit 3             ADEN: Address Detect Enable bit

                  Asynchronous mode 9-bit (RX9 = 1):

                  1 = Enables address detection, enable interrupt and load of the receive buffer when RSR<8>

                         is set

                  0 = Disables address detection, all bytes are received, and ninth bit can be used as parity bit

                  Asynchronous mode 8-bit (RX9 = 0):

                  Unused in this mode

                  Synchronous mode

                  Unused in this mode

bit 2             FERR: Framing Error bit

                  1 = Framing error (Can be updated by reading RCREG register and receive next valid byte)

                  0 = No framing error

bit 1             OERR: Overrun Error bit

                  1 = Overrun error (Can be cleared by clearing bit CREN)

                  0 = No overrun error

bit 0             RX9D: 9th bit of received data (Can be parity bit)

                  Legend:

                  R = Readable bit               W = Writable bit     U = Unimplemented bit, read as ‘0’

                  -n = Value at POR              ‘1’ = Bit is set     ‘0’ = Bit is cleared  x = Bit is unknown

DS40044G-page 74                                                             © 2009 Microchip Technology Inc.
                                                                     PIC16F627A/628A/648A

12.1      USART Baud Rate Generator                                         EQUATION 12-1:              CALCULATING BAUD

          (BRG)                                                                                         RATE ERROR

The    BRG   supports     both       the  Asynchronous       and                           Desired Baud Rate = 6---4---F-(--x-o---+s---c---1----)

Synchronous modes of the USART. It is a dedicated

8-bit  baud    rate   generator.     The       SPBRG      register

controls the period of a free running 8-bit timer. In                                             9600 = 1-6--6-4---0(--x-0---0-+--0---01---0-)

Asynchronous       mode,  bit    BRGH          (TXSTA<2>)  also

controls  the  baud       rate.  In  Synchronous      mode,  bit

BRGH is ignored. Table 12-1 shows the formula for

computation    of    the  baud   rate     for  different  USART                                      x = 25.042

modes,    which    only   apply  in  Master    mode       (internal

clock).                                                                          Calculated Baud Rate = 6--1-4--6--(-0-2--0-5--0---+0---0--1-0---) = 9615

Given the desired baud rate and FOSC, the nearest

integer value for the SPBRG register can be calculated

using the formula in Table 12-1. From this, the error in

baud rate can be determined.                                                    Error  =   (--C-----a---l-c---u---l-a---t--e---d----B--D--a--e-u--s-d-i-r---Re---da---t-B-e---a----u--D-d---e-R--s--ia-r--t-e-e--d----B----a---u---d----R----a---t--e---)

Example 12-1 shows the calculation of the baud rate

error for the following conditions:

       FOSC = 16 MHz                                                                           = -9---6---1---59---6-–--0---90---6---0---0- = 0.16%

       Desired Baud Rate = 9600

       BRGH = 0                                                             It  may    be  advantageous        to  use  the                          high  baud                                                                                            rate

       SYNC = 0                                                             (BRGH      =   1)  even  for    slower   baud                            clocks.   This                                                                                        is

                                                                            because the FOSC/(16(X + 1)) equation can reduce the

                                                                            baud rate error in some cases.

                                                                            Writing a new value to the SPBRG register causes the

                                                                            BRG timer to be reset (or cleared) and ensures the

                                                                            BRG      does  not    wait    for  a    timer                            overflow  before

                                                                            outputting the new baud rate.

                                                                            The data on the RB1/RX/DT pin is sampled three times

                                                                            by a majority detect circuit to determine if a high or a

                                                                            low level is present at the RX pin.

TABLE 12-1:          BAUD RATE FORMULA

SYNC                                 BRGH = 0 (Low Speed)                                            BRGH = 1 (High Speed)

       0                  (Asynchronous) Baud Rate = FOSC/(64(X+1))                               Baud Rate = FOSC/(16(X+1))

       1                  (Synchronous) Baud Rate = FOSC/(4(X+1))                                                   NA

Legend:      X = value in SPBRG (0 to 255)

TABLE 12-2:          REGISTERS ASSOCIATED WITH BAUD RATE GENERATOR

Address        Name       Bit 7      Bit 6     Bit 5       Bit 4     Bit 3      Bit 2      Bit 1     Bit 0         Value on                          Value on all

                                                                                                                   POR                               other Resets

     98h       TXSTA      CSRC         TX9     TXEN       SYNC       —          BRGH       TRMT      TX9D      0000     -010                         0000      -010

     18h       RCSTA      SPEN         RX9     SREN       CREN       ADEN       FERR       OERR      RX9D      0000     000x                         0000      000x

     99h       SPBRG      Baud Rate Generator Register                                                         0000     0000                         0000      0000

Legend:        x  = unknown,     - = unimplemented read as ‘0’. Shaded cells are not used for the BRG.

© 2009 Microchip Technology Inc.                                                                                                                 DS40044G-page 75
PIC16F627A/628A/648A

TABLE 12-3:       BAUD RATES     FOR SYNCHRONOUS MODE

BAUD      FOSC = 20 MHz          SPBRG      16 MHz              SPBRG      10 MHz              SPBRG

RATE (K)                         value                          value                          value

             KBAUD       ERROR   (decimal)  KBAUD       ERROR   (decimal)  KBAUD       ERROR   (decimal)

0.3          NA          —       —          NA          —       —          NA          —       —

1.2          NA          —       —          NA          —       —          NA          —       —

2.4          NA          —       —          NA          —       —          NA          —       —

9.6          NA          —       —          NA          —       —          9.766       +1.73%  255

19.2         19.53       +1.73%  255        19.23       +0.16%  207        19.23       +0.16%  129

76.8         76.92       +0.16%  64         76.92       +0.16%  51         75.76       -1.36%  32

96           96.15       +0.16%  51         95.24       -0.79%  41         96.15       +0.16%  25

300          294.1       -1.96   16         307.69      +2.56%  12         312.5       +4.17%  7

500          500         0       9          500         0       7          500         0       4

HIGH         5000        —       0          4000        —       0          2500        —       0

LOW          19.53       —       255        15.625      —       255        9.766       —       255

BAUD      FOSC = 7.15909 MHz     SPBRG      5.0688 MHz          SPBRG      4 MHz               SPBRG

RATE (K)                         value                          value                          value

             KBAUD       ERROR   (decimal)  KBAUD       ERROR   (decimal)  KBAUD       ERROR   (decimal)

0.3          NA          —       —          NA          —       —          NA          —       —

1.2          NA          —       —          NA          —       —          NA          —       —

2.4          NA          —       —          NA          —       —          NA          —       —

9.6          9.622       +0.23%  185        9.6         0       131        9.615       +0.16%  103

19.2         19.24       +0.23%  92         19.2        0       65         19.231      +0.16%  51

76.8         77.82       +1.32   22         79.2        +3.13%  15         75.923      +0.16%  12

96           94.20       -1.88   18         97.48       +1.54%  12         1000        +4.17%  9

300          298.3       -0.57   5          316.8       5.60%   3          NA          —       —

500          NA          —       —          NA          —       —          NA          —       —

HIGH         1789.8      —       0          1267        —       0          100         —       0

LOW          6.991       —       255        4.950       —       255        3.906       —       255

BAUD      FOSC = 3.579545 MHz    SPBRG      1 MHz               SPBRG      32.768 kHz          SPBRG

RATE (K)                         value                          value                          value

             KBAUD       ERROR   (decimal)  KBAUD       ERROR   (decimal)  KBAUD       ERROR   (decimal)

0.3          NA          —       —          NA          —       —          0.303       +1.14%  26

1.2          NA          —       —          1.202       +0.16%  207        1.170       -2.48%  6

2.4          NA          —       —          2.404       +0.16%  103        NA          —       —

9.6          9.622       +0.23%  92         9.615       +0.16%  25         NA          —       —

19.2         19.04       -0.83%  46         19.24       +0.16%  12         NA          —       —

76.8         74.57       -2.90%  11         83.34       +8.51%  2          NA          —       —

96           99.43       +3.57%  8          NA          —       —          NA          —       —

300          298.3       0.57%   2          NA          —       —          NA          —       —

500          NA          —       —          NA          —       —          NA          —       —

HIGH         894.9       —       0          250         —       0          8.192       —       0

LOW          3.496       —       255        0.9766      —       255        0.032       —       255

DS40044G-page 76                                                           © 2009      Microchip Technology Inc.
                                                     PIC16F627A/628A/648A

TABLE 12-4:  BAUD RATES           FOR ASYNCHRONOUS MODE          (BRGH =    0)

BAUD      FOSC = 20 MHz           SPBRG      16 MHz              SPBRG      10 MHz               SPBRG

RATE (K)                          value                          value                           value

             KBAUD       ERROR    (decimal)  KBAUD       ERROR   (decimal)  KBAUD       ERROR    (decimal)

0.3          NA          —        —          NA          —       —              NA      —        —

1.2          1.221       +1.73%   255        1.202       +0.16%  207            1.202   +0.16%   129

2.4          2.404       +0.16%   129        2.404       +0.16%  103            2.404   +0.16%   64

9.6          9.469       -1.36%   32         9.615       +0.16%  25             9.766   +1.73%   15

19.2         19.53       +1.73%   15         19.23       +0.16%  12             19.53   +1.73V   7

76.8         78.13       +1.73%   3          83.33       +8.51%  2              78.13   +1.73%   1

96           104.2       +8.51%   2          NA          —       —              NA      —        —

300          312.5       +4.17%   0          NA          —       —              NA      —        —

500          NA          —        —          NA          —       —              NA      —        —

HIGH         312.5       —        0          250         —       0              156.3   —        0

LOW          1.221       —        255        0.977       —       255            0.6104  —        255

BAUD      FOSC = 7.15909 MHz      SPBRG      5.0688 MHz          SPBRG      4 MHz                SPBRG

RATE (K)                          value                          value                           value

             KBAUD       ERROR    (decimal)  KBAUD       ERROR   (decimal)  KBAUD       ERROR    (decimal)

0.3          NA          —        —          0.31        +3.13%  255            0.3005  -0.17%   207

1.2          1.203       +0.23%   92         1.2         0       65             1.202   +1.67%   51

2.4          2.380       -0.83%   46         2.4         0       32             2.404   +1.67%   25

9.6          9.322       -2.90%   11         9.9         +3.13%  7              NA      —        —

19.2         18.64       -2.90%   5          19.8        +3.13%  3              NA      —        —

76.8         NA          —        —          79.2        +3.13%  0              NA      —        —

96           NA          —        —          NA          —       —              NA      —        —

300          NA          —        —          NA          —       —              NA      —        —

500          NA          —        —          NA          —       —              NA      —        —

HIGH         111.9       —        0          79.2        —       0              62.500  —        0

LOW          0.437       —        255        0.3094      —       255            3.906   —        255

BAUD      FOSC = 3.579545 MHz     SPBRG      1 MHz               SPBRG      32.768 kHz           SPBRG

RATE (K)                          value                          value                           value

             KBAUD       ERROR    (decimal)  KBAUD       ERROR   (decimal)  KBAUD       ERROR    (decimal)

0.3          0.301       +0.23%   185        0.300       +0.16%  51             0.256   -14.67%  1

1.2          1.190       -0.83%   46         1.202       +0.16%  12             NA      —        —

2.4          2.432       +1.32%   22         2.232       -6.99%  6              NA      —        —

9.6          9.322       -2.90%   5          NA          —       —              NA      —        —

19.2         18.64       -2.90%   2          NA          —       —              NA      —        —

76.8         NA          —        —          NA          —       —              NA      —        —

96           NA          —        —          NA          —       —              NA      —        —

300          NA          —        —          NA          —       —              NA      —        —

500          NA          —        —          NA          —       —              NA      —        —

HIGH         55.93       —        0          15.63       —       0              0.512   —        0

LOW          0.2185      —        255        0.0610      —       255            0.0020  —        255

© 2009 Microchip Technology Inc.                                                        DS40044G-page 77
PIC16F627A/628A/648A

TABLE 12-5:       BAUD RATES      FOR ASYNCHRONOUS MODE           (BRGH =    1)

BAUD      FOSC = 20 MHz           SPBRG      16 MHz               SPBRG      10 MHz               SPBRG

RATE (K)                          value                           value                           value

             KBAUD       ERROR    (decimal)  KBAUD      ERROR     (decimal)  KBAUD       ERROR    (decimal)

9600         9.615       +0.16%   129        9.615      +0.16%    103            9.615   +0.16%   64

19200        19.230      +0.16%   64         19.230     +0.16%    51             18.939  -1.36%   32

38400        37.878      -1.36%   32         38.461     +0.16%    25         39.062      +1.7%    15

57600        56.818      -1.36%   21         58.823     +2.12%    16         56.818      -1.36%   10

115200       113.636     -1.36%   10         111.111    -3.55%    8              125     +8.51%   4

250000       250             0    4          250        0         3              NA      —        —

625000       625             0    1          NA         —         —              625     0        0

1250000      1250            0    0          NA         —         —              NA      —        —

BAUD      FOSC = 7.16   MHz       SPBRG      5.068 MHz            SPBRG      4 MHz                SPBRG

RATE (K)                          value                           value                           value

             KBAUD       ERROR    (decimal)  KBAUD      ERROR     (decimal)  KBAUD       ERROR    (decimal)

9600         9.520       -0.83%   46         9598.485   0.016%    32         9615.385    0.160%   25

19200        19.454      +1.32%   22         18632.35   -2.956%   16         19230.77    0.160%   12

38400        37.286      -2.90%   11         39593.75   3.109%    7          35714.29    -6.994%  6

57600        55.930      -2.90%   7          52791.67   -8.348%   5              62500   8.507%   3

115200       111.860     -2.90%   3          105583.3   -8.348%   2          125000      8.507%   1

250000       NA              —    —          316750     26.700%   0          250000      0.000%   0

625000       NA              —    —          NA         —         —              NA      —        —

1250000      NA              —    —          NA         —         —              NA      —        —

BAUD      FOSC = 3.579  MHz       SPBRG      1 MHz                SPBRG      32.768 kHz           SPBRG

RATE (K)                          value                           value                           value

             KBAUD       ERROR    (decimal)  KBAUD      ERROR     (decimal)  KBAUD       ERROR    (decimal)

9600      9725.543       1.308%   22         8.928      -6.994%   6              NA      NA       NA

19200     18640.63      -2.913%   11         20833.3    8.507%    2              NA      NA       NA

38400     37281.25      -2.913%   5          31250      -18.620%  1              NA      NA       NA

57600     55921.88      -2.913%   3          62500      +8.507    0              NA      NA       NA

115200    111243.8      -2.913%   1          NA         —         —              NA      NA       NA

250000    223687.5      -10.525%  0          NA         —         —              NA      NA       NA

625000       NA              —    —          NA         —         —              NA      NA       NA

1250000      NA              —    —          NA         —         —              NA      NA       NA

DS40044G-page 78                                                                 © 2009  Microchip Technology Inc.
                                                                         PIC16F627A/628A/648A

12.2        USART Asynchronous Mode                                      Transmission is enabled by setting enable bit TXEN

In this mode, the USART uses standard non-return-to-                     (TXSTA<5>). The actual transmission will not occur

                                                                         until the TXREG register has been loaded with data

zero (NRZ) format (one Start bit, eight or nine data bits                and the Baud Rate Generator (BRG) has produced a

and one Stop bit). The most common data format is                        shift clock (Figure 12-1). The transmission can also be

8-bit. A dedicated 8-bit baud rate generator is used to                  started by first loading the TXREG register and then

derive baud rate frequencies from the oscillator. The                    setting enable bit TXEN. Normally when transmission

USART       transmits     and     receives   the      LSb  first.   The  is first started, the TSR register is empty, so a transfer

USART’s         transmitter  and   receiver       are     functionally   to  the  TXREG       register  will  result  in  an    immediate

independent, but use the same data format and baud                       transfer to TSR resulting in an empty TXREG. A back-

rate. The baud rate generator produces a clock either                    to-back transfer is thus possible (Figure 12-3). Clearing

x16 or x64 of the bit shift rate, depending on bit BRGH                  enable bit TXEN during a transmission will cause the

(TXSTA<2>). Parity is not supported by the hardware,                     transmission     to  be   aborted     and        will  reset  the

but can be implemented in software (and stored as the                    transmitter. As a result the RB2/TX/CK pin will revert to

ninth data bit). Asynchronous mode is stopped during                     high-impedance.

Sleep.                                                                   In order to select 9-bit transmission, transmit bit TX9

Asynchronous mode is selected by clearing bit SYNC                       (TXSTA<6>) should be set and the ninth bit should be

(TXSTA<4>).                                                              written to TX9D (TXSTA<0>). The ninth bit must be

The    USART         Asynchronous  module         consists      of  the  written  before  writing  the  8-bit  data       to    the  TXREG

following important elements:                                            register. This is because a data write to the TXREG

•  Baud Rate Generator                                                   register can result in an immediate transfer of the data

•  Sampling Circuit                                                      to the TSR register (if the TSR is empty). In such a

                                                                         case, an incorrect ninth data bit may be loaded in the

•  Asynchronous Transmitter                                              TSR register.

•  Asynchronous Receiver

12.2.1          USART ASYNCHRONOUS

                TRANSMITTER

The    USART        transmitter   block   diagram      is  shown    in

Figure 12-1. The heart of the transmitter is the Transmit

(serial) Shift Register (TSR). The shift register obtains

its data from the read/write transmit buffer, TXREG. The

TXREG register is loaded with data in software. The

TSR register is not loaded until the Stop bit has been

transmitted from the previous load. As soon as the Stop

bit is transmitted, the TSR is loaded with new data from

the TXREG register (if available). Once the TXREG

register transfers the data to the TSR register (occurs

in one TCY), the TXREG register is empty and flag bit

TXIF (PIR1<4>) is set. This interrupt can be enabled/

disabled        by   setting/clearing        enable        bit     TXIE

( PIE1<4>). Flag bit TXIF will be set regardless of the

state   of  enable   bit   TXIE   and     cannot      be   cleared  in

software. It will reset only when new data is loaded into

the TXREG register. While flag bit TXIF indicated the

status  of      the  TXREG        register,  another       bit  TRMT

(TXSTA<1>)          shows    the  status     of  the  TSR   register.

Status bit TRMT is a read-only bit which is set when the

TSR register is empty. No interrupt logic is tied to this

bit, so the user has to poll this bit in order to determine

if the TSR register is empty.

   Note 1:      The TSR register is not mapped in data

                memory so it is not available to the user.

            2:  Flag bit TXIF is set when enable bit TXEN

                is set.

© 2009 Microchip Technology Inc.                                                                                      DS40044G-page 79
PIC16F627A/628A/648A

FIGURE        12-1:        USART         TRANSMIT BLOCK DIAGRAM

                                                                            Data Bus

                                 TXIF                                 TXREG register

                     TXIE                                                   8

                                                  MSb                                  LSb

                                                  (8)                 ²  ²  ²          0          Pin Buffer
                                                                                                  and Control

                                                               TSR register                                       RB2/TX/CK pin

                      Interrupt

                                 TXEN    Baud Rate CLK

                                                                                            TRMT            SPEN

                                       SPBRG

                                 Baud Rate Generator                TX9

                                                               TX9D

Follow these steps when setting up an Asynchronous

Transmission:

1.  TRISB<1> and TRISB<2> should both be set to

    ‘1’ to configure the RB1/RX/DT and RB2/TX/CK

    pins as inputs. Output drive, when required, is

    controlled by the peripheral circuitry.

2.  Initialize the SPBRG register for the appropriate

    baud rate. If a high-speed baud rate is desired,

    set  bit   BRGH.       (Section 12.1     “USART     Baud

    Rate Generator (BRG)”).

3.  Enable the asynchronous serial port by clearing

    bit SYNC and setting bit SPEN.

4.  If  interrupts    are  desired,    then  set      enable   bit

    TXIE.

5.  If 9-bit transmission is desired, then set transmit

    bit TX9.

6.  Enable the transmission by setting bit TXEN,

    which will also set bit TXIF.

7.  If  9-bit  transmission      is    selected,  the   ninth  bit

    should be loaded in bit TX9D.

8.  Load       data   to   the   TXREG       register   (starts

    transmission).

FIGURE 12-2:               ASYNCHRONOUS TRANSMISSION

    Write to TXREG

    BRG output                   Word 1

    (shift clock)

    RB2/TX/CK (pin)                          Start bit         bit 0           bit 1              bit  7/8

                                                                                                              Stop bit

    TXIF bit                                                                   Word 1

    (Transmit buffer

    reg. empty flag)

    TRMT bit                     Word 1

    (Transmit shift              Transmit Shift Reg.

    reg. empty flag)

DS40044G-page 80                                                                                       ©    2009 Microchip  Technology  Inc.
                                                            PIC16F627A/628A/648A

FIGURE 12-3:              ASYNCHRONOUS TRANSMISSION (BACK                        TO  BACK)

Write to TXREG

BRG output                       Word 1  Word 2

(shift clock)

RB2/TX/CK (pin)                          Start bit   bit 0       bit 1                  bit 7/8               Start bit        bit 0

TXIF bit                                                                                         Stop bit

(interrupt reg. flag)                                            Word 1                                         Word 2

TRMT bit                  Word 1                                                         Word 2

(Transmit shift           Transmit Shift Reg.                                            Transmit Shift Reg.

reg. empty flag)

                       .

Note:          This timing diagram shows two consecutive transmissions.

TABLE 12-6:            REGISTERS ASSOCIATED WITH ASYNCHRONOUS TRANSMISSION

                                                                                                           Value on      Value on

Address   Name            Bit 7   Bit 6  Bit 5       Bit 4  Bit 3        Bit 2   Bit 1           Bit 0     POR           all other

                                                                                                                         Resets

0Ch       PIR1            EEIF    CMIF   RCIF        TXIF   —            CCP1IF  TMR2IF  TMR1IF         0000  -000       0000  -000

18h       RCSTA           SPEN    RX9    SREN        CREN   ADEN         FERR    OERR    RX9D           0000  000x       0000  000x

19h       TXREG        USART Transmit Data Register                                                     0000  0000       0000  0000

8Ch            PIE1       EEIE    CMIE   RCIE        TXIE   —            CCP1IE  TMR2IE  TMR1IE         0000  -000       0000  -000

98h       TXSTA           CSRC    TX9    TXEN        SYNC   —            BRGH    TRMT            TX9D   0000  -010       0000  -010

99h       SPBRG        Baud Rate Generator Register                                                     0000  0000       0000  0000

Legend:   x = unknown, - = unimplemented locations read as ‘0’.

          Shaded cells are not used for Asynchronous Transmission.

© 2009 Microchip Technology Inc.                                                                              DS40044G-page 81
PIC16F627A/628A/648A

12.2.2       USART ASYNCHRONOUS                                           double buffered register (i.e., it is a two-deep FIFO). It

             RECEIVER                                                     is possible for two bytes of data to be received and

The receiver block diagram is shown in Figure 12-4.                       transferred to the RCREG FIFO and a third byte begin

The data is received on the RB1/RX/DT pin and drives                      shifting to the RSR register. On the detection of the

the data recovery block. The data recovery block is                       Stop bit of the third byte, if the RCREG register is still

actually a high-speed shifter operating at x16 times the                  full, then overrun error bit OERR (RCSTA<1>) will be

baud  rate,  whereas  the  main       receive    serial  shifter          set. The word in the RSR will be lost. The RCREG

operates at the bit rate or at FOSC.                                      register can be read twice to retrieve the two bytes in

                                                                          the FIFO. Overrun bit OERR has to be cleared in soft-

When    Asynchronous  mode  is        selected,  reception    is          ware. This is done by resetting the receive logic (CREN

enabled by setting bit CREN (RCSTA<4>).                                   is cleared and then set). If bit OERR is set, transfers

The heart of the receiver is the Receive (serial) Shift                   from the RSR register to the RCREG register are inhib-

Register  (RSR).   After  sampling     the     Stop  bit,   the           ited, so it is essential to clear error bit OERR if it is set.

received data in the RSR is transferred to the RCREG                      Framing error bit FERR (RCSTA<2>) is set if a Stop bit

register (if it is empty). If the transfer is complete, flag              is detected as clear. Bit FERR and the 9th receive bit

bit RCIF (PIR1<5>) is set. The actual interrupt can be                    are buffered the same way as the receive data. Read-

enabled/disabled by setting/clearing enable bit RCIE                      ing the RCREG, will load bits RX9D and FERR with

(PIE1<5>). Flag bit RCIF is a read-only bit, which is                     new values, therefore it is essential for the user to read

cleared by the hardware. It is cleared when the RCREG                     the RCSTA register before reading RCREG register in

register has been read and is empty. The RCREG is a                       order not to lose the old FERR and RX9D information.

FIGURE 12-4:          USART RECEIVE BLOCK DIAGRAM

                   x64 Baud Rate CLK                                                              OERR             FERR

                                                              CREN

                          SPBRG

                                                                    ÷ 64               MSb           RSR register        LSb

                                                                    or

                   Baud Rate Generator                              ÷ 16               Stop  (8)  7     •••     1    0  Start

        RB1/RX/DT

                          Pin Buffer                 Data                         RX9

                          and Control                Recovery

                                                                                                             8

                           SPEN

                            RX9                                           Enable

                           ADEN                                           Load of

                            RX9                                           Receive

                           ADEN                                           Buffer

                           RSR<8>                                                                            8

                                                                                       RX9D          RCREG register

                                                                                                                         FIFO

                                                                                       RX9D          RCREG register

                                                                                                        8

                                                         Interrupt        RCIF                             Data Bus

                                                                          RCIE

DS40044G-page 82                                                                                        © 2009 Microchip Technology Inc.
                                                                    PIC16F627A/628A/648A

FIGURE 12-5:           ASYNCHRONOUS RECEPTION WITH ADDRESS                                        DETECT

RB1/RX/DT (Pin)        Start                                        Start

                       bit    bit 0  bit 1  bit 8             Stop  bit    bit 0  bit 8           Stop

                                                              bit                                 bit

RCV Shift Reg

RCV Buffer Reg                                                                                         Word 1

                                     bit 8 = 0, Data Byte                bit 8 = 1, Address Byte       RCREG

Read RCV

Buffer Reg

RCREG

RCIF

(interrupt flag)

ADEN = 1          ‘1’                                                                                                                 ‘1’

(Address Match

Enable)

Note:       This timing diagram shows a data byte followed by an address byte. The                data byte is  not  read  into  the  RCREG

            (Receive Buffer) because ADEN = 1 and bit 8 = 0.

FIGURE 12-6:           ASYNCHRONOUS RECEPTION WITH ADDRESS                                        BYTE  FIRST

RB1/RX/DT (pin)        Start                                        Start

                       bit    bit 0  bit 1  bit 8             Stop  bit    bit 0  bit 8           Stop

                                                              bit                                 bit

RCV Shift Reg

RCV Buffer Reg                                                Word 1

                                     bit 8 = 1, Address Byte  RCREG        bit 8 = 0, Data Byte

Read RCV

Buffer Reg

RCREG

RCIF

(Interrupt Flag)

ADEN = 1          ‘1’                                                                                                                 ‘1’

(Address Match

Enable)

Note:       This timing diagram shows an address byte followed by an data byte. The data byte is not                 read  into  the  RCREG

            (receive buffer) because ADEN was not updated (still = 1) and bit 8 = 0.

FIGURE 12-7:           ASYNCHRONOUS RECEPTION WITH ADDRESS                                        BYTE FIRST         FOLLOWED         BY

                       VALID DATA BYTE

RB1/RX/DT (pin)        Start                                        Start

                       bit    bit 0  bit 1  bit 8             Stop  bit    bit 0  bit 8           Stop

                                                              bit                                 bit

RCV Shift

Reg

RCV Buffer Reg                                                Word 1                              Word 2

                                     bit 8 = 1, Address Byte  RCREG        bit 8 = 0, Data Byte   RCREG

Read RCV

Buffer Reg

RCREG

RCIF

(Interrupt Flag)

ADEN

(Address Match

Enable)

Note:             This timing diagram shows an address byte followed by an data byte. The data byte is read into the RCREG

                  (Receive Buffer) because ADEN was updated after an address match, and was cleared to a ‘0’, so the contents

                  of the Receive Shift Register (RSR) are read into the Receive Buffer regardless of the value of bit 8.

© 2009 Microchip Technology Inc.                                                                                           DS40044G-page 83
PIC16F627A/628A/648A

Follow these steps when setting up an Asynchronous

Reception:

1.   TRISB<1> and TRISB<2> should both be set to

     ‘1’ to configure the RB1/RX/DT and RB2/TX/CK

     pins as inputs. Output drive, when required, is

     controlled by the peripheral circuitry.

2.   Initialize the SPBRG register for the appropriate

     baud rate. If a high-speed baud rate is desired,

     set   bit  BRGH.       (Section 12.1    “USART     Baud

     Rate Generator (BRG)”).

3.   Enable the asynchronous serial port by clearing

     bit SYNC and setting bit SPEN.

4.   If  interrupts   are   desired,  then   set  enable    bit

     RCIE.

5.   If 9-bit reception is desired, then set bit RX9.

6.   Enable the reception by setting bit CREN.

7.   Flag  bit  RCIF        will  be  set  when  reception  is

     complete and an interrupt will be generated if

     enable bit RCIE was set.

8.   Read the RCSTA register to get the ninth bit (if

     enabled) and determine if any error occurred

     during reception.

9.   Read       the  8-bit  received  data   by  reading    the

     RCREG register.

10.  If an OERR error occurred, clear the error by

     clearing enable bit CREN.

TABLE 12-7:           REGISTERS ASSOCIATED WITH ASYNCHRONOUS RECEPTION

                                                                                                Value on    Value on

Address         Name        Bit 7     Bit 6      Bit 5    Bit 4  Bit 3  Bit 2   Bit 1   Bit 0   POR         all other

                                                                                                            Resets

0Ch         PIR1            EEIF      CMIF       RCIF     TXIF   —      CCP1IF  TMR2IF  TMR1IF  0000  -000  0000  -000

18h         RCSTA           SPEN      RX9        SREN   CREN     ADEN   FERR    OERR    RX9D    0000  000x  0000  000x

1Ah         RCREG           USART Receive Data Register                                         0000  0000  0000  0000

8Ch         PIE1            EEIE      CMIE       RCIE     TXIE   —      CCP1IE  TMR2IE  TMR1IE  0000  -000  0000  -000

98h         TXSTA           CSRC      TX9        TXEN   SYNC     —      BRGH    TRMT    TX9D    0000  -010  0000  -010

99h         SPBRG           Baud Rate Generator Register                                        0000  0000  0000  0000

Legend:         x = unknown, - = unimplemented locations read as ‘0’. Shaded cells are not used for asynchronous reception.

DS40044G-page 84                                                                        © 2009 Microchip Technology Inc.
                                                                      PIC16F627A/628A/648A

12.3      USART Address Detect Function                                      The ADEN bit will only take effect when the receiver is

                                                                             configured in 9-bit mode (RX9 = 1). When ADEN is

12.3.1          USART 9-BIT RECEIVER WITH                                    disabled (= 0), all data bytes are received and the 9th

                ADDRESS DETECT                                               bit can be used as the parity bit.

When the RX9 bit is set in the RCSTA register, 9 bits                        The receive block diagram is shown in Figure 12-4.

are received and the ninth bit is placed in the RX9D bit                     Reception        is  enabled            by    setting   bit     CREN

of  the   RCSTA      register.  The   USART      module  has    a            (RCSTA<4>).

special   provision   for   multiprocessor       communication.

Multiprocessor communication is enabled by setting                           12.3.1.1         Setting up 9-bit mode with Address

the ADEN bit (RCSTA<3>) along with the RX9 bit. The                                           Detect

port is now programmed such that when the last bit is                        Follow   these       steps  when        setting    up  Asynchronous

received, the contents of the Receive Shift Register                         Reception with Address Detect Enabled:

(RSR) are transferred to the receive buffer, the ninth bit

of the RSR (RSR<8>) is transferred to RX9D, and the                          1.   TRISB<1> and TRISB<2> should both be set to

receive interrupt is set if and only if RSR<8> = 1. This                          ‘1’ to configure the RB1/RX/DT and RB2/TX/CK

feature can be used in a multiprocessor system as                                 pins as inputs. Output drive, when required, is

follows:                                                                          controlled by the peripheral circuitry.

A master processor intends to transmit a block of data                       2.   Initialize the SPBRG register for the appropriate

to one of many slaves. It must first send out an address                          baud rate. If a high-speed baud rate is desired,

byte that identifies the target slave. An address byte is                         set bit BRGH.

identified by setting the ninth bit (RSR<8>) to a ‘1’                        3.   Enable asynchronous communication by setting

(instead of a ‘0’ for a data byte). If the ADEN and RX9                           or clearing bit SYNC and setting bit SPEN.

bits are set in the slave’s RCSTA register, enabling                         4.   If  interrupts  are    desired,         then  set  enable    bit

multiprocessor communication, all data bytes will be                              RCIE.

ignored. However, if the ninth received bit is equal to a                    5.   Set bit RX9 to enable 9-bit reception.

‘1’, indicating that the received byte is an address, the                    6.   Set ADEN to enable address detect.

slave will be interrupted and the contents of the RSR                        7.   Enable the reception by setting enable bit CREN

register will be transferred into the receive buffer. This                        or SREN.

allows the slave to be interrupted only by addresses, so

that the slave can examine the received byte to see if it                    8.   Flag   bit  RCIF       will   be   set   when     reception  is

is being addressed. The addressed slave will then clear                           complete and an interrupt will be generated if

its ADEN bit and prepare to receive data bytes from the                           enable bit RCIE was set.

master.                                                                      9.   Read   the      8-bit  received        data   by  reading    the

When      ADEN   is   enabled     (=  1),   all  data   bytes   are               RCREG register to determine if the device is

ignored. Following the Stop bit, the data will not be                             being addressed.

loaded    into  the   receive   buffer,  and     no  interrupt  will         10.  If an OERR error occurred, clear the error by

occur. If another byte is shifted into the RSR register,                          clearing enable bit CREN if it was already set.

the previous data byte will be lost.                                         11.  If the device has been addressed (RSR<8> = 1

                                                                                  with address match enabled), clear the ADEN

                                                                                  and RCIF bits to allow data bytes and address

                                                                                  bytes  to   be  read         into  the  receive    buffer  and

                                                                                  interrupt the CPU.

TABLE 12-8:           REGISTERS ASSOCIATED WITH ASYNCHRONOUS RECEPTION

                                                                                                                     Value on        Value on

Address         Name       Bit 7     Bit 6       Bit 5   Bit 4        Bit 3  Bit 2       Bit 1           Bit 0            POR        all other

                                                                                                                                     Resets

    0Ch         PIR1       EEIF   CMIF           RCIF    TXIF         —      CCP1IF     TMR2IF    TMR1IF             0000     -000   0000    -000

    18h   RCSTA       SPEN            RX9     SREN      CREN          ADEN   FERR        OERR       RX9D             0000     000x   0000    000x

    1Ah   RCREG       USART Receive Data Register                                                                    0000     0000   0000    0000

    8Ch         PIE1       EEIE   CMIE           RCIE    TXIE         —      CCP1IE     TMR2IE    TMR1IE             0000     -000   0000    -000

    98h   TXSTA       CSRC            TX9        TXEN   SYNC          —      BRGH        TRMT            TX9D        0000     -010   0000    -010

    99h   SPBRG       Baud Rate Generator Register                                                                   0000     0000   0000    0000

Legend:         x = unknown, - = unimplemented locations read as ‘0’. Shaded cells are not used for asynchronous

                reception.

© 2009 Microchip Technology Inc.                                                                                                DS40044G-page 85
PIC16F627A/628A/648A

12.4        USART Synchronous Master                                           Clearing enable bit TXEN during a transmission will

            Mode                                                               cause the transmission to be aborted and will reset the

                                                                               transmitter. The DT and CK pins will revert to high-

In Synchronous Master mode, the data is transmitted in                         impedance. If either bit CREN or bit SREN is set during

a half-duplex manner (i.e., transmission and reception                         a transmission, the transmission is aborted and the DT

do not occur at the same time). When transmitting data,                        pin reverts to a high-impedance state (for a reception).

the reception is inhibited and vice versa. Synchronous                         The CK pin will remain an output if bit CSRC is set

mode is entered by setting bit SYNC (TXSTA<4>). In                             (internal clock). The transmitter logic however is not

addition enable bit SPEN (RCSTA<7>) is set in order to                         reset although it is disconnected from the pins. In order

configure the RB2/TX/CK and RB1/RX/DT I/O pins to                              to reset the transmitter, the user has to clear bit TXEN.

CK     (clock)  and       DT      (data)   lines,   respectively.        The   If bit SREN is set (to interrupt an on-going transmission

Master mode indicates that the processor transmits the                         and receive a single word), then after the single word is

master      clock    on   the     CK  line.    The  Master      mode     is    received, bit SREN will be cleared and the serial port

entered by setting bit CSRC (TXSTA<7>).                                        will revert back to transmitting since bit TXEN is still set.

                                                                               The DT line will immediately switch from high-imped-

12.4.1          USART SYNCHRONOUS MASTER                                       ance Receive mode to transmit and start driving. To

                TRANSMISSION                                                   avoid this, bit TXEN should be cleared.

The    USART       transmitter        block    diagram      is  shown    in    In  order  to  select    9-bit  transmission,  the       TX9

Figure 12-1. The heart of the transmitter is the Transmit                      (TXSTA<6>) bit should be set and the ninth bit should

(serial) Shift Register (TSR). The shift register obtains                      be written to bit TX9D (TXSTA<0>). The ninth bit must

its  data   from     the  read/write       transmit     buffer  register,      be written before writing the 8-bit data to the TXREG

TXREG. The TXREG register is loaded with data in                               register. This is because a data write to the TXREG can

software. The TSR register is not loaded until the last                        result in an immediate transfer of the data to the TSR

bit has been transmitted from the previous load. As                            register (if the TSR is empty). If the TSR was empty and

soon as the last bit is transmitted, the TSR is loaded                         the TXREG was written before writing the “new” TX9D,

with new data from the TXREG (if available). Once the                          the “present” value of bit TX9D is loaded.

TXREG register transfers the data to the TSR register                          Follow these steps when setting up a Synchronous

(occurs     in  one      Tcycle),     the  TXREG        is  empty        and   Master Transmission:

interrupt bit, TXIF (PIR1<4>) is set. The interrupt can

be enabled/disabled by setting/clearing enable bit TXIE                        1.  TRISB<1> and TRISB<2> should both be set to

(PIE1<4>). Flag bit TXIF will be set regardless of the                             ‘1’ to configure the RB1/RX/DT and RB2/TX/CK

state   of  enable       bit  TXIE    and      cannot   be      cleared  in        pins as inputs. Output drive, when required, is

software. It will reset only when new data is loaded into                          controlled by the peripheral circuitry.

the TXREG register. While flag bit TXIF indicates the                          2.  Initialize the SPBRG register for the appropriate

status     of   the  TXREG          register,  another          bit  TRMT          baud rate (Section 12.1 “USART Baud Rate

(TXSTA<1>)         shows       the    status   of  the  TSR     register.          Generator (BRG)”).

TRMT is a read-only bit which is set when the TSR is                           3.  Enable the synchronous master serial port by

empty. No interrupt logic is tied to this bit, so the user                         setting bits SYNC, SPEN and CSRC.

has to poll this bit in order to determine if the TSR                          4.  If  interrupts  are  desired,  then  set  enable   bit

register    is  empty.    The       TSR    is  not  mapped           in  data      TXIE.

memory so it is not available to the user.                                     5.  If 9-bit transmission is desired, then set bit TX9.

Transmission is enabled by setting enable bit TXEN                             6.  Enable the transmission by setting bit TXEN.

(TXSTA<5>). The actual transmission will not occur                             7.  If 9-bit transmission is selected, the ninth bit

until the TXREG register has been loaded with data.                                should be loaded in bit TX9D.

The first data bit will be shifted out on the next available                   8.  Start each transmission by loading data to the

rising edge of the clock on the CK line. Data out is

stable around the falling edge of the synchronous clock                            TXREG register.

(Figure 12-8). The transmission can also be started by

first loading the TXREG register and then setting bit

TXEN (Figure 12-9). This is advantageous when slow

baud rates are selected, since the BRG is kept in Reset

when bits TXEN, CREN and SREN are clear. Setting

enable bit TXEN will start the BRG, creating a shift

clock immediately. Normally, when transmission is first

started, the TSR register is empty, so a transfer to the

TXREG register will result in an immediate transfer to

TSR     resulting    in       an  empty      TXREG.     Back-to-back

transfers are possible.

DS40044G-page 86                                                                                        © 2009 Microchip Technology Inc.
                                                             PIC16F627A/628A/648A

TABLE 12-9:          REGISTERS ASSOCIATED WITH SYNCHRONOUS MASTER TRANSMISSION

Address       Name          Bit 7  Bit 6       Bit 5  Bit 4  Bit 3  Bit 2         Bit 1          Bit 0     Value on     Value on all

                                                                                                           POR          other Resets

0Ch            PIR1         EEIF   CMIF        RCIF   TXIF   —      CCP1IF        TMR2IF         TMR1IF    0000  -000   0000  -000

18h           RCSTA         SPEN   RX9    SREN        CREN   ADEN   FERR          OERR           RX9D      0000  000x   0000  000x

19h           TXREG  USART Transmit Data Register                                                          0000  0000   0000  0000

8Ch            PIE1         EEIE   CMIE        RCIE   TXIE   —      CCP1IE        TMR2IE         TMR1IE    0000  -000   0000  -000

98h           TXSTA         CSRC   TX9    TXEN        SYNC   —      BRGH          TRMT           TX9D      0000  -010   0000  -010

99h           SPBRG  Baud Rate Generator Register                                                          0000  0000   0000  0000

Legend:        x = unknown, - = unimplemented, read as ‘0’. Shaded cells are not used for synchronous master transmission.

FIGURE 12-8:                SYNCHRONOUS TRANSMISSION

Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4                     Q3Q4 Q1Q2Q3Q4 Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4

RB1/RX/DT pin               bit 0       bit 1         bit 2         bit 7         bit 0     bit 1                       bit 7

                                   Word 1                                                Word 2

RB2/TX/CK pin

Write to

TXREG Reg

              Write Word 1         Write Word 2

TXIF bit

(Interrupt Flag)

TRMTTRbMit T

‘1’                                                                                                                            ‘1’

TXEN bit

Note:             Sync Master Mode; SPBRG = 0. Continuous transmission of two 8-bit words.

FIGURE 12-9:                SYNCHRONOUS               TRANSMISSION  (THROUGH             TXEN)

          RB1/RX/DT pin                               bit 0  bit 1         bit 2                   bit  6        bit 7

          RB2/TX/CK pin

                  Write to

              TXREG Reg

                  TXIF bit

                  TRMT bit

                  TXEN bit

© 2009 Microchip Technology Inc.                                                                                 DS40044G-page 87
PIC16F627A/628A/648A

12.4.2        USART SYNCHRONOUS MASTER                                          Follow these steps when setting up a Synchronous

              RECEPTION                                                         Master Reception:

Once    Synchronous         mode    is  selected,       reception   is          1.   TRISB<1> and TRISB<2> should both be set to

enabled       by     setting  either      enable        bit  SREN                    ‘1’ to configure the RB1/RX/DT and RB2/TX/CK

(RCSTA<5>) or enable bit CREN (RCSTA<4>). Data is                                    pins as inputs. Output drive, when required, is

sampled on the RB1/RX/DT pin on the falling edge of                                  controlled by the peripheral circuitry.

the clock. If enable bit SREN is set, then only a single                        2.   Initialize the SPBRG register for the appropriate

word is received. If enable bit CREN is set, the recep-                              baud rate. (Section 12.1 “USART Baud Rate

tion is continuous until CREN is cleared. If both bits are                           Generator (BRG)”).

set, then CREN takes precedence. After clocking the                             3.   Enable the synchronous master serial port by

last bit, the received data in the Receive Shift Register                            setting bits SYNC, SPEN and CSRC.

(RSR) is transferred to the RCREG register (if it is                            4.   Ensure bits CREN and SREN are clear.

empty). When the transfer is complete, interrupt flag bit                       5.   If  interrupts  are  desired,  then  set  enable    bit

RCIF (PIR1<5>) is set. The actual interrupt can be                                   RCIE.

enabled/disabled by setting/clearing enable bit RCIE

(PIE1<5>). Flag bit RCIF is a read-only bit which is                            6.   If 9-bit reception is desired, then set bit RX9.

reset by the hardware. In this case, it is reset when the                       7.   If a single reception is required, set bit SREN.

RCREG     register   has      been  read       and  is  empty.      The              For continuous reception, set bit CREN.

RCREG is a double buffered register (i.e., it is a two-                         8.   Interrupt flag bit RCIF will be set when reception

deep FIFO). It is possible for two bytes of data to be                               is complete and an interrupt will be generated if

received and transferred to the RCREG FIFO and a                                     enable bit RCIE was set.

third byte to begin shifting into the RSR register. On the                      9.   Read the RCSTA register to get the ninth bit (if

clocking of the last bit of the third byte, if the RCREG                             enabled) and determine if any error occurred

register  is  still  full,    then  overrun    error    bit  OERR                    during reception.

(RCSTA<1>) is set. The word in the RSR will be lost.                            10.  Read   the   8-bit   received  data  by  reading  the

The RCREG register can be read twice to retrieve the                                 RCREG register.

two bytes in the FIFO. Bit OERR has to be cleared in                            11.  If an OERR error occurred, clear the error by

software (by clearing bit CREN). If bit OERR is set,                                 clearing bit CREN.

transfers from the RSR to the RCREG are inhibited, so

it is essential to clear bit OERR if it is set. The 9th

receive bit is buffered the same way as the receive

data. Reading the RCREG register, will load bit RX9D

with a new value, therefore it is essential for the user to

read the RCSTA register before reading RCREG in

order not to lose the old RX9D information.

TABLE 12-10:         REGISTERS ASSOCIATED WITH SYNCHRONOUS MASTER RECEPTION

Address       Name          Bit 7       Bit 6  Bit 5         Bit 4       Bit 3  Bit 2      Bit 1     Bit 0     Value on:       Value on all

                                                                                                                    POR        other Resets

0Ch           PIR1          EEIF        CMIF   RCIF          TXIF        —      CCP1IF   TMR2IF      TMR1IF  0000   -000       0000    -000

18h           RCSTA         SPEN        RX9    SREN     CREN        ADEN        FERR     OERR        RX9D    0000   000x       0000    000x

1Ah           RCREG  USART Receive Data Register                                                             0000   0000       0000    0000

8Ch           PIE1          EPIE    CMIE       RCIE          TXIE        —      CCP1IE   TMR2IE      TMR1IE  -000   0000       -000    -000

98h           TXSTA         CSRC        TX9    TXEN     SYNC             —      BRGH     TRMT        TX9D    0000   -010       0000    -010

99h           SPBRG  Baud Rate Generator Register                                                            0000   0000       0000    0000

Legend:       x = unknown, - = unimplemented read as ‘0’. Shaded cells are not used for synchronous master reception.

DS40044G-page 88                                                                                            © 2009 Microchip Technology Inc.
                                                                   PIC16F627A/628A/648A

FIGURE 12-10:                  SYNCHRONOUS RECEPTION (MASTER MODE, SREN)

             Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4 Q1Q2Q3Q4Q1Q2Q3Q4 Q1Q2Q3Q4Q1Q2Q3 Q4Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4 Q1Q2Q3Q4

RB1/RX/DT pin                  bit 0         bit 1     bit 2       bit 3      bit 4      bit 5        bit 6     bit 7

RB2/TX/CK pin

WRITE to

Bit SREN

SREN bit

CREN bit     ‘0’                                                                                                                     ‘0’

RCIF bit

(Interrupt)

Read

RXREG

             Note:  Timing diagram demonstrates Sync Master mode with bit SREN = 1 and bit BRG = 0.

12.5         USART Synchronous Slave Mode                                 Follow these steps when setting up a Synchronous

                                                                          Slave Transmission:

Synchronous Slave mode differs from the Master mode                       1.  TRISB<1> and TRISB<2> should both be set to

in the fact that the shift clock is supplied externally at                    ‘1’ to configure the RB1/RX/DT and RB2/TX/CK

the RB2/TX/CK pin (instead of being supplied internally                       pins as inputs. Output drive, when required, is

in Master mode). This allows the device to transfer or                        controlled by the peripheral circuitry.

receive      data   while  in  Sleep  mode.     Slave  mode    is

entered by clearing bit CSRC (TXSTA<7>).                                  2.  Enable     the     synchronous    slave  serial  port  by

                                                                              setting bits SYNC and SPEN and clearing bit

12.5.1       USART SYNCHRONOUS SLAVE                                          CSRC.

             TRANSMIT                                                     3.  Clear bits CREN and SREN.

The operation of the Synchronous Master and Slave                         4.  If     interrupts  are  desired,  then   set  enable   bit

modes are identical except in the case of the Sleep                           TXIE.

mode.                                                                     5.  If 9-bit transmission is desired, then set bit TX9.

If two words are written to the TXREG and then the                        6.  Enable the transmission by setting enable bit

SLEEP instruction is executed, the following will occur:                      TXEN.

a)  The first word will immediately transfer to the                       7.  If 9-bit transmission is selected, the ninth bit

    TSR register and transmit.                                                should be loaded in bit TX9D.

b)  The second word will remain in TXREG register.                        8.  Start transmission by loading data to the TXREG

c)  Flag bit TXIF will not be set.                                            register.

d)  When the first word has been shifted out of TSR,

    the      TXREG  register   will   transfer  the    second

    word to the TSR and flag bit TXIF will now be

    set.

e)  If enable bit TXIE is set, the interrupt will wake

    the chip from Sleep and if the global interrupt is

    enabled, the program will branch to the interrupt

    vector (0004h).

© 2009 Microchip Technology Inc.                                                                                      DS40044G-page 89
PIC16F627A/628A/648A

12.5.2      USART SYNCHRONOUS SLAVE                                    Follow these steps when setting up a Synchronous

            RECEPTION                                                  Slave Reception:

The operation of the Synchronous Master and Slave                      1.     TRISB<1> and TRISB<2> should both be set to

modes   is  identical  except  in  the    case  of  the  Sleep                ‘1’ to configure the RB1/RX/DT and RB2/TX/CK

mode. Also, bit SREN is a “don’t care” in Slave mode.                         pins as inputs. Output drive, when required, is

If receive is enabled by setting bit CREN prior to the                        controlled by the peripheral circuitry.

SLEEP instruction, then a word may be received during                  2.     Enable the synchronous master serial port by

Sleep.  On  completely  receiving       the  word,  the  RSR                  setting bits SYNC and SPEN and clearing bit

register will transfer the data to the RCREG register                         CSRC.

and if enable bit RCIE bit is set, the interrupt generated             3.     If  interrupts  are  desired,  then     set  enable  bit

will wake the chip from Sleep. If the global interrupt is                     RCIE.

enabled, the program will branch to the interrupt vector               4.     If 9-bit reception is desired, then set bit RX9.

(0004h).                                                               5.     To enable reception, set enable bit CREN.

                                                                       6.     Flag  bit  RCIF     will  be  set  when  reception   is

                                                                              complete and an interrupt will be generated, if

                                                                              enable bit RCIE was set.

                                                                       7.     Read the RCSTA register to get the ninth bit (if

                                                                              enabled) and determine if any error occurred

                                                                              during reception.

                                                                       8.     Read   the   8-bit   received  data  by  reading     the

                                                                              RCREG register.

                                                                       9.     If an OERR error occurred, clear the error by

                                                                              clearing bit CREN.

TABLE 12-11:       REGISTERS ASSOCIATED WITH SYNCHRONOUS SLAVE TRANSMISSION

Address     Name       Bit 7       Bit 6     Bit 5  Bit 4       Bit 3  Bit 2        Bit 1      Bit 0        Value on       Value on all

                                                                                                             POR           other Resets

0Ch         PIR1       EEIF        CMIF      RCIF   TXIF        —      CCP1IF     TMR2IF      TMR1IF    0000     -000      0000  -000

18h         RCSTA      SPEN        RX9       SREN   CREN    ADEN       FERR         OERR      RX9D      0000     000x      0000  000x

19h         TXREG      USART Transmit Data Register                                                     0000     0000      0000  0000

8Ch         PIE1       EEIE        CMIE      RCIE   TXIE        —      CCP1IE     TMR2IE      TMR1IE    0000     -000      0000  -000

98h         TXSTA      CSRC        TX9       TXEN   SYNC        —      BRGH         TRMT      TX9D      0000     -010      0000  -010

99h         SPBRG      Baud Rate Generator Register                                                     0000     0000      0000  0000

Legend:     x = unknown, - = unimplemented read as ‘0’. Shaded cells are not used for synchronous slave transmission.

TABLE 12-12:       REGISTERS ASSOCIATED WITH SYNCHRONOUS SLAVE RECEPTION

Address     Name       Bit 7       Bit 6     Bit 5  Bit 4       Bit 3  Bit 2        Bit 1      Bit 0        Value on       Value on all

                                                                                                             POR           other Resets

0Ch         PIR1       EEIF        CMIF      RCIF   TXIF        —      CCP1IF     TMR2IF      TMR1IF    0000     -000      0000  -000

18h         RCSTA      SPEN        RX9       SREN   CREN    ADEN       FERR         OERR      RX9D      0000     000x      0000  000x

1Ah         RCREG      USART Receive Data Register                                                      0000     0000      0000  0000

8Ch         PIE1       EEIE        CMIE      RCIE   TXIE        —      CCP1IE     TMR2IE      TMR1IE    0000     -000      0000  -000

98h         TXSTA      CSRC        TX9       TXEN   SYNC        —      BRGH         TRMT      TX9D      0000     -010      0000  -010

99h         SPBRG      Baud Rate Generator Register                                                     0000     0000      0000  0000

Legend:     x = unknown, - = unimplemented read as ‘0’. Shaded cells are not used for synchronous slave reception.

DS40044G-page 90                                                                                        © 2009 Microchip Technology Inc.
                                                             PIC16F627A/628A/648A

13.0   DATA EEPROM MEMORY                                    The EEPROM data memory allows byte read and write.

                                                             A                byte  write  automatically  erases  the     location  and

The EEPROM data memory is readable and writable              writes the new data (erase before write). The EEPROM

during normal operation (full VDD range). This memory        data memory is rated for high erase/write cycles. The

is not directly mapped in the register file space. Instead   write time is controlled by an on-chip timer. The write

it is indirectly addressed through the Special Function      time will vary with voltage and temperature, as well as

Registers (SFRs). There are four SFRs used to read           from chip-to-chip. Please refer to AC specifications for

and write this memory. These registers are:                  exact limits.

•  EECON1                                                    When                   the  device  is   code-protected,   the  CPU    can

•  EECON2 (Not a physically implemented register)            continue to read and write the data EEPROM memory. A

•  EEDATA                                                    device programmer can no longer access this memory.

•  EEADR                                                     Additional                  information  on     the  data   EEPROM      is

EEDATA holds the 8-bit data for read/write and EEADR         available in the PIC® Mid-Range Reference Manual

holds  the  address  of  the    EEPROM     location  being   (DS33023).

accessed. PIC16F627A/628A devices have 128 bytes

of data EEPROM with an address range from 0h to

7Fh. The PIC16F648A device has 256 bytes of data

EEPROM with an address range from 0h to FFh.

REGISTER 13-1:           EEDATA – EEPROM DATA REGISTER (ADDRESS: 9Ah)

                         R/W-x       R/W-x           R/W-x   R/W-x                       R/W-x        R/W-x       R/W-x      R/W-x

                         EEDAT7      EEDAT6          EEDAT5  EEDAT4                 EEDAT3           EEDAT2       EEDAT1     EEDAT0

                         bit 7                                                                                                      bit 0

            bit 7-0      EEDATn: Byte value to Write to or Read from data EEPROM memory location.

                         Legend:

                         R = Readable bit                   W = Writable bit        U = Unimplemented bit, read as ‘0’

                         -n = Value at POR                  ‘1’ = Bit is set        ‘0’ = Bit is cleared     x = Bit is unknown

REGISTER 13-2:           EEADR – EEPROM ADDRESS REGISTER (ADDRESS: 9Bh)

                         R/W-x       R/W-x           R/W-x   R/W-x                       R/W-x        R/W-x       R/W-x      R/W-x

                         EADR7       EADR6           EADR5   EADR4                  EADR3             EADR2       EADR1      EADR0

                         bit 7                                                                                                      bit 0

            bit 7        PIC16F627A/628A

                         Unimplemented Address: Must be set to ‘0’

                         PIC16F648A

                         EEADR: Set to ‘1’ specifies top 128 locations (128-255) of EEPROM Read/Write Operation

            bit 6-0      EEADR: Specifies one of 128 locations of EEPROM Read/Write Operation

                         Legend:

                         R = Readable bit                   W = Writable bit        U = Unimplemented bit, read as ‘0’

                         -n = Value at POR                  ‘1’ = Bit is set        ‘0’ = Bit is cleared     x = Bit is unknown

© 2009 Microchip Technology Inc.                                                                                  DS40044G-page 91
PIC16F627A/628A/648A

13.1       EEADR                                                 13.2       EECON1 and EECON2 Registers

The   PIC16F648A      EEADR        register  addresses  256      EECON1 is the control register with four low order bits

bytes of data EEPROM. All eight bits in the register             physically implemented. The upper-four bits are non-

(EEADR<7:0>) are required.                                       existent and read as ‘0’s.

The   PIC16F627A/628A          EEADR     register  addresses     Control    bits       RD     and  WR   initiate  read  and     write,

only the first 128 bytes of data EEPROM so only seven            respectively. These bits cannot be cleared, only set, in

of  the  eight  bits  in  the  register  (EEADR<6:0>)   are      software. They are cleared in hardware at completion

required.  The    upper   bit  is  address   decoded.   This     of the read or write operation. The inability to clear the

means that this bit should always be ‘0’ to ensure that          WR bit in software prevents the accidental, premature

the address is in the 128 byte memory space.                     termination of a write operation.

                                                                 The WREN bit, when set, will allow a write operation.

                                                                 On power-up, the WREN bit is clear. The WRERR bit is

                                                                 set when a write operation is interrupted by a MCLR

                                                                 Reset      or    a    WDT    Time-out    Reset   during     normal

                                                                 operation. In these situations, following Reset, the user

                                                                 can check the WRERR bit and rewrite the location. The

                                                                 data and address will be unchanged in the EEDATA

                                                                 and EEADR registers.

                                                                 Interrupt flag bit EEIF in the PIR1 register is set when

                                                                 write is complete. This bit must be cleared in software.

                                                                 EECON2 is not a physical register. Reading EECON2

                                                                 will       read  all  ‘0’s.  The  EECON2         register  is  used

                                                                 exclusively in the data EEPROM write sequence.

REGISTER 13-3:            EECON1 – EEPROM CONTROL                REGISTER 1 (ADDRESS: 9Ch)

                               U-0           U-0        U-0      U-0              R/W-x            R/W-0  R/S-0             R/S-0

                               —             —          —        —                WRERR            WREN    WR               RD

                          bit 7                                                                                                 bit 0

           bit 7-4        Unimplemented: Read as ‘0’

           bit 3          WRERR: EEPROM Error Flag bit

                          1 = A write operation is prematurely terminated (any MCLR Reset, any WDT Reset during

                               normal operation or BOR Reset)

                          0 = The write operation completed

           bit 2          WREN: EEPROM Write Enable bit

                          1 = Allows write cycles

                          0 = Inhibits write to the data EEPROM

           bit 1          WR: Write Control bit

                          1 = initiates a write cycle. (The bit is cleared by hardware once write is complete. The WR bit

                               can only be set (not cleared) in software.

                          0 = Write cycle to the data EEPROM is complete

           bit 0          RD: Read Control bit

                          1 = Initiates an EEPROM read (read takes one cycle. RD is cleared in hardware. The RD bit

                               can only be set (not cleared) in software).

                          0 = Does not initiate an EEPROM read

                          Legend:

                          R = Readable bit               W = Writable bit         U = Unimplemented bit, read as ‘0’

                          -n = Value at POR              ‘1’ = Bit is set         ‘0’ = Bit is cleared    x = Bit is unknown

DS40044G-page 92                                                                                   © 2009 Microchip Technology Inc.
                                                                                PIC16F627A/628A/648A

13.3                Reading the EEPROM Data                                     At  the  completion     of  the  write  cycle,     the  WR   bit  is

                    Memory                                                      cleared    in  hardware     and    the     EE   Write    Complete

                                                                                Interrupt Flag bit (EEIF) is set. The user can either

To read a data memory location, the user must write the                         enable this interrupt or poll this bit. The EEIF bit in the

address to the EEADR register and then set control bit                          PIR1 registers must be cleared by software.

RD (EECON1<0>). The data is available, in the very

next cycle, in the EEDATA register; therefore it can be                         13.5       Write Verify

read in the next instruction. EEDATA will hold this value

until another read or until it is written to by the user                        Depending      on  the   application,      good    programming

(during a write operation).                                                     practice may dictate that the value written to the Data

                                                                                EEPROM         should  be   verified  (Example 13-3)        to  the

EXAMPLE 13-1:                         DATA EEPROM READ                          desired value to be written. This should be used in

BSF                 STATUS,       RP0        ;Bank      1                       applications where an EEPROM bit will be stressed

MOVLW               CONFIG_ADDR              ;                                  near the specification limit.

MOVWF               EEADR                    ;Address        to  read

BSF                 EECON1,       RD         ;EE     Read                       EXAMPLE 13-3:               WRITE VERIFY

MOVF                EEDATA,       W          ;W   =  EEDATA                           BSF      STATUS,      RP0 ;Bank        1

BCF                 STATUS,       RP0        ;Bank      0                             MOVF     EEDATA,      W

                                                                                      BSF      EECON1,      RD   ;Read       the

13.4                Writing to the EEPROM Data                                                                   ;value         written

                    Memory                                                      ;

                                                                                ;Is   the   value      written   (in    W  reg)    and

To write an EEPROM data location, the user must first                           ;read    (in   EEDATA)      the  same?

write the address to the EEADR register and the data                            ;

to the EEDATA register. Then the user must follow a                                   SUBWF    EEDATA,      W    ;

                                                                                      BTFSS    STATUS,      Z    ;Is    difference       0?

specific sequence to initiate the write for each byte.                                GOTO     WRITE_ERR         ;NO,      Write   error

                                                                                      :                          ;YES,       Good  write

EXAMPLE 13-2:                         DATA EEPROM WRITE                               :                          ;Continue         program

                    BSF     STATUS,       RP0        ;Bank   1

                    BSF     EECON1,       WREN       ;Enable     write          13.6       Protection Against Spurious Write

                    BCF     INTCON,       GIE        ;Disable    INTs.

                    BTFSC   INTCON,GIE               ;See    AN576              There are conditions when the device may not want to

                    GOTO    $-2                                                 write to the data EEPROM memory. To protect against

                    MOVLW   55h                      ;

Required  Sequence  MOVWF   EECON2                   ;Write      55h            spurious EEPROM writes, various mechanisms have

                    MOVLW   AAh                      ;                          been built-in. On power-up, WREN is cleared. Also

                    MOVWF   EECON2                   ;Write      AAh            when enabled, the Power-up Timer (72 ms duration)

                    BSF     EECON1,WR                ;Set    WR  bit            prevents EEPROM write.

                                                     ;begin      write          The write initiate sequence and the WREN bit together

                    BSF  INTCON,     GIE             ;Enable     INTs.          help  prevent  an      accidental     write  during     brown-out,

The write will not initiate if the above sequence is not                        power glitch or software malfunction.

followed exactly (write 55h to EECON2, write AAh to

EECON2, then set WR bit) for each byte. We strongly

recommend                  that  interrupts     be   disabled    during  this

code segment. A cycle count is executed during the

required sequence. Any number that is not equal to the

required cycles to execute the required sequence will

cause the data not to be written into the EEPROM.

Additionally, the WREN bit in EECON1 must be set to

enable              write.  This     mechanism       prevents    accidental

writes to data EEPROM due to errant (unexpected)

code execution (i.e., lost programs). The user should

keep the WREN bit clear at all times, except when

updating                 EEPROM.      The  WREN         bit  is  not   cleared

by hardware.

After a write sequence has been initiated, clearing the

WREN bit will not affect this write cycle. The WR bit will

be inhibited from being set unless the WREN bit is set.

© 2009 Microchip Technology Inc.                                                                                                DS40044G-page 93
PIC16F627A/628A/648A

13.7       Using the Data EEPROM                                                     A simple data EEPROM refresh routine is shown in

The   data      EEPROM         is  a  high       endurance,       byte               Example 13-4.

addressable array that has been optimized for the storage                            Note:       If  data  EEPROM     is  only  used  to  store

of   frequently      changing      information   (e.g.,   program                                constants and/or data that changes rarely,

variables or other data that are updated often). When                                            an array refresh is likely not required. See

variables   in   one   section     change        frequently,     while                           specification D124.

variables in another section do not change, it is possible

to exceed the total number of write cycles to the EEPROM

(specification D124) without exceeding the total number

of write cycles to a single byte (specifications D120 and

D120A). If this is the case, then an array refresh must be

performed.      For  this  reason,    variables  that         change

infrequently    (such  as  constants,      IDs,  calibration,     etc.)

should be stored in Flash program memory.

EXAMPLE 13-4:              DATA EEPROM REFRESH ROUTINE

      BANKSEL          0X80                      ;select      Bank1

      CLRF             EEADR                     ;start      at   address         0

      BCF              INTCON,        GIE        ;disable        interrupts

      BTFSC            INTCON,        GIE        ;see    AN576

      GOTO             $   -   2

      BSF              EECON1,        WREN       ;enable      EE     writes

Loop

      BSF              EECON1,        RD         ;retrieve        data       into    EEDATA

      MOVLW            0x55                      ;first      step    of      ...

      MOVWF            EECON2                    ;...    required        sequence

      MOVLW            0xAA                      ;second      step       of  ...

      MOVWF            EECON2                    ;...    required        sequence

      BSF              EECON1,        WR         ;start      write       sequence

      BTFSC            EECON1,        WR         ;wait   for      write      complete

      GOTO             $   -   1

#IFDEF      __16F648A                            ;256    bytes       in  16F648A

      INCFSZ           EEADR,      f             ;test   for      end    of  memory

#ELSE                                            ;128    bytes       in  16F627A/628A

      INCF             EEADR,      f             ;next   address

      BTFSS            EEADR,      7             ;test   for      end    of  memory

#ENDIF                                           ;end    of   conditional            assembly

      GOTO             Loop                      ;repeat      for    all     locations

      BCF              EECON1,        WREN       ;disable        EE  writes

      BSF              INTCON,        GIE        ;enable      interrupts             (optional)

DS40044G-page 94                                                                                           © 2009 Microchip Technology Inc.
                                                       PIC16F627A/628A/648A

13.8      Data EEPROM Operation During

          Code-Protect

When the device is code-protected, the CPU is able to

read and write data to the data EEPROM.

TABLE 13-1:       REGISTERS/BITS ASSOCIATED WITH                 DATA EEPROM

                                                                                                Value on          Value on all

Address   Name       Bit 7        Bit 6  Bit 5  Bit 4  Bit 3     Bit 2  Bit 1            Bit 0  Power-on          other

                                                                                                Reset             Resets

9Ah       EEDATA     EEPROM Data Register                                                       xxxx        xxxx  uuuu  uuuu

9Bh       EEADR      EEPROM Address Register                                                    xxxx        xxxx  uuuu  uuuu

9Ch       EECON1     —            —      —      —      WRERR     WREN   WR               RD     ----        x000  ----  q000

9Dh       EECON2(1)  EEPROM Control Register 2                                                  ----        ----  ----  ----

Legend:   x = unknown, u = unchanged, - = unimplemented read as  ‘0’, q = value depends  upon   condition.

          Shaded cells are not used by data EEPROM.

Note  1:  EECON2 is not a physical register.

© 2009 Microchip Technology Inc.                                                                            DS40044G-page 95
PIC16F627A/628A/648A

NOTES:

DS40044G-page 96      © 2009 Microchip Technology Inc.
                                                                       PIC16F627A/628A/648A

14.0      SPECIAL FEATURES OF THE                                      14.1      Configuration Bits

          CPU                                                          The configuration bits can be programmed (read as ‘0’)

Special   circuits     to  deal  with  the   needs     of  real-time   or left unprogrammed (read as ‘1’) to select various

applications are what sets a microcontroller apart from                device  configurations.  These     bits  are  mapped    in

other processors. The PIC16F627A/628A/648A family                      program memory location 2007h.

has    a  host  of     such  features  intended        to  maximize    The user  will note  that address  2007h is beyond the

system reliability, minimize cost through elimination of               user program memory space. In fact, it belongs to the

external components, provide power-saving operating                    special configuration memory space (2000h-3FFFh),

modes and offer code protection.                                       which can be accessed only during programming. See

These are:                                                             “PIC16F627A/628A/648A EEPROM Memory

1.     OSC selection                                                   Programming Specification” (DS41196) for additional

                                                                       information.

2.     Reset

3.     Power-on Reset (POR)

4.     Power-up Timer (PWRT)

5.     Oscillator Start-Up Timer (OST)

6.     Brown-out Reset (BOR)

7.     Interrupts

8.     Watchdog Timer (WDT)

9.     Sleep

10.    Code protection

11.    ID Locations

12.    In-Circuit Serial Programming™            (ICSP™)

The PIC16F627A/628A/648A has a Watchdog Timer

which is controlled by configuration bits. It runs off its

own RC oscillator for added reliability. There are two

timers that offer necessary delays on power-up. One is

the Oscillator Start-up Timer (OST), intended to keep

the chip in Reset until the crystal oscillator is stable.

The    other    is  the    Power-up    Timer     (PWRT),      which

provides a fixed delay of 72 ms (nominal) on power-up

only,  designed        to  keep  the   part  in  Reset     while  the

power supply stabilizes. There is also circuitry to reset

the  device     if  a  brown-out  occurs.        With  these  three

functions on-chip, most applications need no external

Reset circuitry.

The Sleep mode is designed to offer a very low current

Power-down mode. The user can wake-up from Sleep

through external Reset, Watchdog Timer wake-up or

through an interrupt. Several oscillator options are also

made available to allow the part to fit the application.

The RC oscillator option saves system cost while the

LP crystal option saves power. A set of configuration

bits are used to select various options.

© 2009 Microchip Technology Inc.                                                                                DS40044G-page 97
PIC16F627A/628A/648A

REGISTER 14-1:            CONFIG – CONFIGURATION WORD REGISTER

     CP       —        —         —              —       CPD             LVP  BOREN         MCLRE   FOSC2      PWRTE  WDTE        F0SC1        F0SC0

bit 13                                                                                                                                            bit 0

bit 13:       CP: Flash Program Memory Code Protection          bit(2)

              (PIC16F648A)

                     1 = Code protection off

                     0 = 0000h to 0FFFh code-protected

              (PIC16F628A)

                     1 = Code protection off

                     0 = 0000h to 07FFh code-protected

              (PIC16F627A)

                     1 = Code protection off

                     0 = 0000h to 03FFh code-protected

bit  12-9:    Unimplemented: Read as ‘0’

bit  8:       CPD: Data Code Protection bit(3)

              1 = Data memory code protection off

              0 = Data memory code-protected

bit  7:       LVP: Low-Voltage Programming Enable bit

              1 = RB4/PGM pin has PGM function, low-voltage programming enabled

              0 = RB4/PGM is digital I/O, HV on MCLR must be used for programming

bit  6:       BOREN: Brown-out Reset Enable bit (1)

              1 = BOR Reset enabled

              0 = BOR Reset disabled

bit  5:       MCLRE: RA5/MCLR/VPP Pin Function Select bit

              1 = RA5/MCLR/VPP pin function is MCLR

              0 = RA5/MCLR/VPP pin function is digital Input, MCLR internally tied to VDD

bit  3:       PWRTE: Power-up Timer Enable bit (1)

              1 = PWRT disabled

              0 = PWRT enabled

bit  2:       WDTE: Watchdog Timer Enable bit

              1 = WDT enabled

              0 = WDT disabled

bit  4, 1-0:  FOSC<2:0>: Oscillator Selection bits(4)

              111 =  RC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, Resistor and Capacitor on RA7/OSC1/CLKIN

              110 =  RC oscillator: I/O function on RA6/OSC2/CLKOUT pin, Resistor and Capacitor on RA7/OSC1/CLKIN

              101 =  INTOSC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN

              100 =  INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN

              011 =  EC: I/O function on RA6/OSC2/CLKOUT pin, CLKIN on RA7/OSC1/CLKIN

              010 =  HS oscillator: High-speed crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN

              001 =  XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN

              000 =  LP oscillator: Low-power crystal on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN

              Note   1:     Enabling Brown-out Reset does not automatically enable the Power-up Timer (PWRT) the way it does on          the

                            PIC16F627/628 devices.

                     2:     The code protection scheme has changed from the code protection scheme used on the PIC16F627/628 devices. The

                            entire Flash program memory needs to be bulk erased to set the CP bit, turning the code protection off. See

                            “PIC16F627A/628A/648A EEPROM Memory Programming Specification” (DS41196) for details.

                     3:     The entire data EEPROM needs to be bulk erased to set the CPD bit, turning the code protection off. See “PIC16F627A/

                            628A/648A EEPROM Memory Programming Specification” (DS41196) for details.

                     4:     When MCLR is asserted in INTOSC mode, the internal clock oscillator is disabled.

              Legend:

              R = Readable bit                W = Writable bit               U = Unimplemented bit, read as ‘0’

              -n = Value at POR               ‘1’ = bit is set               ‘0’ = bit is cleared                x = bit is unknown

DS40044G-page 98                                                                                              © 2009 Microchip Technology Inc.
                                                                      PIC16F627A/628A/648A

14.2        Oscillator Configurations                                 TABLE  14-1:       CAPACITOR SELECTION FOR

                                                                                         CERAMIC RESONATORS

14.2.1       OSCILLATOR TYPES                                         Mode   Freq              OSC1(C1)             OSC2(C2)

The PIC16F627A/628A/648A can be operated in eight                     XT     455 kHz           22-100 pF            22-100 pF

different oscillator options. The user can program three                     2.0 MHz           15-68 pF             15-68 pF

configuration bits (FOSC2 through FOSC0) to select                           4.0 MHz           15-68 pF             15-68 pF

one of these eight modes:

•  LP        Low Power Crystal                                        HS     8.0 MHz           10-68 pF             10-68 pF

•  XT        Crystal/Resonator                                               16.0 MHz          10-22 pF             10-22 pF

•  HS        High Speed Crystal/Resonator                             Note:  Higher capacitance increases the stability

                                                                             of     the  oscillator,  but  also  increases   the

•  RC        External Resistor/Capacitor (2 modes)                           start-up time. These values are for design

•  INTOSC Internal Precision Oscillator (2 modes)                            guidance only. Since each resonator has

•  EC        External Clock In                                               its    own   characteristics,     the  user  should

                                                                             consult      the  resonator       manufacturer   for

14.2.2       CRYSTAL OSCILLATOR / CERAMIC                                    appropriate       values      of  external   compo-

             RESONATORS                                                      nents.

In XT, LP or HS modes a crystal or ceramic resonator

is connected to the OSC1 and OSC2 pins to establish                   TABLE  14-2:       CAPACITOR SELECTION FOR

oscillation (Figure 14-1). The PIC16F627A/628A/648A                                      CRYSTAL OSCILLATOR

oscillator   design     requires   the  use  of  a  parallel     cut  Mode          Freq       OSC1(C1)             OSC2(C2)

crystal. Use of a series cut crystal may give a frequency

out of the crystal manufacturers specifications. When in              LP     32 kHz            15-30 pF             15-30 pF

XT, LP or HS modes, the device can have an external                          200 kHz                0-15 pF         0-15 pF

clock source to drive the OSC1 pin (Figure 14-4).                     XT     100 kHz           68-150 pF            150-200 pF

                                                                             2 MHz             15-30 pF             15-30 pF

FIGURE 14-1:            CRYSTAL OPERATION                                    4 MHz             15-30 pF             15-30 pF

                        (OR CERAMIC RESONATOR)                        HS     8 MHz             15-30 pF             15-30 pF

                        (HS, XT OR LP OSC                                    10 MHz            15-30 pF             15-30 pF

                        CONFIGURATION)                                       20 MHz            15-30 pF             15-30 pF

                        OSC1                                          Note:  Higher capacitance increases the stability

                                                                             of     the  oscillator,  but  also  increases   the

         C1(2)                                                               start-up time. These values are for design

                XTAL                         Sleep                           guidance only. A series resistor (RS) may

                                   RF                                        be required in HS mode, as well as XT

                        OSC2                                                 mode, to avoid overdriving crystals with

                RS(1)                               FOSC                     low drive level specification. Since each

         C2(2)                                                               crystal      has  its    own  characteristics,  the

                                   PIC16F627A/628A/648A                      user should consult the crystal manufac-

   Note  1:  A series resistor may be required for AT strip cut              turer   for  appropriate      values   of    external

             crystals.                                                       components.

         2:  See Table 14-1 and Table 14-2 for recommended

             values of C1 and C2.

© 2009 Microchip Technology Inc.                                                                               DS40044G-page 99
PIC16F627A/628A/648A

14.2.3         EXTERNAL CRYSTAL OSCILLATOR                                   FIGURE 14-3:              EXTERNAL SERIES

               CIRCUIT                                                                                 RESONANT CRYSTAL

Either a prepackaged oscillator can be used or a simple                                                OSCILLATOR CIRCUIT

oscillator     circuit    with  TTL      gates         can     be    built.

Prepackaged       oscillators   provide         a  wide        operating                                              To other

range     and     better  stability.  A  well-designed             crystal        330 KΩ               330 KΩ         Devices

oscillator  will     provide    good  performance           with     TTL          74AS04               74AS04  74AS04

gates. Two types of crystal oscillator circuits can be

used; one with series resonance, or one with parallel                                                                              CLKIN

resonance.                                                                                     0.1 pF

                                                                                                                                 PIC16F627A/

Figure 14-2       shows       implementation           of   a  parallel                                                            628A/648A

resonant oscillator circuit. The circuit is designed to                                        XTAL

use  the    fundamental         frequency     of   the     crystal.  The

74AS04 inverter performs the 180° phase shift that a

parallel    oscillator    requires.      The       4.7 kΩ      resistor      14.2.4           PRECISION INTERNAL 4 MHZ

provides    the      negative   feedback          for   stability.   The                      OSCILLATOR

10 kΩ potentiometers bias the 74AS04 in the linear

region.     This  could   be    used     for  external         oscillator    The internal precision oscillator provides a fixed 4 MHz

designs.                                          &nbs