DS30292A-J-page 2 Preliminary 2000 Microchip Technology Inc. PIC16F876/

Similar documents
PIC16C7X日本語データシート

前付(念).indd

3 4 PIC

スライド 1

Microsoft PowerPoint - 第8α章.ppt [互換モード]

untitled

3 1EEPROMElectrically Erasable PROM PROMProgrammable ROM 2 EEPROM 3

DS30430C-J2-page 2 : 1998 Microchip Technology Inc.

untitled

Timers_JP.fm

,, ( ) 5 ma ( ) 5V V 5 6 A B C D E F G H I J , LED LED, LED, 7 LED,, 7 LED ( ) V LED VCC 5V 7 LED VCC f g f a g b a b c e d e d c dp dp VCC (

スライド 1

PowerPoint プレゼンテーション

#include "uart.h" // #define RTC8583 0xA0 // RTC address #define CTRL 0x00 // RTC register notation START/STOP #defin

Taro11-…e…L…X…g.jtd

#define HOUR 0x04 #define DAY 0x05 #define WEEKDAY 0x06 #define MONTH 0x07 #define YEAR 0x08 #define CKOUT 0x0D #define CTRLT 0x0E // CLKOUT // TIMER

PIC18 Istructios PIC16, PIC x Microchip Techology Icorporated. All Rights Reserved. PICmicro PIC18 52

スライド 1

卒 業 研 究 報 告

R1RW0408D シリーズ

1 4 8 (DC) PWM.

Microsoft PowerPoint - 工学ゼミⅢLED1回_2018

PIC (, 2, 3 ) PIC ( 1, 2, 3 ) 1 2 (, 2 ) PIC ( 1, 2 ) 2.1 (p.34) define #define (define ) (p.61) 1 30 (RD 7 /P SP 7 ) 32 (V DD ) IC

R1RP0416D シリーズ

回路 : Vdd GND 回路図と呼べるようなものではありません オシレータは外部 ( セラミック発振子 ) なので GP4 と GP5 は使えません 四角の枠内はモジュールなので ここから VDD GND TX RX の4 本をつなぐだけです 測定端子 (GP0) は 1MΩの抵抗と 2MΩの半固

R1RW0416DI シリーズ

PowerPoint プレゼンテーション

BANK1 MOVLW b' ' PIC16F648A独自 MOVWF CMCON コンパレータ OFF BCF INTCON,PEIE 周辺割り込み OFF PIC16F648A独自 MOVLW B' ' RB2/TX, RB1/RX PIC16F648A独自 MOVW

S1C17W12 S1C17W13 (WDT2) (RTCA) 16 (T16) 16PWM (T16B) SQFN7-48pin TQFP12-48pin SQFN7-48pin NMI, NMI/ Hz, / / / // / 1, 3 SPIA 2 / PWM PWM : 2/ (

R1LV0416Dシリーズ データシート

USB モジュール

ESP32-KEY-KIT-R1 (ESP-WROOM-32 ) Copyright c 2

R1LV1616H-I シリーズ

mbed祭りMar2016_プルアップ.key

2. アーキテクチャ 概 要 PIC16F8x ファミリは 命 令 語 長 14bit の RISC[1]で 命 令 は35 種 類 である 1 命 令 は4クロックで 実 行 されるが 実 際 にはパイプライン 処 理 [2]されている ノイマン 型 コンピュータ[3]と 違 いプログラムとデータ

プロセッサ・アーキテクチャ

HN58C256A シリーズ/HN58C257A シリーズ データシート

DAC121S101/DAC121S101Q 12-Bit Micro Power, RRO Digital-to-Analog Converter (jp)

スライド 1

HN58X2402SFPIAG/HN58X2404SFPIAG

HN58V256Aシリーズ/HN58V257Aシリーズ データシート

MAX IIデバイスのIEEE (JTAG)バウンダリ・スキャン・テスト

S1C17M20/M23 S1C17M21/M24 S1C17M22/M25 24PKG 32PKG (SVD3) (1, ) : 28 ( V)/: 32 ( V), UART(UART3) 2, IrDA1.0,, (SPIA) I 2 C(I2C)

(Making the electronic circuit with use of micro-processor)

MAX191 EV J

ADC121S Bit, ksps, Diff Input, Micro Pwr Sampling ADC (jp)

S1C17M30 S1C17M31 S1C17M32 S1C17M33 S1C17M34 (SVD3) (1, ) : 28 ( V)/: 32 ( V), UART(UART3) 2, IrDA1.0,, (SPIA) (T16) I 2 C(I2C)

NL-22/NL-32取扱説明書_操作編

Express5800/R320a-E4/Express5800/R320b-M4ユーザーズガイド

.,. 0. (MSB). =2, =1/2.,. MSB LSB, LSB MSB. MSB 0 LSB 0 0 P

XC9500 ISP CPLD JTAG Port 3 JTAG Controller In-System Programming Controller 8 36 Function Block Macrocells to 8 /GCK /GSR /GTS 3 2 or 4 Blocks FastCO

S5U1C8F360T1 Manual (S1C8F360 DEMO Board)

R1EV5801MBシリーズ データシート

Express5800/320Fc-MR

Technische Beschreibung P82R SMD

N Express5800/R320a-E4 N Express5800/R320a-M4 ユーザーズガイド

Express5800/R320a-E4, Express5800/R320b-M4ユーザーズガイド

MOTIF XF 取扱説明書

Introduction Purpose This training course demonstrates the use of the High-performance Embedded Workshop (HEW), a key tool for developing software for

XAPP858 - High-Performance DDR2 SDRAM Interface In Virtex-5 Devices

Express5800/320Fa-L/320Fa-LR

Microsoft Word - 工学ゼミ3_テキスト

DS90CP Gbps 4x4 LVDS Crosspoint Switch (jp)

Lab GPIO_35 GPIO

Express5800/R110a-1Hユーザーズガイド

16-Bit, Serial Input Multiplying Digital-to-Analog Converter (Rev. B

SE-800 INSTRUCTION BOOK

DS41364B_JP

ADC082S021 2 Channel, 50 ksps to 200 ksps, 8-Bit A/D Converter (jp)

LTC ビット、200ksps シリアル・サンプリングADC

卒 業 研 究 報 告

ADC78H90 8-Channel, 500 kSPS, 12-Bit A/D Converter (jp)

PIC12C5XX日本語データシート


untitled

R1EX24256BSAS0I/R1EX24256BTAS0I データシート

1 138

本機をお使いの方へ

MAX9471/2 DS.J

Stratix IIIデバイスの外部メモリ・インタフェース

4

7 7

WinPSKユーザーズガイド

Express5800/320Fa-L/320Fa-LR/320Fa-M/320Fa-MR

untitled

4

LM Channel 42-Bit Color Scanner Analog Front End (jp)

PIN S 5 K 0 K 1 K 2 K 3 K 4 V DD V 0 V 1 V 2 V SS OSC SEG 32 SEG 31 SEG 30 SEG 29 SEG 28 SEG 27 SEG 26 SEG 25 SEG 24 SEG 23 SEG 22 SEG 21 SEG 20 SEG 1

Cyclone IIIデバイスのI/O機能

変更履歴 Revision 日付 内容 /10/10 初版 /10/24 車載関連説明文削除 /10/06 会社所在地を本社に修正 2

RR-US470 (RQCA1588).indd

3 SIMPLE ver 3.2: SIMPLE (SIxteen-bit MicroProcessor for Laboratory Experiment) 1 16 SIMPLE SIMPLE 2 SIMPLE 2.1 SIMPLE (main memo

AN 100: ISPを使用するためのガイドライン

割り込み 今までのプログラムは 順番にそって命令を実行していくのみ それはそれで良いが 不便な場合もある 例えば 時間のかかる周辺機器を使う場合 その周辺機器が動作を終了するまで CPU は待たなければいけない 方法 1( ポーリング ) 一定時間毎に 周辺機器の動作が終了したか調べる 終了していれ

AD5933: 1 MSPS、12 ビット・インピーダンス・コンバータネットワーク・アナライザ

HN58X2502/HN58X2504I

1

A Responsive Processor for Parallel/Distributed Real-time Processing

NL-20取扱説明書_操作編

SED1353 Technical Manual

Transcription:

PDIP H ) MCLR/VPP/THV RA0/AN0 RA1/AN1 RA2/AN2/VREF- RA3/AN3/VREF+ RA4/T0CKI RA5/AN4/SS RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 VDD VSS OSC1/CLKIN OSC2/CLKOUT RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RD0/PSP0 RD1/PSP1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 PIC16F877/874 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 RB7/PGD RB6/PGC RB5 RB4 RB3/PGM RB2 RB1 RB0/INT VDD VSS RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RC7/RX/DT RC6/TX/CK RC5/SDO RC4/SDI/SDA RD3/PSP3 RD2/PSP2 H H In-Circuit Serial Programming - - - H H H 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 1

DS30292A-J-page 2 Preliminary 2000 Microchip Technology Inc. PIC16F876/873 10 11 2 3 4 5 6 1 8 7 9 12 13 14 15 16 17 18 19 20 23 24 25 26 27 28 22 21 MCLR/VPP/THV RA0/AN0 RA1/AN1 RA2/AN2/VREF- RA3/AN3/VREF+ RA4/T0CKI RA5/AN4/SS VSS OSC1/CLKIN OSC2/CLKOUT RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RB7/PGD RB6/PGC RB5 RB4 RB3/PGM RB2 RB1 RB0/INT VDD VSS RC7/RX/DT RC6/TX/CK RC5/SDO RC4/SDI/SDA 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 44 8 7 6 5 4 3 2 1 27 2829 30 31 32 33 34 35 36 37 38 39 40 41 42 43 9 PIC16F877 RA4/T0CKI RA5/AN4/SS RE0/RD/AN5 OSC1/CLKIN OSC2/CLKOUT RC0/T1OSO/T1CK1 NC RE1/WR/AN6 RE2/CS/AN7 VDD VSS RB3/PGM RB2 RB1 RB0/INT VDD VSS RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RC7/RX/DT RA3/AN3/VREF+ RA2/AN2/VREF- RA1/AN1 RA0/AN0 MCLR/VPP/THV NC RB7/PGD RB6/PGC RB5 RB4 NC NC RC6/TX/CK RC5/SDO RC4/SDI/SDA RD3/PSP3 RD2/PSP2 RD1/PSP1 RD0/PSP0 RC3/SCK/SCL RC2/CCP1 RC1/T1OSI/CCP2 10 11 2 3 4 5 6 1 18 19 20 21 22 12 13 14 15 38 8 7 44 43 42 41 40 39 16 17 29 30 31 32 33 23 24 25 26 27 28 36 34 35 9 PIC16F877 37 RA3/AN3/VREF+ RA2/AN2/VREF- RA1/AN1 RA0/AN0 MCLR/VPP/THV NC RB7/PGD RB6/PGC RB5 RB4 NC RC6/TX/CK RC5/SDO RC4/SDI/SDA RD3/PSP3 RD2/PSP2 RD1/PSP1 RD0/PSP0 RC3/SCK/SCL RC2/CCP1 RC1/T1OSI/CCP2 NC NC RC0/T1OSO/T1CKI OSC2/CLKOUT OSC1/CLKIN VSS VDD RE2/AN7/CS RE1/AN6/WR RE0/AN5/RD RA5/AN4 RA4/T0CKI RC7/RX/DT RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 VSS VDD RB0/INT RB1 RB2 RB3/PGM PLCC QFP DIP, SOIC PIC16F874 PIC16F874

PICmicro (DS33023) PIC16F873 PIC16F874 PIC16F876 PIC16F877 DC - 20 MHz DC - 20 MHz DC - 20 MHz DC - 20 MHz POR, BOR (PWRT, OST) POR, BOR (PWRT, OST) POR, BOR (PWRT, OST) POR, BOR (PWRT, OST) 4K 4K 8K 8K 192 192 368 368 128 128 256 256 13 14 13 14 Ports A,B,C Ports A,B,C,D,E Ports A,B,C Ports A,B,C,D,E 3 3 3 3 2 2 2 2 MSSP, USART MSSP, USART MSSP, USART MSSP, USART PSP PSP 5 8 5 8 35 35 35 35 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 3

... 191 www.microchip.com, www.microchip.co.jp DS30000A DS30000 A (www.microchip.com, www.microchip.co.jp) ( (U.S. FAX: (602) 786-7277) E tech@microchip.co.jp DS30292A-J-page 4 Preliminary 2000 Microchip Technology Inc.

EEPROM PIC16F873 4K 192 128 PIC16F876 8K 368 256 Program Bus OSC1/CLKIN OSC2/CLKOUT FLASH Program Memory 14 Instruction reg Instruction Decode & Control Timing Generation 8 13 Program Counter 8 Level Stack (13-bit) Direct Addr 7 Power-up Timer Oscillator Start-up Timer Power-on Reset Watchdog Timer Brown-out Reset In-Circuit Debugger Low-Voltage Programming Data Bus 8 RAM File Registers RAM Addr (1) 9 8 3 Addr MUX ALU W reg Indirect 8 Addr FSR reg STATUS reg MUX PORTA PORTB PORTC RA0/AN0 RA1/AN1 RA2/AN2 RA3/AN3/VREF RA4/T0CKI RA5/AN4/SS RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT MCLR VDD, VSS Timer0 Timer1 Timer2 10-bit A/D Data EEPROM CCP1,2 Synchronous Serial Port USART 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 5

EEPROM PIC16F874 4K 192 128 PIC16F877 8K 368 256 Program Bus OSC1/CLKIN OSC2/CLKOUT FLASH Program Memory 14 Instruction reg Instruction Decode & Control Timing Generation 8 13 Program Counter 8 Level Stack (13-bit) Direct Addr 7 Power-up Timer Oscillator Start-up Timer Power-on Reset Watchdog Timer Brown-out Reset In-Circuit Debugger Low-Voltage Programming Data Bus RAM File Registers RAM Addr (1) 9 8 3 Addr MUX ALU W reg 8 Indirect 8 Addr FSR reg STATUS reg MUX Parallel Slave Port PORTA PORTB PORTC PORTD PORTE RA0/AN0 RA1/AN1 RA2/AN2 RA3/AN3/VREF RA4/T0CKI RA5/AN4/SS RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT RD7/PSP7:RD0/PSP0 RE0/AN5/RD MCLR VDD, VSS RE1/AN6/WR RE2/AN7/CS Timer0 Timer1 Timer2 10-bit A/D Data EEPROM CCP1,2 Synchronous Serial Port USART DS30292A-J-page 6 Preliminary 2000 Microchip Technology Inc.

DIP Pin# SOIC Pin# I/O/P Type Buffer Type OSC1/CLKIN 9 9 I ST/CMOS (3) OSC2/CLKOUT 10 10 O MCLR/VPP/THV 1 1 I/P ST RA0/AN0 2 2 I/O TTL RA1/AN1 3 3 I/O TTL RA2/AN2/VREF- 4 4 I/O TTL RA3/AN3/VREF+ 5 5 I/O TTL RA4/T0CKI 6 6 I/O ST RA5/SS/AN4 7 7 I/O TTL RB0/INT 21 21 I/O TTL/ST (1) RB1 22 22 I/O TTL RB2 23 23 I/O TTL RB3/PGM 24 24 I/O TTL RB4 25 25 I/O TTL RB5 26 26 I/O TTL RB6/PGC 27 27 I/O TTL/ST (2) RB7/PGD 28 28 I/O TTL/ST (2) RC0/T1OSO/T1CKI 11 11 I/O ST RC1/T1OSI/CCP2 12 12 I/O ST RC2/CCP1 13 13 I/O ST RC3/SCK/SCL 14 14 I/O ST RC4/SDI/SDA 15 15 I/O ST RC5/SDO 16 16 I/O ST RC6/TX/CK 17 17 I/O ST RC7/RX/DT 18 18 I/O ST VSS 8, 19 8, 19 P VDD 20 20 P 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 7

DIP Pin# PLCC Pin# QFP Pin# I/O/P Type Buffer Type OSC1/CLKIN 13 14 30 I ST/CMOS (4) OSC2/CLKOUT 14 15 31 O MCLR/VPP/THV 1 2 18 I/P ST RA0/AN0 2 3 19 I/O TTL RA1/AN1 3 4 20 I/O TTL RA2/AN2/VREF- 4 5 21 I/O TTL RA3/AN3/VREF+ 5 6 22 I/O TTL RA4/T0CKI 6 7 23 I/O ST RA5/SS/AN4 7 8 24 I/O TTL RB0/INT 33 36 8 I/O TTL/ST (1) RB1 34 37 9 I/O TTL RB2 35 38 10 I/O TTL RB3/PGM 36 39 11 I/O TTL RB4 37 41 14 I/O TTL RB5 38 42 15 I/O TTL RB6/PGC 39 43 16 I/O TTL/ST (2) RB7/PGD 40 44 17 I/O TTL/ST (2) DS30292A-J-page 8 Preliminary 2000 Microchip Technology Inc.

RD7/PSP7 30 33 5 I/O ST/TTL (3) PIC16F87X DIP Pin# PLCC Pin# QFP Pin# I/O/P Type Buffer Type RC0/T1OSO/T1CKI 15 16 32 I/O ST RC1/T1OSI/CCP2 16 18 35 I/O ST RC2/CCP1 17 19 36 I/O ST RC3/SCK/SCL 18 20 37 I/O ST RC4/SDI/SDA 23 25 42 I/O ST RC5/SDO 24 26 43 I/O ST RC6/TX/CK 25 27 44 I/O ST RC7/RX/DT 26 29 1 I/O ST RD0/PSP0 19 21 38 I/O ST/TTL (3) RD1/PSP1 20 22 39 I/O ST/TTL (3) RD2/PSP2 21 23 40 I/O ST/TTL (3) RD3/PSP3 22 24 41 I/O ST/TTL (3) RD4/PSP4 27 30 2 I/O ST/TTL (3) RD5/PSP5 28 31 3 I/O ST/TTL (3) RD6/PSP6 29 32 4 I/O ST/TTL (3) RE0/RD/AN5 8 9 25 I/O ST/TTL (3) RE1/WR/AN6 9 10 26 I/O ST/TTL (3) RE2/CS/AN7 10 11 27 I/O ST/TTL (3) VSS 12,31 13,34 6,29 P VDD 11,32 12,35 7,28 P NC 1,17,28, 40 12,13, 33,34 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 9

NOTES: DS30292A-J-page 10 Preliminary 2000 Microchip Technology Inc.

CALL, RETURN RETFIE, RETLW PC<12:0> Stack Level 1 Stack Level 2 13 Stack Level 8 Reset Vector 0000h CALL, RETURN RETFIE, RETLW PC<12:0> 13 On-chip Program Memory Interrupt Vector Page 0 Page 1 0004h 0005h 07FFh 0800h 0FFFh 1000h Stack Level 1 Stack Level 2 1FFFh Stack Level 8 Reset Vector 0000h On-chip Program Memory Interrupt Vector Page 0 Page 1 Page 2 Page 3 0004h 0005h 07FFh 0800h 0FFFh 1000h 17FFh 1800h 1FFFh 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 11

RP1 RP0 (STATUS<6:5>) = 00 Bank0 = 01 Bank1 = 10 Bank2 = 11 Bank3 DS30292A-J-page 12 Preliminary 2000 Microchip Technology Inc.

File Address Indirect addr. (*) TMR0 PCL STATUS FSR PORTA PORTB PORTC PORTD (1) (1) PORTE PCLATH INTCON PIR1 PIR2 TMR1L TMR1H T1CON TMR2 T2CON SSPBUF SSPCON CCPR1L CCPR1H CCP1CON RCSTA TXREG RCREG CCPR2L CCPR2H CCP2CON ADRESH ADCON0 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh 10h 11h 12h 13h 14h 15h 16h 17h 18h 19h 1Ah 1Bh 1Ch 1Dh 1Eh 1Fh 20h Indirect addr. (*) 80h Indirect addr. (*) OPTION_REG PCL STATUS FSR TRISA TRISB TRISC (1) TRISD 81h 82h 83h 84h 85h 86h 87h 88h TMR0 PCL STATUS FSR PORTB (1) TRISE 89h PCLATH INTCON PIE1 PIE2 8Ah 8Bh 8Ch 8Dh PCLATH INTCON EEDATA EEADR PCON 8Eh 8Fh EEDATH EEADRH 90h SSPCON2 91h PR2 SSPADD SSPSTAT 92h 93h 94h 95h 96h 97h TXSTA 98h SPBRG 99h 9Ah 9Bh 9Ch 9Dh ADRESL 9Eh ADCON1 9Fh A0h 100h 101h 102h 103h 104h 105h 106h 107h 108h 109h 10Ah 10Bh 10Ch 10Dh 10Eh 10Fh 110h 111h 112h 113h 114h 115h 116h 117h 118h 119h 11Ah 11Bh 11Ch 11Dh 11Eh 11Fh 120h Indirect addr. (*) OPTION_REG PCL STATUS FSR TRISB PCLATH INTCON EECON1 EECON2 Reserved (2) Reserved (2) 16 16 180h 181h 182h 183h 184h 185h 186h 187h 188h 189h 18Ah 18Bh 18Ch 18Dh 18Eh 18Fh 190h 191h 192h 193h 194h 195h 196h 197h 198h 199h 19Ah 19Bh 19Ch 19Dh 19Eh 19Fh 1A0h 96 70h-7Fh 7Fh Bank 0 Bank 1 80 EFh 80 80 F0h FFh 16Fh 170h 70h-7Fh 70h - 7Fh 17Fh Bank 2 Bank 3 1EFh 1F0h 1FFh * 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 13

File Address Indirect addr. (*) TMR0 PCL STATUS FSR PORTA PORTB PORTC PORTD (1) (1) PORTE PCLATH INTCON PIR1 PIR2 TMR1L TMR1H T1CON TMR2 T2CON SSPBUF SSPCON CCPR1L CCPR1H CCP1CON RCSTA TXREG RCREG CCPR2L CCPR2H CCP2CON ADRESH ADCON0 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh 10h 11h 12h 13h 14h 15h 16h 17h 18h 19h 1Ah 1Bh 1Ch 1Dh 1Eh 1Fh 20h Indirect addr. (*) 80h Indirect addr. (*) OPTION_REG PCL STATUS FSR TRISA TRISB TRISC (1) TRISD 81h 82h 83h 84h 85h 86h 87h 88h TMR0 PCL STATUS FSR PORTB (1) TRISE 89h PCLATH INTCON PIE1 PIE2 8Ah 8Bh 8Ch 8Dh PCLATH INTCON EEDATA EEADR PCON 8Eh 8Fh EEDATH EEADRH 90h SSPCON2 91h PR2 SSPADD SSPSTAT 92h 93h 94h 95h 96h 97h TXSTA 98h SPBRG 99h 9Ah 9Bh 9Ch 9Dh ADRESL 9Eh ADCON1 9Fh A0h 100h 101h 102h 103h 104h 105h 106h 107h 108h 109h 10Ah 10Bh 10Ch 10Dh 10Eh 10Fh 110h 120h Indirect addr. (*) OPTION_REG PCL STATUS FSR TRISB PCLATH INTCON EECON1 EECON2 Reserved (2) Reserved (2) 180h 181h 182h 183h 184h 185h 186h 187h 188h 189h 18Ah 18Bh 18Ch 18Dh 18Eh 18Fh 190h 1A0h General Purpose Register General Purpose Register 96 Bytes 96 Bytes accesses 20h-7Fh 16Fh 170h accesses A0h - FFh 1EFh 1F0h 7Fh Bank 0 Bank 1 FFh 17Fh Bank 2 Bank 3 1FFh * DS30292A-J-page 14 Preliminary 2000 Microchip Technology Inc.

2000 Microchip Technology Inc. Preliminary DS30292A-J-page 15

Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bank 0 Value on: POR, BOR Value on all other resets (2) 00h (4) INDF 0000 0000 0000 0000 01h TMR0 xxxx xxxx uuuu uuuu 02h (4) PCL 0000 0000 0000 0000 03h (4) STATUS IRP RP1 RP0 TO PD Z DC C 0001 1xxx 000q quuu 04h (4) FSR xxxx xxxx uuuu uuuu 05h PORTA --0x 0000 --0u 0000 06h PORTB xxxx xxxx uuuu uuuu 07h PORTC xxxx xxxx uuuu uuuu 08h (5) PORTD xxxx xxxx uuuu uuuu 09h (5) PORTE RE2 RE1 RE0 ---- -xxx ---- -uuu 0Ah (1,4) PCLATH ---0 0000 ---0 0000 0Bh (4) INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u 0Ch PIR1 PSPIF (3) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000 0Dh PIR2 (6) EEIF BCLIF CCP2IF -r-0 0--0 -r-0 0--0 0Eh TMR1L xxxx xxxx uuuu uuuu 0Fh TMR1H xxxx xxxx uuuu uuuu 10h T1CON T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON --00 0000 --uu uuuu 11h TMR2 0000 0000 0000 0000 12h T2CON TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0-000 0000-000 0000 13h SSPBUF xxxx xxxx uuuu uuuu 14h SSPCON WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 0000 0000 15h CCPR1L xxxx xxxx uuuu uuuu 16h CCPR1H xxxx xxxx uuuu uuuu 17h CCP1CON CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000 --00 0000 18h RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x 19h TXREG 0000 0000 0000 0000 1Ah RCREG 0000 0000 0000 0000 1Bh CCPR2L xxxx xxxx uuuu uuuu 1Ch CCPR2H xxxx xxxx uuuu uuuu 1Dh CCP2CON CCP2X CCP2Y CCP2M3 CCP2M2 CCP2M1 CCP2M0 --00 0000 --00 0000 1Eh ADRESH xxxx xxxx uuuu uuuu 1Fh ADCON0 ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/ DONE ADON 0000 00-0 0000 00-0 x u q DS30292A-J-page 16 Preliminary 2000 Microchip Technology Inc.

Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bank 1 Value on: POR, BOR Value on all other resets (2) 80h (4) INDF 0000 0000 0000 0000 81h OPTION_RE G RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111 82h (4) PCL 0000 0000 0000 0000 83h (4) STATUS IRP RP1 RP0 TO PD Z DC C 0001 1xxx 000q quuu 84h (4) FSR xxxx xxxx uuuu uuuu 85h TRISA --11 1111 --11 1111 86h TRISB 1111 1111 1111 1111 87h TRISC 1111 1111 1111 1111 88h (5) TRISD 1111 1111 1111 1111 89h (5) TRISE IBF OBF IBOV PSPMODE 0000-111 0000-111 8Ah (1,4) PCLATH ---0 0000 ---0 0000 8Bh (4) INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u 8Ch PIE1 PSPIE (3) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000 8Dh PIE2 (6) EEIE BCLIE CCP2IE -r-0 0--0 -r-0 0--0 8Eh PCON POR BOR ---- --qq ---- --uu 8Fh 90h 91h SSPCON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 0000 0000 0000 0000 92h PR2 1111 1111 1111 1111 93h SSPADD 0000 0000 0000 0000 94h SSPSTAT SMP CKE D/A P S R/W UA BF 0000 0000 0000 0000 95h 96h 97h 98h TXSTA CSRC TX9 TXEN SYNC BRGH TRMT TX9D 0000-010 0000-010 99h SPBRG 0000 0000 0000 0000 9Ah 9Bh 9Ch 9Dh 9Eh ADRESL xxxx xxxx uuuu uuuu 9Fh ADCON1 ADFM PCFG3 PCFG2 PCFG1 PCFG0 --0-0000 --0-0000 x u q 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 17

Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bank 2 Value on: POR, BOR Value on all other resets (2) 100h (4) INDF 0000 0000 0000 0000 101h TMR0 xxxx xxxx uuuu uuuu 102h (4) PCL 0000 0000 0000 0000 103h (4) STATUS IRP RP1 RP0 TO PD Z DC C 0001 1xxx 000q quuu 104h (4) FSR xxxx xxxx uuuu uuuu 105h 106h PORTB xxxx xxxx uuuu uuuu 107h 108h 109h 10Ah (1,4) PCLATH ---0 0000 ---0 0000 10Bh (4) INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u 10Ch EEDATA xxxx xxxx uuuu uuuu 10Dh EEADR xxxx xxxx uuuu uuuu 10Eh EEDATH xxxx xxxx uuuu uuuu 10Fh EEADRH xxxx xxxx uuuu uuuu Bank 3 180h (4) INDF 0000 0000 0000 0000 181h OPTION_RE G RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111 182h (4) PCL 0000 0000 0000 0000 183h (4) STATUS IRP RP1 RP0 TO PD Z DC C 0001 1xxx 000q quuu 184h (4) FSR xxxx xxxx uuuu uuuu 185h 186h TRISB 1111 1111 1111 1111 187h 188h 189h 18Ah (1,4) PCLATH ---0 0000 ---0 0000 18Bh (4) INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u 18Ch EECON1 EEPGD WRERR WREN WR RD x--- x000 x--- u000 18Dh EECON2 ---- ---- ---- ---- 18Eh 0000 0000 0000 0000 18Fh 0000 0000 0000 0000 x u q DS30292A-J-page 18 Preliminary 2000 Microchip Technology Inc.

CLRF STATUS 000u u1uu u BCF BSF SWAPF MOVWF SUBLW SUBWF 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 R = bit7 bit0 W = U = - n = bit 7: IRP: 1 = Bank 2, 3 (100h - 1FFh) 0 = Bank 0, 1 (00h - FFh) bit 6-5: RP1:RP0: 11 = Bank 3 (180h - 1FFh) 10 = Bank 2 (100h - 17Fh) 01 = Bank 1 (80h - FFh) 00 = Bank 0 (00h - 7Fh) bit 4: TO: 1 = CLRWDT SLEEP 0 = bit 3: PD: 1 = CLRWDT 0 = SLEEP bit 2: Z: 1 = 0 = bit 1: DC: ADDWF ADDLW SUBLW SUBWF 1 = 0 = bit 0: C: ADDWF ADDLW SUBLW SUBWF 1 = 0 = : RRF, RLF 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 19

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 R= bit7 bit0 W= U= - n= bit 7: RBPU: 1 = 0 = bit 6: INTEDG: 1 = 0 = bit 5: T0CS: 1 = 0 = bit 4: T0SE: 1 = 0 = bit 3: PSA: 1 = 0 = bit 2-0: PS2:PS0: 000 001 010 011 100 101 110 111 1 : 2 1 : 4 1 : 8 1 : 16 1 : 32 1 : 64 1 : 128 1 : 256 1 : 1 1 : 2 1 : 4 1 : 8 1 : 16 1 : 32 1 : 64 1 : 128 DS30292A-J-page 20 Preliminary 2000 Microchip Technology Inc.

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 R= bit7 bit0 W= U= - n= bit 7: GIE: 1 = 0 = bit 6: PEIE: 1 = 0 = bit 5: T0IE: 1 = 0 = bit 4: INTE: 1 = 0 = bit 3: RBIE: 1 = 0 = bit 2: T0IF: 1 = 0 = bit 1: INTF: 1 = 0 = bit 0: RBIF: 1 = 0 = 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 21

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PSPIE (1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE R= bit7 bit0 W= U= - n= bit 7: PSPIE (1) : 1 = 0 = bit 6: ADIE: 1 = 0 = bit 5: RCIE: 1 = 0 = bit 4: TXIE: 1 = 0 = bit 3: SSPIE: 1 = 0 = bit 2: CCP1IE: 1 = 0 = bit 1: TMR2IE: 1 = 0 = bit 0: TMR1IE: 1 = 0 = DS30292A-J-page 22 Preliminary 2000 Microchip Technology Inc.

PIC16F87X R/W-0 R/W-0 R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 PSPIF (1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF R= bit7 bit0 W= - n= bit 7: PSPIF (1) : 1 = 0 = bit 6: ADIF: 1 = 0 = bit 5: RCIF: 1 = 0 = bit 4: TXIF: 1 = 0 = bit 7: SSPIF: 1 = SPI I 2 C I 2 C. 0 = bit 2: CCP1IF: 1 = 0 = 1 = 0 = bit 1: TMR2IF: 1 = 0 = bit 0: TMR1IF: 1 = 0 = 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 23

U-0 R/W-0 U-0 R/W-0 R/W-0 U-0 U-0 R/W-0 (1) EEIE BCLIE CCP2IE R= bit7 bit0 W= U= - n= bit 7: : bit 6: : bit 5: : bit 4: EEIE: 1 = 0 = bit 3: BCLIE: 1 = 0 = bit 2-1: : bit 0: CCP2IE: 1 = 0 = DS30292A-J-page 24 Preliminary 2000 Microchip Technology Inc.

. U-0 R/W-0 U-0 R/W-0 R/W-0 U-0 U-0 R/W-0 (1) EEIF BCLIF CCP2IF R= bit7 bit0 W= U= - n= bit 7: : bit 6: : bit 5: : bit 4: EEIF: 1 = 0 = bit 3: BCLIF: 1 = 0 = bit 2-1: : bit 0: CCP2IF: 1 = 0 = 1 = 0 = 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 25

U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-1 POR BOR R= bit7 bit0 W= U= - n= bit 7-2: : bit 1: POR: 1 = 0 = bit 0: BOR: 1 = 0 = DS30292A-J-page 26 Preliminary 2000 Microchip Technology Inc.

CALL RETURN RETLW RETFIE CALL GOTO CALL GOTO CALL GOTO CALL 2.5 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 27

movlw 0x20 ;initialize pointer movwf FSR ; to RAM NEXT clrf INDF ;clear INDF register incf FSR ;inc pointer btfss FSR,4 ;all done? goto NEXT ;NO, clear next CONTINUE : ;YES, continue RP1: RP0 6 from opcode 0 IRP 7 FSR 0 bank select location select bank select location select 00 01 10 11 00h 80h 100h 180h (1) 7Fh FFh 17Fh 1FFh Bank 0 Bank 1 Bank 2 Bank 3 DS30292A-J-page 28 Preliminary 2000 Microchip Technology Inc.

BCF STATUS, RP0 ; CLRF PORTA ; ; ; BSF STATUS, RP0 ; MOVLW 0xCF ; ; ; MOVWF TRISA ; <3:0> ; <5:4> ; <7:6> ; WR WR TRIS RD PORT D D CK CK TRIS To A/D Converter WR PORT WR TRIS RD PORT Q Q Q Q RD TRIS Q D EN VDD P N VSS I/O pin (1) TTL D CK Data Latch D CK Q Q Q Q TRIS Latch RD TRIS Q N Vss D EN EN I/O pin(1) TMR0 clock input 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 29

Name Bit# Buffer RA0/AN0 bit0 TTL RA1/AN1 bit1 TTL RA2/AN2 bit2 TTL RA3/AN3/VREF bit3 TTL RA4/T0CKI bit4 ST RA5/SS/AN4 bit5 TTL Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Value on: POR, BOR Value on all other resets 05h PORTA RA5 RA4 RA3 RA2 RA1 RA0 --0x 0000 --0u 0000 85h TRISA PORTA Data Direction Register --11 1111 --11 1111 9Fh ADCON1 ADFM PCFG3 PCFG2 PCFG1 PCFG0 --0-0000 --0-0000 x u - DS30292A-J-page 30 Preliminary 2000 Microchip Technology Inc.

BCF STATUS, RP0 ; CLRF PORTB ; ; ; BSF STATUS, RP0 ; MOVLW 0xCF ; ; ; MOVWF TRISB ; <3:0> ; <5:4> <7:6> ; RBPU(2) WR Port WR TRIS Data Latch D Q CK TRIS Latch D Q CK TTL VDD P I/O pin(1) RBPU(2) WR Port WR TRIS Set RBIF Data Latch D Q CK TRIS Latch D Q CK RD TRIS RD Port Latch Q D EN VDD P TTL I/O pin(1) ST Q1 RD TRIS RD Port Q D EN RB7:RB4 RB7:RB6 Q D EN RD Port Q3 RB0/INT RD Port 1:. 2: 1:. 2: 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 31

Name Bit# Buffer RB0/INT bit0 TTL/ST (1) RB1 bit1 TTL RB2 bit2 TTL RB3/PGM bit3 TTL RB4 bit4 TTL RB5 bit5 TTL RB6/PGC bit6 TTL/ST (2) RB7/PGD bit7 TTL/ST (2) Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 06h, 106h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx uuuu uuuu 86h, 186h TRISB PORTB Data Direction Register 1111 1111 1111 1111 81h, 181h OPTION_ REG RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111 x u DS30292A-J-page 32 Preliminary 2000 Microchip Technology Inc.

BCF STATUS, RP0 ; CLRF PORTC ; ; ; BSF STATUS, RP0 ; MOVLW 0xCF ; ; ; MOVWF TRISC ; <3:0> ; <5:4> ; <7:6> PORT/PERIPHERAL Select(2) Peripheral Data Out Data bus WR PORT WR TRIS Peripheral OE(3) RD PORT Peripheral input D CK Q Q Data Latch D Q CK Q TRIS Latch RD TRIS 0 1 Q D EN VDD P N VSS I/O pin(1) PORT/PERIPHERAL Select(2) Peripheral Data Out Data bus WR PORT WR TRIS D CK Q Q Data Latch D Q CK Q TRIS Latch 0 1 VDD P N VSS I/O pin(1) Peripheral OE(3) SSPl input RD PORT RD TRIS Q D EN 0 1 Schmitt Trigger with SMBus levels CKE SSPSTAT<6> 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 33

Name Bit# Buffer Type RC0/T1OSO/T1CKI bit0 ST RC1/T1OSI/CCP2 bit1 ST RC2/CCP1 bit2 ST RC3/SCK/SCL bit3 ST RC4/SDI/SDA bit4 ST RC5/SDO bit5 ST RC6/TX/CK bit6 ST RC7/RX/DT bit7 ST Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 07h PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx uuuu uuuu 87h TRISC PORTC Data Direction Register 1111 1111 1111 1111 x u DS30292A-J-page 34 Preliminary 2000 Microchip Technology Inc.

WR PORT WR TRIS D CK Q Data Latch D CK Q TRIS Latch I/O pin (1) RD TRIS Q D RD PORT EN EN : Name Bit# Buffer Type RD0/PSP0 bit0 ST/TTL (1) RD1/PSP1 bit1 ST/TTL (1) RD2/PSP2 bit2 ST/TTL (1) RD3/PSP3 bit3 ST/TTL (1) RD4/PSP4 bit4 ST/TTL (1) RD5/PSP5 bit5 ST/TTL (1) RD6/PSP6 bit6 ST/TTL (1) RD7/PSP7 bit7 ST/TTL (1) Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 08h PORTD RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 xxxx xxxx uuuu uuuu 88h TRISD PORTD Data Direction Register 1111 1111 1111 1111 89h TRISE IBF OBF IBOV PSPMODE PORTE Data Direction Bits 0000-111 0000-111 x u - 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 35

WR PORT WR TRIS RD PORT D CK Q Data Latch D CK Q TRIS Latch RD TRIS Q D EN EN I/O pin (1) : R-0 R-0 R/W-0 R/W-0 U-0 R/W-1 R/W-1 R/W-1 IBF OBF IBOV PSPMODE bit2 bit1 bit0 R= t bit7 bit0 W= U= - n= bit 7 : bit 6: bit 5: bit 4: bit 3: bit 2: bit 1: bit 0: IBF: 1 = 0 = OBF: 1 = 0 = IBOV: 1 = 0 = PSPMODE: 1 = 0 = : Bit2: 1 = 0 = Bit1: 1 = 0 = Bit0: 1 = 0 = DS30292A-J-page 36 Preliminary 2000 Microchip Technology Inc.

Name Bit# Buffer Type RE0/RD/AN5 bit0 ST/TTL (1) : RD 1 = 0 = RE1/WR/AN6 bit1 ST/TTL (1) : WR 1 = 0 = RE2/CS/AN7 bit2 ST/TTL (1) : CS 1 = 0 = Addr Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 09h PORTE RE2 RE1 RE0 ---- -xxx ---- -uuu 89h TRISE IBF OBF IBOV PSPMODE PORTE Data Direction Bits 0000-111 0000-111 9Fh ADCON1 ADFM PCFG3 PCFG2 PCFG1 PCFG0 --0-0000 --0-0000 x u - 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 37

w WR PORT RD PORT D Q CK One bit of PORTD Set interrupt flag PSPIF (PIR1<7>) Q D EN EN TTL Read TTL Chip Select TTL Write TTL RDx pin RD CS WR : Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 CS WR RD PORTD<7:0> IBF OBF PSPIF DS30292A-J-page 38 Preliminary 2000 Microchip Technology Inc.

Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 CS WR RD PORTD<7:0> IBF OBF PSPIF Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 08h PORTD : xxxx xxxx uuuu uuuu 09h PORTE RE2 RE1 RE0 ---- -xxx ---- -uuu 89h TRISE IBF OBF IBOV PSPMODE PORTE Data Direction Bits 0000-111 0000-111 0Ch PIR1 PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000 8Ch PIE1 PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000 9Fh ADCON1 ADFM PCFG3 PCFG2 PCFG1 PCFG0 --0-0000 --0-0000 x u - 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 39

NOTES: DS30292A-J-page 40 Preliminary 2000 Microchip Technology Inc.

EECON1 EECON2 EEDATA EEDATH EEADR EEADRH 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 41

R/W-x U-0 U-0 U-0 R/W-x R/W-0 R/S-0 R/S-0 EEPGD WRERR WREN WR RD R= bit7 bit0 W= S= U= - n= bit 7: EEPGD: 1 = 0 = bit 6:4: : bit 3: bit 2: bit 1: bit 0: WRERR: 1 = 0 = WREN: 1 = 0 = WR: 1 = 0 = RD: 1 = 0 = DS30292A-J-page 42 Preliminary 2000 Microchip Technology Inc.

BSF STATUS, RP1 ; BCF STATUS, RP0 ; Bank 2 MOVLW DATA_EE_ADDR ; MOVWF EEADR ; Data Memory Address to read BSF STATUS, RP0 ; Bank 3 BCF EECON1, EEPGD ; Point to DATA memory BSF EECON1, RD ; EEPROM Read BCF STATUS, RP0 ; Bank 2 MOVF EEDATA, W ; W = EEDATA BSF STATUS, RP1 ; BCF STATUS, RP0 ; Bank 2 MOVLW DATA_EE_ADDR ; MOVWF EEADR ; Data Memory Address to write MOVLW DATA_EE_DATA ; MOVWF EEDATA ; Data Memory Value to write BSF STATUS, RP0 ; Bank 3 BCF EECON1, EEPGD ; Point to DATA memory BSF EECON1, WREN ; Enable writes BCF INTCON, GIE ; Disable Interrupts MOVLW 55h ; Required MOVWF EECON2 ; Write 55h Sequence MOVLW AAh ; MOVWF EECON2 ; Write AAh BSF EECON1, WR ; Set WR bit to begin write BSF INTCON, GIE ; Enable Interrupts SLEEP ; Wait for interrupt to signal write complete BCF EECON1, WREN ; Disable writes 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 43

BSF EECON1,RD BSF EECON1,RD BSF STATUS, RP1 ; BCF STATUS, RP0 ; Bank 2 MOVLW ADDRH ; MOVWF EEADRH ; MSByte of Program Address to read MOVLW ADDRL ; MOVWF EEADR ; LSByte of Program Address to read BSF STATUS, RP0 ; Bank 3 BSF EECON1, EEPGD ; Point to PROGRAM memory BSF EECON1, RD ; EEPROM Read NOP NOP ; Any instructions here are ignored as program ; memory is read in third cycle after BSF EECON1,RD BCF STATUS, RP0 ; Bank 2 MOVF EEDATA, W ; W = LSByte of Program EEDATA MOVF EEDATH, W ; W = MSByte of Program EEDATA DS30292A-J-page 44 Preliminary 2000 Microchip Technology Inc.

BSF EECON1,WR BSF EECON1,WR BSF STATUS, RP1 ; BCF STATUS, RP0 ; Bank 2 MOVLW ADDRH ; MOVWF EEADRH ; MSByte of Program Address to read MOVLW ADDRL ; MOVWF EEADR ; LSByte of Program Address to read MOVLW DATAH ; MOVWF EEDATH ; MS Program Memory Value to write MOVLW DATAL ; MOVWF EEDATA ; LS Program Memory Value to write BSF STATUS, RP0 ; Bank 3 BSF EECON1, EEPGD ; Point to PROGRAM memory BSF EECON1, WREN ; Enable writes BCF INTCON, GIE ; Disable Interrupts MOVLW 55h ; Required MOVWF EECON2 ; Write 55h Sequence MOVLW AAh ; MOVWF EECON2 ; Write AAh BSF EECON1, WR ; Set WR bit to begin write ; ; NOP ; Instructions here are ignored by the microcontroller ; NOP ; Microcontroller will halt operation and wait for ; a write complete. After the write ; the microcontroller continues with 3rd instruction BSF INTCON, GIE ; Enable Interrupts BCF EECON1, WREN ; Disable writes 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 45

CP1 CP0 WRT ICSP ICSP 0 0 x Yes No No No 0 1 0 Yes No Yes No 0 1 0 Yes No No No 0 1 1 Yes Yes Yes No 0 1 1 Yes No No No 1 0 0 Yes No Yes No 1 0 0 Yes No No No 1 0 1 Yes Yes Yes No 1 0 1 Yes No No No 1 1 0 Yes No Yes Yes 1 1 1 Yes Yes Yes Yes DS30292A-J-page 46 Preliminary 2000 Microchip Technology Inc.

- CLRF TMR0 MOVWF TMR0 BSF TMR0 x CLRWDT RA4/T0CKI pin T0SE Fosc/4 0 1 T0CS 3 PS2, PS1, PS0 PSout 1 0 PSA PSout (2 ) Data bus 8 TMR0 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 47

CLKOUT (=Fosc/4) RA4/T0CKI pin 0 M U X 1 1 0 M U X SYNC 2 Cycles 8 TMR0 reg T0SE T0CS PSA Set flag bit T0IF on Overflow 0 1 M U X 8 8 PSA 8 - to - 1MUX PS2:PS0 WDT Enable bit 0 1 M U X PSA WDT Time-out T0CS, T0SE, PSA, PS2:PS0 (OPTION_REG<5:0>) Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 01h,101h TMR0 Timer0 module s register xxxx xxxx uuuu uuuu 0Bh,8Bh, 10Bh,18Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u 81h,181h OPTION_REG RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111 85h TRISA PORTA --11 1111 --11 1111 x u - DS30292A-J-page 48 Preliminary 2000 Microchip Technology Inc.

- 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 R= bit7 bit0 W= U= - n= bit 7-6: : bit 5-4: T1CKPS1:T1CKPS0: 11 = 1:8 10 = 1:4 01 = 1:2 00 = 1:1 bit 3: T1OSCEN: 1 = 0 = bit 2: T1SYNC: TMR1CS = 1 1 = 0 = bit 1: bit 0: TMR1CS = 0 TMR1CS: 1 = ( 0 = TMR1ON: 1 = 0 = 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 49

T1CKI (Default high) T1CKI (Default low) Set flag bit TMR1IF on Overflow TMR1 0 Synchronized clock input TMR1H TMR1L 1 RC0/T1OSO/T1CKI RC1/T1OSI T1OSC T1OSCEN Enable Oscillator(1) Fosc/4 Internal Clock TMR1ON on/off 1 0 T1SYNC Prescaler 1, 2, 4, 8 2 T1CKPS1:T1CKPS0 Synchronize det SLEEP input TMR1CS DS30292A-J-page 50 Preliminary 2000 Microchip Technology Inc.

Osc Type Freq C1 C2 LP 32 khz 33 pf 33 pf 100 khz 15 pf 15 pf 200 khz 15 pf 15 pf Crystals Tested: 32.768 khz Epson C-001R32.768K-A ± 20 PPM 100 khz Epson C-2 100.00 KC-P ± 20 PPM 200 khz STD XTL 200.000 khz ± 20 PPM Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 0Bh,8Bh, 10Bh,18Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u 0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000 8Ch PIE1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000 0Eh TMR1L xxxx xxxx uuuu uuuu 0Fh TMR1H xxxx xxxx uuuu uuuu 10h T1CON T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON --00 0000 --uu uuuu x u - 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 51

NOTES: DS30292A-J-page 52 Preliminary 2000 Microchip Technology Inc.

7.0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 bit7 TOUTPS 3 TOUTPS 2 TOUTPS 1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 bit0 R= W= U= 0 - n= bit 7: bit 6-3: TOUTPS3:TOUTPS0: 0000 = 1:1 0001 = 1:2 1111 = 1:16 bit 2: TMR2ON: 1 = 0 = bit 1-0: T2CKPS1:T2CKPS0: 00 = 01 = 1x = 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 53

Sets flag bit TMR2IF 1:1 to 1:16 4 TMR2 (1) Reset EQ TMR2 reg Comparator PR2 reg 1:1, 1:4, 1:16 2 Fosc/4 Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 0Bh,8Bh, 10Bh, 18Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u 0Ch PIR1 PSPIF (1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000 8Ch PIE1 PSPIE (1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000 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 x u - DS30292A-J-page 54 Preliminary 2000 Microchip Technology Inc.

PIC16F87X U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CCPxX CCPxY CCPxM3 CCPxM2 CCPxM1 CCPxM0 R = bit7 bit0 W = U = - n = bit 7-6: : bit 5-4: CCPxX:CCPxY: : : PWM : bit 3-0: CCPxM3:CCPxM0: 0000 = 0100 = 0101 = 0110 = 0111 = 1000 = 1001 = 1010 = 1011 = 11xx = 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 55

. ;Turn CCP module off CLRF CCP1CON MOVLW NEW_CAPT_PS ;Load the W reg with ; the new prescaler ; mode value and CCP ON MOVWF CCP1CON ; value ;Load CCP1CON with this RC2/CCP1 Pin CCP1IF (PIR1<2>) ³ 1, 4, 16 and edge detect Q s CCP1CON<3:0> CCPR1H TMR1H CCPR1L TMR1L DS30292A-J-page 56 Preliminary 2000 Microchip Technology Inc.

Q A/D CCP2 RC2/CCP1 Pin TRISC<2> S R Output Logic CCP1CON<3:0> (PIR1<2>) match CCPR1H CCPR1L Comparator TMR1H TMR1L Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 0Bh,8Bh, 10Bh,18Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u 0Ch PIR1 PSPIF (1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000 8Ch PIE1 PSPIE (1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000 87h TRISC PORTC Data Direction Register 1111 1111 1111 1111 0Eh TMR1L xxxx xxxx uuuu uuuu 0Fh TMR1H xxxx xxxx uuuu uuuu 10h T1CON T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON --00 0000 --uu uuuu 15h CCPR1L (LSB) xxxx xxxx uuuu uuuu 16h CCPR1H (MSB) xxxx xxxx uuuu uuuu 17h CCP1CON CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000 --00 0000 x u- 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 57

PWM = [(PR2) + 1] 4 TOSC (TMR2 ) [ ] Duty cycle registers CCP1CON<5:4> CCPR1L CCPR1H (Slave) Comparator TMR2 Comparator PR2 (Note 1) Clear Timer, CCP1 pin and latch D.C. R S Q TRISC<2> RC2/CCP1 1: Period Duty Cycle TMR2 = PR2 = Fosc log ( Fpwm ) log (2) bits TMR2 = PR2 TMR2 = Duty Cycle DS30292A-J-page 58 Preliminary 2000 Microchip Technology Inc.

1. 2. 3. 4. 5. PWM 1.22 khz 4.88 khz 19.53 khz 78.12 khz 156.3 khz 208.3 khz (1, 4, 16) 16 4 1 1 1 1 PR2 0xFF 0xFF 0xFF 0x3F 0x1F 0x17 10 10 10 8 7 5.5 Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR BOR 0Bh,8Bh, 10Bh,18Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u 0Ch PIR1 PSPIF (1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000 8Ch PIE1 PSPIE (1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000 87h TRISC 1111 1111 1111 1111 11h TMR2 0000 0000 0000 0000 92h PR2 1111 1111 1111 1111 12h T2CON TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0-000 0000-000 0000 15h CCPR1L (LSB) xxxx xxxx uuuu uuuu 16h CCPR1H (MSB) xxxx xxxx uuuu uuuu 17h CCP1CON CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000 --00 0000 x u - 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 59

NOTES: DS30292A-J-page 60 Preliminary 2000 Microchip Technology Inc.

+0 Peripheral Interface Inter-Integrated Circuit 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 61

R/W-0 R/W-0 R-0 R-0 R-0 R-0 R-0 R-0 SMP CKE D/A P S R/W UA BF R = bit7 bit0 W = U = - n = bit 7: bit 6: bit 5: bit 4: bit 3: bit 2: bit 1: bit 0: SMP: 1 = 0 = : 1= 0= CKE: SPI Mode: CKP = 0 1 = 0 = CKP = 1 1 = 0 = : 1 = 0 = D/A: 1 = 0 = P: 1 = 0 = S: 1 = 0 = R/W: I 2 C : 1 = 0 = : 1 = 0 = UA: 1 = 0 = BF: 1 = 0 = 1 = 0 = DS30292A-J-page 62 2000 Microchip Technology Inc.

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 R = bit7 bit0 W = - n = bit 7: WCOL: : 1 = 0 = : 1 = 0 = bit 6: SSPOV: 1 = 0 = 1 = 0 = bit 5: SSPEN: 1 = 0 = 1 = 0 = bit 4: CKP: 1 = 0 = 1 = 0 = bit 3-0: SSPM3:SSPM0: 0000 = FOSC/4 0001 = FOSC/16 0010 = FOSC/64 0011 = TMR2 /2 0100 = 0101 = 0110 = 0111 = 1000 = FOSC / (4 * (SSPADD+1) ) 1011 = 1110 = 1111 = 1001, 1010, 1100, 1101 = 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 63

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN R = bit7 bit0 W = U = - n = bit 7: GCEN: 1 = 0 = bit 6: bit 5: bit 4: bit 3: bit 2: bit 1: ACKSTAT: : 1 = 0 = ACKDT: : 1 = 0 = ACKEN: : 1 = 0 = RCEN: 1 = 0 = PEN: 1 = 0 = RSEN: 1 = 0 = bit 0: SEN: 1 = 0 = DS30292A-J-page 64 2000 Microchip Technology Inc.

SDI SDO bit0 SSPBUF reg SSPSR reg SS SCK SS 2 SSPM3:SSPM0 SMP:CKE 4 2 TMR2 2 4, 16, 64 TOSC 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 65

BSF STATUS, RP0 ;Specify Bank 1 LOOP BTFSS SSPSTAT, BF ;Has data been ;received ;(transmit ;complete)? GOTO LOOP ;No BCF STATUS, RP0 ;Specify Bank 0 MOVF SSPBUF, W ;W reg = contents ;of SSPBUF MOVW RXDATA ;Save in user RAM F MOVF TXDATA, W ;W reg = contents ; of TXDATA MOVW SSPBUF ;New data to xmit F SPI Master SSPM3:SSPM0 = 00xxb SPI Slave SSPM3:SSPM0 = 010xb SDO SDI (SSPBUF) (SSPBUF) (SSPSR) SDI SDO (SSPSR) MSb LSb MSb LSb SCK SCK 1 2 DS30292A-J-page 66 2000 Microchip Technology Inc.

FOSC/4 ( TCY) FOSC/16 ( 4 TCY) FOSC/64 ( 16 TCY) 2 /2 SSPBUF SCK (CKP = 0 CKE = 0) SCK (CKP = 1 CKE = 0) SCK (CKP = 0 CKE = 1) 4 SCK (CKP = 1 CKE = 1) SDO bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 (CKE = 0) SDO bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 (CKE = 1) SDI (SMP = 0) bit7 bit0 (SMP = 0) SDI (SMP = 1) bit7 bit0 (SMP = 1) SSPIF SSPSR to SSPBUF Next Q4 cycle after Q2 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 67

0100 SS SCK (CKP = 0 CKE = 0) SCK (CKP = 1 CKE = 0) SSPBUF SDO bit7 bit6 bit7 bit0 SDI (SMP = 0) (SMP = 0) bit7 bit7 bit0 SSPIF SSPSR to SSPBUF Next Q4 cycle after Q2 DS30292A-J-page 68 2000 Microchip Technology Inc.

SS optional SCK (CKP = 0 CKE = 0) SCK (CKP = 1 CKE = 0) SSPBUF SDO bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 SDI (SMP = 0) (SMP = 0) SSPIF SSPSR to SSPBUF bit7 bit0 Next Q4 cycle after Q2 SS not optional SCK (CKP = 0 CKE = 1) SCK (CKP = 1 CKE = 1) SSPBUF SDO bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 SDI (SMP = 0) (SMP = 0) bit7 bit0 SSPIF SSPSR to SSPBUF Next Q4 cycle after Q2 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 69

Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR, BOR MCLR, WDT 0Bh, 8Bh, 10Bh,18Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u 0Ch PIR1 PSPIF (1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000 8Ch PIE1 PSPIE (1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000 13h SSPBUF / xxxx xxxx uuuu uuuu 14h SSPCON WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 0000 0000 94h SSPSTAT SMP CKE D/A P S R/W UA BF 0000 0000 0000 0000 x u - DS30292A-J-page 70 2000 Microchip Technology Inc.

SCL SDA MSb SSPBUF reg SSPSR reg Match SSPADD reg LSb Addr Match S, P (SSPSTAT reg) SSPADD<6:0> 7 Baud Rate Generator SCL SDA MSb SSPBUF reg SSPSR reg Match SSPADD reg LSb / Addr Match Set/Clear S bit and Clear/Set P bit (SSPSTAT reg) and Set SSPIF 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 71

a) b) a) b) c) d) - 1111 0 A9 A8 0 1. 2. 3. 4. 5. 6. 7. 8. 9. DS30292A-J-page 72 2000 Microchip Technology Inc.

SSPIF BF SSPOV SSPSR SSPBUF ACK 0 0 Yes Yes Yes 1 0 No No Yes 1 1 No No Yes 0 1 Yes No Yes SDA A7 A6 A5 A4 A3 A2 A1 R/W=0 ACK ACK D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 Not ACK D0 SCL S 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 P SSPIF BF (SSPSTAT<0>) SSPOV (SSPCON<6>) SSPBUF ACK 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 73

SDA R/W = 1 ACK A7 A6 A5 A4 A3 A2 A1 R/W = 0 Not ACK D7 D6 D5 D4 D3 D2 D1 D0 SCL SSPIF S 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 Data in sampled P BF (SSPSTAT<0>) SSPBUF SSP CKP (SSPCON<4>) SSPBUF (SSPBUF DS30292A-J-page 74 2000 Microchip Technology Inc.

Clock is held low until update of SSPADD has tacken place Receive First Byte of Address R/W = 0 Receive Second Byte of Address Receive First Byte of Address R/W=1 SDA 1 1 1 1 0 A9 A8 ACK A7 A6 A5 A4 A3 A2 A1 A0 ACK 1 1 1 1 0 A9 A8 SCL S 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 Sr SSPIF (PIR1<3>) Cleared in software Cleared in software BF (SSPSTAT<0>) SSPBUF is written with contents of SSPSR Dummy read of SSPBUF to clear BF flag Dummy read of SSPBUF to clear BF flag UA (SSPSTAT<1>) UA is set indicating that the SSPADD needs to be updated Cleared by hardware when SSPADD is updated. Cleared by hardware when SSPADD is updated. UA is set indicating that SSPADD needs to be updated ACK Master sends NACK Transmit is complete Transmitting Data Byte ACK D7 D6 D5 D4 D3 D2 D1 D0 1 2 3 4 5 6 7 8 9 P CKP has to be set for clock to be released Cleared in software Bus Master terminates transfer Write of SSPBUF initiates transmit 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 75

Clock is held low until update of SSPADD has tacken place Receive First Byte of Address Receive Second Byte of Address R/W = 0 Receive Data Byte R/W = 1 SDA 1 1 1 1 0 A9 A8 ACK ACK A7 A6 A5 A4 A3 A2 A1 A0 D7 D6 D5 D4 D3 D2 D1 D0 ACK SCL S 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 SSPIF (PIR1<3>) Cleared in software Cleared in software BF (SSPSTAT<0>) SSPBUF is written with contents of SSPSR Dummy read of SSPBUF to clear BF flag Dummy read of SSPBUF to clear BF flag UA (SSPSTAT<1>) UA is set indicating that the SSPADD needs to be updated Cleared by hardware when SSPADD is updated with low byte of address. Cleared by hardware when SSPADD is updated with high byte of address. UA is set indicating that SSPADD needs to be updated Bus Master terminates transfer P Read of SSPBUF clears BF flag DS30292A-J-page 76 2000 Microchip Technology Inc.

Address is compared to General Call Address after ACK, set interrupt flag SDA R/W = 0 ACK D7 D6 D5 D4 D3 D2 D1 D0 ACK SCL SSPIF S 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 BF (SSPSTAT<0>) SSPOV (SSPCON<6>) SSPBUF '0' GCEN (SSPCON2<7>) '1' 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 77

Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR, BOR MCLR, WDT 0Bh, 8Bh, 10Bh,18Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u 0Ch PIR1 PSPIF (1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000 8Ch PIE1 PSPIE (1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000 0Dh PIR2 (2) EEIF BCLIF CCP2IF -r-0 0--0 -r-0 0--0 8Dh PIE2 (2) EEIE BCLIE CCP2IE -r-0 0--0 -r-0 0--0 13h SSPBUF xxxx xxxx uuuu uuuu 14h SSPCON WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 0000 0000 91h SSPCON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 0000 0000 0000 0000 94h SSPSTAT SMP CKE D/A P S R/W UA BF 0000 0000 0000 0000 x u - DS30292A-J-page 78 2000 Microchip Technology Inc.

SSPM3:SSPM0, SSPADD<6:0> SSPBUF SDA SCL SDA in Receive Enable MSb SSPSR LSb,, clock cntl clock arbitrate/wcol detect (hold off clock source) SCL in Bus Collision, Write collision detect Clock Arbitration State counter for end of XMIT/RCV S, P, WCOL (SSPSTAT) / SSPIF, BCLIF ACKSTAT, PEN (SSPCON2) 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 79

- - - - - - a) b) c) d) e) f) g) h) DS30292A-J-page 80 2000 Microchip Technology Inc.

i) j) k) l) SSPM3:SSPM0 SSPADD<6:0> SSPM3:SSPM0 SCL CLKOUT BRG Down Counter Fosc/4 SDA DX DX-1 SCL SCL de-asserted but slave holds SCL low (clock arbitration) SCL allowed to transition high BRG value BRG reload BRG ( Q2 Q4 ) 03h 02h 01h 00h (hold off) 03h 02h SCL, BRG 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 81

