⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 ISD4003在MSP430F123下的驱动
💻 C
字号:
#include <MSP430X12X.h>
#include "Init430.h"

#define    T_PUD               5         /* Power Up Delay Time to wait ( miliseconds ) */
#define    POWER_UP_CMD        0x20         //上电
#define    POWER_DN_CMD        0x10         //下电
#define    STRT_RECORD_CMD     0xb0         //开始录音
#define    PLAY_CMD            0xf0         //开始播放
#define    SET_PLAY            0xE000       //开始播放

#define    STOP_PLAY           0x30         //停止当前操作
#define    INIT_MSG_CUE_CMD    0xe8         //快进
#define    STRT_MSG_CUE_CMD    0xf8         //

#define CLK4003_UP    P2OUT |= BIT0
#define CLK4003_DOWN  P2OUT &= ~BIT0
#define OUT4003_UP    P2OUT |= BIT1
#define OUT4003_DOWN  P2OUT &= ~BIT1
#define CS4003_UP     P2OUT |= BIT3 
#define CS4003_DOWN   P2OUT &= ~BIT3

void write4003(uchar j);
void power4003(uchar sw);
void play4003(uint addr,uchar stp,uchar goon);

void main(void)
{   
    WDTCTL = WDTPW + WDTHOLD;   // 关闭看门狗
    
    _DINT();			// 关闭中断    
    init_clk();
    
    P2DIR|=BIT0;		//clk is out;
    P2DIR|=BIT1;		//clk is out;
    P2DIR|=BIT3;		//clk is out;    
    
    power4003(1);
    play4003(0,0,1);    
    power4003(0);
    
    while (1)
    {

        delay_ms(20);
    }       
}

void write4003(uchar j)
{
    uchar i;  
    for(i=0;i<8;i++)
    {
  	  if(j&0x01) 
    		OUT4003_UP;
      	  else   
	    	OUT4003_DOWN;
	  CLK4003_UP;
  	  CLK4003_DOWN;
    	  j>>=1;
    }
}

void power4003(uchar sw)
{
  CS4003_DOWN;
//  write4003(0);
  if (sw!=0)
    write4003(POWER_UP_CMD);
  else 
    write4003(POWER_DN_CMD);
  CS4003_UP;
  delay_ms(T_PUD);             //power delay
}

/**********************************************************************************************
原形:void PlayVoice(unsigned int addr,unsigned char stp,unsigned char goon)
功能:ISD4003播放驱动程序。
参数:addr 播放地址,stp=1停止播放,stp=0开始播放,goon=0表示从addr地址开始播放
      goon=1表示从当前地址开始播放。
返回值:无。
***********************************************************************************************/
void play4003(uint addr,uchar stp,uchar goon)
{
  unsigned char i;
  CS4003_DOWN;
  if(stp==0)
  {
    	if(goon==0)//从addr地址开始播放
    	{
      	    addr&=0x7ff;
            addr|=SET_PLAY;  
            for(i=0;i<16;i++)
            {
        	CLK4003_DOWN;
                if(addr&0x01) 
    		    OUT4003_UP;
                else   
	    	    OUT4003_DOWN;
        	CLK4003_UP;
        	addr>>=1;
      	    }
            //SpiWrite(PLAY_CMD);
    	 }
    	 else 
    	 {    		//从当前地址开始播放
             write4003(PLAY_CMD);
         }
  }
  else
  {
      write4003(STOP_PLAY);
  }
  CS4003_UP;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -