久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5001|回復: 2
打印 上一主題 下一主題
收起左側

msp430g2231簡單程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:75926 發表于 2015-4-2 22:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
程序功能:
MSP430 IO上電為輸入 高阻
P1.0 as ACLK output P1.4 as SMCLK output
按下S2可控制綠色LED亮滅
P1.1 和 P1.5 用于輸出PWM波形
P1.2用于輸出脈寬變化的PWM(8種占空比)


fx.h文件

#ifndef FX_H_
#define FX_H_

#define EnableWDT WDTCTL = WDTPW + WDTHOLD

void InitClkModule(void);
void InitGPIO(void);
void InitTimerA(void);
void InitADC10(void);
void InitUSI(void);
void YrApplication(void);
void InitSys(void);


#endif
fx.c文件

#include  <msp430g2231.h>

void InitClkModule(void)
{
if (CALBC1_1MHZ == 0xFF || CALDCO_1MHZ == 0xFF)
{
while(1); // If calibration constants erased, trap CPU!!
}
// Configure Basic Clock
BCSCTL1 = CALBC1_1MHZ; // Set range vloclk is 12kHz
DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation DCOCLK = 1MHz
//Insert User Code Here
BCSCTL2 |= SELM_0 + DIVM_0 + DIVS_3;      // MCLK = DCOCLK = 1MHz, SMCLK = DCOCLK/8
BCSCTL3 |= LFXT1S_2;                      // ACLK = VLOCLK 6pF
}

void InitGPIO(void)
{
P1DIR |= BIT0 + BIT1 + BIT2 + BIT4 + BIT5 + BIT6; // P1.0 P1.1 P1.2 P1.4 P1.5and P1.6 are configured as output pin
P1SEL |= BIT0 + BIT1 + BIT2 + BIT4 + BIT5; // P1.0 as ACLK output P1.1 and P1.5 as compare out0 out putP1.4 as SMCLK output

P1IES |= BIT3;                  // P1.3 Hi/lo edge
P1IFG &= ~BIT3;                 // P1.3 IFG cleared
P1IE |= BIT3;                   // P1.3 interrupt enabled
}

void InitTimerA(void)
{
//Insert User Code Here
TACTL = TASSEL_2 + MC_2 + TAIE + TACLR; // SMCLK, enable TimerA interrupt
//TACTL = TASSEL_2 + MC_1 + TAIE + TACLR; // SMCLK, enable TimerA interrupt
TACCTL1 = OUTMOD_7; //PWM: reset/set mode
TACCTL0 = OUTMOD_4;
CCR0 = 0x7fff;
CCR1 = 0;
}
void InitADC10(void)
{
//Insert User Code Here
}
void InitUSI(void)
{
//Insert User Code Here
}

void YrApplication(void)
{

}
void InitSys(void)
{
InitClkModule();
InitGPIO();
InitTimerA();
}
main.c文件



#include  <msp430g2231.h>
#include  "fx.h"

unsigned int i = 0;
unsigned char flag = 1;

void main(void)
{
EnableWDT; // stop the watchdog

InitSys();

_BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/interrupt
while(1);
}

#pragma vector=PORT1_VECTOR
__interrupt void Port1_ISR()
{
                     //The code below is a reference handle process,the interrupt related with the port never used should be delete。
if((P1IFG&BIT0) == BIT0)
{
//Handle the Interrupt generated by P1IN.0
P1IFG &= ~BIT0;  //Clear the IFG
//Insert User Code Here
}
else if((P1IFG&BIT1) ==BIT1)
{
//Handle the Interrupt generated by P1IN.1
P1IFG &= ~BIT1;  //Clear the IFG
//Insert User Code Here
}
else if((P1IFG&BIT2) ==BIT2)
{
//Handle the Interrupt generated by P1IN.2
P1IFG &= ~BIT2;  //Clear the IFG
//Insert User Code Here
}
else if((P1IFG&BIT3) ==BIT3)
{
//Handle the Interrupt generated by P1IN.3
P1IFG &= ~BIT3;  //Clear the IFG
//Insert User Code Here
P1OUT ^= BIT6;                         // P1.0 = toggle
}
else if((P1IFG&BIT4) ==BIT4)
{
//Handle the Interrupt generated by P1IN.4
P1IFG &= ~BIT4;  //Clear the IFG
//Insert User Code Here
}
else if((P1IFG&BIT5) ==BIT5)
{
//Handle the Interrupt generated by P1IN.5
P1IFG &= ~BIT5;  //Clear the IFG
//Insert User Code Here
}
else if((P1IFG&BIT6) ==BIT6)
{
//Handle the Interrupt generated by P1IN.6
P1IFG &= ~BIT6;  //Clear the IFG
//Insert User Code Here
}
else
{
//Handle the Interrupt generated by P1IN.7
P1IFG &= ~BIT7;  //Clear the IFG
//Insert User Code Here
}

//LPM3_EXIT;           //退出中斷后退出低功耗模式。若退出中斷后要保留低功耗模式,將本句屏蔽
}

#pragma vector=USI_VECTOR
__interrupt void USI_ISR()
{
//Insert User Code Here
}

#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR()
{
//Insert User Code Here
}

#pragma vector=TIMERA1_VECTOR
__interrupt void TIMERA1_ISR() // the interrupt source is CC1~2
{
switch (TAIV)
{
   case 2:
                  //capture/compare1 interrupt
      //Insert User Code Here
   break;
   case 4:
                  //capture/compare2 interrupt MSP430G2231 donot have the compare2 module
      //Insert User Code Here
   break;
   case 10:
                 //TAIFG Timer overflow interrupt
                 //Insert User Code Here
    P1OUT ^= BIT6; // change the status of green led when TimerA overflow
    TACTL &= ~BIT0;
    if(flag)//i++;
    i += 4095;
    else //i--;
    i -=4095;
    if(i > 0x7fff) flag = 0;
    if(i == 0) flag = 1;
    CCR1 = i; //change the duty-cycle
   break;
}
}

#pragma vector=TIMERA0_VECTOR
__interrupt void TIMERA0_ISR() // the interrupt source is CC0
{
//Insert User Code Here


}




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:75612 發表于 2015-4-3 12:24 | 只看該作者
謝謝 我試試
回復

使用道具 舉報

板凳
ID:70678 發表于 2015-4-15 10:15 | 只看該作者
怎么看不懂i啊
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩不卡 | 在线不卡视频 | 男人的天堂久久 | 日韩精品一区二区三区 | 国产精品久久久久免费 | 日本视频在线 | 热99在线 | 久久精品小视频 | 黄色一级毛片免费看 | 欧美久久久久久久久 | 国产高清一区二区三区 | 欧美精品久久久久 | 日韩欧美在线视频 | wwwxxx国产| 日日干日日色 | 国产黄色在线观看 | 亚洲一区二区视频在线播放 | 精品一区二区三 | 91xxx在线观看 | 国产一区二区三区 | 麻豆一区二区三区 | 久久综合入口 | 国产在线对白 | 久久99视频这里只有精品 | 久久久国产精品 | 国产成人高清成人av片在线看 | 国产日韩精品在线 | 色婷婷影院 | 午夜一级大片 | 草b视频| 国产精品日本一区二区在线播放 | 久久国产视频网站 | 欧美一级高潮片免费的 | 色婷婷av一区二区三区软件 | 在线观看国产www | 久久人人网 | 亚洲精品久久久久久久久久久 | 超碰精品在线 | 亚洲 中文 欧美 日韩 在线观看 | 91大神在线资源观看无广告 | 亚洲国产精品久久人人爱 |