#include
#include \ /* derivative-specific definitions */
int left1=0; int left2=0; int right1=0; int right2=0;
int AR_LEFT=0;//left2-right2 int AR_RIGHT=0;
int CR=0;//左边相加减右边相加 int preCR=0; int ppreCR=0; int mkp=0; int mki=0; int mkd=0;
int ideal_speed=0; //设定速度 int speed=0;
int s_ideal0[6]={75,80,42,42,42,42}; //普通道、长直道、普通到弯、长直道到弯、弯内、偏离黑线
int s_ideal1[6]={70,75,42,42,42,42}; int s_ideal2[6]={62,70,42,40,41,40}; int s_ideal3[6]={54,66,42,40,41,40};
int table_mkp0[6]={30,30,30,30,30,30}; //ni 16.31 ,shun 15.16 int table_mkp1[6]={25,25,25,25,25,25}; int table_mkp2[6]={5,4,4,20,20,20};
int table_mkp3[6]={4,4,4,10,8,9}; //稳定速度
int table_mki0[6]={0,0,20,20,20,20}; int table_mki1[6]={0,0,20,20,20,20}; int table_mki2[6]={0,0,0,10,10,20}; int table_mki3[6]={0,0,0,0,0,0};
int table_mkd0[6]={0,0,0,0,0,0}; int table_mkd1[6]={0,0,0,0,0,0}; int table_mkd2[6]={0};
int table_mkd3[6]={0,0,0,0,0,0};
int s_table[6]; int b_mkp[6]=0; int b_mki[6]=0; int b_mkd[6]=0;
int table_rkp0[7]={5,3,2,550,550,550,8};//普通道中间、长直道低速、长直道高速、普到弯、直到弯、弯、普通道两边
int table_rkp1[7]={7,5,4,450,450,400,9}; int table_rkp2[7]={6,3,2,150,150,150,9}; int table_rkp3[7]={5,3,2,150,150,150,9};
int table_rkd0[7]={0,0,0,400,400,400,100}; int table_rkd1[7]={0,0,0,500,500,500,100}; int table_rkd2[7]={0,0,0,200,300,400,100}; int table_rkd3[7]={0,0,0,200,300,400,100};
int b_rkp[7]=0; int b_rkd[7]=0;
int rkp=0; int rkd=0;
int f=0;// pwmDTY要加的值 int pref=0;
int Pulse_count=0; //脉冲数 int ganhuang=0; unsigned int ting=0;
int i=0;
int Flag_Chute=0; //道路标志 int GeneralCtn=0; int CurveCtn=0; int ChuteCtn=0; int WANCtn=0; int Flag_gaosu=0;
unsigned char Flag_Pwm;//知道转弯道标志
int flag=0;
/*********************** //PLL超频到40MHZ ****************/ void PLL_Init(void) { CLKSEL=0X00;
PLLCTL_PLLON=1; REFDV=0X80|0X01; SYNR=0X40|0X04; POSTDIV=0X00; asm nop; asm nop;
while(!(CRGFLG_LOCK==1)); CLKSEL_PLLSEL=1; }
//延时函数 cnt*1ms;
void delay(unsigned int cnt) { unsigned int loop_i,loop_j;
for(loop_i=0;loop_i /******************************* ///////////////\\\\计数程序//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ *********************************/ void PACBInit() //PT7 获得脉冲值 { PACTL=0X40; //PT7 PIN,PACN32 16BIT,Rising edge,NOT INTERRUPT TCTL3=0x40; //c-输入捕捉7 上升沿有效, TIE_C7I=0; //通道7 禁止中断 TIOS_IOS7=0; //每一位对应通道的: 0 输入捕捉,1 输出比较 PACNT = 0; } void RTI_init(void) //RTI 产生 10ms 的中断定时 { asm sei; //关闭中断 RTICTL=0xC7; //中断周期设置10ms 中断一次(或者让RTICTL=0x59<为10.24ms 定时>) CRGINT_RTIE=1; //实时中断有效,一旦RTIF=1 则发出中断请求 asm cli; //开放中断 } //舵机初始化 void PWM_rudder_init(void) { PWME_PWME3=0; PWME_PWME2=0; PWMPRCLK_PCKB=2;//CLOCKB=BUS/4=10MHz PWMSCLB=2;//CLOCCSB=10/(2*2)=2.5MHz PWMCTL_CON23=1;//组合PWM23 PWMCLK_PCLK3=1;//PWM3使用SB PWMPER23=50000;//写PWM23的周期寄存器,周期是20ms PWMPOL_PPOL3=1;//极性为正 PWMCAE_CAE3=0;//左对齐 PWME_PWME3=1;//使能PWM23 } //电机初始化 void PWM_init_motor(void){ //电机初始化 PWME_PWME0=0; PWME_PWME1=0; PWMPRCLK_PCKA=2; //Clock A=40M/4=10M PWMPOL_PPOL1=1;//通道1 正极性输出 PWMCLK_PCLK1=0;//通道1 选择A 时钟 PWMCAE_CAE1=0;//左对齐 PWMCTL_CON01=1; PWMPER01=1000;//输出频率=10M/1000=10Khz PWMDTY01=0;//通道1 占空比为100/250 PWME_PWME1=1;//通道1 使能 PWME_PWME4=0; PWME_PWME5=0; PWMPRCLK_PCKA=1; //Clock A=40M/2=20M PWMPOL_PPOL5=1;//通道5 正极性输出 PWMCLK_PCLK5=1;//通道5 选择SA 时钟 PWMSCLA=1; //ClockSB=20M/(2*1)=10M PWMCAE_CAE5=0;//左对齐 PWMCTL_CON45=1; PWMPER45=1000;//输出频率=10M/1000=10Khz PWMDTY45=0;//初始通占空比0 PWME_PWME5=1;//通道5 使能 } void AD_Init(void) { ATD0CTL1=0x20; //选择AD通道为外部触发,10位精度,采样前不放电 ATD0CTL2=0x40; //标志位自动清零,禁止外部触发, 禁止中断 ATD0CTL3=0xA0; //右对齐无符号,每次转换4个序列, No FIFO, Freeze模式下继续转 ATD0CTL4=0x09; //采样时间为4个AD时钟周期,PRS=9,ATDClock=40/(2*(9+1))2MHz ATD0CTL5=0x30; //特殊通道禁止,连续转换4个通道 ,多通道转换,起始通道为0转换 ATD0DIEN=0x00; //禁止数字输入 } /************************ /////////检测起跑线\\\\\\\\\\\\\\\\\\\\\\ *****************/ void Checkstart(){ asm sei; TIOS_IOS0=0; //输入捕捉 TSCR1=0X80; TSCR2=0X07; TCTL4=0X01;//上升沿捕捉 TIE=0X01; //允许硬件中断 asm cli; } //拨码开关 void boman(){ if(PORTA_PA0==1) { b_rkp[0]=table_rkp0[0]; b_rkp[1]=table_rkp0[1]; b_rkp[2]=table_rkp0[2]; b_rkp[3]=table_rkp0[3]; b_rkp[4]=table_rkp0[4]; b_rkp[5]=table_rkp0[5]; b_rkp[6]=table_rkp0[6]; b_rkd[0]=table_rkd0[0]; b_rkd[1]=table_rkd0[1]; b_rkd[2]=table_rkd0[2]; 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库智能车电磁组完整程序在线全文阅读。
相关推荐: