天堂草原最受欢迎的角色,天堂动漫,天堂在线,色天堂下载,天堂中文在线资源,亚洲男人天堂

技術熱線: 4007-888-234

技術支持

PIC CCS C語言程序范例

更新時間: 2019-01-05

** PIC CCS C語言程序范例 ** **

CCS C編譯器包含許多常見應用程序的示例程序庫。每個示例程序都包含一個標題,其中包含有關如何運行示例的說明,以及必要時用于連接外部設備的接線說明。以下是我們的編譯器附帶的三個這樣的示例程序,以及由編譯器生成的列表文件,其顯示生成的與C代碼對應的程序集。有關CCS C編譯器附帶的示例文件和源代碼驅動程序的完整列表,請轉到:步進電機控制器| 秒計時器| 簡單的A / D | 示例列表文件| 示例文件列表步進電機控制器

////////////////////////////////////////////////// /////////////////////// //// EX_STEP.C //// //// //// ////這個程序接口到步進電機。程序將//// ////使用RS-232接口來控制電機//// ////模擬輸入,開關輸入或RS-232命令。//// //// //// ////按如下方式配置CCS原型卡://// ////將步進電機連接到引腳47-50(B0-B3)//// / /// Conenct 40到54(按鈕)////

////連接9到15(鍋)////

////請參閱下面的其他連接。//// ////////////////////////////////////////////// /////////////////////////// ////(C)版權所有1996,2001定制電腦服務//// ////源代碼只能由CCS //// //// C編譯器的許可用戶使用。此源代碼只能分發給CCS C編譯器的其他//// ////許可用戶。沒有其他用途,//// ////允許復制或分發,不得書面//// ////許可。使用該軟件//// ////以目標代碼形式創建的衍生程序不受任何限制。//// ////////////////////////////////////////////// ///////////////////////////

include <16c74.h> #fuses HS,NOWDT,NOPROTECT #use delay(clock = 20000000)#use rs232(baud = 9600,xmit = PIN_C6,rcv = PIN_C7)//跳線:8到11,7到12

#包括

byte port_b = 6

define FOUR_PHASE TRUE

ifdef FOUR_PHASE

字節常量倉[4] = {0b0101, 0b1001, 0b1010, 0b0110}; #else偽字節常量倉[8] = {0b0101, 0b0001, 0b1001, 0b1000, 0b1010, 0b0010, 0b0110, 0b0100}; #萬一

drive_stepper(字節速度,字符dir,字節步長){ static byte stepper_state = 0; 字節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( “\ r \ n”);

while(TRUE){ value = read_adc(); 的printf( “%2X \ r”,值); if(value <0x80) drive_stepper(value,'R',8); 否則if(value> 0x80) drive_stepper(128-(value-128),’F’,8); }

use_switch(byte speed,char dir){

字節步驟;

printf(“\ n \ rSteps per press:”); steps = gethex();

while(true){

while(輸入(PIN_B7)); drive_stepper(速度,DIR,步驟); while(!input(PIN_B7)); delay_ms(100); } }

main(){

字節速度,步驟; char dir;

setup_port_a(RA0_RA1_ANALOG);

while(TRUE){ printf(“\ n \ rSpeed(hex):”); speed = gethex();

   if(speed == 0)          use_pot();

   printf(“\ n \ rDirection(F,R):”);        DIR = GETC()| 0×20;        putc將(DIR);


   printf(“\ n \ rSteps(hex):”);        steps = gethex();

   if(steps == 0)          use_switch(speed,dir);

   drive_stepper(速度,DIR,步驟);    }

}

秒計時器//////////////////////////////////////////////// ///////////////////////

//// EX_STWT.C //// //// //// ////這個程序使用RTCC(timer0)和中斷來保持//// ////實時秒計數器。一個簡單的秒表功能//// ////然后實現。//// //// //// ////按如下方式配置CCS原型卡://// ////插入跳線:11到17和12到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))

字節秒; //一個運行的秒計數字節int_count; // 經過//秒之前剩余的中斷數

int_rtcc //每次clock_isr(){// RTCC(timer0)溢出(255-> 0)時都會調用此函數。 //對于這個程序, 如果( - int_count == 0){//每秒,這是apx 76次。 ++秒; int_count = INTS_PER_SECOND; }

}

