历史上的今天
今天是:2024年10月14日(星期一)
2019年10月14日 | PIC CCS C语言程序范例
2019-10-14 来源:eefocus
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 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 source code drivers included with the CCS C compiler go here
Jump to: Stepper Motor Controller | Seconds Timer | Simple A/D | Example List File | List of Example Files
Stepper Motor Controller
/////////////////////////////////////////////////////////////////////////
//// EX_STEP.C ////
//// ////
//// 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. ////
//// ////
//// Configure the CCS prototype card as follows: ////
//// Connect stepper motor to pins 47-50 (B0-B3) ////
//// Conenct 40 to 54 (pushbutton) ////
//// Connect 9 to 15 (pot) ////
//// See additional connections below. ////
/////////////////////////////////////////////////////////////////////////
//// (C) 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, ////
//// 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 <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 #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 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); } } Seconds Timer /////////////////////////////////////////////////////////////////////// //// EX_STWT.C //// //// //// //// This program uses the RTCC (timer0) and interrupts to keep a //// //// real time seconds counter. A simple stop watch function is //// //// then implemented. //// //// //// //// Configure the CCS prototype card as follows: //// //// 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 // (20000000/(4*256*256)) byte seconds; // A running seconds counter byte int_count; // Number of interrupts left before a // second has elapsed #int_rtcc // This function is called every time clock_isr() { // the RTCC (timer0) overflows (255->0). // For this program this is apx 76 times if(--int_count==0) { // per second. ++seconds; int_count=INTS_PER_SECOND; } } main() { byte start; int_count=INTS_PER_SECOND; set_rtcc(0); setup_counters( RTCC_INTERNAL, RTCC_DIV_256); enable_interrupts(RTCC_ZERO); enable_interrupts(GLOBAL); do { printf("Press any key to begin.nr"); getc(); start=seconds; printf("Press any key to stop.nr"); getc(); printf("%u seconds.nr",seconds-start); } while (TRUE); } Simple A/D ///////////////////////////////////////////////////////////////////////// //// EX_ADMM.C //// //// ////
上一篇:PIC单片机的C语言使用(一)
下一篇:PIC单片机开发的若干问题
史海拾趣
|
1、判断极性首先将万用表拨在R×1KΩ挡,用万用表测量时,若某一极与其它两极阻值为无穷大,调换表笔后该极与其它两极的阻值仍为无穷大,则判断此极为栅极(G)。其余两极再用万用表测量,若测得阻值为无穷大,调换表笔后测量阻值较小。在测量阻值 ...… 查看全部问答> |
|
很奇怪的问题 wince 串口测试应用程序 writefile(...)函数没有执行完就失败了,然后程序死掉了。 串口测试的writefile(...)函数没有执行完就失败了,没有任何返回结果。writefile的下一个语句做断点,没有执行到。 if(hComm!=INVALID_HANDLE_VALUE&&dwCharToWrite!=0) { &nbs ...… 查看全部问答> |
|
异常是导致处理器脱离正常运行转向执行特殊代码的任何事件,如果系统不及时处理,系统轻则出错,重着导致系统毁灭性的瘫痪。所以正确地处理异常避免错误的发生是提高软件的鲁棒性重要的一方面,对于嵌入式系统更加如此。 异常可以分成两类 ...… 查看全部问答> |
|
DIY导航避障车小组今日下午展开第一次例会,在本次例会中大家集中讨论了无线的选择,避障的选择等等部分,并对小车进行了前景规划,以谷歌的自动驾驶车为终极目标,大家积极发言例会持续了一个半小时,并表示未来会采用各种新技术。下次再来把细节 ...… 查看全部问答> |
|
您知道“软文”的含义吗?什么,不知道。赶紧百度一下吧,别被OUT了 [ 本帖最后由 longxtianya 于 2011-11-6 20:19 编辑 ]… 查看全部问答> |
|
4月24日阴雨天气,阿牛哥上午9点去北京朝阳区五洲皇冠大酒店参加泰克2012年度春季创新论坛。热情的工程师们朋友已经在会场里聆听泰克的测试测量行业趋势观点,泰克领先测试测量方案,还有一些工程师朋友在展厅参观泰克最新 ...… 查看全部问答> |




