[問題] C語言問題

看板Electronics作者 (cyc)時間17年前 (2009/01/13 18:56), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
這一個程式是配合PIC晶片所寫的馬達正反轉兼加減速程式,但是有一個問題就是馬達反 轉時無法加減速。其中0-530是反轉(快到慢)531-1024是正轉(慢到快)。 ============================================================== 程式如下: ============================================================== #include<p18f8720.h> #include<capture.h> #include<delays.h> #include<pwm.h> #include<math.h> #include <adc.h> #include <timers.h>void main() { int x,y,i=0,q,b,result,a,v,motor_speed,j=512,k=0,kk=0,speed=0,fc; int motor[2][16]={ {480,448,416,384,352,320,288,256,224,192,160,128,96,64,32,0}, {544,576,608,640,672,704,736,768,800,832,864,896,928,960,992,1024} }; //,i=0 //unsigned OpenADC( ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_5ANA,ADC_CH0 & ADC_INT_OFF &ADC_VREFPLUS_VDD&ADC_VREFMINUS_VSS); OpenTimer2(TIMER_INT_OFF&T2_PS_1_1&T2_POST_1_8); //===========================================接腳輸出入 TRISD=0X00; TRISE=0X00; PORTE=0X18; PORTD=0X00; PORTD=0xFF; //========================================按鈕開關的設定 TRISBbits.TRISB0=1;//S1 TRISBbits.TRISB1=1;//S2 TRISBbits.TRISB2=1;//S3 TRISBbits.TRISB3=1;//S4 OpenPWM1(0xff); //=======================================================馬達設定與PWM頻率 OpenPWM3(0x7f); OpenPWM5(0xff); TRISGbits.TRISG0=1;//打開pwm3的功能 TRISGbits.TRISG4=0;//打開pwm5的功能 為馬達 TRISCbits.TRISC2=0;// 打開pwm1的功能 TRISAbits.TRISA5=0;// PORTAbits.RA5=1; //============================================================== while(1) //===================================馬達正反轉OK {int i=530,qq=0; if(PORTBbits.RB0==0&&i>=530&&i<=1000) { i=500; SetDCPWM5(i); Delay10KTCYx(100); if(PORTBbits.RB0==0&&i>=20&&i<=500) { i=530; SetDCPWM5(i); Delay10KTCYx(100); } } ====================================//設定馬達加速,但反轉時無法控制 if(PORTBbits.RB1==0&&speed!=15) { speed=speed+1; fc=motor[speed]; i為設定正反轉 speed為加減速 TRISGbits.TRISG4=0; } //===========================================//馬達停止 OK else if(PORTBbits.RB2==0) //SW3 motor stop { OpenPWM5(0xff); Delay10KTCYx(100); PORTAbits.RA5=0;//disable雙極性馬達 TRISGbits.TRISG4=0; } //================================================ SetDCPWM5(0x3ff);//可以輸出pwm的工作週期} } 找不到問題的所在所以貼上來詢問大家地看法,還請指教謝謝。 -- 北京太陽有 ▁Tejada▃▂▃▂▃▂ 曬得比黑人還要黑了 這麼大喔? CT CT ▃▂ ▃▂ \ ︵ ︵ ▃▃▂ ▃▃▂ ▃▃▂ ▄▏′ ‵ ▉– – . ▃▃▂ ▃▃▂ - ◢ ⊙ ⊙ ⊙ ⊙ φJeAnnWu ◣\ ◤◤/ ◤◤/ ◤◤/ O O -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.140.124.91
文章代碼(AID): #19R7Duze (Electronics)