336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Syntax & Functions
문법 & 함수
http://www.ccsinfo.com/content.php?page=syntax-functions
ccs_c_manual.pdf
▼예제들 포함된 사이트
http://www.ccsinfo.com/content.php?page=compexamples
PCM (supports most PIC12 and PIC16 devices):
PCD (supports PIC24/dsPIC® DSC families):
간단한 학교 프로젝트의 경우는 PCM계열의 칩으로 마무리할 수 있다.
▼예제를 통해 CCSC 만의 문법이 어떻게 차이가 있는지 살펴보자.
문법공부를 따로하기 보다는 해당 예제를 통해 익히는게 효율적이다.
#include <16c74.h> //칩 선언
#fuses HS,NOWDT,NOPROTECT //Freq. WDT, Code Protection 선언
#use delay(clock=20000000) //20MHz사용
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) // Jumpers: 8 to 11, 7 to 12
#include <input.c>
#byte port_b = 6
#define FOUR_PHASE TRUE
#ifdef FOUR_PHASE
byte const POSITIONS[4] = {0b0101,
0b1001,
0b1010,
0b0110};
#else
byte const POSITIONS[8] = {0b0101,
0b0001,
0b1001,
0b1000,
0b1010,
0b0010,
0b0110,
0b0100};
#endif
drive_stepper(BYTE speed, char dir, BYTE steps) {
static BYTE stepper_state = 0;
BYTE i;
for(i=0; i<steps; ++i) {
delay_ms(speed);
set_tris_b(0xf0);
port_b = POSITIONS[ stepper_state ];
if(dir!='R')
stepper_state=(stepper_state+1)&(sizeof(POSITIONS)-1);
else
stepper_state=(stepper_state-1)&(sizeof(POSITIONS)-1);
}
}
use_pot() {
BYTE value;
setup_adc(adc_clock_internal);
set_adc_channel( 1 );
printf("rn");
while( TRUE ) {
value=read_adc();
printf("%2Xr",value);
if(value<0x80)
drive_stepper(value,'R',8);
else if(value>0x80)
drive_stepper(128-(value-128),'F',8);
}
}
use_switch(BYTE speed, char dir) {
BYTE steps;
printf("nrSteps per press: ");
steps = gethex();
while(true) {
while(input(PIN_B7)) ;
drive_stepper(speed,dir,steps);
while(!input(PIN_B7)) ;
delay_ms(100);
}
}
main() {
byte speed,steps;
char dir;
setup_port_a(RA0_RA1_ANALOG);
while (TRUE) {
printf("nrSpeed (hex): ");
speed = gethex();
if(speed==0)
use_pot();
printf("nrDirection (F,R): ");
dir=getc()|0x20;
putc(dir);
printf("nrSteps (hex): ");
steps = gethex();
if(steps==0)
use_switch(speed,dir);
drive_stepper(speed,dir,steps);
}
}
Simple A/D
/////////////////////////////////////////////////////////////////////////
//// EX_ADMM.C ////
//// ////
//// This program displays the min and max of 30 A/D samples over ////
//// the RS-232 interface. The process is repeated forever. ////
//// ////
//// Configure the CCS prototype card as follows: ////
//// Insert jumpers from: 11 to 17, 12 to 18 and 9 to 16 ////
//// Use the #9 POT to vary the voltage. ////
/////////////////////////////////////////////////////////////////////////
#include <16f877a.h>
#fuses HS,NOLVP,NOWDT,PUT //HighSpeed, No Low Voltage Prgming, Power Up Timer
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)
void main()
{
int i, value, min, max;
printf("Sampling:");
setup_adc_ports( RA0_ANALOG );
setup_adc( ADC_CLOCK_INTERNAL );
set_adc_channel( 0 );
do
{ //Takes 30 samples from pin A0
min = 255; //and displays the min and max
max = 0; //values for that 100ms period
for(i = 0; i <= 30; ++i)
{
delay_ms(100);
value = read_adc();
if(value < min)
min = value;
if(value > max)
max = value;
}
printf("nrMin:%x MAX: %x", min, max);
} while (TRUE);
}