PARALLAX PIC16Cxx INSTRUCTION SET AND PRE-DEFINED SYMBOLS  -  PASMX v1.3 supports: PIC16C71, PIC16C84, PIC16C64, PIC16C74


-------------------------------------------------------------------------------------------------------------------------------
		Instruction				Words	Flags	W used		Description
-------------------------------------------------------------------------------------------------------------------------------


					========================
					byte-oriented operations
					========================

		mov	w,#literal			1	-	-		Move literal into w
		mov	w,fr				1	Z	-		Move fr into w
		mov	fr,w				1	-	-		Move w into fr
		mov	fr,#literal			2	-	W		Move literal into fr
		mov	fr1,fr2				2	Z	W		Move fr2 into fr1

		add	w,#literal			1	C,DC,Z	-		Add literal into w
		add	w,fr				1	C,DC,Z	-		Add fr into w
		add	fr,w				1	C,DC,Z	-		Add w into fr
		add	fr,#literal			2	C,DC,Z	W		Add literal into fr
		add	fr1,fr2				2	C,DC,Z	W		Add fr2 into fr1

		mov	w,#literal-w			1	C,DC,Z	-		Move literal-w into w
		mov	w,fr-w				1	C,DC,Z	-		Move fr-w into w
		sub	fr,w				1	C,DC,Z	-		Subtract w from fr
		sub	fr,#literal			2	C,DC,Z	W		Subtract literal from fr
		sub	fr1,fr2				2	C,DC,Z	W		Subtract fr2 from fr1

		and	w,#literal			1	Z	-		AND literal into w
		and	w,fr				1	Z	-		AND fr into w
		and	fr,w				1	Z	-		AND w into fr
		and	fr,#literal			2	Z	W		AND literal into fr
		and	fr1,fr2				2	Z	W		AND fr2 into fr1

		or	w,#literal			1	Z	-		OR literal into w
		or	w,fr				1	Z	-		OR fr into w
		or	fr,w				1	Z	-		OR w into fr
		or	fr,#literal			2	Z	W		OR literal into fr
		or	fr1,fr2				2	Z	W		OR fr2 into fr1

		xor	w,#literal			1	Z	-		XOR literal into w
		xor	w,fr				1	Z	-		XOR fr into w
		xor	fr,w				1	Z	-		XOR w into fr
		xor	fr,#literal			2	Z	W		XOR literal into fr
		xor	fr1,fr2				2	Z	W		XOR fr2 into fr1

		clr	w				1	Z	-		Clear w
		clr	fr				1	Z	-		Clear fr

		mov	w,++fr				1	Z	-		Move fr+1 into w
		inc	fr				1	Z	-		Increment fr

		mov	w,--fr				1	Z	-		Move fr-1 into w
		dec	fr				1	Z	-		Decrement fr

		mov	w,>>fr				1	C	-		Move right-rotated fr into w
		rr	fr				1	C	-		Rotate right fr
	
		mov	w,<<fr				1	C	-		Move left-rotated fr into w
		rl	fr				1	C	-		Rotate left fr

		mov	w,<>fr				1	-	-		Move nibble-swapped fr into w
		swap	fr				1	-	-		Swap nibbles in fr

		not	w				1	Z	-		Perform 1's-complement on w
		mov	w,/fr				1	Z	-		Move 1's-complemented fr into w
		not	fr				1	Z	-		Perform 1's-complement on fr

		test	w				1	Z	-		Test w for zero
		test	fr				1	Z	-		Test fr for zero

					=======================
					bit-oriented operations
					=======================

		clrb	bit				1	-	-		Clear bit
		clc					1	-	-		Clear carry
		clz					1	-	-		Clear zero

		setb	bit				1	-	-		Set bit
		stc					1	-	-		Set carry
		stz					1	-	-		Set zero

		movb	bit1,bit2			4	-	-		Move bit2 into bit1
		movb	bit1,/bit2			4	-	-		Move not bit2 into bit1

					============================
					inc/dec-conditional branches
					============================

		movsz	w,++fr				1	-	-		Move fr+1 into w and skip if zero
		incsz	fr				1	-	-		Increment fr and skip if zero
		ijnz	fr,address			2	-	-		Increment fr and jump if not zero

		movsz	w,--fr				1	-	-		Move fr-1 into w and skip if zero
		decsz	fr				1	-	-		Decrement fr and skip if zero
		djnz	fr,address			2	-	-		Decrement fr and jump if not zero

					============================
					compare-conditional branches
					============================

		csa	fr,#literal			3	C,DC,Z	W		Compare and skip if above
		csa	fr1,fr2				3	C,DC,Z	W		Compare and skip if above
		csae	fr,#literal			3	C,DC,Z	W		Compare and skip if above or equal
		csae	fr1,fr2				3	C,DC,Z	W		Compare and skip if above or equal
		csb	fr,#literal			3	C,DC,Z	W		Compare and skip if below
		csb	fr1,fr2				3	C,DC,Z	W		Compare and skip if below
		csbe	fr,#literal			3	C,DC,Z	W		Compare and skip if below or equal
		csbe	fr1,fr2				3	C,DC,Z	W		Compare and skip if below or equal
		cse	fr,#literal			3	C,DC,Z	W		Compare and skip if equal
		cse	fr1,fr2				3	C,DC,Z	W		Compare and skip if equal
		csne	fr,#literal			3	C,DC,Z	W		Compare and skip if not equal
		csne	fr1,fr2				3	C,DC,Z	W		Compare and skip if not equal

		cja	fr,#literal,address		4	C,DC,Z	W		Compare and jump if above
		cja	fr1,fr2,address			4	C,DC,Z	W		Compare and jump if above
		cjae	fr,#literal,address		4	C,DC,Z	W		Compare and jump if above or equal
		cjae	fr1,fr2,address			4	C,DC,Z	W		Compare and jump if above or equal
		cjb	fr,#literal,address		4	C,DC,Z	W		Compare and jump if below
		cjb	fr1,fr2,address			4	C,DC,Z	W		Compare and jump if below
		cjbe	fr,#literal,address		4	C,DC,Z	W		Compare and jump if below or equal
		cjbe	fr1,fr2,address			4	C,DC,Z	W		Compare and jump if below or equal
		cje	fr,#literal,address		4	C,DC,Z	W		Compare and jump if equal
		cje	fr1,fr2,address			4	C,DC,Z	W		Compare and jump if equal
		cjne	fr,#literal,address		4	C,DC,Z	W		Compare and jump if not equal
		cjne	fr1,fr2,address			4	C,DC,Z	W		Compare and jump if not equal

					========================
					bit-conditional branches
					========================

		sb	bit				1	-	-		Skip if bit
		sc					1	-	-		Skip if carry
		sz					1	-	-		Skip if zero

		snb	bit				1	-	-		Skip if not bit
		snc					1	-	-		Skip if not carry
		snz					1	-	-		Skip if not zero

		jb	bit,address			2	-	-		Jump to address if bit
		jc	address				2	-	-		Jump to address if carry
		jz	address				2	-	-		Jump to address if zero

		jnb	bit_addr,address		2	-	-		Jump to address if not bit
		jnc	address				2	-	-		Jump to address if not carry
		jnz	address				2	-	-		Jump to address if not zero

					======================
					unconditional branches
					======================

		skip					1	-	-		Skip following instruction word

		jmp	address				1	-	-		Jump to address
		jmp	pc+w				1	C,DC,Z	-		Add w into pcl
		jmp	w				1	-	-		Move w into pcl

		call	address				1	-	-		Call to address
		ret					1	-	-		Return from call
		retw	literal,literal...		1	-	-		Return from call with literal in w

		reti					1	-	-		Return from interrupt


