PCD Compiler Examples
The CCS C compiler includes a library of example programs for many common applications. Each example program contains a header with instructions on how to run the example, and if necessary, the wiring instructions for interfacing external devices.
Below you will find a few specific example programs included with our PCD compiler which demonstrate the compiler's functionality for the dsPIC® chips. Click here for a full list of example files and source code drivers included with the CCS C Compiler.
Jump to: Simple Square Wave Generator | Watchdog Timer | A/D Conversion | List of Example Files
Simple Square Wave Generator
///////////////////////////////////////////////////////////////////////// //// EX_SQW.C //// //// //// //// This program displays a message over the RS-232 and waits for //// //// any keypress to continue. The program will then begin a 1khz //// //// square wave over I/O pin B4. //// //// //// //// Comment out the printf's and getc to eliminate the RS232 and //// //// just output a square wave. //// //// //// //// Change both delay_us to delay_ms to make the frequency 1 hz. //// //// This will be more visable on a LED. //// //// //// //// //// //// Change the device, clock and RS232 pins for your hardware if //// //// needed. //// ///////////////////////////////////////////////////////////////////////// #include <30F2010.h> //#device ICD=TRUE // For using the debugger, un-comment #use delay(crystal=20mhz) // UART1A specifies the alternate UART pins Pin_C13, Pin_C14 // use UART1 to sprcify UART for pins Pin_F3, Pin_F2 #use rs232(baud=9600, UART1A) void main() { printf("Press any key to beginnr"); getc(); printf("1 khz signal activatednr"); while (TRUE) { output_high(PIN_B4); delay_us(500); output_low(PIN_B4); delay_us(500); } }
Watchdog Timer
///////////////////////////////////////////////////////////////////////// //// EX_WDT.C //// //// //// //// This program demonstartes the watchdog timer. If the user //// //// does not hit a key in the set amount of time, the processor //// //// restarts, and tells the user why it restarted. //// //// //// //// Jumpers: //// //// PCH pin C7 to RS232 RX, pin C6 to RS232 TX //// //// PCD none //// //// //// //// This example will work with the PCD compiler. //// //// The following conditional compilation lines are used to //// //// include a valid device for each compiler. Change the device, //// //// clock and RS232 pins for your hardware if needed. //// ///////////////////////////////////////////////////////////////////////// //// (C) Copyright 1996,2003 Custom Computer Services //// //// This source code may only be used by licensed users of the CCS //// //// C compiler. This source code may only be distributed to other //// //// licensed users of the CCS C compiler. No other use, //// //// reproduction or distribution is permitted without written //// //// permission. Derivative programs created using this software //// //// in object code form are not restricted in any way. //// ///////////////////////////////////////////////////////////////////////// #ifndef __PCD__ #error This example is only for dsPIC/PIC24 devices #endif #include <30F5011.h> #fuses HS,NOPROTECT,WDT,WPSB1,WPSA512 #use delay(clock=20000000) #use rs232(baud=9200, UART1) main() { switch ( restart_cause() ) { case RESTART_WATCHDOG: { printf("rnRestarted processor because of watchdog timeout!rn"); break; } case RESTART_POWER_UP: { printf("rnNormal power up!rn"); break; } } setup_wdt(WDT_ON); while(TRUE) { restart_wdt(); printf("Hit any key to avoid a watchdog timeout.rn"); getc(); } }
A/D Conversion
///////////////////////////////////////////////////////////////////////// //// EX_ADMM10.C //// //// //// //// This program displays the min and max of 30 A/D samples over //// //// the RS-232 interface. The process is repeated forever. //// //// //// //// If required configure the CCS prototype card as follows: //// //// Insert jumper from output of POT to pin A5 //// //// Use a 10K POT to vary the voltage. //// //// //// //// Jumpers: //// //// PCM,PCH pin C7 to RS232 RX, pin C6 to RS232 TX //// //// PCD none //// //// //// //// This example will work with the PCM, PCH, and PCD compilers. //// //// The following conditional compilation lines are used to //// //// include a valid device for each compiler. Change the device, //// //// clock and RS232 pins for your hardware if needed. //// ///////////////////////////////////////////////////////////////////////// //// (C) Copyright 1996,2007 Custom Computer Services //// //// This source code may only be used by licensed users of the CCS //// //// C compiler. This source code may only be distributed to other //// //// licensed users of the CCS C compiler. No other use, //// //// reproduction or distribution is permitted without written //// //// permission. Derivative programs created using this software //// //// in object code form are not restricted in any way. //// ///////////////////////////////////////////////////////////////////////// #include <30F5011.h> #fuses HS,NOWDT #use delay(clock=20000000) #use rs232(baud=9600, UART1) void main() { int i, value, min, max; printf("Sampling:"); setup_adc_ports( sAN0 ); setup_adc( ADC_CLOCK_INTERNAL ); set_adc_channel( 0 ); do { min=255; max=0; for(i=0; i<=30; ++i) { delay_ms(100); value = read_adc(); if(valuemax) max=value; } printf("nrMin: %2X Max: %2Xnr",min,max); } while (TRUE); }