SEN SDA = 1, SCL = 1 (SSPSTAT<3>) SSPIF T BRG T BRG SSPBUF SDA 1st Bit T BRG 2nd Bit SCL S T BRG DS30292A-J-page 82 2000 Microchip Technology Inc.

SSPEN = 1, SSPCON<3:0> = 1000 Idle Mode SEN (SSPCON2<0> = 1) Bus collision detected, No Set BCLIF, SDA = 1? Release SCL, SCL = 1? Clear SEN Yes Load BRG with SSPADD<6:0> No Yes SCL= 0? No SDA = 0? No BRG Rollover? Yes Yes Reset BRG Force SDA = 0, Load BRG with SSPADD<6:0>, Set S bit. No SCL = 0? No BRG rollover? Yes Yes Reset BRG Force SCL = 0, Start Condition Done, Clear SEN and set SSPIF 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 83

Set S (SSPSTAT<3>) SSPCON2 SDA = 1,, SDA = 1, SCL = 1 SCL ) SSPIF T BRG T BRG T BRG SDA End of Xmit 1st Bit SSPBUF T BRG SCL T BRG Sr = DS30292A-J-page 84 2000 Microchip Technology Inc.

Start B SSPEN = 1, SSPCON<3:0> = 1000 RSEN = 1 Force SCL = 0 SCL = 0? No Yes, BRG SSPADD<6:0> BRG rollover? No Yes SCL SCL = 1? No ( ) Yes Bus Collision, Set BCLIF, Release SDA, Clear RSEN No SDA = 1? Yes BRG SSPADD<6:0> C A 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 85

