📄 main.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 + -