标题:
msp430f149单片机板式倒立摆控制装置项 源程序
[打印本页]
作者:
1425879
时间:
2020-1-1 12:17
标题:
msp430f149单片机板式倒立摆控制装置项 源程序
msp430f149开发板 板式倒立摆控制装置 部分参考代码
单片机源程序如下:
#include <msp430x14x.h>
#include <math.h>
#include "cry128.c"
#include "PWM.c"
#define RISE 1
#define FALL 0
void main()
{
/*下面六行程序关闭所有的IO口*/
P1DIR = 0XFF;P1OUT = 0XFF;
P2DIR = 0XFF;P2OUT = 0XFF;
P3DIR = 0XFF;P3OUT = 0XFF;
P4DIR = 0XFF;P4OUT = 0XFF;
P5DIR = 0XFF;P5OUT = 0XFF;
P6DIR = 0XFF;P6OUT = 0XFF;
WDTCTL = WDTPW + WDTHOLD;//停狗
init_IO(); //初始化
Init_Lcd(); //初始化12864
init_timerA(); //初始化定时器A
TACCTL1 |= CAP+CM_1+CCIS_0+SCS+CCIE;//改为上升沿捕获
_EINT(); //中断允许
// int_clk();
P4DIR |= BIT2; //P4.2输出,
P4SEL |= BIT2; //选择第二功能输出PWM
TBCCR0 = 10000;
TBCTL = CNTL_0 + TBSSEL_2 + MC_1; //计数长度16位,最大值为0ffffh
//MCLK时钟源,增计数模式
/* P1IE |= BIT0+BIT1;//IO口使能中断
P1IES |= BIT0 + BIT1;//IO口边沿触发中断方式设置
P1IFG &=~ (BIT0+BIT1);//IO口中断标志位清除
_EINT(); //中断允许
LPM4;
*/
while(1)
{
// key();
P1OUT |= BIT3;
Delay_Nms(10);
P1OUT &=~BIT3;
Delay_Nms(80);
display_juli();
Disp_HZ(0x94,disbuff,2); //LCD数据显示
}
}
//定时器A服务程序
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch(TAIV) //TIMEA定时器 TAIV中断向量寄存器
{
case 2 :if(Edge==RISE) //Edge==1
{
RiseCapVal = TACCR1; //上升沿时刻捕获值存放变量 = TACCR1
TACCTL1 |= CAP+CM_2+CCIS_0+SCS+CCIE;//改为下降沿捕获
//TACCTL1 |= CAP+CM_1+CCIS_0+SCS+CCIE;//改为上升沿捕获
Edge = FALL;//Edge==0 下降沿捕获标志
}
else
{
_DINT(); //退出中断
Period = TACCR1-RiseCapVal; //脉宽存放结果变量
S=(Period*17)/10;//距离计算S=340m/s*Period/2*10^(-6)*1000 (mm)
// S=S*10;
angle=S*S*18.0/100000.0-S*28.0/100.0+35.0;
TACCR1 = 0;
TACCTL1|= CAP+CM_1+CCIS_0+SCS+CCIE;//改为上升沿捕获
Edge = RISE; //Edge=1 上升沿捕获标志
_EINT();
}
break;
case 4 : break;
case 10: TA_Overflow_Cnt++;break;
}
}
/*************添加中断******************/
/*
#pragma vector=PORT1_VECTOR
__interrupt void Key(void)
{
key();
}
*/
复制代码
所有资料51hei提供下载:
总程序.zip
(77.07 KB, 下载次数: 7)
2020-1-1 12:17 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2020-1-1 20:50
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1