B C A Yes No No No SCL = 1? SDA = 0? BRG rollover? Yes Yes BRG Force SDA = 0, BRG SSPADD<6:0> No SCL = '0'? No BRG rollover? Yes Yes Reset BRG Force SCL = 0, RSEN SSPIF DS30292A-J-page 86 2000 Microchip Technology Inc.

2000 Microchip Technology Inc. Preliminary DS30292A-J-page 87

SSPBUF Num_Clocks = 0, BF = 1 Force SCL = 0 Num_Clocks = 8? Yes Force BF i = 0 No BRG SSPADD<6:0> BRG SDA = Current Data bit BRG SSPADD<6:0> BRG BRG rollover? No BRG rollover? No Yes Yes Stop BRG, Force SCL = 1 Force SCL = 1, Stop BRG SCL = 1? No ( ) ( ) SCL = 1? No Yes Yes Read SDA and place into ACKSTAT bit (SSPCON2<6>) SDA = Data bit? Yes No Bus collision detected Set BCLIF, hold prescale off, Clear XMIT enable BRG SSPADD<6:0> BRG SSPADD<6:0> SCL Yes Rollover? No BRG rollover? No SCL = 0? No SDA = Data bit? No Yes Yes Num_Clocks = Num_Clocks + 1 Yes BRG Force SCL = 0, SSPIF DS30292A-J-page 88 2000 Microchip Technology Inc.

