Syntax and Functions
CCS C Compilers include Standard C Constructs, numerous Pre-Processor Functions, and hundreds of Built-In Functions. All practical ANSI C standard requirements are implemented. C syntax and special functions have a uniform syntax across all chip families, allowing for migration to a new chip trivial.
Data Types
Items marked with * are for 24-bit parts only.
Standard C Syntax
if, else, while, do, switch, case, for, return, goto, break, continue
! ~ ++ -- * = = , & |
* / % << >> ^ && || ?:
<= < > >= == !=
= += -= *= /= %= >>= <<= &= ^=m |=
typedef, static, auto, const, enum, struct, union
Arrays up to 5 subscripts
Structures and Unions may be nested
Custom bit fields (1-8 bits) within structures
Enumurated types
Constant variables, arrays, structures and strings
Full function parameter support (any number and kind)
C++ reference parameters and comments allowed
Pre-Processors
Built-In Libraries (+show )
#ocs
#use capture
#use delay
#use dynamic_memory
#use fast_io
#use fixed_io
#use i2c
#use profile
#use pwm
#use rs232
#use spi
#use standard_io
#use timer
#use touchpad
Compiler Control (+show )
#case
#ignore_warnings
#line
#module
#opt
#priority
#profile
Device Specification (+show )
#device
#fuses
#hexcomment
#id
#pin_select
#serialize
#todo
Memory Control (+show )
#asm
#asm asis
#bank_dma
#bank1
#bankx
#banky
#bit
#byte
#endasm
#fill_rom
#locate
#org
#reserve
#rom
#type
#word
#zero_local_ram
#zero_ram
Pre-Defined Identifiers (+show )
_ _address_ _
_ _buildcount_ _
_ _date_ _
_ _device_ _
_ _file_ _
_ _filename_ _
_ _line_ _
_ _pcb_ _
_ _pcd_ _
_ _pch_ _
_ _pcm_ _
_ _time_ _
Function Qualifiers (+show )
_ _attribute_ _
#inline
#int_xxxx
#int_default
#int_global
#recursive
#separate
_ _unicode_ _
Standard C (+show )
#define
defined()
definedinc()
#elif
#else
#endif
#error
#if
#ifdef
#ifndef
#include
#list
#nolist
#pragma
#undef
#warning
Built-In Functions
Operation Amplifier
Programmable Gain Amplifier (PGA)
A/D Conversion (ADC)
Analog Comparator
D/A Conversion (DAC)
Proportional Integral Derivative (PID)
Quadrature Encoder Interface (QEI)
CAN Bus
Single-Edge Nibble Transmission (SENT)
Bit/Byte Manipulation
Cyclic Redundancy Check (CRC)
Data Converter Interface (DCI)
Data Signal Modulator (DSM)
Environment
Input Capture / Output Capture
General Purpose I/O
I2C I/O
Peripheral Pin Select (PPS)
RS232 I/O
SPI Two Wire I/O
Master Program Memory
Master Slave Interface (MSI)
Parallel Ports (PMP, PSP)
Configuration Memory
Direct Memory Access (DMA)
External Memory
RAM / Extended RAM
ROM / Data EEPROM / Program EEPROM
Real Time Operating System (RTOS)
Code Profile
Internal Oscillator
Numerically Controlled Oscillator (NCO)
Configurable Logic Cell (CLC)
Programmable Ramp Generator (PRG)
Reset
Capture / Compare / PWM (CCP)
Complementary Output Generator (COG)
Complementary Waveform Generator (CWG)
High Speed PWM
Motor PWM
Power PWM
Programmable Switch Mode Controller (PSMC)
Standard C Char / String
Standard C Math
Standard C Memory
Standard C Special
Active Clock Tuning (ACT)
Angular Timer (AT)
Deadman Timer (DMT)
Delays
Interrupts
Real Time Clock and Calendar (RTC, RTCC)
Signal Measurement Timer (SMT)
Sleep
Timers
Watch Dog Timer (WDT)
Capacitive Touch Pad
Internal LCD
USB
Brownout
Constant Current Source
Voltage Reference / Comparator
Zero-Cross Detection (ZCD)
Operation Amplifier
setup_opamp1( )
setup_opamp2( )
setup_opamp3( )
setup_opamp4( )
Programmable Gain Amplifier (PGA)
A/D Conversion (ADC)
adc_done( )
adc_done2( )
adc_read( )
adc_status( )
adc_write( )
get_adc_ports( )
high_speed_adc_done( )
read_adc( )
read_adc2( )
read_high_speed_adc( )
read_sd_adc( )
set_adc_channel( )
set_adc_channel2( )
set_adc_trigger( )
set_analog_pins( )
set_sd_adc_channel( )
set_dedicated_adc_channel( )
setup_adc( )
setup_adc2( )
setup_adc_ports( )
setup_adc_ports2( )
setup_adc_reference( )
setup_adc_reference2( )
setup_dedicated_adc( )
setup_high_speed_adc( )
setup_high_speed_adc_pair( )
setup_sd_adc( )
setup_sd_adc_calibration( )
Analog Comparator
setup_comparator( )
setup_comparator_dac( )
setup_comparator_filter( )
setup_comparator_mask( )
setup_comparator_slope( )
setup_comparator_x( )
D/A Conversion (DAC)
dac_write( )
setup_dac( )
Proportional Integral Derivative (PID)
pid_busy( )
pid_get_result( )
pid_read( )
pid_write( )
setup_pid( )
Quadrature Encoder Interface (QEI)
qei_get_capture( )
qei_get_count( )
qei_get_index_count( )
qei_get_interval_count( )
qei_get_velocity_count( )
qei_set_count( )
qei_set_index_count( )
qei_status( )
setup_qei( )
CAN Bus
can_abort( )
can_associate_filter_to_buffer( )
can_associate_filter_to_mask( )
can_config_DMA( )
can_disable_filter( )
can_disable_interrupts( )
can_disable_rtr( )
can_enable_b_receiver( )
can_enable_b_transfer( )
can_enable_filter( )
can_enable_interrupts( )
can_enable_rtr( )
can_fifo_getd( )
can_get_id( )
can_getd( )
can_init( )
can_kbhit( )
can_load_rtr( )
can_putd( )
can_set_baud( )
can_set_buffer_id( )
can_set_buffer_size( )
can_set_functional_mode( )
can_set_id( )
can_set_mode( )
can_tbe( )
can_trb0_putd( )
Single-Edge Nibble Transmission (SENT)
sent_getd( )
sent_putd( )
sent_status( )
setup_sent( )
Bit/Byte Manipulation
_mul( )
bit_clear( )
bit_first( )
bit_last( )
bit_set( )
bit_test( )
make16( )
make32( )
make8( )
rotate_left( )
rotate_right( )
shift_left( )
shift_right( )
swap( )
Cyclic Redundancy Check (CRC)
crc_calc( )
crc_calc8( )
crc_calc16( )
crc_calc32( )
crc_init( )
crc_read( )
crc_write( )
setup_crc( )
Data Converter Interface (DCI)
dci_data_received( )
dci_read( )
dci_start( )
dci_transmit_ready( )
dci_write( )
setup_dci( )
Data Signal Modulator (DSM)
Input Capture / Output Capture
get_capture( )
setup_capture( )
setup_compare( )
General Purpose I/O
get_tris_x( )
input( )
input_change_x( )
input_state( )
input_x( )
output_bit( )
output_drive( )
output_float( )
output_high( )
output_low( )
output_toggle( )
output_x( )
port_a_current_source( )
port_x_pullups( )
set_input_level_x( )
set_open_drain_x( )
set_pulldown( )
set_pullup( )
set_slow_slew_x( )
set_tris_x( )
I2C I/O
i2c_init( )
i2c_isr_state( )
i2c_poll( )
i2c_read( )
i2c_slaveaddr( )
i2c_speed( )
i2c_start( )
i2c_stop( )
i2c_transfer( )
i2c_transfer_in( )
i2c_transfer_out( )
i2c_write( )
Peripheral Pin Select (PPS)
RS232 I/O
assert( )
fgetc( )
fgets( )
fprintf( )
fputc( )
fputc_send( )
fputs( )
fscanf( )
getc( )
getch( )
getchar( )
gets( )
kbhit( )
perror( )
printf( )
putc( )
putc_send( )
putchar( )
puts( )
rcv_buffer_bytes( )
rcv_buffer_full( )
scanf( )
set_uart_speed( )
setup_uart( )
tx_buffer_available( )
tx_buffer_bytes( )
tx_buffer_full( )
SPI Two Wire I/O
setup_spi( )
setup_spi2( )
setup_spi3( )
setup_spi4( )
spi_data_is_in( )
spi_data_is_in2( )
spi_data_is_in3( )
spi_data_is_in4( )
spi_init( )
spi_prewrite( )
spi_read( )
spi_read_16( )
spi_read_32( )
spi_read2( )
spi_read2_16( )
spi_read2_32( )
spi_read3( )
spi_read3_16( )
spi_read3_32( )
spi_read4( )
spi_read4_16( )
spi_read4_32( )
spi_set_txcnt( )
spi_speed( )
spi_transfer_write( )
spi_write( )
spi_write2( )
spi_write3( )
spi_write4( )
spi_xfer( )
spi_xfer_in( )
Master Program Memory
load_slave_program( )
verify_slave_program( )
Master Slave Interface (MSI)
msi_fifo_status( )
msi_mailbox_status( )
msi_read_fifo( )
msi_read_mailbox( )
msi_status( )
msi_write_fifo( )
msi_write_mailbox( )
setup_msi( )
Parallel Ports (PMP, PSP)
pmp_address( )
pmp_error
psp_error( )
pmp_input_full( )
psp_input_full( )
pmp_output_full( )
psp_output_full( )
pmp_overflow( )
psp_overflow( )
pmp_read( )
psp_read( )
pmp_timeout( )
psp_timeout( )
pmp_write( )
psp_write( )
setup_pmp( )
setup_psp( )
Configuration Memory
read_config_info( )
read_configuration_memory( )
read_device_info( )
write_configuration_memory( )
Direct Memory Access (DMA)
dma_start( )
dma_status( )
setup_dma( )
External Memory
read_external_memory( )
setup_external_memory( )
write_external_memory( )
RAM / Extended RAM
read_bank( )
read_extended_ram( )
write_extended_ram( )
write_bank( )
ROM / Data EEPROM / Program EEPROM
erase_eeprom( )
erase_program_eeprom( )
erase_program_memory( )
goto_address( )
label_address( )
read_calibration( )
read_calibration_memory( )
read_eeprom( )
read_program_eeprom( )
read_program_memory( )
read_program_memory8( )
read_rom_memory( )
write_eeprom( )
write_program_eeprom( )
write_program_memory( )
write_program_memory8( )
Real Time Operating System (RTOS)
rtos_await( )
rtos_disable( )
rtos_enable( )
rtos_msg_poll( )
rtos_msg_read( )
rtos_msg_send( )
rtos_overrun( )
rtos_run( )
rtos_signal( )
rtos_stats( )
rtos_terminate( )
rtos_wait( )
rtos_yield( )
Numerically Controlled Oscillator (NCO)
get_nco_accumulator( )
get_nco_inc_value( )
set_nco_accumulator( )
set_nco_inc_value( )
setup_nco( )
Configurable Logic Cell (CLC)
clc1_setup_gate( )
clc2_setup_gate( )
clc3_setup_gate( )
clc4_setup_gate( )
clc1_setup_input( )
clc2_setup_input( )
clc3_setup_input( )
clc4_setup_input( )
setup_clc1( )
setup_clc2( )
setup_clc3( )
setup_clc4( )
Programmable Ramp Generator (PRG)
prgx_status( )
setup_prgx( )
Reset
reset_cpu( )
restart_cause( )
Capture / Compare / PWM (CCP)
clear_pwm1_interrupt( )
clear_pwm2_interrupt( )
clear_pwm3_interrupt( )
clear_pwm4_interrupt( )
clear_pwm5_interrupt( )
clear_pwm6_interrupt( )
disable_pwm1_interrupt( )
disable_pwm2_interrupt( )
disable_pwm3_interrupt( )
disable_pwm4_interrupt( )
disable_pwm5_interrupt( )
disable_pwm6_interrupt( )
enable_pwm1_interrupt( )
enable_pwm2_interrupt( )
enable_pwm3_interrupt( )
enable_pwm4_interrupt( )
enable_pwm5_interrupt( )
enable_pwm6_interrupt( )
get_capture_ccp1( )
get_capture_ccp2( )
get_capture_ccp3( )
get_capture_ccp4( )
get_capture_ccp5( )
get_capture32( )
get_capture32_ccp1( )
get_capture32_ccp2( )
get_capture32_ccp3( )
get_capture32_ccp4( )
get_capture32_ccp5( )
get_capture_event( )
get_capture_time( )
get_timer_ccp1( )
get_timer_ccp2( )
get_timer_ccp3( )
get_timer_ccp4( )
get_timer_ccp5( )
pwm_off( )
pwm_set_duty( )
pwm_set_duty_percent( )
pwm_set_frequency( )
pwm1_interrupt_active( )
pwm2_interrupt_active( )
pwm3_interrupt_active( )
pwm4_interrupt_active( )
pwm5_interrupt_active( )
pwm6_interrupt_active( )
set_ccp1_compare_time( )
set_ccp2_compare_time( )
set_ccp3_compare_time( )
set_ccp4_compare_time( )
set_ccp5_compare_time( )
set_compare_time( )
set_pwm1_duty( )
set_pwm2_duty( )
set_pwm3_duty( )
set_pwm4_duty( )
set_pwm5_duty( )
set_pwm_duty( )
set_pwm1_offset( )
set_pwm2_offset( )
set_pwm3_offset( )
set_pwm4_offset( )
set_pwm5_offset( )
set_pwm6_offset( )
set_pwm1_period( )
set_pwm2_period( )
set_pwm3_period( )
set_pwm4_period( )
set_pwm5_period( )
set_pwm6_period( )
set_pwmx_phase( )
set_timer_ccp1( )
set_timer_ccp2( )
set_timer_ccp3( )
set_timer_ccp4( )
set_timer_ccp5( )
set_timer_ccp6( )
set_timer_period_ccp1( )
set_timer_period_ccp2( )
set_timer_period_ccp3( )
set_timer_period_ccp4( )
set_timer_period_ccp5( )
set_timer_period_ccp6( )
setup_compare( )
setup_pwm1( )
setup_pwm2( )
setup_pwm3( )
setup_pwm4( )
setup_ccp1( )
setup_ccp2( )
setup_ccp3( )
setup_ccp4( )
setup_ccp5( )
setup_ccp6( )
Complementary Output Generator (COG)
cog_restart( )
cog2_restart( )
cog3_restart( )
cog4_restart( )
cog_status( )
cog2_status( )
cog3_status( )
cog4_status( )
set_cog_blanking( )
set_cog2_blanking( )
set_cog3_blanking( )
set_cog4_blanking( )
set_cog_dead_band( )
set_cog2_dead_band( )
set_cog3_dead_band( )
set_cog4_dead_band( )
set_cog_phase( )
set_cog2_phase( )
set_cog3_phase( )
set_cog4_phase( )
setup_cog( )
setup_cog2( )
Complementary Waveform Generator (CWG)
cwg_restart( )
cwg2_restart( )
cwg3_restart( )
cwg_status( )
cwg2_status( )
cwg3_status( )
setup_cwg( )
setup_cwg2( )
setup_cwg3( )
High Speed PWM
get_hspwm_capture( )
get_hspwm_feedback( )
get_hspwm_status( )
hspwm_do_capture( )
hspwm_stop_pwm( )
hspwm_trigger_pwm( )
hspwm_update( )
set_hspwm_duty( )
set_hspwm_duty_adjustment( )
set_hspwm_event( )
set_hspwm_override( )
set_hspwm_period( )
set_hspwm_phase( )
set_hspwm_scaling( )
set_hspwm_secondary_event( )
set_hspwm_trigger_x( )
setup_hspwm( )
setup_hspwm_blanking( )
setup_hspwm_chop_clock( )
setup_hspwm_current_limit( )
setup_hspwm_event( )
setup_hspwm_fault( )
setup_hspwm_feed_forward( )
setup_hspwm_logic_x( )
setup_hspwm_secondary( )
setup_hspwm_sync( )
setup_hspwm_trigger( )
setup_hspwm_unit( )
setup_hspwm_unit_chop_clock( )
Motor PWM
get_motor_pwm_count( )
get_motor_pwm_event( )
set_motor_pwm_duty( )
set_motor_pwm_event( )
set_motor_unit( )
setup_motor_pwm( )
Power PWM
set_power_pwm_override( )
set_power_pwmx_duty( )
setup_power_pwm( )
setup_power_pwm_faults( )
setup_power_pwm_pins( )
Programmable Switch Mode Controller (PSMC)
psmc_blanking( )
psmc_deadband( )
psmc_duty( )
psmc_freq_adjust( )
psmc_modulation( )
psmc_pins( )
psmc_shutdown( )
psmc_sync( )
setup_psmc( )
Standard C Char / String
atof( )
atoi( )
atol( )
atol32( )
isalnum( )
isalpha( )
isamong( )
iscntrl( )
isdigit( )
isgraph( )
islower( )
isprint( )
ispunct( )
isspace( )
isupper( )
isxdigit( )
itoa( )
sprintf( )
strcat( )
strchr( )
strcmp( )
strcoll( )
strcopy( )
strcpy( )
strcspn( )
strerror( )
stricmp( )
strlen( )
strlwr( )
strncat( )
strncmp( )
strncpy( )
strpbrk( )
strrchr( )
strspn( )
strstr( )
strtod( )
strtof( )
strtof48( )
strtok( )
strtol( )
strtoul( )
strxfrm( )
tolower( )
toupper( )
Standard C Math
abs( )
acos( )
asin( )
atan( )
atan2( )
atoe( )
atof( )
atof48( )
atof64( )
atoi( )
atoi32( )
atoi48( )
atoi64( )
atol( )
atol32( )
ceil( )
cos( )
cosh( )
div( )
exp( )
fabs( )
floor( )
fmod( )
frexp( )
labs( )
ldexp( )
ldiv( )
log( )
log10( )
modf( )
pow( )
pwr( )
sin( )
sinh( )
sqrt( )
tan( )
tanh( )
Standard C Memory
calloc( )
free( )
longjmp( )
malloc( )
memchr( )
memcmp( )
memcpy( )
memmove( )
memset( )
offsetof( )
offsetofbit( )
realloc( )
setjmp( )
Standard C Special
bsearch( )
mblen( )
mbstowcs( )
mbtowc( )
nargs( )
qsort( )
rand( )
srand( )
va_arg( )
va_end( )
va_start( )
wcstombs( )
wctomb( )
Active Clock Tuning (ACT)
act_status( )
setup_act( )
Angular Timer (AT)
at_clear_interrupts( )
at_disable_interrupts( )
at_enable_interrupts( )
at_get_capture( )
at_get_missing_pulse_delay( )
at_get_period( )
at_get_phase_counter( )
at_get_resolution( )
at_get_set_point( )
at_get_set_point_error( )
at_get_status( )
at_interrupt_active( )
at_set_compare_time( )
at_set_missing_pulse_delay( )
at_set_resolution( )
at_set_set_point( )
at_setup_cc( )
setup_at( )
Deadman Timer (DMT)
clear_dmt( )
disable_dmt( )
dmt_status( )
enable_dmt( )
read_dmt( )
setup_dmt( )
Delays
delay_cycles( )
delay_ms( )
delay_us( )
pll_locked( )
Interrupts
clear_interrupt( )
disable_interrupts( )
enable_interrupts( )
ext_int_edge( )
interrupt_active( )
interrupt_enabled( )
jump_to_isr( )
Real Time Clock and Calendar (RTC, RTCC)
get_rtcc( )
rtc_alarm_read( )
rtc_alarm_write( )
rtc_read( )
rtc_status( )
rtc_tsx_read( )
rtc_write( )
set_rtcc( )
setup_counters( )
setup_rtc( )
setup_rtc_alarm( )
Signal Measurement Timer (SMT)
setup_smtx( )
smtx_read( )
smtx_reset_timer( )
smtx_start( )
smtx_status( )
smtx_stop( )
smtx_write( )
smtx_update( )
Timers
get_rtcc( )
get_ticks( )
get_timerA( )
get_timerB( )
get_timerx( )
get_timerxy( )
set_rtcc( )
set_ticks( )
set_timerA( )
set_timerB( )
set_timerx( )
set_timerxy( )
setup_counters( )
setup_timer_0( )
setup_timer_1( )
setup_timer_2( )
setup_timer_3( )
setup_timer_4( )
setup_timer_5( )
setup_timer_A( )
setup_timer_B( )
setup_timerx( )
Watch Dog Timer (WDT)
get_wdt( )
release_io( )
restart_wdt( )
setup_counters( )
setup_wdt( )
Capacitive Touch Pad
touchpad_getc( )
touchpad_hit( )
touchpad_state( )
Internal LCD
lcd_contrast( )
lcd_load( )
lcd_symbol( )
setup_lcd( )
USB
usb_attach( )
usb_attached( )
usb_cdc_getc( )
usb_cdc_kbhit( )
usb_cdc_putc( )
usb_cdc_putc_fast( )
usb_cdc_putready( )
usb_cdc_puts( )
usb_detach( )
usb_enumerated( )
usb_get_packet( )
usb_gets( )
usb_init( )
usb_init_cs( )
usb_kbhit( )
usb_put_packet( )
usb_puts( )
usb_task( )
Brownout
brownout_enable( )
restart_cause( )
Voltage Reference / Comparator
setup_comparator( )
setup_low_volt_detect( )
setup_vref( )
setup_vref2( )
Zero-Cross Detection (ZCD)
setup_zcd( )
zcd_status( )