標題:
任意聲音延遲程序 msp430單片機工程
[打印本頁]
作者:
yhdcm
時間:
2017-1-12 13:22
標題:
任意聲音延遲程序 msp430單片機工程
可用于聲音信號的任意時間延遲,msp430單片機做的
0.png
(65.52 KB, 下載次數(shù): 100)
下載附件
2017-1-13 01:37 上傳
下載:
復件 program.rar
(320.76 KB, 下載次數(shù): 13)
2017-1-12 13:22 上傳
點擊文件名下載附件
聲音延時
下載積分: 黑幣 -5
主程序預覽:
#include "VoiceHeader.h"
#include "msp430f2274.h"
#include "math.h"
//=============================================================================
// 程序初始化
//=============================================================================
void delay_us(unsigned int us)
{
while(us--);
}
void delay_ms (unsigned int ms)
{
unsigned int i;
for(i=0;i<ms;i++)
delay_us(500);
}
void InitTimeA(void)
{
TACCTL0 = CCIE; // TACCR0 interrupt enabled
TACCR0 = 50000;
TACTL = TASSEL_2 + MC_2; // SMCLK, contmode
}
void InitWDT(void)
{
WDTCTL = WDT_MDLY_32; // 4ms mclk=8M
IE1 |= WDTIE; // Enable WDT interrupt
return;
}
void Init_CLK(void)
{
DCOCTL = 0x68;
BCSCTL1 = XTS +XT2OFF +DIVA_0 +RSEL3 +RSEL2 +RSEL1 +RSEL0; //
BCSCTL2 = DIVS_0 +DIVM_0 + SELM_0 + DIVS_3; // SMCLK = MCLK
//BCSCTL2 = DIVS_0 +DIVM_0 + SELM_0;
BCSCTL3 = XT2S_2 + LFXT1S_0;
/*
BCSCTL1 = XTS +DIVA_0;
BCSCTL2 = DIVS_0 +DIVM_0 + SELM_2 +SELS; // SMCLK = MCLK
BCSCTL3 = XT2S_2 + LFXT1S_2 +XCAP_3; //
*/
P1SEL |= BIT4;
P1DIR |= BIT4;
return ;
}
void InitADC(void)
{
ADC10CTL1 = INCH_1 + ADC10DIV_7 + ADC10SSEL_3 + CONSEQ_1; // SMCLK
ADC10CTL0 = SREF_1 + ADC10SHT_0 + MSC + REF2_5V + REFON + ADC10ON+ ADC10IE;
ADC10AE0 |= BIT0 + BIT1; // P2.0/P2.1 ADC option select
// ADC10DTC0 |= ADC10CT; // Continous two block transfers ADC10TB +
ADC10DTC1 = 0x02; // 2 conversion locations
ADC10SA = 0x0200; // Data buffer start
ADC10CTL0 |= ENC + ADC10SC; // Start sampling continously
}
void main(void)
{
_DINT();
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
Init_CLK();
InitADC();
// InitTimeA();
OutLED;
WriteHighLED;
OutAD7397D0_D7;
OutAD7397D8_D9;
OutAD7397_RS;
WriteHighAD7397_RS;
OutAD7397_CS;
WriteHighAD7397_CS;
OutAD7397_LDA;
WriteHighAD7397_LDA;
OutAD7397_AB;
OutAD7397_LDB;
WriteHighAD7397_LDB;
// delay_ms(1000);
// WriteLowLED;
_EINT();
pA = 200;
pB = 0;
DataA = (unsigned int *)0x0200; // Initialize
DataB = (unsigned int *)0x0202; // Initialize
while(1)
{
}
}
/*
******************************************************************************
*中斷程序處理
******************************************************************************
*/
#pragma vector = PORT1_VECTOR /* 0xFFE4 Port 1 */
__interrupt void PORT1_sever(void)
{
}
#pragma vector = PORT2_VECTOR /* 0xFFE6 Port 2 */
__interrupt void PORT2_sever(void)
{
}
#pragma vector = ADC10_VECTOR /* 0xFFEA ADC10 */
__interrupt void ADC10_sever(void)
{
ADC10CTL0 &= ~(ENC + ADC10SC); // Start sampling continously
//================================================
pA ++;
pB ++;
if(pA >= 400) pA = 0;
if(pB >= 400) pB = 0;
data[pA] = *DataB;
WriteHighLED;
WriteLowLED;
//================================================
// A 1
WriteHighAD7397_AB;
WriteLowAD7397_LDA;
DD = data[pB];
WriteAD7397D0_D7 = (unsigned char)DD;
DD = DD >> 8;
WriteAD7397D8_D9 &= ~(BIT0 + BIT1);
WriteAD7397D8_D9 |= DD;
WriteLowAD7397_CS;
WriteHighAD7397_CS;
// B 2
WriteLowAD7397_AB;
WriteLowAD7397_LDB;
DD = data[pB];
WriteAD7397D0_D7 = (unsigned char)DD;
DD = DD >> 8;
WriteAD7397D8_D9 &= ~(BIT0 + BIT1);
WriteAD7397D8_D9 |= DD;
WriteLowAD7397_CS;
WriteHighAD7397_CS;
//=======================================================
ADC10SA = 0x0200; // Data buffer start
ADC10CTL0 |= ENC + ADC10SC; // Start sampling continously
}
#pragma vector = USCIAB0TX_VECTOR /* 0xFFEC USCI A0/B0 Transmit */
__interrupt void USCIAB0TX_sever(void)
{
}
#pragma vector = USCIAB0RX_VECTOR /* 0xFFEE USCI A0/B0 Receive */
__interrupt void USCIAB0RX_sever(void)
{
}
#pragma vector = TIMERA1_VECTOR /* 0xFFF0 Timer A CC1-2, TA */
__interrupt void TIMERA1_sever(void)
{
}
#pragma vector = TIMERA0_VECTOR /* 0xFFF2 Timer A CC0 */
__interrupt void TIMERA0_sever(void)
{
}
#pragma vector = WDT_VECTOR /* 0xFFF4 Watchdog Timer */
__interrupt void WDT_sever(void)
{
}
#pragma vector = TIMERB1_VECTOR /* 0xFFF8 Timer B CC1-2, TB */
__interrupt void TIMERB1_sever(void)
{
}
#pragma vector = TIMERB0_VECTOR /* 0xFFFA Timer B CC0 */
__interrupt void TIMERB0_sever(void)
{
}
復制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1