标题:
MSP430单片机太阳跟踪源程序
[打印本页]
作者:
shenxiaofei
时间:
2018-10-6 10:15
标题:
MSP430单片机太阳跟踪源程序
基于msp430的太阳跟踪程序。下位机。
0.png
(10.22 KB, 下载次数: 23)
下载附件
2018-10-6 23:56 上传
单片机源程序如下:
//向东转动,逆时针转动,方位角减小
//向西转动,顺时针转动,方位角增大
#include<msp430x14x.h>
#include "Manual.c"
#include "Flatwise.c"
#include "StopAll.C"
#include "Initial.c"
#include "Zero.c"
#include "ReadFile.c"
#include "Variable.c"
#include "Variable.h"
#include "Trace.c"
#include "Condition.c"
#include "SetLocation.c"
#include "Calibration.c"
#include "keypad.c"
#include "Comunication.c"
#include <stdlib.h>
#include "control.c"
int m = 0;
unsigned int ma = 0;
unsigned int mb = 0;
int m1 = 0;
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
InitHFXT();
InitPort();
_BIS_SR(GIE);
ReadLoc();
workdata[2] = 0x07;
SendLocation(&Longitude);
SendMessage();
workdata[2] = 0x17;
SendLocation(&Latitude);
SendMessage();
//SunLoc();
revPosA = (unsigned int)(fSAZmin * MAZ);//A表示方位 B表示俯仰
revPosB = (unsigned int)(fELmin * MEL);
SN = 'S';
Zero();
Calibration();
//delay_ms(5000);
Trace();
}
#pragma vector=PORT2_VECTOR
__interrupt void PORT2_INT (void)//将PORT2作中断服务函数
{
ch = P2IFG;
if(((ch & BIT_LIMITEA) == BIT_LIMITEA) && ((ch & P2IE) == BIT_LIMITEA))
LimitEA = 1;
if(((ch & BIT_LIMITWA) == BIT_LIMITWA) && ((ch & P2IE) == BIT_LIMITWA))
LimitWA = 1;
if(((ch & BIT_LIMITUPB) == BIT_LIMITUPB) && ((ch & P2IE) == BIT_LIMITUPB))
LimitUPB = 1;
if(((ch & BIT_LIMITDNB) == BIT_LIMITDNB) && ((ch & P2IE) == BIT_LIMITDNB))
LimitDNB = 1;
if(((ch & BIT_COUNTA) == BIT_COUNTA)&&((ch & P2IE) == BIT_COUNTA))
{
if((P2IES & BIT_COUNTA)==BIT_COUNTA)
{
m = 1;
ma = 0;
TBR = 0;
TBCTL = TBSSEL_2 + TBCLR + ID_3;
TBCCTL0 = CCIE;
TBCCR0 = 1500;
TBCTL |= MC0;;
P2IES &= ~BIT_COUNTA;
}
else
{
TBCTL = 0x00; //关闭定时器
TBCCTL0 = 0x00;
TBR = 0;
TBCTL = TBSSEL_2 + TBCLR + ID_3;
TBCCTL0 = CCIE;
TBCCR0 = 1500;
TBCTL |= MC0;
P2IES |= BIT_COUNTA;
}
}
if(((ch & BIT_COUNTB) == BIT_COUNTB) && ((ch & P2IE) == BIT_COUNTB))
{
if((P2IES & BIT_COUNTB)==BIT_COUNTB)
{
m = 2;
mb = 0;
TBR = 0;
TBCTL = TBSSEL_2 + TBCLR + ID_3;
TBCCTL0 = CCIE;
TBCCR0 = 1500;
TBCTL |= MC0;;
P2IES &= ~BIT_COUNTB;
}
else
{
TBCTL = 0x00; //关闭定时器
TBCCTL0 = 0x00;
TBR = 0;
TBCTL = TBSSEL_2 + TBCLR + ID_3;
TBCCTL0 = CCIE;
TBCCR0 = 1500;
TBCTL |= MC0;
P2IES |= BIT_COUNTB;
}
}
P2IFG = 0x00;
}
#pragma vector=TIMERB0_VECTOR
__interrupt void TIMERB0 (void)
{
if(((P2IES & BIT_COUNTA)==0x00)&& (m == 1))
ma = 1;
if(((P2IES & BIT_COUNTA)== BIT_COUNTA)&& (ma==1))
{
ma = 0;
countA1+=1;
}
if(((P2IES & BIT_COUNTB)==0x00)&& (m == 2))
mb = 1;
if(((P2IES & BIT_COUNTB)== BIT_COUNTB)&& (mb==1))
{
mb = 0;
countB1+=1;
}
m = 0;
TBCTL = 0x00; //关闭定时器
TBCCTL0 = 0x00;
}
#pragma vector=TIMERA0_VECTOR
__interrupt void TIMERA0 (void)
{
}
#pragma vector = UART0RX_VECTOR
__interrupt void UART0_RXISR(void)
{//
char ch = RXBUF0;
data[index] = ch;
if(index == 212)
communication = 1;
index++;
}
复制代码
所有资料51hei提供下载:
下位机控制430.zip
(133.03 KB, 下载次数: 7)
2018-10-6 10:14 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2018-10-6 23:56
补全原理图或者详细说明一下电路连接即可获得100+黑币
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1