Note: Skips should be followed only by single-word instructions.

					==========================
					i/o and control operations
					==========================

		mov	!port_fr,w		*	1	-	-		Move w into port_fr's tris
		mov	!port_fr,#literal	*	2	-	W		Move literal into port_fr's tris
		mov	!port_fr,fr		*	2	Z	W		Move fr into port_fr's tris

		mov	!option,w		*	1	-	-		Move w into option
		mov	!option,#literal	*	2	-	W		Move literal into option
		mov	!option,fr		*	2	Z	W		Move fr into option

		clr	wdt				1	TO,PD	-		Clear wdt and prescaler
		sleep					1	TO,PD	-		Clear wdt and enter sleep mode

		nop					1	-	-		No operation


* Valid only for PIC16C71 and PIC16C84

					==========
					directives
					==========

		device	setting,setting...						Establish device parameters

		id	'text'								Set id to 4-character text string

label		=	value								Equate label to value

label		equ	value								Equate label to value

		org	address								Set origin to address

		ds	locs								Define space: origin=origin+locs

		eeorg	address				(PIC16C84 only)			Set data eeprom origin to address

		eedata	data,data...			(PIC16C84 only)			Preload data eeprom with data

		include	'filename'							Include file 'filename' in assembly

		end									End assembly (not needed)


