PIC CCS C语言程序范例_第1页
PIC CCS C语言程序范例_第2页
PIC CCS C语言程序范例_第3页
PIC CCS C语言程序范例_第4页
PIC CCS C语言程序范例_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、    PIC CCS C语言程序范例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. Here are thre

2、e such example programs included with our compiler, as well as a list file generated by the compiler which shows the assembly generated toThe 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

3、 example, and if necessary, the wiring instructions for interfacing external devices.Here are three such example programs included with our compiler, as well as a list file generated by the compiler which shows the assembly generated to correspond with the C code.For a full list of example files and

4、 source code drivers included with the CCS C compiler go hereJump to: Stepper Motor Controller | Seconds Timer | Simple A/D | Example List File | List of Example FilesStepper Motor Controller/                  

5、      EX_STEP.C                                /            

6、                                                  

7、   /  This program interfaces to a stepper motor.  The program will  /  use the RS-232 interface to either control the motor with a    /  analog input, a switch input or by RS-232 command.          &#

8、160;  /                                                

9、                 /  Configure the CCS prototype card as follows:                   /     Connect stepper

10、motor to pins 47-50 (B0-B3)                 /     Conenct 40 to 54 (pushbutton)                    &

11、#160;          /     Connect 9 to 15 (pot)                                &

12、#160;      /     See additional connections below.                           /        (C)

13、Copyright 1996,2001 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,&

14、#160;           / reproduction or distribution is permitted without written       / permission.  Derivative programs created using this software    / in object code form are not restricted in any way.

15、              /#include <16c74.h>#fuses HS,NOWDT,NOPROTECT#use delay(clock=20000000)#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#i

16、fdef FOUR_PHASEbyte const POSITIONS4 = 0b0101,                           0b1001,               

17、            0b1010,                           0b0110;#elsebyte const POSITIONS8 = 0b0101,    &#

18、160;                      0b0001,                           0b100

19、1,                           0b1000,                      &#

20、160;    0b1010,                           0b0010,                 

21、0;         0b0110,                           0b0100;#endifdrive_stepper(byte speed, char dir, byte steps)    static byte

22、 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')       s

23、tepper_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

24、("rn");  while( TRUE )     value=read_adc();    printf("%2Xr",value);    if(value<0x80)       drive_stepper(value,'R',8);    else if(value>0x80)    

25、60;  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) ;   

26、60;  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)    

27、60;   printf("nrSpeed (hex): ");       speed = gethex();       if(speed=0)          use_pot();       printf("nrDirection (F,R): ");

28、0;      dir=getc()|0x20;       putc(dir);       printf("nrSteps (hex): ");       steps = gethex();       if(steps=0)     

29、;     use_switch(speed,dir);       drive_stepper(speed,dir,steps);   Seconds Timer/                          EX_STW

30、T.C                            /                      &

31、#160;                                        / This program uses the RTCC (timer0) and interrupts to keep

32、 a  / real time seconds counter.  A simple stop watch function is   / then implemented.                                &

33、#160;            /                                      

34、;                         / Configure the CCS prototype card as follows:                  /

35、0;    Insert jumpers from: 11 to 17 and 12 to 18.               /#include <16C84.H>#fuses HS,NOWDT,NOPROTECT#use delay(clock=20000000)#use rs232(baud=9600, xmit=PIN_A3, rcv=PIN_A2)#define INTS_PER_SECOND 76

36、60;    / (20000000/(4*256*256)byte seconds;      / A running seconds counterbyte int_count;    / Number of interrupts left before a   / second has elapsed#int_rtcc          / This function i

37、s called every timeclock_isr()       / the RTCC (timer0) overflows (255->0).                   / For this program this is apx 76 times    if(-int_count=0)   

38、         / per second.      +seconds;      int_count=INTS_PER_SECOND;    main()    byte start;   int_count=INTS_PER_SECOND;   set_rtcc(0);   setup_counters

39、( RTCC_INTERNAL, RTCC_DIV_256);   enable_interrupts(RTCC_ZERO);   enable_interrupts(GLOBAL);   do       printf("Press any key to begin.nr");      getc();      start=seconds;  

40、    printf("Press any key to stop.nr");      getc();      printf("%u seconds.nr",seconds-start);   while (TRUE);Simple A/D/             

41、0;            EX_ADMM.C                              /       

42、0;                                                 

43、0;       /  This program displays the min and max of 30 A/D samples over   /  the RS-232 interface.  The process is repeated forever.        /           &#

44、160;                                                 &#

45、160;   /  Configure the CCS prototype card as follows:                   /      Insert jumpers from: 11 to 17, 12 to 18 and 9 to 16      

46、60; /      Use the #9 POT to vary the voltage.                        /#include <16C71.H>#use delay(clock=15000000)#use rs232(baud=9600,xmit=PIN_A3,rcv=PI

47、N_A2)main()    int i,value,min,max;   printf("Sampling:");   setup_port_a( ALL_ANALOG );   setup_adc( ADC_CLOCK_INTERNAL );   set_adc_channel( 0 );   do       min=255;      max=0;&

48、#160;     for(i=0;i<=30;+i)          delay_ms(100);         value = Read_ADC();         if(value < min)        

49、60;   min=value;         if(value > max)            max=value;            printf("nrMin: %2X  Max: %2Xrn",min,max);   while (TRUE);Output Listing.       min=255;008D:  MOVLW  FF008E:  MOVWF  28.       max=0;0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论