main(){

字節開始;

int_count = INTS_PER_SECOND; set_rtcc(0); setup_counters(RTCC_INTERNAL,RTCC_DIV_256); enable_interrupts(RTCC_ZERO); enable_interrupts(GLOBAL);

做{

printf(“按任意鍵開始。\ n \ r”); GETC(); 開始=秒; printf(“按任意鍵停止。\ n \ r”); GETC(); printf(“%u seconds。\ n \ r”,秒啟動);

} while(TRUE);

}

簡單的A / D ////////////////////////////////////////////// /////////////////////////// //// EX_ADMM.C ////

//// //// ////這個程序在//// // RS-232接口上顯示最少和最多30個A / D樣本。這個過程永遠重復。//// //// //// ////配置CCS原型卡如下://// ////插入跳線:11到17,12到18和9到16 /// / ////使用#9 POT改變電壓。//// ////////////////////////////////////////////// ///////////////////////////

include <16C71.H>

use delay(clock = 15000000)#use rs232(baud = 9600,xmit = PIN_A3,rcv = PIN_A2)

main(){

int i,value,min,max;

的printf( “采樣:”);

setup_port_a(ALL_ANALOG); setup_adc(ADC_CLOCK_INTERNAL); set_adc_channel(0);

做{ min = 255; 最大= 0; for(i = 0; i <= 30; ++ i){ delay_ms(100); value = Read_ADC(); if(value <min) min = value; if(value> max) max = value; } printf(“\ n \ rMin:%2X Max:%2X \ r \ n”,min,max);

} while(TRUE);

}

輸出清單……………….. min = 255; 008D:MOVLW FF 008E:MOVWF 28 ……………….. max = 0; 008F:CLRF 29 ……………….. incc = TRUE; 0090:BSF 2B,0

………………..(i = 0; i <= 30; ++ i){ 0091:CLRF 26 0092:MOVLW 1F 0093:SUBWF 26,W 0094:BTFSC 03,0 0095:GOTO 0AC ……………….. delay_ms (100); 0096:MOVLW 64 0097:MOVWF 2C 0098:GOTO 02D ……………….. value = Read_ADC(); 0099:BSF 1F,2 009A:BTFSC 1F,2 009B:GOTO 09A 009C:MOVF 1E,W 009D:MOVWF 27 ……………….. if(value < min)009E:MOVF 28,W 009F:SUBWF 27,W 00A0:BTFSC 03,0 00A1:GOTO 0A4 ……………….. min = value; 00A2:MOVF 27,W

00A3:MOVWF 28 ……………….. if(值> max)00A4:MOVF 27,W 00A5:SUBWF 29,W 00A6:BTFSC 03,0 00A7: GOTO 0AA ……………….. max = value; 00A8:MOVF 27,W 00A9:MOVWF 29 ………………..} 00AA:INCF 26,F

00AB:GOTO 092 ……………….. if(incc)00AC:BTFSC 2B,0 ……………. …. counter ++;

00AD:INCF 2A,F

404
返回首頁 |  返回上一頁
联系我们: 田东县| 科尔| 赤峰市| 望都县| 宝清县| 全州县| 定日县| 赣州市| 花莲市| 兰溪市| 达州市| 浪卡子县| 日喀则市| 西吉县| 遵义县| 融水| 观塘区| 莱芜市| 罗定市| 台东县| 耿马| 磐安县| 鄱阳县| 布尔津县| 肃南| 长葛市| 云安县| 镇雄县| 甘孜| 井冈山市| 千阳县| 武威市| 巴中市| 承德县| 濮阳市| 清水县| 赣州市| 涟源市| 托克托县| 茌平县| 定远县|