-------------------------------------------------------------------------------------------------------------------------------
Pre-Defined Symbols
-------------------------------------------------------------------------------------------------------------------------------

******** Dynamic Equates (always reflect current values)

$		=	Current origin
%		=	Current EEPROM origin		(PIC16C84 only)


******** DEVICE directive equates - establish device and fuse settings

    Example:	DEVICE	PIC16C71,XT_OSC,WDT_ON,PWRT_OFF,PROTECT_ON

PIC16C71	=	0000h			Device (select one)
PIC16C84	=	0100h
PIC16C64	=	0200h
PIC16C74	=	0300h

LP_OSC		=	001Ch			Oscillator (select one)
XT_OSC		=	011Ch
HS_OSC		=	021Ch
RC_OSC		=	031Ch

WDT_OFF		=	001Bh			Watchdog timer (select one)
WDT_ON		=	041Bh

PWRT_OFF	=	0017h			Power-up timer (select one)
PWRT_ON		=	0817h

PROTECT_ON	=	000Fh			Code protection (select one)		Affects both bits on the
PROTECT_OFF	=	100Fh								...PIC16C64 and PIC16C74


******** PIC16C71 Equates - enabled by DEVICE PIC16C71

					page
INDIRECT	=	00h		0	Indirect addressing register

RTCC		=	01h		0	Real time clock/counter register

PCL		=	02h		0	Program counter low-byte register

STATUS		=	03h		0	Status register
C		=	STATUS.0	0	Carry bit
DC		=	STATUS.1	0	Digit carry bit
Z		=	STATUS.2	0	Zero bit
PD		=	STATUS.3	0	Power down bit
TO		=	STATUS.4	0	Time out bit
RP0		=	STATUS.5	0	Register page bit 0
RP1		=	STATUS.6	0	Register page bit 1
IRP		=	STATUS.7	0	Indirect register page bit

FSR		=	04h		0	File select register

PORTA		=	05h		0	RA i/o register
RA		=	05h		0	RA i/o register

PORTB		=	06h		0	RB i/o register
RB		=	06h		0	RB i/o register

ADCON0		=	08h		0	Analog to Digitial Converter control register 0
ADON		=	ADCON0.0	0	ADC power control bit
ADIF		=	ADCON0.1	0	ADC interrupt flag bit
GO_DONE		=	ADCON0.2	0	ADC go command / done flag bit
CHS0		=	ADCON0.3	0	ADC channel select bit 0
CHS1		=	ADCON0.4	0	ADC channel select bit 1
ADCS0		=	ADCON0.6	0	ADC clock select bit 0
ADCS1		=	ADCON0.7	0	ADC clock select bit 1

ADRES		=	09h		0	Analog to Digital Converter result register

PCLATH		=	0Ah		0	Program counter high-byte register

INTCON		=	0Bh		0	Interrupt control register
RBIF		=	INTCON.0	0	RB4-RB7 change interrupt flag bit
INTF		=	INTCON.1	0	RB0/INT interrupt flag bit
RTIF		=	INTCON.2	0	RTCC overflow interrupt flag bit
RBIE		=	INTCON.3	0	RB4-RB7 change interrupt enable bit
INTE		=	INTCON.4	0	RB0/INT interrupt enable bit
RTIE		=	INTCON.5	0	RTCC overflow interrupt enable bit
ADIE		=	INTCON.6	0	ADC interrupt enable bit
GIE		=	INTCON.7	0	Global interrupt enable bit

OPTION		=	01h		1	OPTION register
PS0		=	OPTION.0	1	Prescaler bit 0
PS1		=	OPTION.1	1	Prescaler bit 1
PS2		=	OPTION.2	1	Prescaler bit 2
PSA		=	OPTION.3	1	Prescaler assignment bit
RTE		=	OPTION.4	1	RTCC signal edge bit
RTS		=	OPTION.5	1	RTCC signal source bit
INTEDG		=	OPTION.6	1	RB0/INT edge select bit
RBPU		=	OPTION.7	1	RB weak pull-up enable bit

TRISA		=	05h		1	RA tristate control register

TRISB		=	06h		1	RB tristate control register

ADCON1		=	08h		1	Analog to Digitial Converter control register 1
PCFG0		=	ADCON1.0	1	RA port configuration bit 0
PCFG1		=	ADCON1.1	1	RA port configuration bit 1


