新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430G2553測試程序(呼吸燈)

MSP430G2553測試程序(呼吸燈)

作者: 時間:2016-11-28 來源:網絡 收藏
//******************************************************************************

//修改者http://jiwm.blog.163.com
//MSP430G2553 呼吸燈演示程序 - 使用Timer_A,Up Mode, DCO SMCLK
//
//介紹: 該程序利用TIMER A 的 UP模式 在P1.6腳產生PWM輸出
//將CCR0設置為1500來定義PWM的周期,利用循環(huán)不斷改變CCR1的值,
//實現(xiàn)利用改變PWM的占空比來改變LED亮度.
//ACLK = na, SMCLK = MCLK = TACLK = default DCO
//
//MSP430G2553
//-----------------
///||XIN|-
//| ||
//--|RSTXOUT|-
//||
//|P1.6/TA1|--> CCR1 - PWM
//
//使用 MSP430 LaunchPad , MSP430G2553芯片
//在IAR Embedded Workbench for MSP430 5.40下編譯測試通過
//******************************************************************************

本文引用地址:http://butianyuan.cn/article/201611/322872.htm

#include "msp430g2553.h"


// *************************************************************
// 延時函數,對于1M主頻,約延時1ms
// *************************************************************
void delay_1ms(void)
{
unsigned int k;
for (k=0;k<195;k++);
}

// *************************************************************
// 延時函數,延時n*ms
// *************************************************************
void delay_nms(unsigned int n)
{
unsigned int j;
for (j=0;j
{
delay_1ms();
}
}

// *************************************************************
// 主程序
// *************************************************************
void main(void)
{
unsigned const PWMPeriod = 1500; //設置PWMPeriod參數
volatile unsigned int i;//變量
WDTCTL = WDTPW + WDTHOLD;// 關閉看門狗
BCSCTL1= CALBC1_1MHZ;//1M內部時鐘,其他也可以
DCOCTL = CALDCO_1MHZ;
P1DIR |=BIT6;// 設置 P1.6為輸出
P1SEL |=BIT6;// 設置 P1.6為TA0.1輸出
TACCR0 = PWMPeriod;// 設置PWM 周期
TACCTL1 = OUTMOD_7;// 設置PWM 輸出模式為:7 - PWM復位/置位模式,
// 即輸出電平在TAR的值等于CCR1時復位為0,當TAR的值等于CCR0時置位為1,改變CCR1,從而產生PWM。其實模式2也可以
TACTL =TASSEL_2 +MC_1;// 設置TIMERA的時鐘源為SMCLK, 計數模式為up,到CCR0再自動從0開始計數
while(1)
{
CCR1=0;//確保開始是暗的
//漸亮過程:不斷設置CCR1的值,使翻轉的時間變長,改變PWM的占空比
//由于只有1個定時器,編程有些你困難,故仍引入delay函數

for(i=0;i
{
CCR1=i;
delay_nms(4-(i/500));//占空比變化的延時,調整延遲時間可改變呼吸燈變暗的速度
//在暗的時候延長delay時間,可增強效果
}
//漸暗過程:不斷設置CCR1的值,使翻轉的時間變短,改變PWM的占空比
for(i=PWMPeriod;i>0;i-=1)
{
CCR1=i;
delay_nms(4-(i/500));//占空比變化的延時,調整延遲時間可改變呼吸燈變暗的速度
//在暗的時候延長delay時間,可增強效果
}
CCR1=0;//確保燈暗
delay_nms(600); //暗0.6S增強效果
}
}



評論


技術專區(qū)

關閉