PIC16F87X SDA Write SSPCON2<0> SEN = 1 START condition begins SEN = 0 Transmit Address to Slave R/W = 0 From slave clear ACKSTAT bit SSPCON2<6> Transmitting Data or Second Half of 10-bit Address A7 A6 A5 A4 A3 A2 A1 ACK = 0 D7 D6 D5 D4 D3 D2 D1 D0 ACK ACKSTAT in SSPCON2 = 1 SSPBUF written with 7 bit address and R/W start transmit SCL SSPIF S 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 cleared in software SCL held low while CPU responds to SSPIF cleared in software service routine From SSP interrupt P Cleared in software BF (SSPSTAT<0>) SSPBUF written SSPBUF is written in software SEN After start condition SEN cleared by hardware. PEN R/W 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 89

DS30292A-J-page 90 2000 Microchip Technology Inc.

RCEN = 1 Num_Clocks = 0, SDA Force SCL=0, BRG SSPADD<6:0> BRG rollover? No Yes SCL ( ) SCL = 1? No Yes Sample SDA, SSPSR BRG SSPADD<6:0> BRG rollover? No SCL = 0? No Yes Yes Num_Clocks = Num_Clocks + 1 No Num_Clocks = 8? Yes Force SCL = 0, SSPIF BF SSPSR SSPBUF RCEN 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 91

