ISD4004语音芯片在语音报站器中的应用
,进入系统待机状态。如果有按键按下,则转去执行该按键指向的工作程序。按键包括放音键、停止键、加一键、减一键以及特殊语键。在待机状态下,如果放音键首次被按下,程序将首先判断是去还是回(公交车路径一般是既去又回的),并点亮相应的指示灯,自动读出第一站的放音内容,站号显示1。如果不是首次按下,则首先判断当前站号,并以该站号为依据获得存放该站放音内容的首地址;然后调用放音子程序,读入前面获得的本站放音内容首地址,开始放音。每一句放音完毕后,ISD4004的中断引脚(25脚)会自动送一低电平信号。在硬件设计中,该引脚与单片机的P3.3连接,因此会引起一次中断,在中断子程序中有一个计数器记录中断次数,从而判断何时当前一站结束,站号加一并刷新显示。加一键按下后,程序放音内容转向下一站;减一键按下后,则使程序放音内容转向上一站,相应的站号显示也将随之刷新;特殊语键按下后,程序转向执行特殊语放音(譬如“拐弯请注意”等语句);停止键按下,将中止当前的放音状态。
为了便于读者对ISD4004应用的理解,本文给出了部分程序。
该部分程序主要完成放音操作,把获得的放音内容的地址送到ISD4004中,完成放音。
PLAY?
ACALLPOWERUP?上电子程序
ACALLDELAY25?延迟子程序,至少延
迟25ms
CLRP1.6?选中ISD4004
MOVPLAY2?#11100000B?存放SETPLAY命令
MOVA?PLAY0?送放音地址低8位
ACALLSEND?调用送地址子程序
MOVA?PLAY1?送放音地址高8位
ACALLSEND
MOVA?PLAY2?送SETPLAY命令
ACALLSEND
SETBP1.6
CLRP1.6
MOVPLAYING?#11110000B?送入放音指令
MOVA?PLAYING
ACALLSEND
SETBP1.6
RET
POWERUP??送上电指令子程序
MOVPOWING?#00100000B?送入语音芯片上电信号
MOVA?POWUPING
CLRP1.6
ACALLSEND
SETBP1.6
RET
SEND:?向ISD4004送指令、
地址等的子程序
CLRMOSI
CLRP3.2
MOVR1?#8
OUTBIT1?
CLRP3.2?时钟下降
RRCA
MOVMOSI?C?输出1位
NOP
NOP
SETBP3.2?时钟上升沿到
NOP
NOP
《ISD4004语音芯片在语音报站器中的应用(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/153979.html
为了便于读者对ISD4004应用的理解,本文给出了部分程序。
该部分程序主要完成放音操作,把获得的放音内容的地址送到ISD4004中,完成放音。
PLAY?
ACALLPOWERUP?上电子程序
ACALLDELAY25?延迟子程序,至少延
迟25ms
CLRP1.6?选中ISD4004
MOVPLAY2?#11100000B?存放SETPLAY命令
MOVA?PLAY0?送放音地址低8位
ACALLSEND?调用送地址子程序
MOVA?PLAY1?送放音地址高8位
ACALLSEND
MOVA?PLAY2?送SETPLAY命令
ACALLSEND
SETBP1.6
CLRP1.6
MOVPLAYING?#11110000B?送入放音指令
MOVA?PLAYING
ACALLSEND
SETBP1.6
RET
POWERUP??送上电指令子程序
MOVPOWING?#00100000B?送入语音芯片上电信号
MOVA?POWUPING
CLRP1.6
ACALLSEND
SETBP1.6
RET
SEND:?向ISD4004送指令、
地址等的子程序
CLRMOSI
CLRP3.2
MOVR1?#8
OUTBIT1?
CLRP3.2?时钟下降
RRCA
MOVMOSI?C?输出1位
NOP
NOP
SETBP3.2?时钟上升沿到
NOP
NOP
《ISD4004语音芯片在语音报站器中的应用(第2页)》