|
- unsigned const PWMPeriod = 1500; //設置PWM周期參數,const聲明此值不允許改變.該數值太大,會導致LED閃爍
- volatile unsigned int i; //聲明變量i是隨時可變的,系統不要去優化這個值
- WDTCTL = WDTPW + WDTHOLD; // 關閉看門狗
- P1DIR |=BIT3; // 設置 P1.3為輸出
- P1SEL |=BIT3; // 設置 P1.3為TA0.2輸出
- TA0CCR0 = PWMPeriod; // 設置PWM 周期
- TA0CCTL2 = OUTMOD_7; // 設置PWM 輸出模式為:7 - PWM復位/置位模式,
- // 即輸出電平在TAR的值等于CCR2時復位為0,當TAR的值等于CCR0時置位為1,改變CCR2,從而產生PWM。其實模式2也可以
- TA0CTL= TASSEL_2 +MC_1; // 設置TIMERA的時鐘源為SMCLK, 計數模式為up,到CCR0再自動從0開始計數
- while(1)
- {
- TA0CCR2=0;//確保最開始是暗的
- //漸亮過程:不斷設置TA0CCR2的值,使翻轉的時間變長,改變PWM的占空比
- for(i=0;i<PWMPeriod;i+=1)
- {
- TA0CCR2=i;
- delay_nms(4-(i/500)); //占空比變化的延時,調整延遲時間可改變呼吸燈變暗的速度
- //在暗的時候延長delay時間,可增強效果
- }
- //漸暗過程:不斷設置TA0CCR2的值,使翻轉的時間變短,改變PWM的占空比
- for(i=PWMPeriod;i>0;i-=1)
- {
- TA0CCR2=i;
- delay_nms(4-(i/500)); //占空比變化的延時,調整延遲時間可改變呼吸燈變暗的速度
- //在暗的時候延長delay時間,可增強效果
- }
- TA0CCR2=0; //確保燈暗
- delay_nms(250); //時間長一點,增強視覺效果
復制代碼
|
-
-
huxideng.zip
2018-7-14 09:42 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
892 Bytes, 下載次數: 49, 下載積分: 黑幣 -5
評分
-
查看全部評分
|