SDA Write to SSPCON2<0> (SEN = 1) Begin Start Condition SEN = 0 Write to SSPBUF occurs here Start XMIT Transmit Address to Slave A7 A6 A5 A4 A3 A2 A1 ACK from Slave R/W = 1 Master configured as a receiver by programming SSPCON2<3>, (RCEN = 1) ACK D7 Receiving Data from Slave D6 D5 D4 D3 D2 RCEN cleared automatically D1 D0 Write to SSPCON2<4> to start acknowledge sequence SDA = ACKDT (SSPCON2<5>) = 0 ACK from Master SDA = ACKDT = 0 ACK RCEN = 1 start next receive D7 Receiving Data from Slave D6 D5 D4 D3 D2 Set ACKEN start acknowledge sequence SDA = ACKDT = 1 RCEN cleared automatically D1 D0 ACK PEN bit = 1 written here ACK is not sent SCL SSPIF S 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 Set SSPIF interrupt at end of receive Data shifted in on falling edge of CLK 5 Set SSPIF interrupt at end of acknowledge sequence 6 7 8 9 Set SSPIF at end of receive P SDA = 0, SCL = 1 while CPU responds to SSPIF Cleared in software Cleared in software Cleared in software Cleared in software Cleared in software BF (SSPSTAT<0>) Last bit is shifted into SSPSR and contents are unloaded into SSPBUF SSPOV SSPOV is set because SSPBUF is still full ACKEN Bus Master terminates transfer Set SSPIF interrupt at end of acknowledge sequence Set P bit (SSPSTAT<4>) and SSPIF DS30292A-J-page 92 2000 Microchip Technology Inc.

