您现在的位置: 主页 > MCU > 单片机技术应用 > ISD2560录放控制程序 -
本文所属标签:
为本文创立个标签吧:

ISD2560录放控制程序 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-07 

[导读]#include #include #include #pragma interrupt_handler timer0_ovf:10#pragma interrupt_handler int1_isr:3#define DDR_address DDRA=0xfe#define DDR_contrue DDRB|=BIT(PB0)|BIT(PB1)|BIT(PB2)#define address

#include
#include
#include
#pragma interrupt_handler timer0_ovf:10
#pragma interrupt_handler int1_isr:3
#define DDR_address DDRA=0xfe
#define DDR_contrue DDRB|=BIT(PB0)|BIT(PB1)|BIT(PB2)
#define address PORTA
#define CE_H PORTB|=BIT(PB0)
#define CE_L PORTB&=~BIT(PB0)
#define PD_H PORTB|=BIT(PB1)
#define PD_L PORTB&=~BIT(PB1)
#define PLAY PORTB|=BIT(PB2)
#define RECORD PORTB&=~BIT(PB2)
uchar count=0;//每0.8秒 时间计数一次
uchar num=0; //Timer0中断计数,每计数100个为0.8秒
uchar play_addr=0;//放音地址
uchar record_addr=0;//录音地址
uchar record_time=1;
void delay_isd2560()
{
uchar a,b;
for (a=0;a<100;a++)
for (b=0;b<100;b++)
;
}
void timer0_ovf()
{
TCNT0=5;
num++;
if (num>95)//num取值要略小于100,防止录音时间超出分段地址时间(0.8秒)。
{
num=0;
count++;
record_addr++;//地址每加一次,录音时间增加0.8秒
}
if (count>=((int)(record_time*10)/8))
{
stop();
TIMSK=0x00;
count=0;
num=0;
LCMDisplayString(4,3,"录音停止");
}
}
void int1_isr()//根据录音结束标志,判断此段放音结束
{
stop();
LCMDisplayString(4,4,"放音停止");
}
void isd2560_init()
{
MCUCR|=0x08;
GICR|=0x80;
TIMSK=0x00;
TIFR=0;
TCCR0=0x04;
TCNT0=5;
SREG=0x80;
DDR_address;
DDR_contrue;
DDRD&=~BIT(PD3);
CE_H;
PD_H;
}
void record()
{
MCUCR&=~0x08;
address=record_addr<<1;
delay_isd2560();
RECORD;
PD_L;
CE_L;
TIMSK=0x01;
TCNT0=5;
num=0;
count=0;
}
void play()
{
MCUCR|=0x08;
TIMSK=0x00;
address=play_addr<<1;
delay_isd2560();
PLAY;
PD_L;
delay_isd2560();
CE_L;
delay_isd2560();
CE_H;
}
void stop()
{
TIMSK=0x00;
CE_H;
PD_H;
}

本文引用地址: http://www.21ic.com/app/mcu/201808/785054.htm



              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > ISD2560录放控制程序 -
 

"ISD2560录放控制程序 -"的相关文章

网站地图

围观()