1578|0

1140

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

msp430单片机声音延迟程序代码分享 [复制链接]

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  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)
  • {
  • }


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


 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表