SSPCON2 ACKEN = 1, ACKDT = 0 ACKEN SDA D0 Tbrg ACK Tbrg SCL 8 9 SSPIF SSPIF SSPIF Note: Tbrg= 1 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 93

ACKEN Force SCL = 0 BRG rollover? Yes No SCL = 0? No Yes ACKDT (SSPCON2<5>) SDA BRG SSPADD<6:0> Yes Force SCL = 0, SCL = 0? BRG ACKEN, SSPIF No No ACKDT = 1? No BRG rollover? Yes Force SCL = 1 Yes Yes SDA = 1? No No ( ) SCL = 1? Yes Bus collision detected, BCLIF SCL ACKEN BRG SSPADD <6:0> DS30292A-J-page 94 2000 Microchip Technology Inc.

SSPCON2 PEN SCL = 1 for T BRG, followed by SDA = 1 for T BRG after SDA sampled high. P bit (SSPSTAT<4>) is set PEN (SSPCON2<2>) SCL T BRG SDA ACK T BRG T BRG P T BRG SCL brought high after T BRG SDA asserted low before rising edge of clock to setup stop condition. : T BRG = 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 95

SSPEN = 1, SSPCON<3:0> = 1000 PEN = 1 BRG Force SDA = 0 SCL BRG rollover? No SDA = 0? No Yes SDA, BRG Yes BRG BRG rollover? No BRG rollover? No Yes Yes De-assert SCL, SCL = 1 P bit Set? Yes No Bus Collision detected, BCLIF PEN ( ) SCL = 1? No SDA going from 0 to 1 while SCL = 1 Set SSPIF, Stop Condition done PEN cleared. Yes DS30292A-J-page 96 2000 Microchip Technology Inc.