******** PIC16C84 Equates - enabled by DEVICE PIC16C84

					page
IND0		=	00h		0	Indirect addressing register
INDIRECT	=	00h		0	Indirect addressing register

RTCC		=	01h		0	Real time clock/counter register

PCL		=	02h		0	Program counter low-byte register

STATUS		=	03h		0	Status register
C		=	STATUS.0	0	Carry bit
DC		=	STATUS.1	0	Digit carry bit
Z		=	STATUS.2	0	Zero bit
PD		=	STATUS.3	0	Power down bit
TO		=	STATUS.4	0	Time out bit
RP0		=	STATUS.5	0	Register page bit 0
RP1		=	STATUS.6	0	Register page bit 1
IRP		=	STATUS.7	0	Indirect register page bit

FSR		=	04h		0	File select register

PORTA		=	05h		0	RA i/o register
RA		=	05h		0	RA i/o register

PORTB		=	06h		0	RB i/o register
RB		=	06h		0	RB i/o register

EEDATA		=	08h		0	EEPROM data register

EEADR		=	09h		0	EEPROM address register

PCLATH		=	0Ah		0	Program counter high-byte register

INTCON		=	0Bh		0	Interrupt control register
RBIF		=	INTCON.0	0	RB4-RB7 change interrupt flag bit
INTF		=	INTCON.1	0	RB0/INT interrupt flag bit
RTIF		=	INTCON.2	0	RTCC overflow interrupt flag bit
RBIE		=	INTCON.3	0	RB4-RB7 change interrupt enable bit
INTE		=	INTCON.4	0	RB0/INT interrupt enable bit
RTIE		=	INTCON.5	0	RTCC overflow interrupt enable bit
EEIE		=	INTCON.6	0	EEPROM interrupt enable bit
GIE		=	INTCON.7	0	Global interrupt enable bit

OPTION		=	01h		1	OPTION register
PS0		=	OPTION.0	1	Prescaler bit 0
PS1		=	OPTION.1	1	Prescaler bit 1
PS2		=	OPTION.2	1	Prescaler bit 2
PSA		=	OPTION.3	1	Prescaler assignment bit
RTE		=	OPTION.4	1	RTCC signal edge bit
RTS		=	OPTION.5	1	RTCC signal source bit
INTEDG		=	OPTION.6	1	RB0/INT edge select bit
RBPU		=	OPTION.7	1	RB weak pull-up enable bit

TRISA		=	05h		1	RA tristate control register

TRISB		=	06h		1	RB tristate control register

EECON1		=	08h		1	EEPROM control register 1
RD		=	EECON1.0	1	EEPROM read control bit
WR		=	EECON1.1	1	EEPROM write control bit
WREN		=	EECON1.2	1	EEPROM write enable bit
WRERR		=	EECON1.3	1	EEPROM write error flag bit
EEIF		=	EECON1.4	1	EEPROM interrupt flag bit

EECON2		=	09h		1	EEPROM control register 2


******** PIC16C64 Equates - enabled by DEVICE PIC16C64

					page
INDF		=	00h		0	Indirect addressing register
INDIRECT	=	00h		0	Indirect addressing register

TMR0		=	01h		0	Timer0 register

PCL		=	02h		0	Program counter low-byte register

STATUS		=	03h		0	Status register
C		=	STATUS.0	0	Carry bit
DC		=	STATUS.1	0	Digit carry bit
Z		=	STATUS.2	0	Zero bit
PD		=	STATUS.3	0	Power down bit
TO		=	STATUS.4	0	Time out bit
RP0		=	STATUS.5	0	Register page bit 0
RP1		=	STATUS.6	0	Register page bit 1
IRP		=	STATUS.7	0	Indirect register page bit

FSR		=	04h		0	File select register

PORTA		=	05h		0	RA i/o register
RA		=	05h		0	RA i/o register

PORTB		=	06h		0	RB i/o register
RB		=	06h		0	RB i/o register

PORTC		=	07h		0	RC i/o register
RC		=	07h		0	RC i/o register

PORTD		=	08h		0	RD i/o register
RD		=	08h		0	RD i/o register

PORTE		=	09h		0	RE i/o register
RE		=	09h		0	RE i/o register

PCLATH		=	0Ah		0	Program counter high-byte register

