资源简介

结合永磁直流电机驱动要求和集成驱动芯片工作特点,进行永磁直流电机调速驱动的单片机应用程序设计。该源程序利用MSP430单片机实现电机的正反转以及调速

资源截图

代码片段和文件信息


#include “msp430x14x.h“
#define PWMDIR P4DIR
#define PWMSEL P4SEL
#define PWMOUT P4OUT
#define BITP    BIT1
typedef unsigned int uint;
typedef unsigned char uchar;

/*初始化时钟函数*/
void clk_init()
{
 
  BCSCTL1&=~XT2OFF; //开启XT2
  do
  {
    IFG1&=~OFIFG;   //清除振荡器错误标识
    _NOP();         //产生一个系统周期延时
  }
  while((IFG1&OFIFG)!=0); //标识为1继续等待
 
  BCSCTL2|=SELM_2;        //选择MCLK时钟源为XT2CLK
  BCSCTL2|=SELS;          //选择SMCLK时钟源为XT2CLK
  BCSCTL2|=DIVS_0;        //SMCLK分频比为1
  IFG1&=~OFIFG;   //清除振荡器错误标识
}

/*延时函数*/
/*void delay(uint t)
{
    uint i=0;
    for(i=0;i}*/

/*读取开关状态函数*/
uchar read_switch()
{
    uchar address;  //声明端口地址变量
    address=P6IN;   //从P6IN口读取数据 拨码开关p6.4-p6.7
    address&=0xf0;  //地址低4位置0
    return address;
}

/*端口初始化函数*/
void port_init()
{
     P3DIR|= BIT6;
     P3DIR|= BIT7;
  
     P3SEL&= ~BIT6;
     P3SEL&= ~BIT7;
  
     P3OUT|= BIT6;      
     P3OUT|= BIT7;  //置高,否则不能运转
    
    //pwm输出引脚/ EA/EB
    PWMDIR|=BITP;  //设为输出
    PWMSEL|=BITP;  //设为第二功能
    PWMOUT|=BITP;  //输出高电平
    
    
    //正反转控制输出引脚
    P4DIR|=BIT3;  //设置P4.3引脚为输出引脚
    P4DIR|=BIT2;  //设置P4.2引脚为输出引脚
    
    P4SEL&=~BIT3; //设置P4.3引脚为输入/输出引脚
    P4SEL&=~BIT2; //设置P4.2引脚为输入/输出引脚
    
    
    P4OUT|=BIT3;  //设置P4.3引脚输出高电平
    P4OUT&=~BIT2; //设置P4.2引脚输出低电平
}

/*中断服务程序*/
#pragma vector=TIMERB0_VECTOR
__interrupt void pwm_ccr0()
{
  uchar addr=read_switch();
  uchar dir=addr & 0x80;
  uchar speed=addr & 0x70;
   if(dir==0x80)

评论

共有 条评论