在没有要求单片机工作之前,单片机处于循环查询状态,一旦P1端口的K2、K4、K5、K6键有信号发出,指针表会跳转至各自子程序执行相应的操作。以播放操作子程序为例,先后向语音芯片发出POWERUP命令,SETPLAY命令和PLAY命令,然后进入等待状态查询P1.2端口STOP键是否有触发,如有触发则终止播放操作,进入循环查询部分。播放操作的正常结束是通过外部中断0的中断子程序。
播放子程序清单:
PLAY: MOV OISTO1, #20H
LCALL TRANS ;发出POWERUP命令
MOV TMOD , #01H
MOV DPTR ,#25536
MOV TH0, DPH
MOV TL0, DPL
SETB TR0
JNB TF0,$ ;等待TPUD40ms时间
MOV OISTO, PFROM
MOV OISTO1, PFROM1
;读取播放记录的首地址
ANL O
ISTO1, #07H
ORL OISTO1, #0E0H
LCALL TRANS ;发出SETPLAY命令
ORL OISTO1, #0F0H
LCALL TRANS ;发出PLAY命令
MOV IE, #81H
HERE: JB P1.2, OVER ;如果要求中止则结束
SJMP HERE
OVER: MOV OISTO1, #10H
LCALL TRANS;发出STOPPWRDN命令
LJMP SELECT
INTX0: MOV IE, #0
LJMP OVER ;播放结束返回
RETI
注:
TRANS 为单片机与语音芯片的通讯子程
OISTO和OISTO1为存储控制位和地址的寄存器
SELECT 为循环查询子程
INTX0为中断子程
其他记录子程序,前倒子程序和后倒子程序与播放的程序相似,在此不再赘述。 ISD33000使用中应注意的几个问题
·ISD器件的音频信号输出功率很小,并不能直接驱动扬声器,需要加音频功放,如LM386。同时ISD送出的信号需通过电容耦合,隔离直流分量,以免其饱和。
·应注意RAC端口,每完成一行的录音、放音及搜索操作,该端口输出一个正脉冲。单片机检测到此正脉冲,对应当前的行地址,可用于对录放信息的精确定位。
·当中断数据从ISD33000设备的MISO引脚移出时,控制位和地址位同时移入MOSI引脚。所以应注意传送的数据是否符合当前系统的操作。