#define X TA2CCR1 //X轴电机速度 #define Y TA2CCR2 //Y轴电机速度
void timer_Init(); #endif
timer.c文件:
#include \
void timer_Init() {
TA2CTL =0;
TA2CTL|=TASSEL__SMCLK+MC__UP+ID__1+TACLR; //SMCLK,continuous
TA2CCR0=8000; //设置PWM波周期 TA2CCTL0|=OUTMOD_7;
31
X=0; //设置X轴电机PWM波占空比 TA2CCTL1|=OUTMOD_7;
Y=0; //设置Y轴电机PWM波占空比 TA2CCTL2|=OUTMOD_7; P2DIR|=BIT4+BIT5;
P2SEL|=BIT4+BIT5; }
deal.h头文件:
#include \#include \#include \#include \#ifndef DEAL_H #define DEAL_H
#define IN1_0 P3OUT&=~BIT0 #define IN1_1 P3OUT|=BIT0
#define IN2_0 P3OUT&=~BIT1 #define IN2_1 P3OUT|=BIT1
#define IN3_0 P3OUT&=~BIT2
//TA2.2 //P3.0 IN1 //P3.1 IN2 //P3.2 IN3
32
#define IN3_1 P3OUT|=BIT2
#define IN4_0 P3OUT&=~BIT3 //P3.3 IN4 #define IN4_1 P3OUT|=BIT3
extern int Low,High,init,get; //extern int High; //extern int init; //extern int J;
void Sdeal(void); //surrounding deal void Tdeal(void); //target deal void Edeal(void); //environment deal void set_direction(char z,int d); void init_location(); void scan(); #endif
deal.c文件: #include \#include \
33
int Low,High,init,Js,Jt,Je,get=0; //J:judge void set_direction(char z,int d) // {
switch(z) {
case 'X':if(d==1){IN1_1;IN2_0;}else{IN1_0;IN2_1;}break; case 'Y':if(d==1){IN3_1;IN4_0;}else{IN3_0;IN4_1;}break; } }
//初始化位置 void init_location() {
set_direction('Y',0); //X=8000; Y=8000; for(;;) {
if(Y==0) break; else Sdeal();
34
} }
void scan() {
X=6000; for(;;) {
if(X==0) break; else { Sdeal(); Tdeal(); } } }
//surrounding deal void Sdeal() { int i,a;
spi_readBytes(PROXLSB,&p[0],2);
35