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

📄 vs1001k.c

📁 mp3源码,是自己写的,关于vs1001与CD卡的读取歌曲,和播放.
💻 C
字号:
#include<all.h>

void delay(uint dat)//延迟10us
{ uint m,n;
  for(m=0;m<dat;m++)
   for(n=0;n<2;n++);
}
/*等DREQ*/
void vs_wait_dreq(void)
{ while(!(PIND&0x04)); }

/*发单个命令*/
uchar write_single(uchar dat)//发
{
  SPDR=dat;
  while(!(SPSR&0x80));
  return SPDR;
}  

uchar read_single(void)//读单个数据
{  return write_single(0xff); }   

/*写命令*/
void vs_write_sci(uchar add,uint dat)//写命令
{ clear_xcs;//XCS有效
  select_vs;
  write_single(0x02);//写命令
  write_single(add);//写地址
  write_single((uchar)(dat>>8));
  write_single((uchar)dat );
  set_xcs;
}

uint vs_read_sci(uchar add)//读命令
{ uint dat;
  clear_xcs;//XCS有效
  select_vs;
  write_single(0x03);//读命令
  write_single(add);//写地址
  dat=(uint)read_single()<<8;
  dat|=read_single();
  set_xcs;
  return dat;
}
/*发数据*/
void vs_write_sdi_byte(uchar dat)//发送单个字节
{  set_xcs;
   select_vs;
   clear_bysnc;	 
   set_bysnc;
   SPDR=dat;
   while(!(SPSR&0x80));
   clear_bysnc;
}
void vs_write_sdi_bytes(uchar *add,uint n)//发送多个数据
{  uint i;
 //  vs_wait_dreq();//等DREQ变高
   select_vs;
   set_xcs;//选中DCLK
   for(i=0;i<n;i++)
   { clear_bysnc;	 
     set_bysnc;
     SPDR=*add++;
	 while(!(SPSR&0x80));
   }
    while(!(SPSR&0x80));
    clear_bysnc;	
}	
void vs1001k_reset(void)//VS1001K复位
{ vs_write_sci(MODE,0x0004);
  delay(500);
  vs_wait_dreq();
  vs_write_sci(MODE,0x0000);
  vs_write_sci(VOL,0x0000);
  vs_write_sdi_byte(0x00);
  vs_write_sdi_byte(0x00);
}  

⌨️ 快捷键说明

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