INTCON		=	0Bh		0	Interrupt control register
RBIF		=	INTCON.0	0	RB4-RB7 change interrupt flag bit
INTF		=	INTCON.1	0	RB0/INT interrupt flag bit
RTIF		=	INTCON.2	0	RTCC overflow interrupt flag bit
RBIE		=	INTCON.3	0	RB4-RB7 change interrupt enable bit
INTE		=	INTCON.4	0	RB0/INT interrupt enable bit
RTIE		=	INTCON.5	0	RTCC overflow interrupt enable bit
PEIE		=	INTCON.6	0	Perpiheral interrupt enable bit
GIE		=	INTCON.7	0	Global interrupt enable bit

PIR1		=	0Ch		0	Peripheral interrupt flags register
TMR1IF		=	PIR1.0		0	Timer1 interrupt flag bit
TMR2IF		=	PIR1.1		0	Timer2 interrupt flag bit
CCP1IF		=	PIR1.2		0	CCP interrupt flag bit
SSPIF		=	PIR1.3		0	SSP interrupt flag bit
PSPIF		=	PIR1.7		0	PSP interrupt flag bit

TMR1L		=	0Eh		0	Timer1 low byte register

TMR1H		=	0Fh		0	Timer1 high byte register

T1CON		=	10h		0	Timer1 control register
TMR1ON		=	T1CON.0		0	Timer1 enable bit
TMR1CS		=	T1CON.1		0	Timer1 clock select bit
T1INSYNC	=	T1CON.2		0	Timer1 sync enable bit
T1OSCEN		=	T1CON.3		0	Timer1 oscillator enable bit
T1CKPS0		=	T1CON.4		0	Timer1 clock prescaler select bit0
T1CKPS1		=	T1CON.5		0	Timer1 clock prescaler select bit1

TMR2		=	11h		0	Timer2 register

T2CON		=	12h		0	Timer2 control register
T2CKPS0		=	T2CON.0		0	Timer2 clock prescaler select bit0
T2CKPS1		=	T2CON.1		0	Timer2 clock prescaler select bit1
TMR2ON		=	T2CON.2		0	Timer2 enable bit
TOUTPS0		=	T2CON.3		0	Timer2 postscaler select bit0
TOUTPS1		=	T2CON.4		0	Timer2 postscaler select bit1
TOUTPS2		=	T2CON.5		0	Timer2 postscaler select bit2
TOUTPS3		=	T2CON.6		0	Timer2 postscaler select bit3

SSPBUF		=	13h		0	Synchronous Serial Port receive/transmit register

SSPCON		=	14h		0	Synchronous Serial Port control register
SSPM0		=	SSPCON.0	0	SSP mode select bit0
SSPM1		=	SSPCON.1	0	SSP mode select bit1
SSPM2		=	SSPCON.2	0	SSP mode select bit2
SSPM3		=	SSPCON.3	0	SSP mode select bit3
CKP		=	SSPCON.4	0	SSP clock polarity select bit
SSPEN		=	SSPCON.5	0	SSP enable bit
SSPOV		=	SSPCON.6	0	SSP receive overflow flag bit
WCOL		=	SSPCON.7	0	SSP write collision detect bit

CCPR1L		=	15h		0	Capture/Compare/PWM low byte register

CCPR1H		=	16h		0	Capture/Compare/PWM high byte register

CCP1CON		=	17h		0	Capture/Compare/PWM control register
CCP1M0		=	CCP1CON.0	0	CCP mode select bit0
CCP1M1		=	CCP1CON.1	0	CCP mode select bit1
CCP1M2		=	CCP1CON.2	0	CCP mode select bit2
CCP1M3		=	CCP1CON.3	0	CCP mode select bit3
CCP1Y		=	CCP1CON.4	0	CCP 10-bit PWM low order bit0
CCP1X		=	CCP1CON.5	0	CCP 10-bit PWM low order bit1

OPTION		=	01h		1	OPTION register
PS0		=	OPTION.0	1	Prescaler bit 0
PS1		=	OPTION.1	1	Prescaler bit 1
PS2		=	OPTION.2	1	Prescaler bit 2
PSA		=	OPTION.3	1	Prescaler assignment bit
RTE		=	OPTION.4	1	RTCC signal edge bit
RTS		=	OPTION.5	1	RTCC signal source bit
INTEDG		=	OPTION.6	1	RB0/INT edge select bit
RBPU		=	OPTION.7	1	RB weak pull-up enable bit

TRISA		=	05h		1	RA tristate control register

TRISB		=	06h		1	RB tristate control register

