BIT FUNCTION7 IRP—FSR select between the high and low register banks 6–5 RP1–RP0—direct addressing select banks 0–3 4 _TO—Time-out bit; reset after a watchdog timer reset 3 _PD—Power-dow
Trang 1after an LCALL statement and the PCLATH bits are not set appropriately for the rent page, execution will jump into the LCALL page.
cur-For low-end PIC microcontrollers, LCALL should be
Add carry to file addcf Reg, d btfsc STATUS, C if (C == 1)
Reg = Reg + 1; else
w = Reg + 1 Add digit carry to adddcf Reg, d btfsc STATUS if (DC == 1)
Reg = Reg + 1; else
w = Reg + 1;
Branch to label B Label goto Label PC = ((PCLATH << 8) &
0x01800) + Label;
0x01800) + Label; Branch on digit BDC Label btfsc STATUS, DC if (DC == 1)
0x01800) + Label;
0x01800) + Label; Branch on digit BNDC Label btfss STATUS, DC If (DC == 0)
0x01800) + Label;
0x01800) + Label;
0x01800) + Label;
Trang 2bcf/bsf STATUS, PA1 bcf/bsf STATUS, PA2 call Label MidRange:
bcf/bsf PCLATH, 3 bcf/bsf PCLATH, 4 call Label
bcf/bsf STATUS, PA0 bcf/bsf STATUS, PA1 bcf/bsf STATUS, PA2 goto Label Mid-Range:
bcf/bsf PCLATH, 3 bcf/bsf PCLATH, 4 goto Label
else
Z = 0;
Reg = Reg + 1;
Trang 3TABLE B.7 MICROCHIP SPECIAL MNEMONICS (CONTINUED)
Actual
carry flag is set
carry flag is set
carry flag is reset
carry flag is reset
zero flag is reset
zero flag is set
if (d == 0)
w = Reg + 1;
else Reg = Reg + 1; Subtract carry subcf Reg, d btfsc STATUS, C if (C == 1)
Reg = Reg - 1; else
w = Reg – 1; Subtract digit adddcf Reg, d btfsc STATUS, DC if (DC == 1)
Reg = Reg - 1; else
w = Reg - 1;
Trang 4I/O Register Addresses
The different PIC microcontroller architecture families each have a set of registers atspecific addresses These conventions allow code to be transferred between PICMCUs designed with the same processors very easily Over the past few years, the reg-ister labels have been made as similar as possible and match the MPASM assemblercodes to ensure that applications can be ported between devices within and without thecurrent PIC microcontroller architecture family
While the register addresses are very similar between PIC microcontrollers of thesame architecture family, remember that the bits in the different registers may changefunction with different PIC microcontroller part numbers To be absolutely sure of thebits and their function inside a register, consult the Microchip part datasheet The register addressing information contained in the rest of this appendix is pro-vided to give you a reference on how the different PIC microcontroller family archi-tecture’s registers are addressed
LOW-END PIC MICROCONTROLLERS
The low-end PIC microcontroller devices have five register bank address bits for up to 32unique file register addresses in each bank Up to four register banks can be available in
a low-end PIC microcontroller, with the first 16 addresses of each bank being commonthroughout the banks and the second 16 addresses being unique to the bank This is shown
in Fig B.1 Using this scheme, low-end PIC microcontrollers have anywhere from 25 to
73 unique file registers available to an application (see Table B.8)
There are a few things to note with low-end register addressing:
1 The OPTION and TRIS registers can be written to only by the option and trisinstructions, respectively
Trang 52 If the device has a built-in oscillator, the OSCCAL register is located in address 5,which is normally the PORTA address.
3 The STATUS and OPTION registers are always the same for low-end devices
4 The low-end PIC microcontroller FSR register can never equal zero
MID-RANGE PIC MICROCONTROLLER REGISTERS
If you look at the different mid-range PIC microcontroller devices, you will see thatthere is a great diversity in the register sets available to the various part numbers This
is quite a bit different from the other three PIC MCU families, in which the registerscan be found at specific locations across the family The diversity in the mid-range PICmicrocontroller family is caused by the myriad of different features that have beenreleased over the past few years, along with the number of different pin counts of thevarious devices
Despite this diversity, there are some standard addresses (listed in Table B.9) thatyou can always count on with mid-range PIC microcontrollers I always start with theblock of registers in bank 0 and bank 1 listed in the table and then add to them the fea-tures that are built into the specific PIC microcontroller part number
From these basic addresses, peripheral I/O registers (discussed below) are added
to the register banks, with file registers starting at either offset 0x0C or 0x20 Formost modern mid-range PIC microcontrollers, the file registers start at address 0x20
of the bank
The specific part number datasheets will have to be checked to find where the file
Addr - Reg
Bank 0 Bank 1 Bank 2 Bank 3
Addr - Reg Addr - Reg Addr - Reg
Shared Registers
Bank Unique Registers
* - “OSCCAL” may take place of “PORTA” in PICMicros with Internal Oscillators
OPTION TRIS#
- Accessed via “option” Instruction
- Accessed via “TRIS PORT#” Instruction
Figure B.1 The Low-End PIC microcontroller processor architecture
is limited to four banks of up to 32-byte-wide registers.
Trang 6ADDRESS REGISTER BITS BIT FUNCTION
0x003 STATUS 7 GPWUF—in PIC12C5xx and PIC16C505, when set,
reset from sleep on pin change; when set, power up
or _MCLR reset; in other devices, bit 7 is unused 6–5 PA1–PA0—select the page to execute out of:
00—page 0 (0x0000–0x01FF) 01—page 1 (0x0200–0x03FF) 10—page 2 (0x0400–0x05FF) 11—page 3 (0x0600–0x07FF)
4 _TO—set after power up and clrwdt and sleep instructions.
3 _PD—set after power up and clrwdt instruction; reset after sleep instruction.
2 Z—set if the 8-bit result is equal to zero.
1 DC—set for low-order nybble carry after addition or subtraction instruction.
0 C—set for carry after addition or subtraction instruction N/A OPTION 7 _GPWU—in PIC12C5xx or PIC16C505, reset to
enable wake-up on pin change; in other devices, bit 7 is unused.
6 _GPPU—in PIC12C5xx or PIC16C505, enable pin pull-ups; in other devices, bit 6 is unused.
5 T0CS—TMR0 clock source select; when set, T0CKI pin is source; when reset, instruction clock.
4 T0SE—TMR0 edge select; when reset, increment TMR0 on rising edge; when set, increment TMR0 on falling edge.
3 PSA—prescaler assignment bit; when set, the prescaler is assigned to the watchdog timer, else TMR0.
2–0 PS2–PS0—prescaler rate select bits Bit TMR0 rate:
111—256:1 110—128:1 101—64:1 100—32:1 011—16:1 010—8:1 001—4:1 000—2:1
Trang 7The STATUS register in mid-range PIC microcontroller is defined as listed in Table B.10.
The OPTION register (which has the label OPTION_REG in the Microchip includefiles) is defined in Table B.11
Many devices have the PCON register (see Table B.12) that enhances the returnedinformation contained in the _TO and _PD bits of the STATUS register
The PCLATH register’s contents (see Table B.13) are written to the program countereach time a goto or call instruction is executed or if the contents of PCL are changed.Some mid-range devices are now available with built-in RC oscillators To make theoperation of the oscillators more accurate, the OSCCAL register is written to with a
factory-specified calibration value register as presented in Table B.14.
TABLE B.8 LOW-END PIC MICROCONTROLLER REGISTER DEFINITIONS (CONTINUED)
ADDRESS REGISTER BITS BIT FUNCTION
WDT rate:
64:1 32:1 16:1 8:1 4:1 2:1 1:1
TABLE B.9 MID-RANGE BANK 0/BANK 1 REGISTER DEFINITIONS
Trang 8BIT FUNCTION
7 IRP—FSR select between the high and low register banks
6–5 RP1–RP0—direct addressing select banks (0–3)
4 _TO—Time-out bit; reset after a watchdog timer reset
3 _PD—Power-down active bit; reset after sleep instruction
2 Z—set when the 8-bit result is equal to zero
1 DC—set when the low nybble of addition/subtraction result carries
to the high nybble
0 C—set when the addition/subtraction result carries to the next byte;
also used with the rotate instructions
TABLE B.11 MID-RANGE OPTION REGISTER DEFINITION
7 _RBPU—when reset, the PORTB pin pull-up is enabled.
6 INTEDG—when set, interrupt request on rising edge of RB0/INT pin.
5 T0CS—when set, TMR0 is incremented from the T0CKI pin, else by
the internal instruction clock.
4 T0SE—when set, TMR0 is incremented on the high to low (falling
edge) of T0CKI.
3 PSA—prescaler assignment bit; when set, the prescaler is assigned
to the watchdog timer, else to TMR0.
2–0 PS2–PS0—prescaler rate select.
Trang 9Interrupts are controlled from the INTCON register (see Table B.15), which trols the basic mid-range PIC microcontroller interrupts as well as access to enhancedinterrupt features.
con-Bit 6 of INTCON may be a peripheral device interrupt enable/request bit, or it can
be PEIE, which when set will enable peripheral interrupts set in the PIR and PIE isters The PIR register(s) contains the F bits (interrupt request active), whereas PIEcontains the E bits (interrupt request enable) As I work through the different periph-erals, the E and F bits will be listed, but their actual location is part number–specific,and the datasheet will have to be consulted
reg-Data EEPROM is accessed via the EEADR and EEDATA registers, with EECON1(see Table B.16) and EECON2 providing the access control EECON2 is a pseudoreg-ister, and the act of writing to it is used to verify that the operation request is valid.The data EEPROM write interrupt request bit (EEIE) is either in a PIE register orINTCON The parallel slave port (PSP; available only in 40-pin mid-range PIC micro-controllers and listed in Table B.17) is enabled by setting the PSPMODE bit Interruptrequest are enabled by the PSPIE flag and requested by the PSPIF flag of the PIE andPIR registers, respectively The parallel slave port is controlled from TRISE Note thatwhen the parallel slave port is enabled, PORTD and PORTE cannot be used for I/O
TABLE B.12 MID-RANGE PCON REGISTER DEFINITION
7 MPEEN—set if there is a memory parity error; this capability is
built into a small number of PIC microcontrollers.
2 _PER—reset when there was a program memory parity error; this
capability is built into a small number of PIC microcontrollers.
1 _POR—reset when execution is from a power-on reset.
0 _BOR—reset when execution is from a brown-out reset.
TABLE B.13 MID-RANGE PCLATH REGISTER DEFINITION
BIT FUNCTION
4 Select high and low pages.
3 Select odd or even pages.
2–0 Select the 256-instruction address block within current
Trang 10Along with TMR0, some mid-range PIC microcontrollers have TMR1 and TMR2,which are used for basic timing operations as well as CCP (compare, capture, andPWM) I/O TMR1 is a 16-bit-wide register (accessed via TMR1L and TMR1H) thatwill request an interrupt on overflow (TMR1IF) if the TMR1IE bit is set The T1CONregister (shown in Table B.18) controls the operation of TMR1.
TMR2 is an 8-bit register that is continually compared against a value in the PR2register To have TMR2 operate like TMR0 as an 8-bit timer with a range of 0x000 to0x0FF, then the PR2 (the register TMR2 is compared against) is set to 0x000 TheTMR2 output can be used to drive a PWM signal out Interrupts (TMR2IF) can berequested after the TMR2 overflow has passed through a postscaler and TMR2IE isset The T2CON register (see Table B.19) controls the operation of TMR2
TMR1 and TMR2 are used with one of the two CCP (capture/compare/PWM) ules for advanced I/O TMR1 is used for capture and compare, and TMR2 is used forPWM output The CCPR2x registers are used for storing compare/capture values, andthe CCPx register specifies the pin used for CCP The CCPxCON register (shown inTable B.20) is used for controlling CCP operation
7–4 CAL3:CAL0—16-bit calibration value.
3 CALFST—increase the speed of the RC oscillator.
2 CALSLW—decrease the speed of the RC oscillator.
TABLE B.15 MID-RANGE INTCON REGISTER DEFINITION
7 GIE—global interrupt enable; for any interrupt requests
to be acknowledged, this bit must be set.
6 Device-specific interrupt enable (see below).
5 T0IE—TMR0 interrupt overflow request enable.
4 INTE—RB0/INT pin interrupt request enable.
3 RBIE—PORTB change interrupt request enable.
2 T0IF—TMR0 interrupt overflow request.
1 INTF—RB0/INT pin interrupt request.
0 RBIF—PORTB change interrupt request.
Trang 11TABLE B.16 MID-RANGE EECON1 REGISTER DEFINITION
4 EEIF—EEPROM write complete interrupt request.
3 WRERR—bit set when EEPROM write was invalid.
2 WREN—set to enabling writing to EEPROM.
1 WR—write control bit.
0 RD—set to allow an EEPROM data read.
TABLE B.17 MID-RANGE PSP REGISTER DEFINITION
7 IBF—bit set when a word has been written into the PIC
microcontroller and has not been read.
6 OBF—bit set when a byte has been written to the
PORTD output register and has not been read.
5 IBOV—bit set when a word has been written into the PIC
microcontroller before the previous one has been read.
4 PSPMODE—bit set to enable parallel slave port.
2 TRISE2—TRIS bit for E2.
1 TRISE1—TRIS bit for E1.
0 TRISE0—TRIS bit for E0
TABLE B.18 MID-RANGE T1CON REGISTER DEFINITION
T1CKPS1–T1CKPS2—TMR1 input prescaler select.
3 T1OSCEN—set to enable external TMR1 oscillator.
2 _T1SYNCif external clock used for TMR1, then
synchro-nize to it when this bit is reset.
1 TMR1CS—when set, TMR1 is driven by external
clock/TMR1 oscillator.
Trang 12where x is 1 or 2 depending on the active CCP module There are three different SSPmodules built into the PIC microcontroller Each one provides somewhat differentoptions, and understanding how they work will be critical to your applications and ifI2C is going to be used with them The basic SSP modules (SSP and BSSP) provide afull SPI interface and I2C slave mode interface The SSPBUF register provides simple
TABLE B.19 MID-RANGE T2CON REGISTER DEFINITION
Trang 13buffering, with the SSPADD buffers providing the received address for comparingagainst I/O operations To control the operation of the SSP, the SSPCON register(defined in Table B.21) is used.
The SSPSTAT register (see Table B.22) is also used to control the SSP
The master SSP (MSSP) accesses similar registers for the same functions with asecond SSPCON register The important difference between the MSSP and the otherSSP modules is the enabled I2C master hardware in the MSSP The MSSP’s SSP-CON1 register is defined as shown in Table B.23
SSPCON2 is used for I2C master mode and is defined in Table B.24
The SSPSTAT register for MSSP is shown in Table B.25
Interrupts are requested from the SSP via the SSPIF bit and enabled by the SSPIEbit Nonreturn to zero (NRZ) asynchronous serial communications are accomplished bythe built-in USART This circuit also can be used for synchronous serial communica-
TABLE B.20 MID-RANGE CCPXCON REGISTER DEFINITION
5–4 DCxB1–DCxB0—PWM duty cycle bit 1 and bit 0; these bits are only
accessed by the PWM for its low-output values.
3–0 CCPxM3–CCPxM0—CCPx mode select.
1011 Compare mode, trigger special event
1010 Compare mode, trigger on compare match
1001 Compare mode, initialize CCP pin high; on compare,
match force CCP low
1000 Compare mode, initialize CCP pin low; on compare,
match force CCP high
0111 Capture on every 16th rising edge
0110 Capture on every 4th rising edge
0101 Capture on every rising edge
0100 Capture on every falling edge
0000 Capture/compare/PWM off
Trang 14are used to transfer data The RCSTA is the primary USART control register and isdefined in Table B.26 TXSTA is defined in Table B.27.
The RCIF interrupt request bit, when set, means that there is a character received inthe USART RCIF is enabled by RCIE TXIF is set when the TX holding register isempty and is enabled by TXIE
Comparator-equipped PIC microcontrollers have a built-in reference voltage sourcethat is controlled by the VRCON register (see Table B.28)
The voltage reference output is defined by the formula:
Vref = [1/4 * Vdd * (1 – VRR)] + Vdd * (VR3:VR0/{24 + [8 * (1 – VRR)]})
For Vdd equal to 5.0 V, Table B.29 lists different Vref values
The voltage reference is normally used with the voltage comparator, which is trolled by the CMCON Register defined in Table B.30
7 WCOL—set if SSPBUF was written to while transmitting data or not
in correct mode for transmit.
6 SSPOV—set when SSP receive overflow occurs.
5 SSPEN—enables pins for SSP mode.
4 CKP—in SPI, set for idle clock high; in I2C mode, set to enable clock 3–0 SSPM3–SSPM0—SSP mode select:
1111—I2C slave mode, 10-bit address 1110—I2C slave mode, 7-bit address 110x—Reserved
1011—I2C firmware-controlled master 1010—Reserved
1001—Reserved 1000—Reserved 0111—I2C slave mode, 10-bit address 0110—I2C slave mode, 7-bit address 0101—SSP slave, _SS disabled 0100—SSP slave, _SS enabled 0011—SPI master, clock = TMR2 0010—SPI master, Fosc/64 0001—SPI master, Fosc/16 0000—SPI master, Fosc/4
Trang 15Interrupts requested by change on comparator outputs are specified by CMIF andenabled by CMIE There are also some analog-to-digital converter (ADC) options thatcan be used with the PIC microcontroller Operation of the ADC is controlled by theADCON0 register (see Table B.31).
Selecting the PORTA, analog/digital functions, there are a number of different mats of ADCON1 that you should be aware of For basic 18-pin PIC microcontrollerADCs, ADCON1 is defined in Table B.32
for-TABLE B.22 MID-RANGE SSPSTAT REGISTER DEFINITION
BIT FUNCTION
7 SMP—data sampled at end of data output time if set, else middle.
6 CKE—data transmitted on rising edge of SCK when set.
5 D/_A—ssed by I2C; when set, indicates last byte transferred was data;
when reset, indicates last byte transferred was address.
4 P—set when stop bit detected.
3 S—set when start bit indicated.
2 R/_W—set when command received was a read.
1 UA—set when application must update SSPADD register.
0 BF—set when buffer is full in RX and when TX is in process.
TABLE B.23 MID-RANGE MSSP SSPCON1 REGISTER DEFINITION
7 WCOL—set if SSPBUF was written to while transmitting data or not in
correct mode for transmit.
6 SSPOV—set when SSP receive overflow occurs.
5 SSPEN—enables pins for SSP mode.
4 CKP—in SPI, set for idle clock high; in I2C mode, set to enable clock 3–0 SSPM3–SSPM0—SSP mode select.
1xx1—Reserved 1x1x—Reserved 1000—I2C master mode, clock = Fosc/[4 * (SSPADD + 1)]
0111—I2C slave mode, 10-bit address 0110—I2C slave mode, 7-bit address
Trang 16BIT FUNCTION
7 GCEN—set to enable interrupt when general call address is received.
6 ACKSTAT—set when acknowledge received from I2C slave device.
5 ACKDT—reset to send acknowledge at the end of a byte receive.
4 ACKEN—acknowledge I2C sequence when set.
3 RCEN—set to enable I2C receive mode.
2 PEN—reset to initiate stop condition on I2C clock and data.
1 RSEN—set to initiate repeated start condition on I2C clock and data.
0 SEN—set to initiate start condition on I2C clock and data.
TABLE B.25 MID-RANGE MSSP SSPSTAT REGISTER DEFINITION
7 SMP—data sampled at end of data output time if set, else middle.
6 CKE—data transmitted on rising edge of SCK when set.
5 D/_A—used by I2C; when set, indicates last byte transferred was data;
when reset, indicates last byte transferred was address.
4 P—set when stop bit detected.
3 S—set when start bit indicated.
2 R/_W—set when command received was a read.
1 UA—set when application must update SSPADD register.
0 BF—set when buffer is full in RX and when TX is in pr.
TABLE B.26 MID-RANGE RCSTA REGISTER DEFINITION
7 SPEN—set to enable the USART.
6 RX9—set to enable 9-bit serial reception.
5 SREN—set to enable single receive for synchronous mode.
4 CREN—set to enable continuous receive mode.
3 ADDEN—enables address detection in asynchronous mode.
2 FERR—framing error bit.
1 OERR—set after overrun error.
0 RX9D—ninth bit of data received.
Trang 17For more advanced 18-pin PIC microcontrollers, ADCON1 is defined as shown
comple-In the case of 10-bit ADCs, the result is stored in ADRESL and ADRESH Thismid-range register list does not include the PIC16C92x’s LED control registers This,
as well as any other I/O hardware registers that were not available when this appendixwas written, can be found in the Microchip datasheets
TABLE B.27 MID-RANGE TXSTA REGISTER DEFINITION
BIT FUNCTION
7 CSRC—set for synchronous clock generated internally.
6 TX9—set to enable 9-bit data transmission
5 TXEN—set to enable transmit.
4 SYNC—set to select synchronous mode.
3 Unused.
2 BRGH––Set to Select the High Baud Rate
1 TRMT—set when transmit shift register is empty.
0 TX9D—Ninth bit of transmit data.
TABLE B.28 MID-RANGE VRCON REGISTER DEFINITION
7 VREN—set to turn on voltage reference circuit
6 VROE—set to output voltage reference externally.
5 VRR—set for low-voltage reference range; reset for
high-voltage reference range.
Trang 18The unique hardware registers built into the PIC18 are defined in Table B.36 Notethat these registers are accessed either via the access bank or by using the BSR set to0x0F If the registers are to be accessed using the FSR register, then the high nybble
is set to 0x0F For this reason, I have set the first nybble of the 12-bit address as # inTable B.36 If the access bank is used, then there is no high nybble to the address Ifthe BSR or FSR registers are used for addressing, then # is F
The PIC18 microcontroller chips are designed with many of the same macros as themid-range devices This means that the peripheral functions generally are constructedand accessed in exactly the same way as in the mid-range chips In the interests ofbrevity, I have not listed the specific I/O registers in the PIC18 register list because theregister/function definitions can be found in the preceding section
Device Pinouts
In the following sections of this appendix I have tried to generalize the pinouts for ious PIC microcontroller part numbers These graphics are meant to represent how thepins are specified for the different part numbers and do not reflect the actual dimen-sions of the parts
Trang 19As a rule of thumb, pin-through-hole (PTH) parts (P and JW) are standard and 0.600-in widths with pins 0.100 in apart in dual in-line packages The height ofthe device depends on the package used I use PTH parts for all the applications pre-sented in this book because of the ease with which they can be handled, programmed,and assembled into circuits
0.300-Surface-mount-technology (SMT) parts are either in dual in-line packages (SO) or
in quad plastic chip carriers (PT, PQ, and L)
For actual device dimensions, check the datasheets (on the Microchip web site)for the PIC microcontroller that you are planning on using Different packages fordifferent PIC microcontrollers have different via, pad, and clearance specifications
LOW-END
When describing low-end PIC microcontrollers, I also include the PIC12C50x and thePIC16C505, which do use the low-end PIC microcontroller processor architecture butare programmed using the mid-range’s ICSP protocol There are no PLCC or QFPpackages used for low-end devices, and the pinouts remain the same whether or not
TABLE B.30 MID-RANGE CMCON REGISTER DEFINITION
7 C2OUT—set when C2Vin+ is greater than C2Vin–.
6 C1OUT—set when C1Vin+ is greater than C1Vin–.
3 CIS—comparator input switch; see CM2–CM0.
2–0 CM2–CM0—comparator mode select bits:
RA4 = C2OUT
Trang 20The mid-range devices have the widest range of pinouts of any of the PIC troller families In the following figures, I have given the 8-, 14-, 18-, 28-, and 40-pinpackages for the most popular devices, as well as the SMT packaging for the 40-pindevices
7–6 ADCS1–ADCS0—ADC conversion clock select:
11—internal RC oscillator 10—divide PIC microcontroller clock by 32 01—divide PIC microcontroller clock by 8 00—divide PIC microcontroller clock by 2 5–3 CHS2–CHS0—ADC conversion channel select bits:
111—AN7 110—AN6 101—AN5 100—AN4 011—AN3 010—AN2 001—AN1 000—AN0
2 GO/_DONE—set to start A/D conversion; reset by
hardware when conversion before.
1 Unused.
0 ADON—set to turn on the ADC function unused.
TABLE B.32 MID-RANGE BASIC ADCON1 REGISTER DEFINITION
Trang 21For many of the devices, the pinout is similar, but the pin functions may be ent In these cases I have marked the pins with an asterisk to show that these pins haveoptional other purposes If you are not sure of what a PIC microcontroller pin is for,check the datasheets included on the CD-ROM that came with this book or thedatasheets at the Microchip web site
differ-TABLE B.33 MID-RANGE ADVANCED ADCON1
TABLE B.34 MID-RANGE TWENTY-EIGHT/FORTY PIN PIC
MICROCONTROLLER ADCON1 REGISTER DEFINITION
Trang 22The PIC14000, which is designed for “mixed signals,” uses the 28-pin packaging ofthe standard devices, but the pinouts are different, as shown in Fig B.13.
The PIC16C92x LCD driver microcontrollers are fairly high pin count devices.Figure B.14 shows the 64-pin dual in-line package (DIP) part There is also a PLCCand TQFP package for the parts as well
Trang 23TABLE B.36 PIC18 REGISTER DEFINITION
Bit Function
5 Slave select/optional AN4
4 Open-drain output/Schmidt-trigger input 3–0 Optional AN3–AN0
are defined as follows:
Bit Function
7–6 ICSP programming pins/interrupt on pin change
5 Interrupt on pin change
4 Interrupt on pin change
3 CCP2 I/O and PWM output
2 Interrupt source 3
1 Interrupt source 2
0 Interrupt source 1
pin options are as follows:
Bit Function
7 UART receive pin
6 UART transmit pin
5 Synchronous serial port data
4 SPI data or I2C data
3 SPI clock or I2C clock
2 CCP1 I/O and PWM output/TMR1 clock output
0 TMR1 clock input
Trang 240x0#83 PORTD PORTD only available on 40-pin PIC18 devices; Schmidt-trigger inputs;
used for data slave port.
mode; used for data slave port as follows:
Bit Function
2 Negative active chip select
1 Negative active write enable to PIC18Cxx
0 Negative active output enable (_RD) from PIC18Cxx
0 for output mode.
0 for output mode; special function bits specified as follows;
Trang 255 IBOV—set when PSP is enabled and the byte written has been overwritten by a subsequent byte
4 PSPMODE—set to enable PIC microcontroller’s PSP I/O port
2 TRISE2—TRIS bit for RE2
1 TRISE1—TRIS bit for RE1
0 TRISE0—TRIS bit for RE0
Bit Function
7 PSPIE—set to enable PSP interrupt request on read/write
6 ADIE—set to enable interrupt request on completion of A/D operation
5 RCIE—set to enable interrupt request on USART data receive
4 TXIE—set to enable interrupt request on USART transmit holding register empty
3 SSPIE—master synchronous serial port interrupt enable bit
2 CCP1IE—set to enable CCP1 interrupt request enable
1 TMR2IE—TMR2 to PR2 match interrupt request enable
0 TMR1IE—TMR1 overflow interrupt request enable
Bit Function
7 PSPIF—set on PSP read/write
6 ADIF—set when A/D complete
5 RCIF—set on USART data receive
4 TXIF—set on USART transmit holding register empty
3 SSPIF—set on synchronous serial port data transmission/
reception complete
2 CCP1IF—set on TMR1 capture or compare match
1 TMR2IF—set on TMR2 to PR2 match
0 TMR1IF—set on TMR1 overflow
Trang 260x0#9F IPR1 Peripheral interrupt priority register:
Bit Function
7 PSPIP—set to give PSP interrupt request on read/write priority
6 ADIP—set to give interrupt request on completion of A/D operation priority
5 RCIP—set to give interrupt request on USART data receive priority
4 TXIP—set to enable interrupt request on USART transmit holding register empty priority
3 SSPIP—master synchronous serial port interrupt priority when set
2 CCP1IP—set to give CCP1 interrupt request priority
1 TMR2IP—TMR2 to PR2 match interrupt request priority when set
0 TMR1IF—TMR1 overflow interrupt request priority when set
Bit Function
3 BCLIE—bus collision interrupt request enabled when set
2 LVDIE—low-voltage detect interrupt request enabled when set
1 TMR3IE—TMR3 overflow interrupt request enabled when set
0 CCP2IE—CCP2 interrupt request enabled when set
Bit Function
3 BCLIF—set for bus collision interrupt request
2 LVDIF—set for low-voltage detect interrupt request
1 TMR3IF—set for TMR3 overflow interrupt request
0 CCP2IF—set for CCP2 interrupt request
Trang 27Bit Function
3 BCLIF—set for bus collision interrupt given priority
2 LVDIF—set for low-voltage detect interrupt given priority
1 TMR3IF—set for TMR3 overflow interrupt request given priority
0 CCP2IF—set for CCP2 interrupt request given priority
Bit Function
7 SPEN—set to enable the USART
6 RX9—set to enable 9-bit serial reception
5 SREN—set to enable single receive for synchronous mode
4 CREN—set to enable continuous receive mode
3 ADDEN—enables address detection in asynchronous mode
2 FERR—framing error bit
1 OERR—set after overrun error
0 RX9D—ninth bit of data received
Bit Function
7 CSRC—set for synchronous clock generated internally
6 TX9—set to enable 9-bit data transmission
5 TXEN—set to enable transmit
4 SYNC—set to select synchronous mode
2 BRGH—set to select the high baud rate
1 TRMT—set when transmit shift register is empty
0 TX9D—ninth bit of transmit data
Trang 280x0#B1 T3CON TMR3 control register:
Bit Function
7 RD16—enable read/write of TMR3 as a 16-bit operation 6–3 T3CCP2–T3CCP2—TMR3 and TMR1 to CCPx enable bits 1x—TMR3 is CCP clock source
01—TMR3 is CCP2 clock source/TMR1 is CCP1 clock source 00—TMR1 is CCP clock source
5–4 T3CKPS1–T3CKPS0—TMR3 input clock
Prescaler Control
11—1:8 prescaler 10—1:4 prescaler 01—1:2 prescaler 00—1:1 prescaler
2 _T3SYNC—when reset, TMR3 external clock is synchronized
1 TMR3CS—set to select external clock for TMR3; reset to select instruction clock
Trang 290111—capture on every 16th rising edge 0110—capture on every 4th rising edge 0101—capture on every rising edge 0100—capture on every falling edge 0011—reserved
0010—toggle output on compare match 0001—reserved
0000—capture/compare/PWM off
0110—capture on every 4th rising edge 0101—capture on every rising edge 0100—capture on every falling edge 0011—reserved
0010—toggle output on compare match 0001—reserved
0000—capture/compare/PWM off
Trang 300x0#C1 ADCON1 A/D control register1:
3–0 PCFG3–PCFG0—A/D pin configuration select bits:
Trang 31101—divide PIC microcontroller clock by 16 100—divide PIC microcontroller clock by 4 011—internal RC oscillator
010—divide PIC microcontroller clock by 32 001—divide PIC microcontroller clock by 8 000—divide PIC microcontroller clock by 2 5–3 CHS2–CHS0—ADC conversion channel:
Select Bits
111—AN7 110—AN6 101—AN5 100—AN4 011—AN3 010—AN2 001—AN1 000—AN0
2 GO/_DONE—set to start A/D conversion; reset by hardware when conversion before
0 ADON—set to turn on the ADC function
Bit Function
7 GCEN—set to enable interrupt when general call address is received
6 ACKSTAT—set when acknowledge received from I2C slave device
5 ACKDT—reset to send acknowledge at the end of a byte receive
4 ACKEN—acknowledge I2C sequence when set
3 RCEN—set to enable I2C receive mode
2 PEN—reset to initiate stop condition on I2C clock and data
Trang 321 RSEN—set to initiate repeated start condition on I2C clock and data
0 SEN—set to initiate start condition on I2C clock and data
Bit Function
7 WCOL—set if SSPBUF was written to while transmitting data
or not in correct mode for transmit
6 SSPOV—set when SSP receive overflow occurs
5 SSPEN—enables pins for SSP mode
4 CKP—in SPI, set for idle clock high; in I2C mode, set to enable clock
3–0 SSPM3–SSPM0—SSP mode select:
1111—I2C slave mode, 10-bit address 1110—I2C slave mode, 7-bit address 110x—reserved
1011—I2C firmware-controlled master 1010—reserved
1001—reserved 1000—I2C master, Fosc/[4 * (SSPAD + 1)]
0111—I2C slave mode, 10-bit address 0110—I2C slave mode, 7-bit address 0101—SSP slave, _SS disabled 0100—SSP slave, _SS enabled 0011—SPI master, clock = TMR2 0010—SPI master, Fosc/64 0001—SPI master, Fosc/16 0000—SPI master, Fosc/4
Trang 33Bit Function
7 SMP—data sampled at end of data output time if set, else middle
6 CKE—data transmitted on rising edge of SCK when set
5 D/_A—when set, indicates last byte transferred was data; when reset, indicates last byte transferred was address
4 P—set when stop bit detected
3 S—set when start bit indicated
2 R/_W—set when command received was a read
1 UA—set when application must update SSPADD register
0 BF—set when buffer is full in RX and when TX is in process
Bit Function
6–3 TOUTPS3–TOUTPS0—TMR2 output postscaler:
1111—16x 1110—15x 1101—14x 1100—13x 1011—12x 1010—11x 1001—10x 1000—9x 0111—8x 0110—7x 0101—6x 0100—5x 0011—4x 0010—3x 0001—2x 0000—1x
Trang 342 TMR2ON—set to enable TMR2 1–0 T2CKPS1–T2CKPS0—TMR2 prescaler select bits:
1x—prescaler is 16 01—prescaler is 4 00—prescaler is 1
3 T1OSCEN—set to enable TMR1 oscillator
2 _T1SYNC—set to synchronize external clock input
1 TMR1CS—TMR1 clock source select; set to select external clock
7 IPEN—set to enable priority levels on interrupts
6 LWRT—set to enable tblwt instruction to internal memory
Trang 354 _RI—reset when the Reset instruction in software
3 _TO—set after power-up, clrwdt, or sleep instruction
2 _PD—set by power-up or clrwdt instruction; reset by sleep instruction
1 _POR—reset if a power-on reset has occurred
0 _BOR—reset if a brown-out reset has occurred
Trang 360100—2.5 V min to 2.65 V max 0011—2.4 V min to 2.54 V max 0010—2.2 V min to 2.33 V max 0001—2.0 V min to 2.12 V max 0000—1.8 V min to 1.91 V max
Bit Function
0 SCS—reset to use primary oscillator; set to use TMR1’s oscillator
4 T0SE—set to make TMR0 increment on falling edge of clock
3 PSA—reset to assign TMR0 prescaler 2–0 T0PS2–T0PS0—TMR0 prescaler value:
111—1:256 prescaler 110—1:128 prescaler 101—1:64 prescaler 100—1:32 prescaler 011—1:16 prescaler 010—1:8 prescaler 001—1:4 prescaler 000—1:2 prescaler
Trang 374 N—set when the result has bit 7 set
3 OV—set when the result overflows a two’s complement number (bit 7 changes polarity inadvertently)
2 Z—set when the least significant 8 bits of the result are all zero
1 DC—set when the lower nybble of the addition/subtraction overflows
0 C—set in addition when the result is greater than 0x0FF; reset
in subtraction when the result is negative
Bit Function
3–0 BSR3–BSR0—bank select register bits
Trang 380x0#E5 PREINC1 INDF1 with FSR1 decremented after access
Bit Function
7 INT2IP—INT2 external interrupt priority; set for “high”
6 INT1IP—INT1 external interrupt priority; set for “high”
4 INT2IE—set to enable external INT2
3 INT1IE—set to enable external INT1
1 INT2IF—set when external INT2 requested
0 INT1IF—set when external INT1 requested
Bit Function
7 _RBPU—reset to enable PORTB pull-ups
6 INTEDG0—set for external INT0 on rising edge
Trang 395 INTEDG1—set for external INT1 on rising edge
4 INTEDG2—set for external INT2 on rising edge
2 TMR0IP—high TMR0 interrupt request priority when set
0 RBIP—high PORTB change interrupt request priority when set
5 TMR0IE—when set, enables TMR0 interrupt requests
4 INT0IE—when set, enables INT0 interrupt requests
3 RBIE—when set, enables PORTB change
2 TMR0IF—when set, TMR0 interrupt request active
1 INT0IF—when set, INT0 external interrupt request active
0 RBIF—when set, PORTB change on interrupt request active
Trang 40TABLE B.36 PIC18 REGISTER DEFINITION (CONTINUED)
Bit Function
7 STKFUL—bit set when stack is full or overflowed
6 STKUNF—bit set when stack underflows
4–0 SP4–SP0—stack pointer location bits