查看: 1304|回复: 0

msp430单片机声音延迟程序代码分享

[复制链接]

该用户从未签到

发表于 2020-11-12 19:23:15 | 显示全部楼层 |阅读模式
分享到:
msp430单片机声音延迟程序代码分享
主程序预览:
  • #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);</ms;i++)
  • }
  • 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)
  • {
  • }


[color=rgb(51, 102, 153) !important]复制代码

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-11-27 13:09 , Processed in 0.110037 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.