void ISD4004_Play(uint addr) {
Sendcmd(POWERUP,0); DelayMs(25); SendCmd(SETPLAY,addr); SendCmd(PLAY,0); }
uint ISD4004_Stop(void) {
uint tmp;
tmp= SendCmd(STOP,0); return tmp; }
void ISD4004_Record(uint addr) {
SendCmd(POWERUP,0); DelayMs(25); SendCmd(POWERUP,0); DelayMs(50); SendCmd(SETREC,addr); SendCmd(REC,0); }
uint ISD4004_Rint(void)
{
return SendCmd(RINT,0); }
*******************************************************************************
//I2CLib.h
#ifndef TWI_H
15
#define TWI_H
#include
#define ERROR
#define START 0x08 #define MT_SLA_ACK 0x18 #define MT_DATA_ACK 0x28 #define MR_SLA_ACK 0x40
#define MR_DATA_ACK 0x50 #define MR_DATA_NACK 0x58
void TwiWrite(char sladdr,char addr,char* dat,int len); void TwiRead(char sladdr,char addr,char* dat,int len); #endif/*TWI_H*/ //I2CLib.c
#include \
static void Delay(int num) {
int i;
for(i=0;i void TwiWrite(char sladdr,char addr,char* dat,int len); { int i; for(i=0;i if((TWSR&0xF8)!=START)ERROR(START); 16 TWDR=(sladdr<<1)&0xfe; TWCR=(1< if((TWSR&0xF8)!=MT_SLA_ACK) ERROR(MT_SLA_ACK); TWDR=addr+1; TWCR=(1< if((TWSR&0xF8)!=MT_DATA_ACK) ERROR(MT_DATA_ACK); TWDR=*(dat+i); TWCR=(1< if((TWSR&0xF8)!=MT_DATA_ACK) ERROR(MT_DATA_ACK); TWCR=(1< Delay(3000); } } void TwiRead(char sladdr,char addr,char* dat,int len); { int i; for(i=0;i if((TWSR&0xF8)!=START)ERROR(START); TWDR=(sladdr<<1)&0xfe; TWCR=(1< if((TWSR&0xF8)!=MT_SLA_ACK) ERROR(MT_SLA_ACK); TWDR=addr+1; TWCR=(1< 17 while(!(TWCR&(1< if((TWSR&0xF8)!=MT_DATA_ACK) ERROR(MT_DATA_ACK); TWCR=(1< if((TWSR&0xF8)!=START)ERROR(START); TWDR=(sladdr<<1)|0x01; TWCR=(1< if((TWSR&0xF8)!=MR_SLA_ACK)ERROR(MR_SLA_ACK); TWCR=(1< if((TWSR&0xF8)!=MR_DATA_NACK)ERROR(MR_DATA_NACK); *(dat+i)=TWDR; TWCR=(1< ******************************************************************************* //include.h #ifndef INCLUDE_H #define INCLUDE_H #include #include\ #include \ #define HEAD 0 #define TAIL 1 #define RECORD_NUM 30 18 #define KEY_PLAY_LEVEL (PIND&0x04) #define KEY_STOP_LEVEL (PINB&0x40) #define KEY_RECORD_LEVEL (PINB&0x80) #define INT_LEVEL (PINC&0x01) typedef enum{ KEY_NONE, KEY_PLAY, KEY_STOP, KEY_RECORD }KeyCode; typedef enum{ PLAY_NONE, PLAY_HEAD, PLAY_ZHAN, PLAY_TALL, PLAY_OVER }PlayStatus; typedef enum{ RECORD_NONE, RECORD_ONGOING, RECORD_OVF }RecordStatus; typedef enum{ FALSE, TRUE }Bool; void TxData(char data); void DelaayMs(uint n); uchar MEGA48SPISendByte(uchar byte); viod MEGA48SSLevel(Level level); #endif/*INCLUDE_H*/ //include.c 19