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

📄 main.c

📁 AVR使用硬件SPI控制ISD1760源代码
💻 C
字号:

/*通讯过程中缓冲区处理方法
*/

#include <iom8.h>         //引用端口及SFR的位定义
#include "MyDeclare.h"     //引用自定义头文件
#include "ISD1700.h"

#define LED PORTD_Bit0 //LED
#define KEY PINB_Bit0 //按键
//==============================================================================
//信息
__root unsigned char __flash VerInfo[]@0x1FE0={"Ver 1.0 tomhe666 "__DATE__};

//__root unsigned char  __flash* s[]={"hello","baby","ddd","eee"};
__root UCHAR __flash s1[]={"hello"};
__root UCHAR __flash s2[]={"baby"};
__root UCHAR __flash s3[]={"long long ago"};
__root UCHAR __flash s4[]={"there is a king"};
__root UCHAR __flash s5[]={"hello world"};

__root UCHAR __flash* __flash s[5]={s1,s2,s3,s4,s5}; //存放于flash中的uchar flash指针


static unsigned char SoundID; //当前需播放的声音片断ID
static unsigned char keylock=0;  

//==============================================================================

void reset(void)
{
  ((void (*)(void))(0x00))(); 
}

void (*p)(void);

//==============================================================================
void main( void )
{ 
  __disable_interrupt(); //禁止中断  

/*  
  p= reset;
  p();
*/
  DDRB = 0x2C;  //SPI端口初始化
  PORTB = 0x15; //开启按键上拉
  DDRD = 0x01;
  PORTD = 0x01; //亮灯
  
  TCCR0 = 0x05; //系统时钟1024分频
  TCNT0 = 0;
  
  SPCR = 0x7E; //SPI使能,SCK空闲保持为高电平,数据在上升沿采样,速率为1:128(FOSC/128)
  SPSR = 0x01; //使能倍速
  
  DELAY_US(500000);
  
  isd_init(); //初始化语音芯片
  while(!isd_is_free());
  isd_playid(2); 

  while(1)
  {
    TCNT0 = 0;
    
    if((KEY) == 1)
    {
      keylock = 0; 
      LED = 0;
    }
    else
    {
      LED = 1;
      if(keylock != 1)
      {
        //process key
        SoundID++;
        if(SoundID > MAX_SOUND_ID)SoundID = 0;
        while(!isd_is_free());
        isd_playid(SoundID); 
        keylock = 1;
      }
    }
    while(TCNT0 < 78);
  }
}



⌨️ 快捷键说明

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