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);
}


