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

📄 luyin_330.c

📁 基于c8051f330的ISD4002录放音程序。程序很小
💻 C
字号:
#include <C8051F330.h> 



#define uchar unsigned char
#define uint  unsigned int

sbit	SS = P1^0;
sbit	MOSI = P1^1;
sbit	MISO = P1^2;
sbit	SCLK = P1^3;
sbit	AN = P1^5;

void Oscillator_Init (void)      //时钟初始化
{	
	PCA0MD = 0x00; 
 	OSCICN = 0X83;				//系统时钟24.5Mz
	CLKSEL = 0x00; 
}

void PORT_Init (void)  
{
   	P0MDOUT = 0x00;                    // P0为漏极开路方式    
 	P0MDIN = 0xFF;                        // P0.0 数字输入                    
 	P0SKIP = 0xCF;                        //除了 P0.4,P0.5,交叉开关跳过其他P0口

 	P1MDOUT = 0x0B;                      //P1.0,P1.1,P1.3,为推挽,其他P1口 开漏
 	P1MDIN = 0XFF;						//P1口为数字输入
	P1SKIP = 0XFF;                     //交叉开关跳过P1口
	
	XBR0 = 0x01; 						//UART0的TX,RX连到I/O引脚                          
 	XBR1 = 0x40;                        
}

void delay()
{
 uchar i;
 for(i=0;i<10;i++);
}

 void delay_ms()       //24.5M系统时钟下
{
 uchar i,j;
 for(i=0;i<10;i++)
  for(j=0;j<20;j++);
 }

void delay_25ms()       //24.5M系统时钟下
{
 uchar i,j;
 for(i=0;i<255;i++)
  for(j=0;j<255;j++);
}

void SPI_Send(unsigned char dat)     //发送一个字节
{
   unsigned char i;   
                
   SCLK=0;
   for(i=0;i<8;i++)          //先发低位再发高位,依次发送    
    { 
      dat=dat>>1;     
	  MOSI=CY;              //输出1位
	  delay();
      SCLK=1;
      delay();
      SCLK=0;
      delay();
    }
}


void ISD_UpPwr(void)        //上电指令
{  
 delay();
 SS=0;
 SPI_Send(0x00);
 SPI_Send(0x20);
 SS=1;
}

void ISD_Stop(void)         //停止指令
{  
 delay();
 SS=0;
 SPI_Send(0x00);
 SPI_Send(0x10);
 SS=1;
}

void ISD_SetREC(uchar addr)         //设置录音地址
{
 delay();
 SS=0;
 SPI_Send(addr);          //地址
 SPI_Send(0xA0);
 SS=1; 

 }
 
void ISD_REC()            //从当前地址开始录音
{
 delay();
 SS=0;
 SPI_Send(0x00);
 SPI_Send(0xB0);
 SS=1; 

}



void ISD_SetPlay(uchar addr)         //设置放音地址
{
 delay();
 SS=0;
 SPI_Send(addr);          //地址
 SPI_Send(0xE0);
 SS=1; 

 }
 
void ISD_Play()            //从当前地址开始放音
{
 delay();
 SS=0;
 SPI_Send(0x00);
 SPI_Send(0xF0);
 SS=1; 

}

void LuYin()             //录音
{

 ISD_UpPwr();            //上电
 delay_25ms();           //等待上电延时

 ISD_UpPwr();            //上电
 delay_25ms();           //等待上电延时
 delay_25ms();           //等待上电延时(资料上说两倍延时)

 ISD_SetREC(0x10); 
 ISD_REC();
}


void FaYin()             //发音
{
 ISD_UpPwr();            //上电
 delay_25ms();           //等待上电延时
 delay_25ms();           //等待上电延时

 ISD_SetPlay(0x10);          //发地址为10的SetPlay命令
 ISD_Play();             //发Play命令,开始发音
  
}

main()
{
 Oscillator_Init();		//时钟初始化
 PORT_Init (); 

 //LuYin();

 FaYin();

 while(AN==1);

 ISD_Stop();
            
 while(1)
 {

 }
}











⌨️ 快捷键说明

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