BRG SCL SCL = 1 BRG SSPADD<6:0> BRG SCL, SCL SCL = 1 BRG SCL SCL (T osc 4) SCL SDA T BRG T BRG T BRG 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 97

SCL = 0 SDA SDA SDA SCL SDA SCL BCLIF DS30292A-J-page 98 2000 Microchip Technology Inc.

a) b) If: then: SDA SEN. BCLIF SDA = 0, SCL = 1 S SSPIF SDA SCL SEN BCLIF S SEN, SDA = 1 SCL=1 START SDA BCLIF SDA = 0, SCL = 1 S SSPIF SEN SSP SSPIF BCLIF SSPIF SSPIF BCLIF 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 99

SDA = 0, SCL = 1 SDA T BRG T BRG SCL SEN BCLIF S SSPIF SEN, SDA = 1 SCL = 1 BRG SCL = 0, BCLIF '0' '0' SDA = 0 SCL = 0 Bus, BCLIF '0' '0' SDA = 0, SCL = 1 Set S SSPIF SDA Less than T BRG SDA BRG SDA TBRG SCL SEN BCLIF '0' S SCL pulled low after BRG Timeout SEN, SDA = 1, SCL = 1 S SSPIF SDA = 0, SCL = 1 SSPIF DS30292A-J-page 100 2000 Microchip Technology Inc.

