main.c

来自「此程序应用在德州仪器生产的msp430单片机中的」· C语言 代码 · 共 67 行

C
67
字号
/****************************************************************
*MSP430F1XX KFB开发板 8位流水灯演示程序源代码
*作者:somebody1985
*单位:圈圈数码店 http://shop35182015.taobao.com/
*日期:2008-4-11
****************************************************************/

//#include "io430.h"
#include "msp430x14x.h"

__interrupt void TimerB_ISR(void);
void Init_Port(void);
void Init_TimerB(void);
void InitSystemClock(void);  // 初始化系统时钟

unsigned char led;

void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;//关闭看门狗
  InitSystemClock();
  Init_Port();
  Init_TimerB();
  _EINT();
  led=0x01;
  while(1);//LPM0;
}
void InitSystemClock(void)  // 初始化系统时钟
{
  unsigned char i;
  BCSCTL1=0x00;//Set 430 clk  开启XT2,DOC的标称频率为最低 且不分频;XT1为低速晶体(32.768K)
  BCSCTL2=SELM_2+SELS;//选择MCLK SCLK的时钟源为高速时钟 不分频,均为8M
  do
  {
    IFG1&=~OFIFG;
    for(i=0xff;i>0;i--);
  }
  while ((IFG1&OFIFG)!=0);
  P5DIR=BIT4+BIT5+BIT6;
  P5SEL|=BIT4+BIT5+BIT6;//将MCLK SCLK ACLK分别输出至P5.4 5 6口
}
void Init_Port(void)
{
  P4DIR=0XFF;
  P4SEL=0;
  return;
}
void Init_TimerB(void)
{
  //选择ACLK,清除TAR
  TBCTL =TBSSEL0 +TBCLR;
  //TBCCRO允许中断
  TBCCTL0= CCIE;
  //时间间隔为1s
  TBCCR0=32768;
  //增计数模式
  TBCTL |=MC0;
  return;
}
#pragma vector=TIMERB0_VECTOR
__interrupt void TimerB_ISR(void)
{
  led=(led==0x80)? 0x01:(led<<1);//led的流水灯的输出值计算:循环左移
  P4OUT =led;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?