TRISC		=	07h		1	RC tristate control register

TRISD		=	08h		1	RD tristate control register

TRISE		=	09h		1	RE tristate control register
TRISE0		=	TRISE.0		1	RE0 tristate control bit
TRISE1		=	TRISE.1		1	RE1 tristate control bit
TRISE2		=	TRISE.2		1	RE2 tristate control bit
PSPMODE		=	TRISE.4		1	PSP mode bit
IBOV		=	TRISE.5		1	PSP input buffer overflow flag
OBF		=	TRISE.6		1	PSP output buffer full flag
IBF		=	TRISE.7		1	PSP input buffer full flag

PIE1		=	0Ch		1	Peripheral interrupt enable register
TMR1IE		=	PIE1.0		1	Timer1 interrupt enable bit
TMR2IE		=	PIE1.1		1	Timer2 interrupt enable bit
CCP1IE		=	PIE1.2		1	CCP interrupt enable bit
SSPIE		=	PIE1.3		1	SSP interrupt enable bit
PSPIE		=	PIE1.7		1	PSP interrupt enable bit

PCON		=	0Eh		1	Power-On-Reset detection register
POR		=	PCON.1		1	Power-On-Reset flag bit

PR2		=	12h		1	Timer2 period register

SSPADD		=	13h		1	Synchronous Serial Port I2C address register

SSPSTAT		=	14h		1	Synchronous Serial Port status register
BF		=	SSPSTAT.0	1	SSP buffer full flag bit
UA		=	SSPSTAT.1	1	SSP 10-bit I2C update address flag bit
R_W		=	SSPSTAT.2	1	SSP I2C read/write status bit
S		=	SSPSTAT.3	1	SSP I2C start flag bit
P		=	SSPSTAT.4	1	SSP I2C stop flag bit
D_A		=	SSPSTAT.5	1	SSP I2C data/address flag bit


******** PIC16C74 Equates - enabled by DEVICE PIC16C74

					page
INDF		=	00h		0	Indirect addressing register
INDIRECT	=	00h		0	Indirect addressing register

TMR0		=	01h		0	Timer0 register

PCL		=	02h		0	Program counter low-byte register

STATUS		=	03h		0	Status register
C		=	STATUS.0	0	Carry bit
DC		=	STATUS.1	0	Digit carry bit
Z		=	STATUS.2	0	Zero bit
PD		=	STATUS.3	0	Power down bit
TO		=	STATUS.4	0	Time out bit
RP0		=	STATUS.5	0	Register page bit 0
RP1		=	STATUS.6	0	Register page bit 1
IRP		=	STATUS.7	0	Indirect register page bit

FSR		=	04h		0	File select register

PORTA		=	05h		0	RA i/o register
RA		=	05h		0	RA i/o register

PORTB		=	06h		0	RB i/o register
RB		=	06h		0	RB i/o register

PORTC		=	07h		0	RC i/o register
RC		=	07h		0	RC i/o register

PORTD		=	08h		0	RD i/o register
RD		=	08h		0	RD i/o register

PORTE		=	09h		0	RE i/o register
RE		=	09h		0	RE i/o register

PCLATH		=	0Ah		0	Program counter high-byte register

INTCON		=	0Bh		0	Interrupt control register
RBIF		=	INTCON.0	0	RB4-RB7 change interrupt flag bit
INTF		=	INTCON.1	0	RB0/INT interrupt flag bit
T0IF		=	INTCON.2	0	RTCC overflow interrupt flag bit
RBIE		=	INTCON.3	0	RB4-RB7 change interrupt enable bit
INTE		=	INTCON.4	0	RB0/INT interrupt enable bit
T0IE		=	INTCON.5	0	RTCC overflow interrupt enable bit
PEIE		=	INTCON.6	0	Perpiheral interrupt enable bit
GIE		=	INTCON.7	0	Global interrupt enable bit

PIR1		=	0Ch		0	Peripheral interrupt flags register
TMR1IF		=	PIR1.0		0	Timer1 interrupt flag bit
TMR2IF		=	PIR1.1		0	Timer2 interrupt flag bit
CCP1IF		=	PIR1.2		0	CCP1 interrupt flag bit
SSPIF		=	PIR1.3		0	SSP interrupt flag bit
TXIF		=	PIR1.4		0	ASP transmit interrupt flag bit
RCIF		=	PIR1.5		0	ASP receive interrupt flag bit
ADIF		=	PIR1.6		0	ADC completion interrupt flag bit
PSPIF		=	PIR1.7		0	PSP interrupt flag bit

