標(biāo)題:
MSP430單片機(jī)片內(nèi)12位DA產(chǎn)生正弦波C語(yǔ)言程序
[打印本頁(yè)]
作者:
xueer
時(shí)間:
2013-7-14 16:16
標(biāo)題:
MSP430單片機(jī)片內(nèi)12位DA產(chǎn)生正弦波C語(yǔ)言程序
#include <msp430x16x.h>
//------------------------------------------------------------------------------
// 12-bit Sine Lookup table with 32 steps
//------------------------------------------------------------------------------
static int Sin_tab[32] = { 0x7FF,0xA78,0xCB2,0xE77,0xF9A,0xFFE,0xF9A,0xE77,0xCB2,0xA78,0x7FF,0x586,0x34C,0x187,0x064,0x000
,0x064,0x187,0x34C,0x586};
static int Cos_tab[32] = { 0xFFE,0xF9A,0xE77,0xCB2,0xA78,0x7FF,0x586,0x34C,0x187,0x064,0x000
,0x064,0x187,0x34C,0x586,0x7FF,0xA78,0xCB2,0xE77,0xF9A};
void main(void)
{
volatile unsigned int i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
//==========================選擇高頻振蕩器=======================================
BCSCTL1 &= ~XT2OFF; // XT2= HF XTAL
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG)); //查看8M的震蕩是否穩(wěn)定 // OSCFault flag still set?
BCSCTL2 |= SELM_2 + SELS; //MCLK和SMCLK選擇XT2// MCLK= SMCLK= XT2 (safe)
//================================================================================
ADC12CTL0 = REF2_5V + REFON;//內(nèi)部基準(zhǔn)電壓 // Internal 2.5V ref
//================================================================================
DMACTL0 = DMA0TSEL_5 + DMA1TSEL_5; // DAC12IFG trigger觸發(fā)器
DMA0SA = (int) Sin_tab;//首地址 // Source block address
DMA0DA = (int)&DAC12_0DAT; //目的地址 // Destination single address
DMA0SZ = 0x14; //長(zhǎng)度 // Block size
DMA0CTL = DMADT_4 + DMASRCINCR_3 + DMAEN; // Rpt, inc src, word-word
DMA1SA = (int) Cos_tab; //首地址 // Source block address
DMA1DA = (int)&DAC12_1DAT; //目的地址 // Destination single address
DMA1SZ = 0x14; //長(zhǎng)度 // Block size
DMA1CTL = DMADT_4 + DMASRCINCR_3 + DMAEN; // Rpt, inc src, word-word
DAC12_0CTL = DAC12LSEL_2 + DAC12IR + DAC12AMP_5 + DAC12IFG + DAC12ENC + DAC12GRP;
DAC12_1CTL = DAC12LSEL_2 + DAC12IR + DAC12AMP_5 + DAC12IFG + DAC12ENC;
CCTL1 = OUTMOD_3;//置位復(fù)位模式 // CCR1 set/reset
CCR1 = 1; //設(shè)置占空比 // CCR1 PWM Duty Cycle
CCR0 = 1; //設(shè)置周期 // Clock period of CCR0
TACTL = TASSEL_2 + MC_1; //定時(shí)器A的時(shí)鐘源為SMCLK=8M,增計(jì)數(shù)模式 // SMCLK, upmode
_BIS_SR(CPUOFF); // CPU off
}
復(fù)制代碼
作者:
水荷
時(shí)間:
2013-8-17 22:00
這個(gè)從哪個(gè)管腳輸出正弦波
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1