1620 CCS
Using the CCS C Compiler for Rapid
Development of Microcontroller
Applications
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
Class Objective
After this class you will:
Be able to use your C knowledge and
write applications using the CCS C
Compiler
Know the ways the CCS C Compiler
speeds up development time
Develop new application and coding
ideas
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
Agenda
Compiler Overview
Compiler Methodology
C differences, data types, memory
allocation, required setup.
Built-in functions
Design goals, compiler products
GPIO, delays, serial, peripherals
Interrupts
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
Agenda
Hands-On Labs
Lab 1: 0 to blinky LED in 60
seconds
Lab 2: The CCS IDE debugger
Lab 3: Analog to digital peripheral
Lab 4: Stopwatch using interrupts
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
Compiler Overview
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
Design Goals
Ease of use compile and go!
Quick development time
Built-in functions, libraries, examples
Easy PIC MCU to PIC MCU
migration
Optimization comparable to
assembly
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
CCS Command Line Compiler
Product Line:
PCB - Baseline PIC MCUs
PCM - Mid-range PIC MCUs
PCH - PIC18 Family PIC MCUs
PCD - PIC24/dsPIC30/dsPIC33
Integrates into MPLAB IDE
Linux and Windows versions
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
PCW Windows IDE
C Aware Editor
Debugging
Integrated RTOS
Linker and re-locatable objects
Document generator
Flow chart editor
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
CCS Support Policy
E-mail / phone support
Yearly maintenance contract
Duration is unlimited
Updates, new devices, drivers
Can be extended any time
Large customer base
Rapid releases (once a week)
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
Compiler Demonstration
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
10
Hands On Lab #1
Blinky LED
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
11
Lab 1 Objectives
Hands-on experience with
compiler
Use tools and development
board
Use CCS Project Wizard
Create blinky LED
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
12
Prototyping Hardware
PIC16F887
ICD Connector
Pot on AN0
Button on RA4
LEDs on RA4, RB4 and RB5
RS232 driver and mini connector
Header to all GPIO
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
13
Wizard Overview
Creates and initial framework
Assists in the initial
configuration of peripherals and
devices
Configure screen for all
peripherals and popular external
devices
Windows IDE only
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
14
Lab 1 Hints
LED will blink at 1Hz rate
Follow handout
Verify:
Correct PIC MCU selected
Correct #FUSES selected
Correct #use delay() specified
Bored? Try Extra Credit
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
16
Compiler
Methodology
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
17
Differences to common C
Case in-sensitive
#case will make it sensitive
Variables not initialized to zero
const places variable into ROM
No literal const string parameters
Ex: Somefunc(HELLO);
#device PASS_STRINGS=IN_RAM
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
18
ANSI Non-Compliance
No fopen(), fclose(), etc
fprintf(), fputc(), fgetc() is supported
printf() formatting string must be
known at compile time
Recursion allowed on some PIC
MCUs
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
19
Data Types
PCB/PCM/PCH
short
1-bit
char
Unsigned 8-bit
int
Unsigned 8-bit
long
Unsigned 16-bit
long long Unsigned 32-bit
float
MCHP 32-bit
double
NO SUPPORT
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
PCD
1-bit
Unsigned 8-bit
Signed 16-bit
Signed 32-bit
Signed 64-bit
IEEE 32-bit
IEEE 64-bit
Slide
20
Data Types
#type can change default size
Optimization tips
#type short=8, int=16, long=32
Use int over char, byte, long
If you must use float, use one type
Non-standard types
int1, int8, int16, int32, int48, int64
float32, float48, float64
__address__
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
21
Bit Arrays
Array of bits:
int1 flags[30];
flags[i] = TRUE;
if (flags[10]) { /* some code */ }
Bits are packed
Pointers not supported
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
22
Fixed Point Decimal
Decimals with integers, not
floats!
Faster, Smaller
100% precision
Stores value in 10y power
Declaration:
[type] _fixed(y) [declarator]
int16 _fixed(2) money
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
23
Fixed Point Examples
int16 _fixed(2) money;
Range: 0.00 to 655.35
money = 20.50;
money += 5; //adds 5.00
money += value;
printf(%w, money);
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
24
RAM Allocation
First come, first served in this order:
1.
2.
3.
Globals
Static
Local
Call tree finds RAM to be reused
User can force RAM placement
Variable cannot be larger than bank
Enhanced PIC16, PIC18, 16-bit PIC MCUs
exempt
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
25
const vs. rom
const read-only, has two modes:
rom places variable in ROM
#device CONST=ROM
(DEFAULT)
#device CONST=READ_ONLY (RAM)
rom writable if supported by MCU
Examples
const char string1[] = Hello;
rom char string2[] = Hello;
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
26
Program Space Visibility (PSV)
Mix RAM and ROM pointers
#device PSV=16
PIC24, dsPIC30, dsPIC33 only
const/rom variables made PSV
friendly
Example:
rom char str[] = Hello;
char *ptr = str;
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
27
Borrowed from C++
Reference Parameters
Pass address, not value
Values can be changed in function
Similar to using pointers
Efficient for large structures
Declare with &
void Inc(int &i) {
i++;
}
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
28
Borrowed from C++
Default Parameters
Default value passed to function
if no value specified
Examples:
void Get(char *c, int time=200);
Get(&c); //time will be 200
Get(&c, 500); //time will be 500
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
29
Borrowed from C++
Function Overloading
Multiple functions, same name
Different parameters
Example:
int Inc(int *i);
long Inc(long *l);
float Inc(float *f);
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
30
Output Files
HEX Compiled Application
COF Debug Application
ERR Compile output messages
LST C to Assembly comparison
SYM Memory Map
STA Statistics
TRE Call Tree
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
31
Programming Details
Required Setup
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
32
Pre-processor
Design Goal: All in front of you
Everything is in the source code
No linker scripts
Pre-processor commands
change compiler-behaviour:
Methodology, ROM/RAM placement,
library configuration
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
33
#device
Loads personality for PIC MCU
Can alter low-level specifics
#device PIC18F4520
#device ICD=TRUE
Device header files have #device
If linking, must be in each unit
Put it in a common include file
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
34
#fuses
Set the configuration bits
#fuses HS, NOWDT, NOLVP
To get list of valid fuses:
In IDE, use View Valid Fuses window
Header file for the device has list,
view fuses.txt for descriptions
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
35
#use delay
Set PIC MCU clock speed
Configures compilers libraries
#use delay(clock=value)
Serial, Delays, Timers
Configures PLL and config bits
#use delay(crystal=8Mhz, clock=40Mhz)
#use delay(crystal=8Mhz, USB_FAST)
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
36
Programming Details
Memory Placement
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
37
#byte / #word
Force location of RAM:
int val;
#byte val=0xA0
Overlaying variable onto SFR:
#byte STATUS=0x03
#word TMR1=0x0E
Repeat, using getenv():
#byte STATUS=getenv(SFR:STATUS)
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
38
#bit
#bit ident=X.b
Declares boolean at address X, bit b
#bit CARRY=STATUS.0
#bit CARRY=getenv(BIT:C)
Dont forget:
Compiler will pack int1 variables
You can use struct to pack bits
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
39
#org
Fix placement in ROM
#org start, end
Place following function/constant in
specified program memory
#org 0x400,0x4FF
SomeFunction() { /*code*/ }
#org 0x500, 0x5FF
const someStruct[] = { }
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
40
Hands On Lab #2
Debugging a Calculator
Application
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
41
Lab 2 Objectives
Learn basic debugging use
Breakpoints
Watches
ROM and RAM view
Learn advanced debugging use
Trace
Logging
1Wire RS232 on RB3
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
42
Lab 2 Directions
Program provided is a simple
calculator
Follow the directions on the
handout
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
43
BREAK TIME!
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
44
Programming Details
Built-In Functions
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
45
Built-In Functions
Compiler provides functions to:
Control Peripherals (A/D, Serial, etc)
Perform logic optimized to PIC MCU
Internal to compiler, not linked
Simplify PIC MCU migration
Follow any errata workarounds
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
46
#if defined(__PIC24__)
#include <24FJ64GA004.h>
#elif defined(__PIC18__)
#include <18F4520.h>
#elif defined(__PIC16__)
#include <16F887.h>
#endif
#fuses HS, NOWDT, NOLVP
#use delay(clock=20000000)
void main(void) {
while(TRUE) {
output_toggle(PIN_C0);
delay_ms(500);
}
}
getenv()
Assists in making portable code
Returns chip information
ROM size, RAM available,
peripherals available, config bits set,
and more
Conditionally compile options:
#if getenv(ADC_CHANNELS) > 0
setup_adc_ports(NO_ANALOGS);
#endif
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
48
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
49
Built-In Functions: GPIO
output_high(PIN_XX)
output_low(PIN_XX)
output_toggle(PIN_XX)
Sets the pin to desired level
Ex: PIN_C0, PIN_B5 (in H file)
bool = input(PIN_XX)
Read value of pin
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
50
Built-In Functions: GPIO
output_X(value)
byte = input_X()
Sets the port X (A to J) to the value
Read value of port X
set_tris_X(value)
val = get_tris_X()
Get/Set the tristate setting
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
51
Built-In Functions: GPIO
#use standard_io(X)
#use fast_io(X)
Output functions set TRIS to output,
Input functions set TRIS to input
This is the default operation
Compiler does not alter TRIS
#use fixed_io(port_outputs=pins)
#use fixed_io(d_outputs=PIN_D7)
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
52
Built-In Functions: Delays
delay_cycles(x)
delay_us(x)
delay_ms(x)
Uses a series of loops and NOPs
Timing based on #use delay()
Multiple #use delay() allowed
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
53
#use delay(clock=125K)
//1 second delay @ 125kHz
void Delay1s125Khz(void) {
delay_ms(1000);
}
#use delay(clock=8M)
//1 second delay @ 8MHz
void Delay1s8Mhz(void) {
delay_ms(1000);
}
#use timer()
Creates a timing system
#use timer()
tick, set timing period in us, ms or s
timer, specify which timer to use
bits, size of tick counter
NOISR, ISR
TICKS_PER_SECOND defined
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
55
#use timer() Example
#use timer(timer=0, tick=50ms, bits=32)
unsigned int32 start;
start = get_ticks();
while (
{
}
(get_ticks() start) <
(TICKS_PER_SECOND*3)
// code processed for 3 seconds
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
56
Built-In Functions
Serial Libraries
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
57
Pop Quiz
You need to add another
serial port to your project,
but you have used all of the
PIC MCUs peripherals.
What do you do?
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
58
#use rs232()
Powerful UART library
#use rs232(baud=x,
xmit=PIN_XX, rcv=PIN_XX,
stream=yyyy)
TX/RX on any pins
Enable bit, parity, collision detect,
open collector mode, receive timeout,
and more options
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
59
UART (Continued)
Standard C I/O
Standard C I/O, streams
printf(string, );
char = getc();
fprintf(stream, string, );
char = fgetc(stream);
bool = kbhit(stream);
setup_uart(newBaud, stream)
Dynamically change the UART
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
60
Dual UART Example
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,
stream=HW_UART)
#use rs232(baud=9600, xmit=PIN_D0, rcv=PIN_B0,
stream=SW_UART, disable_ints)
fprintf(HW_UART, HELLO HARDWARE UART\r\n);
fprintf(SW_UART, HELLO SOFTWARE UART\r\n);
if (kbhit(HW_UART)) {
c=fgetc(HW_UART);
fputc(c,SW_UART);
}
if (kbhit(SW_UART)) {
c=fgetc(SW_UART);
fputc(c,HW_UART);
}
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
61
printf() Redirection
printf() can be redirected to a
user-defined function
Example:
void LCDPut(char c);
printf(LCDPut, %U, val);
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
62
Buffering and Flow Control
#use rs232() parameters
RECEIVE_BUFFER=x and
TRANSMIT_BUFFER=x sets size
RTS=PIN_XX sets RTS flow control
CTS=PIN_XX sets CTS flow control
API doesnt change (getc(), putc())
ISR use optional
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
63
2
I C
Use any pins or multiple ports
#use spi(parameters)
and SPI Support
Parameters for pins, speed, streams
spi_xfer()
#use i2c(parameters)
Config master/slave, speed, pins, streams
i2c_start(), i2c_stop(), i2c_write(),
i2c_read()
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
64
Built-In Functions
Peripherals and More
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
65
#use_pwm()
Portable, easy to use
library for PWM control
#use pwm(parameters)
Set pin, timer, time base, frequency,
and more
set_pwm_duty_percent(val)
set_pwm_frequency(freq)
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
66
#use capture()
Portable library for using
capture peripheral
#use capture(parameters)
Set pin, timer, time base, edge, etc.
#defines math helper values
boolean = get_capture_event()
time = get_capture_time()
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
67
#use touchpad()
Capacitive Touch (CSM, CTMU)
#use touchpad()
Options for current range, frequency
threshold, scan time, character
output, and more
#use touchpad(PIN_B0=A)
boolean = touchpad_hit()
char = touchpad_getc()
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
68
A/D Converter
setup_adc(mode)
setup_adc_ports(config)
Configure pins for analog or digital
set_adc_channel(channel)
Configure the ADC
Set the channel for subsequent reads
val = read_adc()
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
69
Overview of Other
Functions
#use rtos() - RTOS
read_eeprom(), write_eeprom()
access internal EEPROM
#pin_select(), pin_select()
configure reprogrammable pins
setup_crc(), crc_calc() perform
CRC calculations
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
70
Getting Help
So many peripherals,
how do I get help?
1.
2.
In PCW IDE, Press F1 for
context sensitive help on
keyword
In manual, look for section
labeled Functional Overviews
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
71
Dont forget
Drivers and Examples!
Drivers provided for complex features
or external peripherals
EEPROMs, LCDs, USB, FAT, etc.
Many example programs
Always kept up-to-date
Before you start a project, examine the
libraries and example programs CCS
provides you to reduce your
development time
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
72
Lab #3
Analog to Digital Conversion
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
73
Lab 3 Objective
Read A/D Conversion
Light LEDs based upon voltage
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
74
Lab 3 Hints
Handout has help, finished
example
ADC Troubles?
Did you enable A/D with
setup_adc()?
Did you set the channel?
Bored? Try Extra Credit
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
75
Programming Details
Interrupts
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
76
Pop Quiz
What does your ISR
need to do?
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
77
Interrupt Service Routine
CCS C provides an ISR
Saves status and scratch registers
Checks enable/flags, goes to user
ISR function for that flag
Clears interrupt flag (if needed)
Restores status/scratch registers
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
78
ISR API
enable_interrupts(INT_*)
enable_interrupts(GLOBAL)
enable_interrupts(INT_TIMER0)
disable_interrupts(INT_*)
clear_interrupt(INT_*)
bool = interrupt_active(INT_*)
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
79
ISR API
#INT_*
Follow function used for that ISR
#INT_TIMER0
void isr_timer0(void)
{
//HANDLE TIMER0 OVERFLOW
}
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
80
ISR Special Identifiers
#INT_GLOBAL
Function overrides CCS ISR
User must save and restore all
registers altered by their ISR (W,
STATUS, scratch used by compiler,
etc.)
#INT_DEFAULT
Traps unknown interrupt
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
81
ISR Options
Keywords that may follow #INT_*:
high (PIC18) Interrupt is high priority
fast (PIC18) Like high, but no save
fast (PCD) Uses shadow registers
level=(0..7) (PCD) sets ISR level
noclear Will not clear interrupt flags
#device HIGH_INTS=TRUE
Must set to use high ISR on PIC18
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
82
#include <18F46K22.H>
#device HIGH_INTS=TRUE
#INT_RDA HIGH
void IsrUartRx(void)
{
/* some code */
}
#INT_TIMER0 NOCLEAR
Void IsrTimer0(void)
{
clear_interrupt(INT_TIMER0);
//some code
}
void main(void)
{
enable_interrupts(GLOBAL);
enable_interrupts(INT_RDA);
enable_interrupts(INT_TIMER0);
// some code
}
Lab #4
Interrupts
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
84
Lab 4: Objectives
Learn how to use the CCS ISR
Learn how the CCS built-in
functions control Timer0 and
GPIO
Implement a stopwatch that
measures button press time
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
85
Lab 4 Hints
Handout has help and solution
TIPS:
Press F1 to get compiler help manual
#INT_TIMER0
setup_timer_0(RTCC_DIV_256)
enable_interrupts(xxxx)
input(PIN_XX)
Bored? Try Extra Credit
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
86
Class Summary
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
87
Class Summary
Leaving this class you should:
Be able to use your C knowledge and
write applications using the CCS C
Compiler
Know the ways the CCS C Compiler
speeds up development time
Develop new application and coding
ideas
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
88
Q&A
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
89
Thank You!
Please fill out evaluation form.
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
90
Trademarks
The Microchip name and logo, the Microchip logo, dsPIC, KeeLoq, KeeLoq logo, MPLAB,
PIC, PICmicro, PICSTART, PIC32 logo, rfPIC and UNI/O are registered trademarks of
Microchip Technology Incorporated in the U.S.A. and other countries.
FilterLab, Hampshire, HI-TECH C, Linear Active Thermistor, MXDEV, MXLAB, SEEVAL
and The Embedded Control Solutions Company are registered trademarks of Microchip
Technology Incorporated in the U.S.A.
Analog-for-the-Digital Age, Application Maestro, chipKIT, chipKIT logo, CodeGuard,
dsPICDEM, dsPICDEM.net, dsPICworks, dsSPEAK, ECAN, ECONOMONITOR, FanSense,
HI-TIDE, In-Circuit Serial Programming, ICSP, Mindi, MiWi, MPASM, MPLAB Certified
logo, MPLIB, MPLINK, mTouch, Omniscient Code Generation, PICC, PICC-18, PICDEM,
PICDEM.net, PICkit, PICtail, REAL ICE, rfLAB, Select Mode, Total Endurance, TSHARC,
UniWinDriver, WiperLock and ZENA are trademarks of Microchip Technology
Incorporated in the U.S.A. and other countries.
SQTP is a service mark of Microchip Technology Incorporated in the U.S.A.
All other trademarks mentioned herein are property of their respective companies.
2012, Microchip Technology Incorporated, All Rights Reserved.
2012 Microchip Technology Incorporated. All Rights Reserved.
1620 CCS
Slide
91