圖11 統軟件流程圖 
對于ISD4004而言,由于兩次要放音的內容在存儲器里不一定是相鄰的兩段,所以涉及到對語音芯片的分段提取語音的控制,而不只是簡單的放音操作。對于這種情況,如果在知道每一語音段首地址的情況下,可以直接采用“發送該段首地址并從當前地址開始放音”的命令來實現,由于在實際錄音過程中,錄音設備不一定提供每一語音段的物理地址(一般只是顯示對應的段數),所以在提取樓層對應的語音段的問題上,就必須采取另外的方法,在這里我們是采取控制語音芯片連續快進的方式來實現的。因此,選音播放子程序包括下列步驟:
(1) 根據電梯最近目標樓層設置快進次數計數器;
(2) 從首地址處開始快進一次(本系統一樓不要求語音服務);
(3) 向語音芯片發送從當前語音段地址開始快進的命令;
(4) 檢測是否到達電梯最近目標樓層的語音段地址,若否則返回步驟(3);
(5) 若步驟(4)中的檢測結果為是,則播放語音。
本文重點給出選音播放子程序如下:
FANGYIN:MOV 34H,33H
;設置33H為計數器并將當前播音樓層作一備份
SETMC:CLR SS
MOV R1,#0E8H
;發送從首地址開始快進命令
MOV A, #00H
ACALL SEND
MOV A, #00H
ACALL SEND
MOV A, R1
ACALL SEND
SETB SS
SETMC1: CLR SS
MOV R1, #0F8H
;發送從當前地址開始快進命令
MOV A, R1
ACALL SEND
ACALL DELAY125U
;調用12.5微秒延時子程序
SETB SS
ACALL DELAY125U
JB INT,$
;一段快進結束則接收到低電平信號
DJNZ 33H,SETMC1
;判斷快進次數是否達到要求, 是則往下執行
ACALL PLAY ;調用放音子程序
MOV 33H,34H
;保存播音樓層為當前樓層
RET
PLAY:CLR SS
MOV R1,#0F0H
;發送從當前地址開始放音命令
MOV A, R1
ACALL SEND
;調用發送子程序進行發送
SETB SS
JB INT, $
;放音結束則接收到低電平信號
RET
由于篇幅所限,相關子程序并未全部給出。
5 結束語
本文所介紹的電梯語音系統已在某大醫院門診部大樓的多臺電梯中投入使用,整個系統工作穩定,功耗小,音量可調,輸出的語音清晰,音色優美,實現了電梯語音服務的智能化和自動化,用戶評價良好。





