扬州职业大学——电子工程系 智能语音玩具 毕业论文
void IO_Send_Byte(uint8 dataout);
#endif
sbit P10 = P1^0; sbit P11 = sbit P12 = sbit P13 = sbit P14 = sbit P15 = sbit P16 = sbit P17 =
sbit P30 = sbit P31 = sbit P32 = sbit P33 = sbit P34 = sbit P35 = sbit P36 = sbit P37 =
sbit P20 = sbit P21 = sbit P22 = sbit P23 = sbit P24 = sbit P25 = sbit P26 = sbit P27 =
sbit P00 = sbit P01 = sbit P02 = sbit P03 = sbit P04 = sbit P05 = sbit P06 = sbit P07 =
sbit P40 = sbit P41 = sbit P42 = sbit P43 = sbit P44 = sbit P45 = P1^1; P1^2; P1^3; P1^4; P1^5; P1^6; P1^7; P3^0; P3^1; P3^2; P3^3; P3^4; P3^5; P3^6; P3^7; P2^0; P2^1; P2^2; P2^3; P2^4; P2^5; P2^6; P2^7; P0^0; P0^1; P0^2; P0^3; P0^4; P0^5; P0^6; P0^7; P4^0; P4^1; P4^2; P4^3; P4^4; P4^5;
第 11 页 共 45 页
扬州职业大学——电子工程系 智能语音玩具 毕业论文
sbit P46 = P4^6; sbit P47 = P4^7;
#include \#include \#include \//#include \
sbit RSTB= P3^3;
uint32 nMp3StartPos= 0; uint32 nMp3Size= 0; uint32 nMp3Pos= 0; uint32 nCurMp3Pos= 0;
uint8 idata nLD_Mode = LD_MODE_IDLE; uint8 bMp3Play= 0; uint8 idata ucRegVal; uint8 idata ucHighInt; uint8 idata ucLowInt; uint8 idata ucStatus;
uint8 idata ucSPVol= 15; // MAX= 15 MIN= 0
extern uint8 idata nAsrStatus; extern uint8 idata nInt0Flag; void ProcessInt0();
void LD_Init_Common() {
bMp3Play = 0;
LD_ReadReg(0x06); /* soft reset. */
LD_WriteReg(0x1F, 0x1);
delay( 10 ); LD_WriteReg(0x1F, 0x0); delay( 10 );
LD_WriteReg(0x89, 0x03); LD_WriteReg(0xCF, 0x43); LD_WriteReg(0xCB, 0x02);
/*PLL setting*/
LD_WriteReg(0x11, LD_PLL_11); if (nLD_Mode == LD_MODE_MP3) {
第 12 页 共 45 页
扬州职业大学——电子工程系 智能语音玩具 毕业论文
LD_WriteReg(0x19, LD_PLL_19); LD_WriteReg(0x1B, LD_PLL_1B); LD_WriteReg(0x1D, LD_PLL_1D);
LD_WriteReg(0x79, LD_LEDMTR_FREQ); } else {
LD_WriteReg(0x1E,0x00); LD_WriteReg(0x19,0x3f); LD_WriteReg(0x1D,0x1f); LD_WriteReg(0x1B,0x08); }
LD_WriteReg(0xCD, 0x04); LD_WriteReg(0x17, 0x4c); LD_WriteReg(0xB9, 0x00); LD_WriteReg(0xCF, 0x4f); }
void LD_Init_MP3() {
nLD_Mode = LD_MODE_MP3; LD_Init_Common();
LD_WriteReg(0xBD,0x02); LD_WriteReg(0x17, 0x48);
LD_WriteReg(0x85, 0x52); LD_WriteReg(0x8F ,0x00); LD_WriteReg(0x81,0x00); LD_WriteReg(0x83,0x00); LD_WriteReg(0x8E,0xff); LD_WriteReg(0x8D,0xff); delay(1);
LD_WriteReg(0x87,0xff); LD_WriteReg(0x89,0xff); LD_WriteReg(0x22,0); LD_WriteReg(0x23,0);
LD_WriteReg(0x20,(uint8)2031);
LD_WriteReg(0x21,(uint8)((2031>>8)&0x07)); LD_WriteReg(0x24, (uint8)0x77); LD_WriteReg(0x25, (uint8)3);
LD_WriteReg(0x26,(uint8)0xbb); LD_WriteReg(0x27,(uint8)1); }
第 13 页 共 45 页
扬州职业大学——电子工程系 智能语音玩具 毕业论文
void LD_Init_ASR() {
nLD_Mode= LD_MODE_ASR_RUN; LD_Init_Common();
LD_WriteReg(0xBD, 0x00); LD_WriteReg(0x17, 0x48);
delay( 10 );
LD_WriteReg(0x3C, 0x80); LD_WriteReg(0x3E, 7);
LD_WriteReg(0x38, 0xff); LD_WriteReg(0x3A, 7);
LD_WriteReg(0x40, 8); LD_WriteReg(0x42, 0); LD_WriteReg(0x44, 8); LD_WriteReg(0x46, 0); LD_WriteReg(0x1b,0x48); delay( 1 ); }
void LD_reset() {
RSTB= 1; delay(1); RSTB= 0; delay(1); RSTB= 1; }
void ProcessInt0() {
uint8 nAsrResCount= 0;
EX0= 0; ET0= 0;
nInt0Flag= 0;
ucRegVal = LD_ReadReg(0x2B); ucHighInt = LD_ReadReg(0x29);
第 14 页 共 45 页
扬州职业大学——电子工程系 智能语音玩具 毕业论文
LD_WriteReg(0x29,0) ;
ucLowInt=LD_ReadReg(0x02); LD_WriteReg(0x02,0) ;
if(nLD_Mode == LD_MODE_ASR_RUN) {
if((ucRegVal & 0x10) && LD_ReadReg(0xb2)== 0x21 && LD_ReadReg(0xbf)== 0x35) { nAsrResCount = LD_ReadReg(0xba); if(nAsrResCount>0 && nAsrResCount<4) { nAsrStatus= LD_ASR_FOUNDOK; } else { nAsrStatus= LD_ASR_FOUNDZERO; } } else { nAsrStatus= LD_ASR_ERROR;//LD_ASR_FOUNDZERO;20101124 }
LD_WriteReg(0x2b, 0); LD_WriteReg(0x1C,0); ET0= 1; return; }
if(LD_ReadReg(0xBA)&CAUSE_MP3_SONG_END) {
LD_WriteReg(0x2B,LD_ReadReg(0x2B)&(~MASK_INT_SYNC)); LD_WriteReg(0xBA, 0); LD_WriteReg(0xBC,0x0); bMp3Play= 0;
LD_WriteReg(0x08,1); delay(5);
LD_WriteReg(0x08,0); LD_WriteReg(0x33, 0);
ET0= 1; return ; }
第 15 页 共 45 页