PIR2		=	0Dh		0	Peripheral interrupt flags register
CCP2IE		=	PIR2.0		0	CCP2 interrupt enable bit

TMR1L		=	0Eh		0	Timer1 low byte register

TMR1H		=	0Fh		0	Timer1 high byte register

T1CON		=	10h		0	Timer1 control register
TMR1ON		=	T1CON.0		0	Timer1 enable bit
TMR1CS		=	T1CON.1		0	Timer1 clock select bit
T1INSYNC	=	T1CON.2		0	Timer1 sync enable bit
T1OSCEN		=	T1CON.3		0	Timer1 oscillator enable bit
T1CKPS0		=	T1CON.4		0	Timer1 clock prescaler select bit0
T1CKPS1		=	T1CON.5		0	Timer1 clock prescaler select bit1

TMR2		=	11h		0	Timer2 register

T2CON		=	12h		0	Timer2 control register
T2CKPS0		=	T2CON.0		0	Timer2 clock prescaler select bit0
T2CKPS1		=	T2CON.1		0	Timer2 clock prescaler select bit1
TMR2ON		=	T2CON.2		0	Timer2 enable bit
TOUTPS0		=	T2CON.3		0	Timer2 postscaler select bit0
TOUTPS1		=	T2CON.4		0	Timer2 postscaler select bit1
TOUTPS2		=	T2CON.5		0	Timer2 postscaler select bit2
TOUTPS3		=	T2CON.6		0	Timer2 postscaler select bit3

SSPBUF		=	13h		0	Synchronous Serial Port receive/transmit register

SSPCON		=	14h		0	Synchronous Serial Port control register
SSPM0		=	SSPCON.0	0	SSP mode select bit0
SSPM1		=	SSPCON.1	0	SSP mode select bit1
SSPM2		=	SSPCON.2	0	SSP mode select bit2
SSPM3		=	SSPCON.3	0	SSP mode select bit3
CKP		=	SSPCON.4	0	SSP clock polarity select bit
SSPEN		=	SSPCON.5	0	SSP enable bit
SSPOV		=	SSPCON.6	0	SSP receive overflow flag bit
WCOL		=	SSPCON.7	0	SSP write collision detect bit

CCPR1L		=	15h		0	Capture1/Compare1/PWM1 low byte register

CCPR1H		=	16h		0	Capture1/Compare1/PWM1 high byte register

CCP1CON		=	17h		0	Capture1/Compare1/PWM1 control register
CCP1M0		=	CCP1CON.0	0	CCP1 mode select bit0
CCP1M1		=	CCP1CON.1	0	CCP1 mode select bit1
CCP1M2		=	CCP1CON.2	0	CCP1 mode select bit2
CCP1M3		=	CCP1CON.3	0	CCP1 mode select bit3
CCP1Y		=	CCP1CON.4	0	CCP1 10-bit PWM low order bit0
CCP1X		=	CCP1CON.5	0	CCP1 10-bit PWM low order bit1

RCSTA		=	18h		0	Asynchronus Serial Port status and control register
RCD8		=	RCSTA.0		0	ASP 9th/parity bit of received data
OERR		=	RCSTA.1		0	ASP overrun error bit
FERR		=	RCSTA.2		0	ASP framing error bit
CREN		=	RCSTA.4		0	ASP continuous-receive enable bit
SREN		=	RCSTA.5		0	ASP single-receive enable bit
RC8_9		=	RCSTA.6		0	ASP receive data length bit
SPEN		=	RCSTA.7		0	ASP enable bit

TXREG		=	19h		0	Asynchronous serial port transmit register

RCREG		=	1Ah		0	Asynchronous serial port receive register

CCPR2L		=	1Bh		0	Capture2/Compare2/PWM2 low byte register

CCPR2H		=	1Ch		0	Capture2/Compare2/PWM2 high byte register

CCP2CON		=	1Dh		0	Capture2/Compare2/PWM2 control register
CCP2M0		=	CCP2CON.0	0	CCP2 mode select bit0
CCP2M1		=	CCP2CON.1	0	CCP2 mode select bit1
CCP2M2		=	CCP2CON.2	0	CCP2 mode select bit2
CCP2M3		=	CCP2CON.3	0	CCP2 mode select bit3
CCP2Y		=	CCP2CON.4	0	CCP2 10-bit PWM low order bit0
CCP2X		=	CCP2CON.5	0	CCP2 10-bit PWM low order bit1

