|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
需要完成的功能:
//设置电机控制p2.5口为PWR信号输出,p2.6口为方向控制输出,p2.7口为驱动器使能端
//程序设置为开机送进脉冲信号驱动步进电机主动,延时,步进电机完成方向转换,循环测试。
#include"includes.h"
void main() //实际测试流程
{
WDTCTL = WDTPW + WDTHOLD; //停止看门狗WDT,不使用内部看门狗定时器。
P2DIR |= 0x70; //设置P2.5口p2.6口p2.7口方向为输出。
CCTL0 = CCIE; //设置捕获/比较控制寄存器中CCIE位为1,CCR0捕获/比较功能中断为允许。
CCR0 = 50000; //捕获/比较控制寄存器CCR0初值为5000。
TACTL = TASSEL_2 + MC_2; //设置定时器A控制寄存器TACTL,使时钟源选择为SMCLK辅助时钟。
_BIS_SR(LPM0_bits + GIE); //进入低功耗模式LPM0和开中断
for(;;)
{
__interrupt void ENA();
__interrupt void Timer_A (); //输入连续脉冲信号 驱动步进电机
int i=50000; //软件延时
do(i--);
while(i!=0);
__interrupt void change_direction(); // 步进电机转动方向改变
// P2IFG=0; //清中断
}
}
//定时器A 中断服务程序区
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P2OUT ^= 0x10; //P2.5口取反输出
CCR0 += 50000; //重新载入CCR0捕获/比较数据寄存器数据
}
__interrupt void change_direction(void)
{
P2OUT^=0x30; //P2.6口取反输出 完成方向转换
CCR0 +=50000; //重新载入CCR0捕获/比较数据寄存器数据
}
__interrupt void ENA(void)
{
P2OUT=0x40; //P2.7口输出高电平使能
CCR0 +=50000;
}
//结束-------------------------------------------------------------------------- |
|