找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2510|回复: 0
打印 上一主题 下一主题
收起左侧

请问这段点光源追踪系统的代码是不是有问题。。

[复制链接]
跳转到指定楼层
楼主
ID:79017 发表于 2015-5-7 10:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

就是中间那些INCH数值跟AE0的数值不对应啊!我运行起来舵机老是乱转,求高手帮忙,我急用。。感激!!!!

#include "msp430g2553.h"

#define uint unsigned int

#define uchar unsigned char

unsigned int a[32],b[4];

unsigned int i=50,j=50;


void delay(uint z);

void pwm();

void circle();


void main( void )

{

P1OUT=0x00;

WDTCTL = WDTPW + WDTHOLD;

BCSCTL1 = CALBC1_1MHZ;

DCOCTL = CALDCO_1MHZ;

pwm();

while(1)

{

ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // ADC10ON, interrupt enabled ADC10CTL0 |= 0x0020;

ADC10CTL1 = INCH_4; // input A1

ADC10AE0 |= 0x10; // PA.1 ADC option select

ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start __bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit b[1]=ADC10MEM;

delay(2);

ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // ADC10ON, interrupt enabled ADC10CTL0 |= 0x0020;

ADC10CTL1 = INCH_3; // input A3

ADC10AE0 |= 0x08; // PA.3 ADC option select

ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start __bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit b[3]=ADC10MEM;

delay(2);

ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // ADC10ON, interrupt enabled ADC10CTL0 |= 0x0020;

ADC10CTL1 = INCH_0; // input A0

ADC10AE0 |= 0x01; // PA.0 ADC option select

ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start __bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit b[0]=ADC10MEM;

delay(2);

ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // ADC10ON, interrupt enabled

ADC10CTL0 |= 0x0020;

ADC10CTL1 = INCH_5; // input A2

ADC10AE0 |= 0x20; // PA.2 ADC option select

ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start __bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit b[2]=ADC10MEM;

delay(2);

if(b[1]>b[3])

{

if(b[1]-b[3]>150)

{

CCR1=CCR1+i;

delay(300);

i=i+3;

}

}

if(b[3]>b[1])

{

if(b[3]-b[1]>150)

{

CCR1=CCR1-i;

delay(300);

i=i+3;

}

}

if(b[0]>b[2])

{

if(b[0]-b[2]>150)

{

CCR1=CCR1+j;

delay(300);

j=j+3;

}

}

if(b[2]>b[0])

{

if(b[2]-b[0]>150)

{

CCR1=CCR1-j;

delay(300);

j=j+3;

}

}


}

}


void pwm()

{

P1DIR|=BIT2;

P1SEL|=BIT2;

P1DIR|=BIT6;

P1SEL|=BIT6;

TACTL|= MC_1+TASSEL_2; CCTL1 = OUTMOD_7;

CCR0 = 20000;

CCR1 = 1000 ;

}

void delay(uint z)

{

uint i,j;

for(i=210;i>0;i--)

for(j=z;j>0;j--);

}

#pragma vector=ADC10_VECTOR __interrupt void ADC10_ISR(void) {

__bic_SR_register_on_exit(CPUOFF); }


// Clear CPUOFF bit from 0(SR)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表