找回密码
 立即注册

QQ登录

只需一步,快速开始

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

MSP430单片机太阳跟踪源程序

[复制链接]
跳转到指定楼层
楼主
基于msp430的太阳跟踪程序。下位机。

单片机源程序如下:
  1. //向东转动,逆时针转动,方位角减小
  2. //向西转动,顺时针转动,方位角增大
  3. #include<msp430x14x.h>
  4. #include "Manual.c"
  5. #include "Flatwise.c"
  6. #include "StopAll.C"
  7. #include "Initial.c"
  8. #include "Zero.c"
  9. #include "ReadFile.c"
  10. #include "Variable.c"
  11. #include "Variable.h"
  12. #include "Trace.c"
  13. #include "Condition.c"
  14. #include "SetLocation.c"
  15. #include "Calibration.c"
  16. #include "keypad.c"
  17. #include "Comunication.c"
  18. #include <stdlib.h>
  19. #include "control.c"



  20. int m = 0;
  21. unsigned int ma = 0;
  22. unsigned int mb = 0;
  23. int m1 = 0;
  24. void main( void )
  25. {
  26.   // Stop watchdog timer to prevent time out reset
  27.   WDTCTL = WDTPW + WDTHOLD;
  28.   InitHFXT();   
  29.   InitPort();

  30.   _BIS_SR(GIE);
  31.   ReadLoc();
  32.   workdata[2] = 0x07;
  33.   SendLocation(&Longitude);
  34.   SendMessage();
  35.   
  36.   workdata[2] = 0x17;
  37.   SendLocation(&Latitude);
  38.   SendMessage();

  39.   //SunLoc();
  40.   revPosA = (unsigned int)(fSAZmin * MAZ);//A表示方位 B表示俯仰
  41.   revPosB = (unsigned int)(fELmin * MEL);
  42.   SN = 'S';

  43.   Zero();  
  44.   
  45.   Calibration();
  46.   //delay_ms(5000);

  47.   Trace();
  48. }


  49. #pragma vector=PORT2_VECTOR  
  50. __interrupt void PORT2_INT (void)//将PORT2作中断服务函数
  51. {
  52.   ch = P2IFG;
  53.   if(((ch & BIT_LIMITEA) == BIT_LIMITEA) && ((ch & P2IE) == BIT_LIMITEA))
  54.     LimitEA = 1;
  55.   if(((ch & BIT_LIMITWA) == BIT_LIMITWA) && ((ch & P2IE) == BIT_LIMITWA))
  56.     LimitWA = 1;
  57.   if(((ch & BIT_LIMITUPB) == BIT_LIMITUPB) && ((ch & P2IE) == BIT_LIMITUPB))
  58.     LimitUPB = 1;
  59.   if(((ch & BIT_LIMITDNB) == BIT_LIMITDNB) && ((ch & P2IE) == BIT_LIMITDNB))
  60.     LimitDNB = 1;

  61.   if(((ch & BIT_COUNTA) == BIT_COUNTA)&&((ch & P2IE) == BIT_COUNTA))
  62.   {
  63.     if((P2IES & BIT_COUNTA)==BIT_COUNTA)
  64.     {
  65.       m = 1;
  66.       ma = 0;
  67.       TBR = 0;
  68.       TBCTL   = TBSSEL_2 + TBCLR + ID_3;
  69.       TBCCTL0 = CCIE;
  70.       TBCCR0  = 1500;  
  71.       TBCTL  |= MC0;;
  72.       P2IES &= ~BIT_COUNTA;
  73.     }
  74.     else
  75.     {  
  76.       TBCTL =  0x00;  //关闭定时器
  77.       TBCCTL0 =  0x00;
  78.       TBR = 0;
  79.       TBCTL   = TBSSEL_2 + TBCLR + ID_3;
  80.       TBCCTL0 = CCIE;
  81.       TBCCR0  = 1500;  
  82.       TBCTL  |= MC0;
  83.       P2IES |= BIT_COUNTA;
  84.     }
  85.   }
  86.   if(((ch & BIT_COUNTB) == BIT_COUNTB) && ((ch & P2IE) == BIT_COUNTB))
  87.   {
  88.     if((P2IES & BIT_COUNTB)==BIT_COUNTB)
  89.     {  
  90.       m = 2;
  91.       mb = 0;
  92.       TBR = 0;
  93.       TBCTL   = TBSSEL_2 + TBCLR + ID_3;
  94.       TBCCTL0 = CCIE;
  95.       TBCCR0  = 1500;  
  96.       TBCTL  |= MC0;;
  97.       P2IES &= ~BIT_COUNTB;
  98.     }
  99.     else
  100.     {  
  101.       TBCTL =  0x00;  //关闭定时器
  102.       TBCCTL0 =  0x00;
  103.       TBR = 0;
  104.       TBCTL   = TBSSEL_2 + TBCLR + ID_3;
  105.       TBCCTL0 = CCIE;
  106.       TBCCR0  = 1500;  
  107.       TBCTL  |= MC0;
  108.       P2IES |= BIT_COUNTB;
  109.     }
  110.   }
  111.   P2IFG = 0x00;
  112. }
  113. #pragma vector=TIMERB0_VECTOR
  114. __interrupt void TIMERB0 (void)
  115. {
  116.   if(((P2IES & BIT_COUNTA)==0x00)&& (m == 1))
  117.     ma = 1;
  118.   if(((P2IES & BIT_COUNTA)== BIT_COUNTA)&& (ma==1))
  119.   {
  120.     ma = 0;
  121.     countA1+=1;
  122.   }
  123.   
  124.   if(((P2IES & BIT_COUNTB)==0x00)&& (m == 2))
  125.     mb = 1;
  126.   if(((P2IES & BIT_COUNTB)== BIT_COUNTB)&& (mb==1))
  127.   {
  128.     mb = 0;
  129.     countB1+=1;
  130.   }
  131.   m = 0;
  132.   TBCTL =  0x00;  //关闭定时器
  133.   TBCCTL0 =  0x00;
  134. }
  135. #pragma vector=TIMERA0_VECTOR
  136. __interrupt void TIMERA0 (void)
  137. {
  138.   
  139. }
  140. #pragma vector = UART0RX_VECTOR
  141. __interrupt void UART0_RXISR(void)
  142. {//
  143.   char ch = RXBUF0;
  144.   data[index] = ch;
  145.   if(index == 212)
  146.     communication = 1;
  147.   index++;
  148. }
复制代码

所有资料51hei提供下载:
下位机控制430.zip (133.03 KB, 下载次数: 7)



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

使用道具 举报

沙发
ID:1 发表于 2018-10-6 23:56 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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