ADRES		=	1Eh		0	Analog to Digitial Converter result register

ADCON0		=	1Fh		0	Analog to Digitial Converter control register 0
ADON		=	ADCON0.0	0	ADC power control bit
GO_DONE		=	ADCON0.2	0	ADC go command / done flag bit
CHS0		=	ADCON0.3	0	ADC channel select bit 0
CHS1		=	ADCON0.4	0	ADC channel select bit 1
CHS2		=	ADCON0.5	0	ADC channel select bit 2
ADCS0		=	ADCON0.6	0	ADC clock select bit 0
ADCS1		=	ADCON0.7	0	ADC clock select bit 1

OPTION		=	01h		1	OPTION register
PS0		=	OPTION.0	1	Prescaler bit 0
PS1		=	OPTION.1	1	Prescaler bit 1
PS2		=	OPTION.2	1	Prescaler bit 2
PSA		=	OPTION.3	1	Prescaler assignment bit
RTE		=	OPTION.4	1	RTCC signal edge bit
RTS		=	OPTION.5	1	RTCC signal source bit
INTEDG		=	OPTION.6	1	RB0/INT edge select bit
RBPU		=	OPTION.7	1	RB weak pull-up enable bit

TRISA		=	05h		1	RA tristate control register

TRISB		=	06h		1	RB tristate control register

TRISC		=	07h		1	RC tristate control register

TRISD		=	08h		1	RD tristate control register

TRISE		=	09h		1	RE tristate control register
TRISE0		=	TRISE.0		1	RE0 tristate control bit
TRISE1		=	TRISE.1		1	RE1 tristate control bit
TRISE2		=	TRISE.2		1	RE2 tristate control bit
PSPMODE		=	TRISE.4		1	PSP mode bit
IBOV		=	TRISE.5		1	PSP input buffer overflow flag
OBF		=	TRISE.6		1	PSP output buffer full flag
IBF		=	TRISE.7		1	PSP input buffer full flag

PIE1		=	0Ch		1	Peripheral interrupt enable register
TMR1IE		=	PIE1.0		1	Timer1 interrupt enable bit
TMR2IE		=	PIE1.1		1	Timer2 interrupt enable bit
CCP1IE		=	PIE1.2		1	CCP1 interrupt enable bit
SSPIE		=	PIE1.3		1	SSP interrupt enable bit
TXIE		=	PIE1.4		1	ASP transmit interrupt enable bit
RCIE		=	PIE1.5		1	ASP receive interrupt enable bit
ADIE		=	PIE1.6		1	ADC interrupt enable bit
PSPIE		=	PIE1.7		1	PSP interrupt enable bit

PCON		=	0Eh		1	Power-On-Reset detection register
POR		=	PCON.1		1	POR flag bit

PR2		=	12h		1	Timer2 period register

SSPADD		=	13h		1	Synchronous Serial Port I2C address register

SSPSTAT		=	14h		1	Synchronous Serial Port status register
BF		=	SSPSTAT.0	1	SSP buffer full flag bit
UA		=	SSPSTAT.1	1	SSP 10-bit I2C update address flag bit
R_W		=	SSPSTAT.2	1	SSP I2C read/write status bit
S		=	SSPSTAT.3	1	SSP I2C start flag bit
P		=	SSPSTAT.4	1	SSP I2C stop flag bit
D_A		=	SSPSTAT.5	1	SSP I2C data/address flag bit

TXSTA		=	18h		1	Asynchronous Serial Port transmit status and control register
TXD8		=	TXSTA.0		1	ASP 9th bit of transmit data
TRMT		=	TXSTA.1		1	ASP transmit shift register empty
BRGH		=	TXSTA.2		1	ASP high baud rate select bit
SYNC		=	TXSTA.4		1	ASP mode bit
TXEN		=	TXSTA.5		1	ASP transmit enable bit
TX8_9		=	TXSTA.6		1	ASP transmit data length bit
CSRC		=	TXSTA.7		1	ASP clock source select bit

SPBRG		=	19h		1	Asynchronous Serial Port baud rate register

ADCON1		=	1Fh		1	Analog to Digitial Converter control register 1
PCFG0		=	ADCON1.0	1	RA port configuration bit 0
PCFG1		=	ADCON1.1	1	RA port configuration bit 1
PCFG2		=	ADCON1.2	1	RA port configuration bit 2
