//******************************************************************************//修改者http://jiwm.blog.163.com
//MSP430G2553 呼吸燈演示程序 - 使用Timer_A,Up Mode, DCO SMCLK
//
//介紹: 該程序利用TIMER A 的 UP模式 在P1.6腳產(chǎn)生PWM輸出
//將CCR0設(shè)置為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://m.butianyuan.cn/article/201611/322872.htm#include "msp430g2553.h"
// *************************************************************
// 延時函數(shù),對于1M主頻,約延時1ms
// *************************************************************
void delay_1ms(void)
{
unsigned int k;
for (k=0;k<195;k++);
}
// *************************************************************
// 延時函數(shù),延時n*ms
// *************************************************************
void delay_nms(unsigned int n)
{
unsigned int j;
for (j=0;j
{
delay_1ms();
}
}
// *************************************************************
// 主程序
// *************************************************************
void main(void)
{
unsigned const PWMPeriod = 1500; //設(shè)置PWMPeriod參數(shù)
volatile unsigned int i;//變量
WDTCTL = WDTPW + WDTHOLD;// 關(guān)閉看門狗
BCSCTL1= CALBC1_1MHZ;//1M內(nèi)部時鐘,其他也可以
DCOCTL = CALDCO_1MHZ;
P1DIR |=BIT6;// 設(shè)置 P1.6為輸出
P1SEL |=BIT6;// 設(shè)置 P1.6為TA0.1輸出
TACCR0 = PWMPeriod;// 設(shè)置PWM 周期
TACCTL1 = OUTMOD_7;// 設(shè)置PWM 輸出模式為:7 - PWM復位/置位模式,
// 即輸出電平在TAR的值等于CCR1時復位為0,當TAR的值等于CCR0時置位為1,改變CCR1,從而產(chǎn)生PWM。其實模式2也可以
TACTL =TASSEL_2 +MC_1;// 設(shè)置TIMERA的時鐘源為SMCLK, 計數(shù)模式為up,到CCR0再自動從0開始計數(shù)
while(1)
{
CCR1=0;//確保開始是暗的
//漸亮過程:不斷設(shè)置CCR1的值,使翻轉(zhuǎn)的時間變長,改變PWM的占空比
//由于只有1個定時器,編程有些你困難,故仍引入delay函數(shù)
for(i=0;i
{
CCR1=i;
delay_nms(4-(i/500));//占空比變化的延時,調(diào)整延遲時間可改變呼吸燈變暗的速度
//在暗的時候延長delay時間,可增強效果
}
//漸暗過程:不斷設(shè)置CCR1的值,使翻轉(zhuǎn)的時間變短,改變PWM的占空比
for(i=PWMPeriod;i>0;i-=1)
{
CCR1=i;
delay_nms(4-(i/500));//占空比變化的延時,調(diào)整延遲時間可改變呼吸燈變暗的速度
//在暗的時候延長delay時間,可增強效果
}
CCR1=0;//確保燈暗
delay_nms(600); //暗0.6S增強效果
}
}
評論