Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
PIC University of Belgrade School of Electrical Engineering Department of Computer Science Authors: Goran Timotic [email protected] Gvozden Marinkovic [email protected] Prof. Dr. Veljko Milutinovic [email protected] PIC - Introduction Microchip is the Embedded Control Solutions Company The company’s focus is on products that meet the needs of the embedded control market Some of the benefits for the customer include: – – – – – – – Quick time to market Allows code changes to product, during production run No Non-Recurring Engineering (NRE) charges for Mask Revisions Ability to easily serialize the product Ability to store calibration data, without additional hardware Better able to maximize PICmicro MCU inventory Less risk, since the same device is used for development as well as for production. 2/60 PIC - Introduction PICmicro devices are grouped by the size of their Instruction Word The three current PICmicro families are: – Base-Line: 12-bit Instruction Word length – Mid-Range: 14-bit Instruction Word length – High-End: 16-bit Instruction Word length 3/60 PIC - Introduction PIC12 Family PIC12C5XX Family - 8-Pin, 8-Bit CMOS Microcontrollers PIC12CE5XX Family - 8-Pin, 8-Bit CMOS Microcontrollers with EEPROM Data Memory PIC12C67X Family - 8-Pin, 8-Bit CMOS Microcontrollers with A/D Converter PIC12CE67X Family - 8-Pin, 8-Bit CMOS Microcontrollers with A/D Converter and EEPROM Data Memory 4/60 PIC - Introduction PIC16 Family PIC16C5X Family & PIC16HV540 - EPROM/ROM-Based 8-Bit CMOS Microcontroller Series PIC16C55X Family EPROM-Based 8-Bit CMOS Microcontrollers PIC16C6X Family 8-Bit CMOS Microcontrollers PIC16X62X Family 18-Pin EPROM-Based 8-Bit CMOS Microcontrollers PIC16CE62X Family 8-Bit CMOS Microcontrollers with Analog Comparators and EEPROM Data Memory PIC16C7X Family 8-Bit CMOS Microcontrollers with A/D Converter PIC16C7XX Family 8-Bit CMOS Microcontrollers with A/D Converter for USB, PS/2 and Serial Device Applications PIC16C9XX Family 8-Bit CMOS Microcontrollers with LCD Driver 5/60 PIC - Introduction PIC17 Family PIC17C4X Family - High-Performance 8-Bit CMOS EPROM/ROM Microcontrollers PIC17C7XX Family - High-Performance 8-Bit CMOS EPROM Microcontrollers 6/60 PIC - Introduction The high performance of the PICmicro™ devices can be attributed to a number of architectural features commonly found in RISC microprocessors: – – – – – – – – Harvard architecture Long Word Instructions Single Word Instructions Single Cycle Instructions Instruction Pipelining Reduced Instruction Set Register File Architecture Orthogonal (Symmetric) Instructions 7/60 PIC - Architecture Overview 13 EPROM Program Memory up to 8K x 14 8 Level Stack (13-bit) 14 8 Data Bus Program Counter RAM General Purpose I/O File Registers up to 368 x 8 Program Bus RAM Addr Instruction reg 9 Addr MUX 7 Direct Addr 8 Indirect Addr FSR reg 8 STATUS reg Instruction Decode & Control Power-up Timer 3 MUX Oscillator Start-up Timer Power-on Reset Timing Generation Internal RC clock Watchdog Timer Brown-out Reset 8 ALU W reg Peripheral Modules 8/60 PIC - Oscillator The internal oscillator circuit is used to generate the device clock Four device clock periods generate one internal instruction clock (TCY) cycle There are up to eight different modes, which the oscillator may have: – – – – – – – – LP Low Frequency (Power) Crystal XT Crystal/Resonator HS High Speed Crystal/Resonator RC External Resistor/Capacitor (same as EXTRC with CLKOUT) EXTRC External Resistor/Capacitor EXTRC External Resistor/Capacitor with CLKOUT INTRC Internal 4 MHz Resistor/Capacitor INTRC Internal 4 MHz Resistor/Capacitor with CLKOUT 9/60 PIC - Reset The reset logic is used to place the device into a known state The source of the reset can be determined by using the device status bits Most registers are unaffected by a reset, their status is unknown on POR and unchanged by all other resets The other registers are forced to a “reset state” on Power-on Reset, MCLR, WDT reset, Brown-out Reset, Parity Error Reset, and on MCLR reset during SLEEP While the PICmicro™ is in a reset state, the internal phase clock is held at Q1 (beginning of an instruction cycle) 10/60 PIC - Reset 2 Devices differentiate between various kinds of reset: – Power-on Reset (POR) - pulse is generated on-chip when VDD rise is detected – MCLR reset during normal operation – MCLR reset during SLEEP – WDT reset during normal operation – Brown-out Reset (BOR) - places the device into reset when the device voltage falls below a trip point (BVDD) – Parity Error Reset (PER) 11/60 PIC - Instruction Flow/Pipelining An “Instruction Cycle” consists of four Q cycles (Q1, Q2, Q3, and Q4) Fetch takes one instruction cycle while decode and execute takes another instruction cycle Due to Pipelining, each instruction effectively executes in one cycle If an instruction causes the program counter to change (e.g. GOTO) then an extra cycle is required to complete the instruction 12/60 PIC - Instruction Pipeline Flow 1. MOVLW 55h TCY0 TCY1 Fetch 1 Execute 1 2. MOVWF PORTB Fetch 2 3. CALL SUB_1 4. BSF PORTA, BIT3 (Forced NOP) 5. Instruction @ address SUB_1 TCY2 TCY3 TCY4 TCY5 Execute 2 Fetch 3 Execute 3 Fetch 4 Flush Fetch SUB_1 Execute SUB_1 Fetch SUB_1+1 13/60 PIC - Central Processing Unit (CPU) CPU is responsible for: – fetching the correct instruction for execution – decoding that instruction – executing that instruction Sometimes works in conjunction with the ALU to complete the execution of the instruction (in arithmetic and logical operations) The CPU controls the program memory address bus, the data memory address bus, and accesses to the stack 14/60 PIC - Instruction Clock Each instruction cycle (TCY) is comprised of four Q cycles (Q1-Q4) The Q cycles provide the timing/designation for the Decode, Read, Process Data, Write, etc., of each instruction cycle The four Q cycles that make up an instruction cycle (TCY) can be generalized as: – – – – Q1: Instruction Decode Cycle or forced No operation Q2: Instruction Read Data Cycle or No operation Q3: Process the Data Q4: Instruction Write Data Cycle or No operation 15/60 PIC - Arithmetic Logical Unit (ALU) PICmicro MCUs contain an 8-bit ALU and an 8-bit working register The ALU is a general purpose arithmetic and logical unit ALU performs arithmetic and Boolean functions between the data in the working register and any register file The ALU is 8-bits wide and is capable of addition, subtraction, shift and logical operations – In two-operand instructions • one operand is the working register (W register) • the other operand is a file register or an immediate constant – In single operand instructions, • the operand is either the W register or a file register 16/60 PIC - STATUS Register The STATUS register contains the arithmetic status of the ALU, the RESET status and the bank select bits for data memory IRP RP1 RP0 TO PD Z DC C IRP: Register Bank Select bit (used for indirect addressing) RP1:RP0: Register Bank Select bits (used for direct addressing) TO: Time-out bit PD: Power-down bit Z: Zero bit DC: Digit carry/borrow bit C: Carry/borrow bit 17/60 PIC - OPTION_REG Register Readable and writable register which contains various control bits to configure the TMR0/WDT prescaler, the external INT Interrupt, TMR0, and the weak pull-ups on PORTB RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 RBPU: PORTB Pull-up Enable bit INTEDG: Interrupt Edge Select bit T0CS: TMR0 Clock Source Select bit T0SE: TMR0 Source Edge Select bit PSA: Prescaler Assignment bit PS2:PS0: Prescaler Rate Select bits 18/60 PIC - PCON Register The Power Control (PCON) register contains flag bit(s), that together with the TO and PD bits, allows the user to differentiate between the device resets MPEEN - - - - PER POR BOR MPEEN: Memory Parity Error Circuitry Status bit PER: Memory Parity Error Reset Status bit POR: Power-on Reset Status bit BOR: Brown-out Reset Status bit 19/60 PIC - Memory Organization There are two memory blocks – Program memory – Data memory Each block has its own bus, so that access to each block can occur during the same oscillator cycle The data memory can further be broken down into General Purpose RAM and the Special Func-tion Registers (SFRs) 20/60 PIC - Program Memory Organization PCLATH PC<12:8> PCL 13 Stack Level 1 Stack Level 8 2K Reset Vector 0000h Interrupt Vector 0004h 0005h 4K 6K On-chip Program Memory (Page 0) 8K On-chip Program Memory (Page 1) On-chip Program Memory (Page 2) On-chip Program Memory (Page 3) 07FFh 0800h 0FFFh 1000h 17FFh 1800h 1FFFh 21/60 PIC - Program Memory Organization Mid-Range MCU devices have a 13-bit program counter capable of addressing an 8K x 14 program memory space The width of the program memory bus (instruction word) is 14-bits Since all instructions are a single word, a device with an 8K x 14 program memory has space for 8K of instructions This program memory space is divided into four pages of 2K words each To jump between the program memory pages, the high bits of the Program Counter (PC) must be modified. This is done by writing the desired value into a SFR called PCLATH (ProgramCounter Latch High) 22/60 PIC - Program Memory Organization Reset Vector - on any device, a reset forces the Program Counter (PC) to address 0h Interrupt Vector - when an interrupt is acknowledged the PC is forced to address 0004h Calibration Information - some devices have calibration information stored in their program memory. This information is programmed by Microchip when the device is under final test Computed GOTO - accomplished by adding an offset to the program counter (ADDWF PCL) 23/60 PIC - Program Memory Organization Program Counter (PC) - specifies the address of the instruction to fetch for execution – The low byte is called the PCL register. This register is readable and writable – The high byte is called the PCH register. This register contains the PC<12:8> bits and is not directly readable or writable. All updates to the PCH register go through the PCLATH register Stack - 8-level deep x 13-bit wide hardware stack – allows a combination of up to 8 program calls and interrupts to occur – contains the return address from this branch in program execution 24/60 PIC - Program Memory Organization Program Memory Paging 25/60 PIC - Data Memory Organization Data memory is made up of the Special Function Registers (SFR) area, and the General Purpose Registers (GPR) area General Purpose Registers (GPR) – GPRs are the general area for data storage and scratch pad operations – We refer to this area as the Common RAM Special Function Registers (SFR) – The SFRs are used by the CPU and Peripheral Modules for controlling the desired operation of the device. – These registers are implemented as static RAM 26/60 PIC - Data EEPROM The EEPROM data memory is readable and writable during normal operation (full VDD range) A byte write automatically erases the location and writes the new data (erase before write) This memory is not directly mapped in the register file space It is indirectly addressed through the Special Function Registers There are four SFRs used to read and write this memory – – – – EECON1 EECON2 (not a physically implemented register) EEDATA - holds the 8-bit data for read/write EEADR - holds the address of the EEPROM location being accessed 27/60 PIC - Interrupts One interrupt source for each peripheral module Some modules may generate multiple interrupts (such as the USART module) There is a minimum of one register used in the control and status of the interrupts (INTCON) If the device has peripheral interrupts, then it will have registers to enable the peripheral interrupts and registers to hold the interrupt flag bits. Depending on the device, the registers are: – – – – PIE1 PIR1 PIE2 PIR2 28/60 PIC - Interrupts The current interrupts are: – – – – – – – – – – – – – – – INT Pin Interrupt (external interrupt) TMR0 Overflow Interrupt PORTB Change Interrupt (pins RB7:RB4) Comparator Change Interrupt Parallel Slave Port Interrupt USART Interrupts Receive Interrupt Transmit Interrupt A/D Conversion Complete Interrupt LCD Interrupt. Data EEPROM Write Complete Interrupt Timer1 Overflow Interrupt Timer2 Overflow Interrupt CCP Interrupt SSP Interrupt 29/60 PIC - Interrupts Control Registers – INTCON Register – PIE Register(s) – PIR Register(s) 30/60 PIC - Interrupts INTCON Register - readable and writable register, which contains various enable and flag bits GIE PEIE T0IE INTE RBIE T0IF INTF RBIF GIE: Global Interrupt Enable bit PEIE: Peripheral Interrupt Enable bit T0IE: TMR0 Overflow Interrupt Enable bit INTE: INT External Interrupt Enable bit RBIE: RB Port Change Interrupt Enable bit T0IF: TMR0 Overflow Interrupt Flag bit INTF: INT External Interrupt Flag bit RBIF: RB Port Change Interrupt Flag bit 31/60 PIC - Interrupts PIE Register(s) - Peripheral Interrupt Enable register(s) (the number of PIE registers depends on the number of peripheral interrupt sources) The bit position of the enable bits is device dependent TMR1IE: TMR1 Overflow Interrupt Enable bit TMR2IE: TMR2 to PR2 Match Interrupt Enable bit CCP1IE: CCP1 Interrupt Enable bit CCP2IE: CCP2 Interrupt Enable bit SSPIE: Synchronous Serial Port Interrupt Enable bit 32/60 PIC - Interrupts RCIE: USART Receive Interrupt Enable bit TXIE: USART Transmit Interrupt Enable bit ADIE: A/D Converter Interrupt Enable bit ADCIE: Slope A/D Converter comparator Trip Interrupt Enable bit OVFIE: Slope A/D TMR Overflow Interrupt Enable bit PSPIE: Parallel Slave Port Read/Write Interrupt Enable bit EEIE: EE Write Complete Interrupt Enable bit LCDIE: LCD Interrupt Enable bit CMIE: Comparator Interrupt Enable bit 33/60 PIC - Interrupts PIR Register(s) - Peripheral Interrupt Flag registers contain the individual flag bits for the peripheral interrupts The bit position of the enable bits is device dependent TMR1IF: TMR1 Overflow Interrupt Flag bit TMR2IF: TMR2 to PR2 Match Interrupt Flag bit CCP1IF: CCP1 Interrupt Flag bit CCP2IF: CCP2 Interrupt Flag bit SSPIF: Synchronous Serial Port Interrupt Flag bit RCIF: USART Receive Interrupt Flag bit TXIF: USART Transmit Interrupt Flag bit 34/60 PIC - Interrupts ADIF: A/D Converter Interrupt Flag bit ADCIF: Slope A/D Converter Comparator Trip Interrupt Flag bit OVFIF: Slope A/D TMR Overflow Interrupt Flag bit PSPIF: Parallel Slave Port Read/Write Interrupt Flag bit EEIF: EE Write Complete Interrupt Flag bit LCDIF: LCD Interrupt Flag bit CMIF: Comparator Interrupt Flag bit 35/60 PIC - Interrupts Interrupt Latency – Interrupt latency is defined as the time from the interrupt event (the interrupt flag bit gets set) to the time that the instruction at address 0004h starts execution (when that interrupt is enabled) – For synchronous interrupts (typically internal), the latency is 3TCY – For asynchronous interrupts (typically external), the interrupt latency will be 3 - 3.75TCY Context Saving During Interrupts – During an interrupt, only the return PC value is saved on the stack – Typically, users may wish to save key registers during an interrupt e.g. W register and STATUS register. This has to be implemented in software 36/60 PIC - I/O General purpose I/O pins can be considered the simplest of peripherals They allow the PICmicro™ to monitor and control other devices To add flexibility and functionality to a device, some pins are multiplexed with an alternate function(s) 37/60 PIC - I/O Descriptions Pin Name AN0..AN15 AVDD AVSS C1, C2 CCP1, CCP2 CDAC CK CLKIN CLKOUT CMPA, CMPB COM0..COM3 CS DT GP0..GP5 INT MCLR/VPP NC Description Analog Input Analog Power Analog Ground LCD Voltage Generation Capture1(2) input/Compare1(2) output/PWM1(2) output A/D ramp current source output USART Synchronous Clock External clock source input Oscillator crystal output. Comparator A (B) output LCD Common Driver0 (1, 2, 3) Chip select control for parallel slave port USART Synchronous Data GP is a bi-directional I/O port External Interrupt Master clear (reset) input or programming voltage input These pins should be left unconnected 38/60 PIC - I/O Descriptions Pin Name OSC1 OSC2 PBTN PSP0..PSP7 RA0..RA5 RB0..RB7 RC0..RC7 RD RD0..RD7 RE0..RE7 REFA, REFB RF0..RF7 RG0..RG7 RX SCL SCLA, SCLB SDA Description Oscillator crystal input or external clock source input Oscillator crystal output Input with weak pull-up resistor Parallel Slave Port for interfacing to a microprocessor port PORTA is a bi-directional I/O port PORTB is a bi-directional I/O port PORTC is a bi-directional I/O port Read control for parallel slave port PORTD is a bi-directional I/O port PORTE is a bi-directional I/O port Programmable reference A (B) output PORTF is a digital input or LCD Segment Driver Port PORTG is a digital input or LCD Segment Driver Port USART Asynchronous Receive Synchronous serial clock input/output for I2C mode. Synchronous serial clock for I2C interface. I2C ™ Data I/O 39/60 PIC - I/O Descriptions Pin Name SDAA, SDAB SCK SDI SDO SS SEG00..SEG31 SUM T0CKI T1CKI T1OSO T1OSI TX VLCD1...VLCD3 VLCDADJ VREF VREG VSS VDD WR Description Synchronous serial data I/O for I 2 C interface Synchronous serial clock input/output for SPI mode SPI Data In SPI Data Out (SPI mode) SPI Slave Select input LCD Segment Driver00 through Driver31 AN1 summing junction output Timer0 external clock input Timer1 external clock input Timer1 oscillator output Timer1 oscillator input USART Asynchronous Transmit LCD Voltage LCD Voltage Generation Analog High Voltage Reference input. Output to control the gate of an external N-FET for voltage regulation Ground reference for logic and I/O pins Positive supply for logic and I/O pins Write control for parallel slave port 40/60 PIC - Parallel Slave Port (PSP) Some devices have an 8-bit wide Parallel Slave Port (PSP) This port is multiplexed onto one of the devices I/O ports The PORT operates as an 8-bit wide Parallel Slave Port, or microprocessor port, when the PSPMODE control bit is set (in this mode, the input buffers are TTL) 41/60 PIC - Timer0 The Timer0 module has the following features: – – – – – – 8-bit timer/counter Readable and writable 8-bit software programmable prescaler Clock source selectable to be external or internal Interrupt on overflow from FFh to 00h Edge select for external clock 42/60 PIC - Timer1 The Timer1 module is a 16-bit timer/counter It consists of two 8-bit registers (TMR1H and TMR1L), which are readable and writable Timer1 can operate in one of three modes: – As a synchronous timer – As a synchronous counter – As an asynchronous counter 43/60 PIC - Timer2 Timer2 is an 8-bit timer with – Prescaler – Postscaler – Period register Using the prescaler and postscaler at their maximum settings, the overflow time is the same as a 16-bit timer 44/60 PIC - Capture/Compare/PWM Each CCP (Capture/Compare/PWM) module contains a 16-bit register which can operate in three modes: – As a 16-bit capture register – As a 16-bit compare register – As a 10-bit PWM master/slave Duty Cycle register The CCP modules are identical in operation, with the exception of the operation of the special event trigger 45/60 PIC - Synchronous Serial Port (SSP) The Synchronous Serial Port (SSP) module is a serial interface useful for communicating with other peripherals or microcontroller devices These peripheral devices may be serial EEPROMs, shift registers, display drivers, A/D converters, etc. The SSP module can operate in one of two modes: – Serial Peripheral Interface (SPI™) – Inter-Integrated Circuit (I2C™) • Slave mode • I/O slope control, and Start and Stop bit detection to ease software implementation of Master and Multi-master modes 46/60 PIC - Synchronous Serial Port (SSP) Serial Peripheral Interface (SPI™) – Allows 8-bits of data to be synchronously transmitted and received simultaneously – All four modes of SPI are supported, as well as Microwire™ (sample edge) when the SPI is in the master mode – To accomplish communication, typically three pins are used: • Serial Data Out (SDO) • Serial Data In (SDI) • Serial Clock (SCK) 47/60 PIC - Synchronous Serial Port (SSP) Inter-Integrated Circuit (I2C™) – The SSP module in I2C mode fully implements all slave functions, except general call support – Provides interrupts on start and stop bits in hardware to facilitate software implementations of the master functions – Implements the standard mode specifications as well as 7-bit and 10-bit addressing 48/60 PIC - USART The Universal Synchronous Asynchronous Receiver Transmitter (USART) module is one of the two serial I/O modules (other is the SSP module) The USART can be configured in the following modes: – Asynchronous (full duplex) • CRT terminals • personal computers – Synchronous - Master (half duplex) • A/D or D/A integrated circuits • Serial EEPROMs etc. – Synchronous - Slave (half duplex) 49/60 PIC - A/D Converter The A/D allows conversion of an analog input signal to a corresponding 8-bit digital number The output of the sample and hold is the input into the converter, which generates the result via successive approximation The A/D converter has a unique feature of being able to operate while the device is in SLEEP mode The A/D module has three registers: – A/D Result Register (ADRES) – A/D Control Register0 (ADCON0) - controls the operation of the A/D module – A/D Control Register1 (ADCON1) - configures the functions of the port pins 50/60 PIC - LCD The LCD module generates the timing control to drive a static or multiplexed LCD panel, with support for up to 32 segments multiplexed with up to four commons The interface to the module consists of three control registers used to define the timing requirements of the LCD panel – LCDCON – LCDSE – LCDPS Up to 16 LCD data registers (LCD00-LCD15) that represent the array of the pixel data 51/60 PIC - Watch Dog Timer (WDT) The Watchdog Timer (WDT) is a free running on-chip RC oscillator which does not require any external components The Watchdog Timer (WDT) is enabled/disabled by a device configuration bit. If the WDT is enabled, software execution may not disable this function During normal operation, a WDT time-out generates a device RESET If the device is in SLEEP mode, a WDT time-out causes the device to wake-up and continue with normal operation, this is known as a WDT wake-up The WDT can be permanently disabled by clearing the WDTE configuration bit 52/60 PIC - Device Configuration Bits The device configuration bits allow each user to customize certain aspects of the device to the needs of the application When the device powers up, the state of these bits determines the modes that the device uses These bits are mapped in program memory location 2007h This location is not accessible during normal device operation (can be accessed only during programming mode) 53/60 PIC - Voltage Reference The Voltage Reference is a 16-tap resistor ladder network that provides a selectable voltage reference The resistor ladder is segmented to provide two ranges of VREF values and has a power-down function to conserve power when the reference is not being used 54/60 PIC - Clock/Instruction Cycle The clock input (from OSC1) is internally divided by four to generate four non-overlapping quadrature clocks, namely Q1, Q2, Q3, and Q4 Internally, the program counter (PC) is incremented every Q1, and the instruction is fetched from the program memory and latched into the instruction register in Q4 The instruction is decoded and executed during the following Q1 through Q4 55/60 PIC - Clock/Instruction Cycle TCY1 Q1 Q2 Q3 TCY2 Q4 Q1 Q2 Q3 TCY3 Q4 Q1 Q2 Q3 Q4 OSC1 Q1 Q2 Q3 Q4 PC OSC2/CLKOUT Fetch INST (PC) Execute INST (PC-1) Fetch INST (PC+1) Execute INST (PC) Fetch INST (PC+2) Execute INST (PC+1) 56/60 PIC - Instruction Format Byte-oriented file register operations 13 8 OPCODE 7 6 0 d f (FILE #) Bit-oriented file register operations 13 10 9 OPCODE 7 6 b (BIT #) 0 f (FILE #) Literal and control operations - General 13 7 6 OPCODE 0 k (literal) Literal and control operations - CALL and GOTO instructions only 13 10 9 OPCODE 0 k (literal) 57/60 PIC - Instruction Set BYTE-ORIENTED FILE REGISTER OPERATIONS ADDWF f, d Add W and f ANDWF f, d AND W with f CLRF f Clear f CLRW - Clear W COMF f, d Complement f DECF f, d Decrement f DECFSZ f, d Decrement f, Skip if 0 INCF f, d Increment f INCFSZ f, d Increment f, Skip if 0 IORWF f, d Inclusive OR W with f MOVF f, d Move f MOVWF f Move W to f NOP - No Operation RLF f, d Rotate Left f through Carry RRF f, d Rotate Right f through Carry SUBWF f, d Subtract W from f SWAPF f, d Swap nibbles in f XORWF f, d Exclusive OR W with f 58/60 PIC - Instruction Set BIT-ORIENTED FILE REGISTER OPERATIONS BCF f, b Bit Clear f BSF f, b Bit Set f BTFSC f, b Bit Test f, Skip if Clear BTFSS f, b Bit Test f, Skip if Set LITERAL AND CONTROL OPERATIONS ADDLW k Add literal and W ANDLW k AND literal with W CALL k Call subroutine CLRWDT - Clear Watchdog Timer GOTO k Go to address IORLW k Inclusive OR literal with W MOVLW k Move literal to W RETFIE - Return from interrupt RETLW k Return with literal in W RETURN - Return from Subroutine SLEEP - Go into standby mode SUBLW k Subtract W from literal XORLW k Exclusive OR literal with W 59/60 PIC - ICSP™ ICSP™ is a short for In-Circuit Serial Programming™ In-Circuit Serial Programming is a great way to reduce inventory overhead and time-to-market for product All midrange devices can be ICSP™ while in the end application circuit This is simply done with two lines for clock and data, and three other lines for power, ground, and the programming voltage 60/60