a) b) SDA SCL Sample SDA when SCL goes high. If SDA = 0, set BCLIF and release SDA and SCL RSEN BCLIF S SSPIF '0' '0' Cleared in software '0' '0' TBRG TBRG SDA SCL BCLIF RSEN SCL goes low before SDA, Set BCLIF. Release SDA and SCL Interrupt cleared in software S SSPIF '0' '0' '0' '0' 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 101

a) b) SDA TBRG TBRG TBRG SDA sampled low after TBRG, Set BCLIF SCL SDA asserted low PEN BCLIF P SSPIF '0' '0' '0' '0' TBRG TBRG TBRG SDA SCL Assert SDA SCL goes low before SDA goes high Set BCLIF PEN BCLIF P SSPIF '0' '0' DS30292A-J-page 102 2000 Microchip Technology Inc.

R p R s VOL max = 0.4V R p VDD = 5V+10% 3 ma VOL max = 0.4V R p min = (5.5-0.4)/0.003 = 1.7 kω R p VDD VDD R s R p VDD + 10% R p R p DEVICE R s R s SDA SCL : VDD C b =10-400 pf 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 103

NOTES: DS30292A-J-page 104 2000 Microchip Technology Inc.

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 R = bit7 bit0 W = U = - n = bit 7: CSRC: Don t care 1 = 0 = bit 6: TX9: 1 = 0 = bit 5: TXEN: 1 = 0 = bit 4: SYNC: 1 = 0 = bit 3: : bit 2: BRGH: 1 = 0 = bit 1: TRMT: 1 = 0 = bit 0: TX9D: 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 105

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 ADDEN FERR OERR RX9D R = bit7 bit0 W = U = - n = bit 7: SPEN: 1 = 0 = bit 6: RX9: 1 = 0 = bit 5: SREN: Don t care 1 = 0 = bit 4: CREN: 1 = 0 = 1 = 0 = bit 3: ADDEN: 1 = 0 = bit 2: FERR: 1 = 0 = bit 1: OERR: 1 = 0 = bit 0: RX9D: DS30292A-J-page 106 Preliminary 2000 Microchip Technology Inc.

FOSC = 16 MHz = 9600 BRGH = 0 SYNC = 0 = Fosc / (64 (X + 1)) 9600 = 16000000 /(64 (X + 1)) X = 25.042 = 25 =16000000 / (64 (25 + 1)) = 9615 = ( - ) = (9615-9600) / 9600 = 0.16% FOSC/(16(X + 1)) SYNC 0 1 X = value in SPBRG (0 to 255) BRGH = 0 ( ) = FOSC/(64(X+1)) = FOSC/(4(X+1)) BRGH = 1 ( ) = FOSC/(16(X+1)) NA Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 98h TXSTA CSRC TX9 TXEN SYNC BRGH TRMT TX9D 0000-010 0000-010 18h RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x 99h SPBRG 0000 0000 0000 0000 x - 2000 Microchip Technology Inc. Preliminary DS30292A-J-page 107

(K) FOSC = 20 MHz K % SPBRG (decimal) 16 MHz K % SPBRG (decimal) 10 MHz K % SPBRG (decimal) 7.15909 MHz K % SPBRG (decimal) 0.3 NA - - NA - - NA - - NA - - 1.2 NA - - NA - - NA - - NA - - 2.4 NA - - NA - - NA - - NA - - 9.6 NA - - NA - - 9.766 +1.73 255 9.622 +0.23 185 19.2 19.53 +1.73 255 19.23 +0.16 207 19.23 +0.16 129 19.24 +0.23 92 76.8 76.92 +0.16 64 76.92 +0.16 51 75.76-1.36 32 77.82 +1.32 22 96 96.15 +0.16 51 95.24-0.79 41 96.15 +0.16 25 94.20-1.88 18 300 294.1-1.96 16 307.69 +2.56 12 312.5 +4.17 7 298.3-0.57 5 500 500 0 9 500 0 7 500 0 4 NA - - HIGH 5000-0 4000-0 2500-0 1789.8-0 LOW 19.53-255 15.625-255 9.766-255 6.991-255 (K) FOSC = 5.0688 MHz K % SPBRG (decimal) 4 MHz K % SPBRG (decimal) 3.579545 MHz K % SPBRG value (decimal) 1 MHz KBAUD % SPBRG (decimal) 32.768 khz K % SPBRG (decimal) 0.3 NA - - NA - - NA - - NA - - 0.303 +1.14 26 1.2 NA - - NA - - NA - - 1.202 +0.16 207 1.170-2.48 6 2.4 NA - - NA - - NA - - 2.404 +0.16 103 NA - - 9.6 9.6 0 131 9.615 +0.16 103 9.622 +0.23 92 9.615 +0.16 25 NA - - 19.2 19.2 0 65 19.231 +0.16 51 19.04-0.83 46 19.24 +0.16 12 NA - - 76.8 79.2 +3.13 15 76.923 +0.16 12 74.57-2.90 11 83.34 +8.51 2 NA - - 96 97.48 +1.54 12 1000 +4.17 9 99.43 +3.57 8 NA - - NA - - 300 316.8 +5.60 3 NA - - 298.3-0.57 2 NA - - NA - - 500 NA - - NA - - NA - - NA - - NA - - HIGH 1267-0 100-0 894.9-0 250-0 8.192-0 LOW 4.950-255 3.906-255 3.496-255 0.9766-255 0.032-255 (K) FOSC = 20 MHz K % 16 MHz SPBRG (decimal) K % 10 MHz SPBRG (decimal) K % SPBRG 7.15909 MHz (decimal) K % SPBRG (decimal) 0.3 NA - - NA - - NA - - NA - - 1.2 1.221 +1.73 255 1.202 +0.16 207 1.202 +0.16 129 1.203 +0.23 92 2.4 2.404 +0.16 129 2.404 +0.16 103 2.404 +0.16 64 2.380-0.83 46 9.6 9.469-1.36 32 9.615 +0.16 25 9.766 +1.73 15 9.322-2.90 11 19.2 19.53 +1.73 15 19.23 +0.16 12 19.53 +1.73 7 18.64-2.90 5 76.8 78.13 +1.73 3 83.33 +8.51 2 78.13 +1.73 1 NA - - 96 104.2 +8.51 2 NA - - NA - - NA - - 300 312.5 +4.17 0 NA - - NA - - NA - - 500 NA - - NA - - NA - - NA - - HIGH 312.5-0 250-0 156.3-0 111.9-0 LOW 1.221-255 0.977-255 0.6104-255 0.437-255 (K) FOSC = 5.0688 MHz K % SPBRG (decimal) 4 MHz K % SPBRG (decimal) 3.579545 MHz K % SPBRG (decimal) 1 MHz K % SPBRG (decimal) 32.768 khz K % SPBRG (decimal) 0.3 0.31 +3.13 255 0.3005-0.17 207 0.301 +0.23 185 0.300 +0.16 51 0.256-14.67 1 1.2 1.2 0 65 1.202 +1.67 51 1.190-0.83 46 1.202 +0.16 12 NA - - 2.4 2.4 0 32 2.404 +1.67 25 2.432 +1.32 22 2.232-6.99 6 NA - - 9.6 9.9 +3.13 7 NA - - 9.322-2.90 5 NA - - NA - - 19.2 19.8 +3.13 3 NA - - 18.64-2.90 2 NA - - NA - - 76.8 79.2 +3.13 0 NA - - NA - - NA - - NA - - 96 NA - - NA - - NA - - NA - - NA - - 300 NA - - NA - - NA - - NA - - NA - - 500 NA - - NA - - NA - - NA - - NA - - HIGH 79.2-0 62.500-0 55.93-0 15.63-0 0.512-0 LOW 0.3094-255 3.906-255 0.2185-255 0.0610-255 0.0020-255 DS30292A-J-page 108 Preliminary 2000 Microchip Technology Inc.