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

📄 isd4003play.txt

📁 简单的ISD4003放音控制程序 基于ATmega16
💻 TXT
字号:
//简单的ISD4003放音控制程序 

//基于ATmega16,编程工具为winAVR,实验通过
 
//IO口设置
#define SS_low() PORTB&=~(1<<PB4)//ISD片选
#define SS_high() PORTB|=1<<PB4
#define MOSI_0() PORTB&=~(1<<PB5)//输出位0
#define MOSI_1() PORTB|=(1<<PB5)//输出位1
#define SPI_SCK1() PORTB|=(1<<PB7)//时钟1
#define SPI_SCK0() PORTB&=~(1<<PB7)//时钟0
//以下为控制字
#define POWERUP 0x2000 //使ISD4003上电
#define SETPLAY 0xe000  //设定播放地址
#define PLAY 0xf000   //从当前地址播放
#define STOP 0x3000   //停止ISD4003
#define STOPPWRDN 0x1000//停止并使ISD4003掉电
#define RINT 0x3000
 
unsigned int SPI_write_word(unsigned int word)
 {
 unsigned int i=0;
 unsigned int j;
 SPI_SCK0();
 SS_low();
 for(j=0x0001;j;j<<=1)
  {
  if(j&word)MOSI_1();
  else MOSI_0();
  SPI_SCK1();
  SPI_SCK1();
  SPI_SCK0();
  if(PINB&1<<PB6)i|=j;
  }
 SS_high();
 return(i);
 }

void PlaySound(unsigned int addr)//从addr处进行播放
 {
 SPI_write_word(POWERUP);
 delay(25);//等待,这个函数另加,不叙
 SPI_write_word(SETPLAY+addr);
 SPI_write_word(PLAY);
 }
 
int main(void)
{
DDRB = 0xb0;      //PB4为SPI控制脚,PB5,MOSI,PB6,MISO,PB7,SCK
PORTB = 0x08; 
while(1)
{
PlaySound(0);//从地址0开始播放
delay(2000);//延时
SPI_write_word(STOP);//停止播放
}
} 

⌨️ 快捷键说明

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