資源簡介
這是基于MSP430F5529單片機實現的PWM程序,最后輸出的正弦波,通過改變占空比實現。

代碼片段和文件信息
#include??
int?m=0;
int?Sin[]={64677073767982858891949699102
104106109111113115117118120121123124
125126126127127127127127127127126126125
124123121120118?117115113111109106104102
999694918885827976737067646057545148
?4542393633312825232118161412109764
3211000000011234679101214161821
2325283133363942454851545760};?
/*
?*?main.c
?*/
int?main(void)?{
//int?i;
????WDTCTL?=?WDTPW?|?WDTHOLD; //?Stop?watchdog?timer
UCSCTL1?|=?XTS;??????//選擇ACLK=LFXT,高頻
/*do
{
IFG1&=~OFIFG;????//清除晶體故障標志位
for(i=0xFF;i>0;i--);??//延時
}
while((IFG1&0FIFG)!=0);??//晶體故障標志無置位
IFG1&=~OFIFG;???????//清除晶體故障標志*/
UCSCTL2?|=?SELM_3;???//CPU主時鐘MCLK=LFXT18MHz
P2SEL|=BIT3+BIT4+BIT5;
P2DIR|=BIT3+BIT4+BIT5;
P2OUT|=BIT3+BIT4+BIT5;
P1DIR|=BIT0;
TA2CTL?|=?ID_1+TASSEL_1+MC_1;???//MC_1增模式
//TA2CCTL0=CCIE;??????//捕獲比較寄存器0中斷允許
TA2CCTL1=OUTMOD_7;??????//捕獲比較1輸出模式7
TA2CCR0=256;//PWM計數周期
//__bis_SR_register(LPM3_bits+GIE);???//芯片低功耗,GIE全局中斷使能
//__no_operation();
????while(1)
????{
???? if(m>127)
???? m=0;
???? else
???? m++;
???? P1OUT?^=?0x01;
???? TA2CCR1=Sin[m];
????}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1365??2015-04-23?21:12??main.c
-----------?---------??----------?-----??----
?????????????????1365????????????????????1
評論
共有 條評論