專利名稱:一種可編程控制裝置及其方法
技術領域:
本發(fā)明涉及控制裝置領域,特別是涉及一種可編程控制裝置及其方法。
背景技術:
隨著社會及科技的發(fā)展,各類電子產品日益普及,為人們的學習、工作和生活等諸多方面帶來了較大的便利。相應地,以微處理器為基礎的可編程控制裝置(如MCU,微控制器)的應用也日益廣泛。例如,在辦公室,微控制器被應用到計算機鍵盤、顯示器、打印機、復印機、傳真機和電話系統(tǒng)等;在家庭,微控制器被應用到微波爐、洗衣機和烘干機、安全系統(tǒng)、草坪灑水裝置控制器以及音樂/視頻娛樂設施等。
對于一般的微控制器來說,必須與其他的外圍電路相連才能實現(xiàn)更多的功能。例如與外圍存儲器連接以擴展其存儲空間,與A/D(模/數(shù))、D/A(數(shù)/模)轉換器以及LCD(液晶顯示器)驅動器相連實現(xiàn)人機會話,甚至采用專用的語音IC(集成電路)來實現(xiàn)語音或音樂播放功能。
通常,單片機或嵌入式控制芯片等可編程控制裝置通過運行存儲在其中的控制程序來實現(xiàn)各種電子產品所具有的功能。
目前,現(xiàn)有技術中,控制裝置的開發(fā)方法主要包括下述階段1)了解控制裝置硬件結構及其功能;2)熟悉掌握控制裝置的匯編指令集;3)熟悉包括匯編器、鏈接器以及捆綁器等工具軟件的工具鏈的使用;4)設計控制裝置系統(tǒng)結構,包括硬件結構和軟件架構;5)實施硬件結構設計,并針對其編寫應用程序;6)調試驗證系統(tǒng)設計。
現(xiàn)有技術的該開發(fā)方法中,由于開發(fā)人員按照復雜的設計規(guī)則來編輯結構化的由匯編指令組成的控制程序,并且需要考慮控制裝置的硬件響應的實現(xiàn)過程;且開發(fā)系統(tǒng)只能根據(jù)開發(fā)人員輸入的匯編指令進行編譯和鏈接,并最終轉換為可執(zhí)行機器代碼,因此具有一些不足之處首先,如果要實現(xiàn)對控制裝置的編程控制,則需要了解其硬件功能及其外圍連接電路的相關硬件,給開發(fā)人員帶來較大的不便;其次,開發(fā)人員需要熟悉匯編指令集并掌握一定的技巧,其編程過程復雜、不易擴展;總之,為熟悉匯編指令集、了解可編程控制裝置的硬件結構和底層細節(jié),開發(fā)人員之前需耗費大量的時間用于前期學習,從而增加開發(fā)周期,延長產品的上市時間,增加產品開發(fā)成本,而且產品質量難以確保;并且最終產品質量如果沒有經(jīng)歷長期的市場考驗,將有可能存在較多潛在的問題,會影響后續(xù)的產品的功能擴充或產品的移植。
隨著IC技術的發(fā)展,雖然一些外圍功能部件如存儲器等已可以集成在控制裝置當中,然而該現(xiàn)有技術的開發(fā)方法依然難以有效地滿足人們對電子產品開發(fā)的需求。
另一種現(xiàn)有技術可參閱美國專利第5,867,818號,其揭示一種“無指令可編程控制設備及其方法”。該方法雖然簡單易行且直觀,可以縮短控制設備的編程時間,但是該編程方法受可編程控制設備條件的局限,例如該無指令可編程控制設備需要有專門分別用于存儲I/O狀態(tài)和執(zhí)行事件的存儲器,并由此需要配置各自相應的尋址電路;而且,在I/O狀態(tài)存儲器里,又要分別將用戶設定的I/O狀態(tài)、輸入端口觸發(fā)條件以及輸出端口的輸出數(shù)據(jù)一一進行存儲;并根據(jù)用戶設定的輸入端口觸發(fā)條件利用鑒定電路來鑒定輸入端口的觸發(fā)條件是否滿足;當此觸發(fā)條件滿足時,又要根據(jù)相應的事件尋址電路尋址到事件存儲器而執(zhí)行相應的事件。再有,該可編程控制設備的功能的執(zhí)行完全依賴于輸入端口觸發(fā)條件的滿足。雖然發(fā)明人也提到一種比較通用的IC設計,但其仍然依賴于輸入端口的觸發(fā)并只能實現(xiàn)簡單的輸出功能。顯然,圍繞發(fā)明人披露出的簡單易行的編程方法所表述的一些IC設計已經(jīng)難以適應于復雜、多樣化的可編程控制設備的開發(fā),因而,使得用戶的應用受到限制。
發(fā)明內容
本發(fā)明解決的技術問題在于提供一種可編程控制裝置及其方法,其實現(xiàn)簡單直觀、且容易擴展;能夠應用于具有各種復雜、多樣化功能的IC設計。
為此,本發(fā)明解決技術問題的技術方案是提供一種可編程控制裝置,包括
功能單元,具有至少一個功能對象;存儲單元,用于存儲所述功能對象的觸發(fā)狀態(tài)設定信息、以及各觸發(fā)狀態(tài)下功能對象被觸發(fā)時控制裝置的動作事件;事件響應電路,用于在所述功能對象被觸發(fā)時,根據(jù)功能對象的當前觸發(fā)狀態(tài)查找該功能對象關聯(lián)的動作事件;執(zhí)行電路,用于根據(jù)事件響應電路的查找結果執(zhí)行所述動作事件。
優(yōu)選地,所述功能對象在接收到預定的外部信號時被觸發(fā)。
優(yōu)選地,所述功能單元是輸入電路;所述功能對象是輸入管腳,用于接收控制裝置外部的輸入信號;該輸入電路還包括輸入信號處理電路,用于根據(jù)該輸入信號產生觸發(fā)信號并傳送到事件響應電路。
優(yōu)選地,所述輸入信號處理電路是輸入管腳讀取電路或睡眠/喚醒電路。
優(yōu)選地,該控制裝置還包括模數(shù)轉換電路,用于將從控制裝置外部接收模擬信號轉換為數(shù)字信號;所述功能單元是鍵盤掃描單元,用于從控制裝置外部接收按鍵信號;或紅外信號接收電路,用于從控制裝置外部接收紅外信號;或比較器電路,用于從控制裝置外部接收比較輸入信號。
優(yōu)選地,所述功能對象將接收到的外部信號傳送到事件響應電路,該事件響應電路根據(jù)該外部信號判斷功能單元是否被觸發(fā);或者所述功能對象在接收到預定的外部信號時產生觸發(fā)信號并傳送到事件響應電路。
優(yōu)選地,所述功能對象在執(zhí)行預定功能時被觸發(fā)。
優(yōu)選地,所述功能對象是定時器,用于在計時時間到達時產生觸發(fā)信號。
優(yōu)選地,所述功能單元是音頻播放單元,所述功能對象是該音頻播放單元播放的音符或聲音片斷;所述功能單元或者是圖像顯示單元,所述功能對象是該圖像顯示單元產生的圖像掃描驅動信號。
優(yōu)選地,所述功能對象在切換到觸發(fā)狀態(tài)時被觸發(fā)。
優(yōu)選地,所述功能單元是信號輸出單元,用于在被觸發(fā)時輸出預定的輸出信號。
優(yōu)選地,所述信號輸出單元包括輸出電路、音頻播放單元或者圖像顯示單元。
優(yōu)選地,所述執(zhí)行電路執(zhí)行的動作事件至少包括產生輸出信號、切換功能對象的觸發(fā)狀態(tài)或者啟動另一動作事件。
優(yōu)選地,還包括復位電路,用于實現(xiàn)所述可編程控制裝置的復位操作。
優(yōu)選地,所述功能對象在被觸發(fā)時產生的觸發(fā)信號是異常事件信號或中斷事件信號。
本發(fā)明還提供一種可編程控制裝置的程序程式化方法,該控制裝置包括功能單元,所述功能單元具有至少一功能對象;包括步驟1)選定所述可編程控制裝置的功能對象;2)配置前述功能對象的觸發(fā)狀態(tài);3)設置觸發(fā)狀態(tài)下前述功能對象被觸發(fā)時由控制裝置執(zhí)行的動作事件;4)定義前述動作事件;并且至少在一動作事件中設定功能對象的當前觸發(fā)狀態(tài)。
優(yōu)選地,在所述步驟3)中還包括設定所述功能對象在接收到預定的外部信號時被觸發(fā);或者在執(zhí)行預定功能時被觸發(fā);或者在切換到觸發(fā)狀態(tài)時被觸發(fā)。
優(yōu)選地,所述動作事件包括產生輸出信號、切換功能對象的觸發(fā)狀態(tài)或者啟動另一動作事件。
優(yōu)選地,所述功能對象包括輸入管腳、鍵盤按鍵、紅外接收命令、比較器、輸出管腳和/或定時器。
優(yōu)選地,所述功能單元是音頻播放單元或者圖像顯示單元;所述功能對象是音頻播放單元播放的音符或聲音片斷,或者是圖像顯示單元產生的圖像掃描驅動信號;所述步驟1)中還包括設定與功能對象關聯(lián)的資源文件。
本發(fā)明還提供一種可編程控制裝置,包括觸發(fā)信號提供單元,用于接收或產生與控制裝置相關的觸發(fā)信號;存儲器,用于存儲控制裝置所要執(zhí)行的代碼,其中該代碼包括代表動作事件、觸發(fā)信號與動作事件之間的對應關系的參數(shù);處理器,用于根據(jù)該觸發(fā)信號查找前述對應關系,并根據(jù)查找的結果執(zhí)行對應的動作事件;信號輸出單元,用于輸出處理器產生的輸出信號。
優(yōu)選地,所述觸發(fā)信號提供單元包括輸入電路、鍵盤掃描單元、定時器、音樂播放單元、語音播放單元、圖像接收單元、比較器或模數(shù)轉換電路。
優(yōu)選地,所述信號輸出單元包括輸出電路、音頻信號播放電路或圖像顯示驅動電路。
優(yōu)選地,所述觸發(fā)信號提供單元在接收到預定的外部信號時、或者在執(zhí)行預定功能時、或者在切換到觸發(fā)狀態(tài)時產生觸發(fā)信號。
本發(fā)明還提供一種可編程控制裝置,包括功能對象,該控制裝置在功能對象被觸發(fā)時,根據(jù)內部存儲的控制程序來執(zhí)行設定的動作事件;其特征在于,該控制程序的程式化方法包括步驟a)選定所述可編程控制裝置的功能對象;a)配置前述功能對象的觸發(fā)狀態(tài);c)設置觸發(fā)狀態(tài)下前述功能對象被觸發(fā)時由控制裝置的動作事件;d)定義前述動作事件;并且在至少一動作事件中設定功能對象的當前觸發(fā)狀態(tài)。
相對于現(xiàn)有技術,本發(fā)明的有益效果是首先,由于本發(fā)明的方法針對可編程控制裝置的特點,將該控制裝置按功能單元劃分為各功能對象,并且將復雜、多樣化的控制裝置的設計和編程過程細化為選定功能對象、配置觸發(fā)狀態(tài)、宣告并定義動作事件等階段,因此,開發(fā)人員選定功能對象后,只需從功能描述的角度來配置觸發(fā)狀態(tài),并相應設定觸發(fā)狀態(tài)下功能對象被觸發(fā)時的動作事件即可完成可編程控制裝置的功能開發(fā),使得一個復雜、多樣化的控制裝置的編程設計的實現(xiàn)更為模塊化且步驟充分簡化。其次,本發(fā)明使得開發(fā)人員無需了解控制裝置的底層的硬件結構,也不需學習熟悉該控制裝置的匯編語言并用此對控制裝置進行晦澀編程,只需要從實際產品的模塊化功能需求出發(fā),對功能對象、觸發(fā)機制和動作事件等分步進行描述,開發(fā)系統(tǒng)即可自動生成匯編語言格式的控制程序,因此容易對可編程控制裝置的功能進行擴展,能夠應用于各種功能的開發(fā),如輸入/輸出、紅外接收、定時/計數(shù)器、音頻播放以及圖形顯示等,并方便產品的升級。再次,實踐證明,采用本發(fā)明的開發(fā)人員只需較短時間(幾個小時)就能完成對控制裝置的編程過程,由此縮短用戶產品的開發(fā)周期(通常,現(xiàn)有技術中這一過程需要十幾天~幾十天),節(jié)省人力成本。
圖1是可編程控制裝置的開發(fā)過程的原理示意圖;圖2是本發(fā)明可編程控制裝置的開發(fā)方法的流程圖;圖3是本發(fā)明中接收用戶編輯信息的示意圖;圖4是本發(fā)明的可編程控制裝置的開發(fā)系統(tǒng)的框圖;圖5是本發(fā)明中編譯單元的框圖;圖6是實際的鍵盤掃描硬件連接示意圖;圖7是本發(fā)明實例一中選定鍵盤陣列組合的示意圖;圖8是本發(fā)明實例一中用戶自定義鍵盤陣列組合的示意圖;圖9是本發(fā)明中生成控制程序的示意圖;圖10是本發(fā)明的可編程控制裝置的實施方式的框圖;圖11是本發(fā)明的可編程控制裝置的實施例的框圖。
具體實施例方式
請參閱圖1,是可編程控制裝置的開發(fā)過程的原理示意圖。
首先,由數(shù)據(jù)處理設備910提供集成開發(fā)環(huán)境(IDE),在數(shù)據(jù)處理設備910上生成控制程序;再通過匯編、鏈接等手段生成可執(zhí)行機器代碼;隨后,由數(shù)據(jù)處理設備910將此可執(zhí)行機器代碼通過并口線、串口線等連接線920加載到調試裝置930上,并啟動該可執(zhí)行機器代碼進行運行并調試??蓤?zhí)行機器代碼運行中調試裝置930通過并口線、串口線等連接線920與數(shù)據(jù)處理設備910交換信息。
當調試成功后,即可將該可執(zhí)行機器代碼下載(例如,采用燒錄等手段)到可編程控制裝置中,完成可編程控制裝置的開發(fā)。
其中,本發(fā)明所述數(shù)據(jù)處理設備910包括但不限于計算機、筆記本電腦等各類具有數(shù)據(jù)處理能力的電子設備;所述調試裝置930包括但不限于單片機、控制裝置仿真板、在線仿真器等具有實時仿真接口,供軟件運行的硬件平臺。
請參閱圖2,是本發(fā)明可編程控制裝置的開發(fā)方法的流程圖。
步驟S100,數(shù)據(jù)處理設備910提供用戶界面,供用戶創(chuàng)建新的控制程序并引導用戶進行編輯,接收來自用戶的輸入信息。
請一并參閱圖3,是所述步驟S100中用戶進行編輯的具體過程示意圖。
步驟S110,設定該可編程控制裝置硬件的基本參數(shù)。
所述基本參數(shù)包括可編程控制裝置的基本型號、所應用的系統(tǒng)時鐘等,用于提供可編程控制裝置進行運行操作的信息。
步驟S120,選定該可編程控制裝置的功能對象。
所述功能對象與可編程控制裝置的功能單元緊密關聯(lián),包括但不限于可編程控制裝置的輸入電路的輸入端口、輸出電路的輸出端口、鍵盤掃描電路的按鍵、紅外信號接收命令、定時器/計數(shù)器等。所述功能對象在被觸發(fā)并滿足觸發(fā)條件時,可編程控制裝置將完成相應的動作功能。
步驟S130,配置前述功能對象的觸發(fā)狀態(tài)、以及在特定的觸發(fā)狀態(tài)下功能對象被觸發(fā)時控制裝置執(zhí)行的動作事件。
通常,功能對象可以在接收到預定的外部信號時被觸發(fā),如當功能對象為輸入端口時,可以設定當輸入端口為高電平時,當前狀態(tài)下該輸入端口被觸發(fā)。也可以由功能對象自身的運行來觸發(fā)功能對象,如當功能對象為定時/計數(shù)器時,假如該定時/計數(shù)器為TM0,可以設定當TM0溢出時,當前狀態(tài)下該定時/計數(shù)器被觸發(fā)。還可以是當切換到該功能對象的觸發(fā)狀態(tài)時,控制裝置則執(zhí)行設定的動作事件,如當功能對象是輸出端口時,在觸發(fā)狀態(tài)下將輸出預定的信號。
對于根據(jù)外部信號來觸發(fā)的功能對象來說,所述功能對象對應的電路或者對應的功能單元可以將接收到的外部信號傳送到事件響應電路,該事件響應電路根據(jù)該外部信號判斷功能單元是否被觸發(fā);所述功能對象也可以在其相應的功能單元接收到預定的外部信號時產生觸發(fā)信號并傳送到事件響應電路。
當然,對于相同的功能對象,可以配置多個不同的觸發(fā)狀態(tài)。在不同的觸發(fā)狀態(tài)下,可以設定在功能對象被觸發(fā)時不同的動作事件。
當然,還可以在功能對象的某些觸發(fā)狀態(tài)下不設置動作事件,則在該觸發(fā)狀態(tài)下,該功能對象被觸發(fā)時控制裝置將不執(zhí)行任何操作。
步驟S140,定義所述動作事件;其中,所述的動作事件中至少一個包括對當前觸發(fā)狀態(tài)的切入。
所述動作事件用于描述可編程控制裝置執(zhí)行的動作。動作事件在設定后,可以同時被不同的功能對象的不同觸發(fā)狀態(tài)所選用。
通常,所述動作事件可以通過用戶自定義的動作函數(shù)來設定,在執(zhí)行所述函數(shù)時,控制裝置可能產生特定的輸出信號、或者切換功能對象的觸發(fā)狀態(tài)或者啟動另一動作事件。
所述動作事件還可以是用戶指定的動作常量,動作常量一般用于在功能對象為輸出端口時指明該輸出端口的輸出動作,包括但不限于邏輯高電平信號、或邏輯低電平信號、或單正脈沖信號、或單負脈沖信號、或正脈沖串信號以及負脈沖串信號。
步驟S200,數(shù)據(jù)處理設備910對用戶的輸入信息進行編譯、自動生成匯編語言格式的控制程序。
首先,將功能對象的選定信息和觸發(fā)機制(觸發(fā)狀態(tài)、觸發(fā)條件)的配置轉換為編譯參數(shù);其次,將動作事件的設定信息轉換為編譯參數(shù),并且結合所有的編譯參數(shù)生成匯編語言形式的控制程序。
此外,在處理功能對象和觸發(fā)機制時,還會調取與該功能對象有關的程序模塊,將其有機結合到控制程序中,用以自動實現(xiàn)對硬件底層的操作,從而對用戶來說,可以在功能層描述軟硬件觸發(fā)環(huán)境,而不需要關心控制裝置底層硬件的實現(xiàn)細節(jié),方便用戶的后續(xù)功能擴充。
本發(fā)明中,所述程序模塊可以是采用匯編語言設計的功能模塊,用于實現(xiàn)對控制裝置底層硬件的操作,例如,對鍵盤陣列的掃描等,從而支持對用戶輸入的信息進行編譯的過程。
步驟S300,對所述控制程序進行匯編、鏈接,生成可執(zhí)行機器代碼。
此外,為進一步擴展可編程控制裝置的功能,所述步驟S120中選定的功能對象還可以是Music(音樂)播放模塊的EventNote(音符)和Speech(語音)播放模塊的EventSect(語音段)。相應地,所述步驟S100中,還需要設置應用資源即可編程控制裝置在運行時使用的各種資源文件及其相關參數(shù)。在步驟S300之后還包括綁定可執(zhí)行機器代碼與資源文件的步驟S400。
步驟S500,在生成可執(zhí)行機器代碼后,即可進行調試運行;如果調試通過,則可加載(例如采用燒錄方式)至可編程控制裝置,完成所需功能的開發(fā),此不贅述。
請參閱圖4,是本發(fā)明的可編程控制裝置的開發(fā)系統(tǒng)的框圖。
所述開發(fā)系統(tǒng)提供集成開發(fā)環(huán)境(IDE),包括用戶交互單元110、編譯單元(QPL Complier)120、功能模組(QPL Module)130、匯編單元(QPLAssembler)140、鏈接單元(QPL Linker)150。
所述用戶交互單元110用于接收用戶的輸入信息。所述用戶的輸入信息包括功能對象的選定信息、觸發(fā)機制的配置信息、動作事件的設定信息。
請一并參閱圖5,所述編譯單元120用于解析用戶的輸入信息,自動生成控制程序。其包括功能對象及觸發(fā)機制處理單元(QPDEC)121、動作事件處理單元(QPDEF)122。
所述功能對象及觸發(fā)機制處理單元121用于將功能對象的選定信息和觸發(fā)機制的配置轉換為編譯參數(shù)并傳送到動作事件處理單元122;所述動作事件處理單元122用于將動作事件的設定信息轉換為編譯參數(shù),并且結合所有的編譯參數(shù)生成匯編語言形式的控制程序。
所述功能模組130用于為編譯單元120提供功能對象操作程序以支持編譯單元120的編譯過程。具體地說,當編譯單元120掃描到功能對象的選定信息中包含的某一功能對象時,則從功能模組130中提取該功能對象的操作程序(例如,當掃描到設置有鍵盤的按鍵時,便會從中取出鍵盤掃描程序),并將其一一有機結合到控制程序中。
需要說明的是,所述動作事件處理單元122的功能也可以由兩個分立的部分來實現(xiàn),即動作事件預處理部分(QPDCC)和編譯部分(QPDEF);所述動作事件預處理部分對動作事件的設定信息進行預處理后傳遞給編譯部分;所述編譯部分同時接收該預處理后的參數(shù)和功能對象及觸發(fā)機制處理單元121傳遞的編譯參數(shù),并生成控制程序。
此外,所述編譯單元120還可以具有驅動單元(QPC),從用戶交互單元110接收輸入的信息,并分別驅動功能對象及觸發(fā)機制處理單元121、動作事件處理單元122。
其中,該驅動單元的驅動步驟如下傳輸用戶交互單元接收的功能對象及觸發(fā)機制信息的參數(shù)給對象及觸發(fā)機制處理單元和動作事件處理單元,并接收所述對象及觸發(fā)機制處理單元反饋的第一編譯參數(shù)并傳遞給動作事件處理單元;傳輸動作事件設定信息給動作事件處理單元,動作事件處理單元生成第二編譯參數(shù);動作事件處理單元結合驅動單元所傳遞的第一編譯參數(shù)和第二編譯參數(shù),生成控制程序。
該驅動單元的驅動步驟還可以是傳輸用戶交互單元接收的功能對象及觸發(fā)機制信息的參數(shù)給對象及觸發(fā)機制處理單元和動作事件處理單元,并接收所述對象及觸發(fā)機制處理單元反饋的第一編譯參數(shù),傳遞給動作事件處理單元;傳輸動作事件設定信息給動作事件處理單元中的預處理部分,并接收所述預處理部分反饋的第二編譯參數(shù),傳遞給動作事件處理單元的編譯部分;動作事件處理單元的編譯部分結合驅動單元所傳遞的第一編譯參數(shù)和第二編譯參數(shù),生成控制程序。
所述匯編單元140用于將編譯單元120產生的匯編程序轉換成目標代碼。
所述鏈接單元150用于將前述目標代碼與相關的庫文件進行鏈接,生成可執(zhí)行機器代碼。
此外,如前所述,為進一步擴展可編程控制裝置的功能,用戶選定的功能對象還可以是Music(音樂)播放模塊的EventNote(音符)和Speech(語音)播放模塊的EventSect(語音段)時。相應地,用戶需要通過用戶交互單元110設置應用資源即可編程控制裝置在運行時使用的資源文件及其相關參數(shù)。所述編譯單元120還具有資源文件處理單元,用于將用戶輸入的資源文件設置信息整合至匯編語言的控制程序中,該資源文件處理單元可以與功能對象及觸發(fā)機制處理單元結合在一起。并且,本發(fā)明還包括捆綁單元(QPL Binder)160,用于將鏈接單元150產生的可執(zhí)行機器代碼與相關的資源文件進行捆綁,生成最終的可執(zhí)行機器代碼。
為驗證可控制編程裝置的系統(tǒng)設計,確保產品的質量,本發(fā)明的開發(fā)系統(tǒng)還包括調試單元(QPL Debugger)170,用于對最終的可執(zhí)行機器代碼進行調試,此不贅述。
為便于對本發(fā)明開發(fā)系統(tǒng)和方法的理解,下面結合實施例對本發(fā)明做進一步的詳細描述。
首先,用戶在集成開發(fā)環(huán)境建立新的用戶工程,開發(fā)系統(tǒng)的用戶交互單元自動生成兩個源文件資源引入源文件(Resource)和控制工程程序源文件(File)。所述資源引入源文件用于實現(xiàn)資源文件的描述,引入用戶需要使用的資源文件;所述控制程序源文件用于設置軟硬件環(huán)境和觸發(fā)機制,描述動作事件。
其中,本實施例對控制程序源文件進行更細致的劃分,拆分為軟硬件環(huán)境和觸發(fā)機制配置源文件(Declaration)和動作事件定義源文件(Definition)。
隨后,用戶交互單元接收用戶對源文件的編輯,引導用戶完成對可編程控制裝置的編程。
在編程過程中,本實施例提供QPL(Quick Program Language)模塊化編程語言,使得開發(fā)過程變得簡單、快速且直觀。QPL語言是一種方便靈活的模塊化描述應用程序的軟硬件環(huán)境及動作事件的高級語言。其包括三個語法單元一是資源文件描述部分;二是軟硬件環(huán)境及觸發(fā)機制配置的描述部分,用于描述控制裝置的外圍觸發(fā),免去用戶處理底層硬件細節(jié)的煩惱;三是動作事件定義的描述部分,用于描述當某一功能對象被觸發(fā)時控制裝置對應執(zhí)行的動作。
實例一$Keyscan(鍵盤簡易編程方法)請參閱圖6,是實際的鍵盤硬件連接示意圖。
在選定功能對象時,IDE(集成開發(fā)環(huán)境)提供鍵盤掃描配置列表,使得用戶通過該列表可以方便地選擇各種滿足需要的鍵盤陣列;如果用戶不滿足于系統(tǒng)提供的缺省鍵盤定義,那么用戶還可以通過IDE進行自主配置。
請參閱圖7,開發(fā)系統(tǒng)為用戶定義多個方便的鍵盤陣列組合,支持行列式和直連式,用戶只要指定要使用EasyN即可。
請參閱圖8,也可以進行用戶自定義,只需指定哪些I/O作為Scan Line(掃描線),哪些I/O作為Sense Line(輸入線)即可。開發(fā)系統(tǒng)會自動為用戶作IO的初始化、鍵盤的掃描,使得用戶無需關心硬件底層的細節(jié)。IDE會在Declaration文件中自動生成KeyScan段,并在該段下生成鍵盤矩陣EASY8各功能對象TG1至TG8$KeyScanEASY8TG1 TG2 TG3 TG4 &
TG5 TG6 TG7 TG8并且,鍵盤支持設置鍵盤掃描的輸入線(Sense Line)的上拉電阻和下拉電阻。鍵盤也支持鍵盤掃描輸出線(Scan Line)輸出高、低電平的設置,SenseLine、Scan Line的設置根據(jù)用戶鍵盤矩陣電路的實際情況確定。
開發(fā)系統(tǒng)還會自動避免錯誤,由于Sense Line、Scan Line與芯片I/O接口硬件相關,每一系列芯片的I/O接口情況不太一樣,若用戶不了解而導致設置錯誤時,系統(tǒng)會出示錯誤提示對話框,引導用戶進行正確的設置操作。
配置結束后,用戶就能夠使用QPL語言提供的觸發(fā)條件描述語法來描述鍵盤的各個按鍵的觸發(fā)條件和動作事件。
由于開發(fā)系統(tǒng)的鍵盤模組能識別兩個鍵同時按下的情況,且能夠識別某按鍵按下、抬起的動作。因此觸發(fā)條件可以是鍵按下觸發(fā)或鍵釋放觸發(fā)。
在鍵盤功能對象中,動作事件可以是一個動作函數(shù)名,用戶可以在后續(xù)的動作函數(shù)的描述部分Definition文件中做相應的函數(shù)體定義描述;動作事件也可以表示為無動作。
同時,用戶可以設置若干不同的觸發(fā)狀態(tài),在不同的觸發(fā)狀態(tài)下,用戶可以為各個按鍵設置不同的動作事件,系統(tǒng)提供狀態(tài)切換函數(shù)SetState以方便用戶進行狀態(tài)轉換。
下面是功能對象及觸發(fā)機制編程描述的舉例說明。
$KeyScan[1] DebounceLevel=10[2] Easy8[3]TG1TG2TG3TG4TG5TG6TG7TG8[4] K_S0Path_A@Path_B/Path_C X X X XK_S1/Path_C X/Path_A /Path_CX /@Path_B X X[6] ……[7] K_SnX /Path_C X/Path_A /Path_C X /@Path_B X X其中,[1]是對按鍵防抖功能的設置;[2]是通過IDE設置的鍵盤陣列大小;[3]是IDE生成的鍵盤陣列,TG1~TGm(m=8)表示鍵盤的每一個觸發(fā)按鍵(即功能對象);[4]是用戶使用QPL語言配置的鍵盤狀態(tài)K_S0和在此狀態(tài)下各個按鍵的觸發(fā)條件和動作事件。K_S0是觸發(fā)狀態(tài)。
Path_A,Path_B,Path_C是觸發(fā)時的執(zhí)行動作函數(shù)的名稱,與TG1~TGm一一對應,表示此觸發(fā)按鍵被按下或釋放時的執(zhí)行動作(實際上,用戶在此處設置動作事件時也同時宣告此動作事件,所以用戶必須在后續(xù)的動作事件描述部分中定義這些動作事件的實際意義;動作事件可以復用),沒有動作事件對應或使用X對應的觸發(fā)按鍵無論在按下或釋放時均沒有執(zhí)行動作。
動作事件前面如果有’/’字符,那么表示此動作在釋放時觸發(fā),否則表示在按下時觸發(fā)。
用戶還可以同時設置動作函數(shù)的執(zhí)行屬性,方法就是在動作函數(shù)前面加入‘@’符號,如果設置的動作函數(shù)前加有‘@’符號,表示在觸發(fā)條件滿足時系統(tǒng)會采用快速函數(shù)的方式,即以調用(call)函數(shù)的方式進入某一動作函數(shù)執(zhí)行該函數(shù)內指令,并以該函數(shù)內的“return”指令(從函數(shù)返回)返回到原來調用該函數(shù)的指令處,這種函數(shù)的執(zhí)行可形成嵌套執(zhí)行;如果設置的動作函數(shù)前沒有‘@’符號,表示在觸發(fā)條件滿足時系統(tǒng)會采用普通函數(shù)方式,即采用“goto”指令方式進入函數(shù)執(zhí)行該函數(shù)內指令,并以該函數(shù)內“end”指令結束指令的執(zhí)行,而不會像調用函數(shù)那樣返回,這種函數(shù)的執(zhí)行不會形成嵌套執(zhí)行。
~[7]與[4]類似,是用戶使用QPL語言配置的鍵盤狀態(tài)K_S1,......,K_Sn和在這些狀態(tài)下各個按鍵的觸發(fā)條件和動作事件。
當用戶將當前狀態(tài)切換到KeyScan的某個狀態(tài)時,則在此狀態(tài)下,如果用戶觸發(fā)了某一按鍵,那么在此狀態(tài)下這一按鍵的對應的動作事件將被可編程控制裝置執(zhí)行。
隨后,進行動作事件描述(在Definition文件中進行),也就是對前面宣告的動作事件的實際意義進行定義,即對前面宣告的動作函數(shù)的函數(shù)體進行定義,可以是采用一些高級語言,如ANSI-C,Pascal,F(xiàn)ortran等,實現(xiàn)的用于描述執(zhí)行動作的函數(shù),并在至少一個函數(shù)里設定按鍵的某一個狀態(tài)為當前執(zhí)行狀態(tài)。
需要說明的是,可編程控制裝置的各功能對象的觸發(fā)狀態(tài)的切換可以通過兩種方式進行。一種方式是調用開發(fā)系統(tǒng)提供的狀態(tài)切換函數(shù)SetState(x,y),參數(shù)x、y的含義是x用于指明事件源,可為“KEY”、“IR”、“IN”、“OUT”、“TM”、“ME”等;y用于表示所指事件源中狀態(tài)索引號(1~n),0為無狀態(tài)。另一種方式是在動作事件中進行狀態(tài)切換。
也就是說,在編程過程中,用戶只需要選定鍵盤陣列的觸發(fā)按鍵;配置觸發(fā)按鍵的觸發(fā)狀態(tài)和觸發(fā)條件;并且設定按鍵在滿足觸發(fā)條件(按下/釋放)時可編程控制裝置所執(zhí)行的動作事件(動作函數(shù)或無動作)即可。除此之外,用戶不需要關心鍵盤使用的I/O腳是否與其它的I/O使用相沖突,不需要考慮如何進行鍵盤掃描的檢測,不需要考慮在某一狀態(tài)下按鍵按下或釋放時如何觸發(fā)相應的動作,所有這些有關硬件、軟件底層的細節(jié)由開發(fā)系統(tǒng)的IDE及其中的QPL Complier和QPL Module協(xié)調解決。
實例二IRScan(紅外掃描接收方法)選定功能對象、設置觸發(fā)條件及與動作事件的對應關系。
首先,本實例中選定用于接收紅外信號的端口。如果用戶沒有進行選定,則開發(fā)系統(tǒng)將選用缺省的端口。
需要說明的是,對本實例來說,由于指定紅外接收器件的耗電量較大,因此需設定紅外接收器件的電源控制端口及其有效/無效狀態(tài),使控制裝置能夠在省電的睡眠狀態(tài)時將其無效掉。
其次,對于本實例來說,還需要選定紅外接收器的編號(ID)。只有當接收到的紅外命令中包含指定該編號的接收器時才執(zhí)行動作事件。
隨后,指定該管腳接收的紅外信號的類型(紅外命令之ID)。并配置不同類型的紅外信號對應的動作事件。
同時,用戶可以設置若干個不同的觸發(fā)狀態(tài),在不同的觸發(fā)狀態(tài)下,用戶可以為各個紅外信號設置不同的動作事件。
下面是功能對象及觸發(fā)機制描述的舉例說明。
$IrScan[1] IrReceivePin=Pa.0[2] IrRxPowerCtrl(pb.1)/high[3] IrRxId=1[4] Rx1 Rx2 Rx3 Rx10[5] Ir_S0Path_A Path_B Path_C X[6] Ir_S1Path_C Path_A Path_C X[7] ……[8] Ir_SnXPath_C Path_A Path_C其中,[1]是用戶設置的紅外接收IO端口,用戶可以選擇性設置,否則使用缺省的IO端口。
是用戶對紅外接收器進行電源控制的端口及其有效狀態(tài)設置。
是對紅外接收器編號的設置。
是接收的各紅外信號的命令ID。
是對某一觸發(fā)狀態(tài)Ir_S0下接收到某一命令的紅外信號Rxm(其中,m=0~63)時對應的動作事件的設置。
~[7]與[5]類似。是對觸發(fā)狀態(tài)Ir_S1,...,Ir_Sn下接收到某一命令的紅外信號Rxm(m為正整數(shù))時對應的動作事件的設置。
當用戶將當前狀態(tài)切換到IrScan某個狀態(tài)Ir_Sn(n為正整數(shù))時,那么在此狀態(tài)下,如果接受到某一命令的紅外信號,則這一命令的紅外信號對應的動作事件將被執(zhí)行。也就是說,當指定ID的紅外接收器收到紅外命令Rxm(m為正整數(shù))后,可編程控制裝置會執(zhí)行當前觸發(fā)狀態(tài)下的Rxm下對應的動作事件。動作事件包括指定動作函數(shù)名或指定無動作(X)。
隨后,進行動作事件的實際意義的描述,也就是對前面宣告的動作函數(shù)的函數(shù)體進行定義,并在至少一個函數(shù)里設定IrScan功能對象的某一個狀態(tài)為當前執(zhí)行狀態(tài)。
也就是說,在編程過程中,用戶通過使用開發(fā)系統(tǒng)的QPL語言提供的Irscan語法,能簡潔直觀的指定當接收到某一紅外命令信號時的動作事件;而無需關心硬件如何實現(xiàn)紅外掃描,以及當接受到某一紅外命令信號時,此紅外命令信號如何與動作事件關聯(lián)。同時,用戶可以設置不同的觸發(fā)狀態(tài),在不同的觸發(fā)狀態(tài)下,用戶可以為各個紅外命令信號設置不同的動作事件。有關底層的細節(jié)由開發(fā)系統(tǒng)的IDE及其中的QPL Complier和QPL Module協(xié)調解決。
實例三$Input(輸入事件)首先,選定功能對象。本實例中就是選定輸入管腳。
隨后,指定輸入管腳的觸發(fā)條件,并配置不同輸入管腳被觸發(fā)時對應的動作事件。
輸入管腳可以在從高電平躍變到低電平時觸發(fā),或者從低電平躍變到高電平時觸發(fā)。
同時,用戶可以設置不同的觸發(fā)狀態(tài),在不同的觸發(fā)狀態(tài)下,用戶可以為各個輸入管腳設置被觸發(fā)時對應的不同的動作事件。動作事件包括指定動作函數(shù)名或指定無動作。
下面是功能對象及觸發(fā)機制描述的舉例說明。
$Input[1] DebounceLevel=10 Pa.1 Pb.2 Pa.3 Pc.6[3] I_S0Path_A Path_B/Path_C[4] I_S1/Patg_CX/Path_A /Path_C[5] ……[6] I_SnX /Path_C X/Path_A /Path_C其中,[1]是用戶對輸入信號防抖功能的設置。
是用戶設置的輸入管腳。用戶可以通過IDE提供的信息來查看可選用的管腳,以此來正確選擇管腳(如果選擇不正確,Compiler將提示錯誤)。
是用戶使用QPL語言配置的輸入管腳觸發(fā)狀態(tài)I_S0和在此狀態(tài)下各個輸入管腳的觸發(fā)條件和動作事件。I_S0是觸發(fā)狀態(tài)。
Path_A,Path_B,Path_C是被觸發(fā)時的執(zhí)行動作函數(shù)名。動作函數(shù)名前面如果有’/’字符,那么表示此動作函數(shù)在輸入管腳從高電平躍變到低電平時觸發(fā),否則表示在輸入管腳從低電平躍變到高電平時觸發(fā)。其余與KeyScan類似。
~[6]與[3]類似,是用戶使用QPL語言配置的輸入管腳觸發(fā)狀態(tài)I_S1,...,I_Sn和在這些狀態(tài)下各個輸入管腳的觸發(fā)條件和動作事件。
隨后,進行動作事件中動作函數(shù)描述,也就是對前面宣告的動作函數(shù)進行函數(shù)體定義,并在至少一個函數(shù)里設定輸入管腳的一個狀態(tài)為當前執(zhí)行狀態(tài)。
本實例在編程過程中,用戶通過使用開發(fā)系統(tǒng)的QPL語言提供的Input語法,能簡潔直觀的指定任何輸入管腳以及動作事件;而無需關心硬件如何實現(xiàn)輸入管腳掃描,以及如何實現(xiàn)某一輸入管腳與動作事件的關聯(lián)。同時,用戶可以設置不同的觸發(fā)狀態(tài),在不同的觸發(fā)狀態(tài)下,用戶可以設置各個輸入管腳被觸發(fā)時不同的動作事件。有關硬件、軟件底層的細節(jié)由開發(fā)系統(tǒng)的IDE及其中的QPL Complier和QPL Module協(xié)調解決。
實例四$Output(輸出事件)
首先,選定功能對象。本實例中就是選定輸出管腳。
隨后,指定不同輸出管腳被觸發(fā)時的對應的動作事件。
動作事件包括指定動作常量或指定無動作。其中,動作常量可表示為邏輯高電平信號,或為邏輯低電平信號,或為單正脈沖信號,或為單負脈沖信號,或為正脈沖串信號,或為負脈沖串信號。
同時,用戶可以設置若干個不同的觸發(fā)狀態(tài),在不同的觸發(fā)狀態(tài)下,用戶可以為各個輸出管腳設置不同的動作事件。
下面是功能對象及觸發(fā)機制描述的舉例說明。
$Output[1] FlashRate=50[2] Duty=0.6[3]Pa.1 Pb.2 Pa.3 Pc.6[4] O_S0H L P+[5] O_S1L P-X SP-[6] ……[7] O_SnX SP+ P-/Duty=0.3/80其中,[1]是用戶設置的輸出信號為正或為負脈沖串信號時該脈沖串信號的頻率。
是用戶設置的輸出信號為正或為負脈沖串信號時該脈沖串信號的占空比。
是用戶設置的輸出管腳。用戶可以通過IDE提供的信息來查看可選用的輸出管腳,以此來正確選擇管腳(如果選擇不正確,Compiler將提示錯誤)。
是用戶設置的輸出狀態(tài)O_S0以及在此狀態(tài)下每個輸出管腳的輸出狀態(tài)。
~[7]與[4]類似,是用戶設置的輸出狀態(tài)O_S1,...,O_Sn以及在此狀態(tài)下每個輸出管腳的輸出狀態(tài)。
注意,在此,“H”、“L”分別表示輸出邏輯高或邏輯低電平信號;“P+”、“P-”分別表示輸出正或為負脈沖串信號;“SP+”、“SP-”則分別為單正或單負脈沖信號。
當用戶將當前狀態(tài)切換到某個觸發(fā)狀態(tài)時,那么在此狀態(tài)下可編程控制裝置將驅動各個輸出管腳輸出與之相對應的信號波形。
隨后,進行動作事件描述,即在至少一個函數(shù)里設定輸出管腳的一個狀態(tài)為當前執(zhí)行狀態(tài)。
本實例中,在編程過程中,用戶通過使用開發(fā)系統(tǒng)的QPL語言提供的Onput語法,能簡潔直觀的指定任何輸出管腳以及動作事件;而無需關心硬件如何實現(xiàn)輸出管腳掃描,以及如何實現(xiàn)某一輸出管腳與動作事件的關聯(lián)。同時,用戶可以設置不同的觸發(fā)狀態(tài),在不同的觸發(fā)狀態(tài)下,用戶可以為各個輸出管腳設置不同的動作事件。有關硬件、軟件底層的細節(jié)由開發(fā)系統(tǒng)的IDE及其中的QPL Complier和QPL Module協(xié)調解決。
實例五$TimerEvents(定時器事件)首先,選定功能對象。本實例中就是選定定時器。
隨后,指定不同定時器滿足定時計數(shù)溢出條件時的對應執(zhí)行的動作事件。該動作事件包括指定動作函數(shù)名或指定無動作。
同時,用戶可以設置不同的觸發(fā)狀態(tài),在不同的觸發(fā)狀態(tài)下,用戶可以為各個定時器設置不同的動作事件。該動作事件包括指定動作函數(shù)名或指定無動作。
下面是功能對象及觸發(fā)機制描述的舉例說明。
$TimerEvents[1]TM1 TM2TM3TM4[2] T_S0T_Path_A T_Path_B T_Path_C X[3] T_S1T_Path_C T_Path_A T_Path_C X[4] ……T_SnXT_Path_CT_Path_AT_Path_C其中,[1]是用戶設置的時鐘的ID。
是對某一狀態(tài)T_S0下某一時鐘被觸發(fā)時的動作事件的設置,其中,“T_Path_A”、“T_Path_B”、“T_Path_C”分別為指定的動作函數(shù)名,“X”為指定的無動作。
~[5]與[2]類似。是對狀態(tài)T_S1,...,T_Sn下某一時鐘被觸發(fā),即滿足定時計數(shù)溢出條件時的動作事件的設置。
當用戶將當前狀態(tài)切換到定時器的某個觸發(fā)狀態(tài)時,則在此觸發(fā)狀態(tài)下,如果某一時鐘的計時時間到達,那么在此狀態(tài)下這一時鐘對應的動作事件將被執(zhí)行。
并且,在設置觸發(fā)狀態(tài)后,用戶可以設置定時器TMm(m為正整數(shù))的加或減定時計數(shù)初值,當在該計數(shù)初值基礎上定時計數(shù)溢出時,會執(zhí)行該定時器在此狀態(tài)下對應的動作事件。
隨后,進行動作事件中動作函數(shù)描述,也就是對前面宣告的動作函數(shù)進行函數(shù)體定義,并在至少一個函數(shù)里設定輸入管腳的一個狀態(tài)為當前執(zhí)行狀態(tài)。
本實例中,用戶通過使用QPL語言提供的timerevent語法,能簡潔直觀的指定當某一時鐘的計時時間來到時的動作事件,而無需關心可編程控制裝置如何實現(xiàn)時鐘與其對應動作事件的關聯(lián)。同時,用戶可以設置不同的觸發(fā)狀態(tài),在不同的觸發(fā)狀態(tài)下,用戶可以為各個時鐘設置不同的動作事件。所有這些有關硬件、軟件底層的細節(jié)通過IDE,Compiler,Module協(xié)調解決。
實例六$MusicEvents(音樂播放事件)首先,選定功能對象。本實例中就是選定資源文件并指定其中的音符ID。
資源文件是指可編程控制裝置在運行時使用的音樂文件(如MIDI音樂)及其相關參數(shù)。
通常,在MIDI音樂中可以設置多個音符(EventNote)。如下表所示
EventNote
因此,通過選定若干音符,并指定音符在不同音符播放時對應的動作事件。則當特定的音符被播放時,可編程控制裝置可以執(zhí)行設定的動作事件。該動作事件包括指定動作函數(shù)名或指定無動作。
同時,用戶可以設置若干不同的觸發(fā)狀態(tài),在不同的觸發(fā)狀態(tài)下,用戶可以為各個指定的音符設置不同的動作事件。
下面是功能對象及觸發(fā)機制描述的舉例說明。
$MusicEvents[1]ME1 ME2ME3ME10[2] M_S0M_Path_A M_Path_B M_Path_C X[3] M_S1M_Path_C M_Path_A M_Path_C X[4] ……[5] M_SnXM_Path_C M_Path_A M_Path_C其中,[1]是用戶設置的音符ID列表,音符ID最大可以是ME128。
是對某一狀態(tài)M_S0下對指定音符被播放時的動作事件的設置,其中,“M_Path_A”、“M_Path_B”、“M_Path_C”分別為指定的動作函數(shù)名,“X”為指定的無動作。
~[5]與[2]類似。是對狀態(tài)M_S1,...,M_Sn下某一音符被播放時的動作事件的設置。
當用戶將當前狀態(tài)切換到某個musicevent狀態(tài)時,如果指定音符被播放,那么在此狀態(tài)下指定音符對應的動作事件將被執(zhí)行。
隨后,進行動作事件中動作函數(shù)描述,也就是對前面宣告的動作函數(shù)進行函數(shù)體定義,并在至少一個函數(shù)里設定輸入管腳的一個狀態(tài)為當前執(zhí)行狀態(tài)。
本實例中,用戶通過使用QPL語言提供的musicevent語法,能簡潔直觀的指定當某一音符被播放時的動作事件,而無需關心程序如何實現(xiàn)某一音符與其對應動作事件的關聯(lián)。同時,用戶可以設置不同的觸發(fā)狀態(tài),在不同的觸發(fā)狀態(tài)下,用戶可以為指定音符設置不同的動作事件。所有這些有關硬件、軟件底層的細節(jié)通過IDE及其中的Compiler,Module協(xié)調解決。
實例七$SpeechEvents(語音播放事件)對于語音播放事件來說,其處理思路類似于實例六的音樂播放事件,此不贅述。
在用戶對源文件的編輯結束后,可以通過IDE啟動編譯單元,由編譯單元根據(jù)用戶輸入的信息自動生成匯編語言格式的控制程序。
請參閱圖9,編譯單元的驅動單元從用戶交互單元110接收輸入的信息;將資源引入源文件(Resource)和軟硬件環(huán)境和觸發(fā)機制源文件(Declaration)傳遞給功能對象及觸發(fā)機制處理單元(QPDEC)。
功能對象及觸發(fā)機制處理單元將資源引入源文件和軟硬件環(huán)境和觸發(fā)機制源文件轉換成第一編譯參數(shù),反饋給驅動單元。
驅動單元將動作事件源文件(Definition)傳遞給動作事件預處理部分(QPDCC);動作事件預處理部分對該動作事件源文件進行預處理后生成第二編譯參數(shù),反饋給驅動單元。
驅動單元將第一和第二編譯參數(shù)傳遞給編譯部分(QPDEF),生成匯編語言格式的控制程序。
在此過程中,當編譯單元120掃描到功能對象的選定信息中包含的某一功能對象時,則從功能模組130中提取該功能對象的操作程序,并將其一一有機結合到控制程序中。
隨后,匯編單元和鏈接單元對所述控制程序進行匯編、鏈接,生成可執(zhí)行機器代碼。
此外,為進一步擴展可編程控制裝置的功能,當選定的功能對象是Music(音樂)播放模塊的EventNote(音符)或者Speech(語音)播放模塊的EventSect(語音段)時,還包括綁定可執(zhí)行機器代碼與資源文件,生成完整的可執(zhí)行機器代碼的步驟。
在生成可執(zhí)行機器代碼后,即可進行下載并調試運行;如果調試通過,則可加載燒錄至可編程控制裝置,完成所需功能的開發(fā),此不贅述。
請參閱圖10,是本發(fā)明可編程控制裝置的框圖。
該可編程控制裝置包括功能單元810、存儲單元820、事件響應電路830、執(zhí)行電路840和復位電路850。
所述功能單元810是可編程控制裝置中能夠實現(xiàn)特定功能的器件,具有若干功能對象,當這些功能對象被觸發(fā)時,可編程控制裝置可以根據(jù)預先的設定去完成與其關聯(lián)的動作,從而有效地完成用戶的功能需求。
通常,功能單元810包括但不限于輸入電路、輸出電路、鍵盤掃描電路、定時/計數(shù)器、模數(shù)轉換器、紅外接收電路、語音播放電路、音樂播放電路等。
一般來說,對于可以接收外部信號的器件來說,當其接收到預定的信號時,即可以認為該功能對象被觸發(fā)。而對于輸出電路來說,當控制裝置啟動該輸出電路以向外部輸出信號時,則認為輸出電路被觸發(fā)。
此外,為進一步拓展可編程控制裝置的功能,還可以將控制裝置內定時器,或播放的音符或者聲音片斷定義為功能對象。此時,如果定時器計時時間到達時、或語音播放電路來播放特定的聲音片斷或者音樂播放電路播放特定的音符,則認為該功能對象被觸發(fā)。
此外,對于同一個功能對象來說,可以為其設定多個不同的觸發(fā)條件,例如,對于鍵盤來說,按鍵被按下或抬起可以認為是兩個不同的觸發(fā)條件,并且對應不同的觸發(fā)條件可以設定不同的動作事件。
而且對于同一個功能對象,可以設置多個不同的觸發(fā)狀態(tài),在特定的觸發(fā)狀態(tài)下來指定對應的動作事件,從而進一步豐富觸發(fā)機制的表現(xiàn)形式。
該存儲單元820中存儲所述功能對象的觸發(fā)狀態(tài)、以及各觸發(fā)狀態(tài)下功能對象被觸發(fā)時對應的動作事件。上述信息可以包含在用戶采用本發(fā)明的開發(fā)方法完成的控制程序內。該信息可以存儲在一個存儲空間內,也可以采用多個存儲空間來進行保存,此不贅述。
當功能對象810被觸發(fā)時,事件響應電路830將獲悉相關的觸發(fā)信號,從而查詢存儲單元820以判斷功能對象810的當前觸發(fā)狀態(tài);并且根據(jù)觸發(fā)信號查找對應的動作事件。
觸發(fā)信號可以是功能對象產生的異常中斷信號或事件中斷信號。例如,當功能對象是定時器,所述觸發(fā)信號是定時器計時溢出信號所引發(fā)的異常中斷信號或事件中斷信號。當功能對象是輸入電路時,則可以是其接收的外部信號所觸發(fā)的異常中斷信號或事件中斷信號。
執(zhí)行電路840隨后根據(jù)事件響應電路830的查找結果執(zhí)行所述動作事件。
復位電路850主要用于實現(xiàn)所述可編程控制裝置的復位操作。
請參閱圖11,是本發(fā)明可編程控制裝置的一個實施例。
該可編程控制裝置包括處理器710、存儲器720、輸入/輸出端口730、低電壓復位和上電復位電路740、定時/計數(shù)器750、音頻處理器760、數(shù)字混合器(多通道聲音硬件合成電路)770、數(shù)模轉換電路780。
輸入/輸出端口730中的通用輸入/輸出端口、特殊功能輸入輸出端口、數(shù)模轉換電路780等觸發(fā)信號提供單元被觸發(fā)后可以產生相應的觸發(fā)信號。其中,輸入/輸出端口730中的通用輸入端口在接收到外部信號時,與其連接的管腳讀取電路將產生觸發(fā)信號發(fā)送到處理器710;或者與其連接的睡眠/喚醒電路將產生異常中斷或事件中斷信號,發(fā)送到處理器710;輸入/輸出端口730中的通用輸入/輸出端口可組成各種類型的鍵盤矩陣電路,在接收到鍵按下或鍵抬起信號時,將產生觸發(fā)信號發(fā)送到處理器710,或者與輸入端口連接的睡眠/喚醒電路將產生異常中斷或事件中斷信號,發(fā)送到處理器710。特殊功能輸入端口包括紅外命令接收/端口、比較器比較輸入端口以及模數(shù)轉換器電路端口,分別在接收到紅外命令時產生觸發(fā)信號發(fā)送到處理器710,或比較輸入信號相等時產生觸發(fā)信號發(fā)送到處理器710,或將從控制裝置外部接收模擬信號并將其轉換為數(shù)字信號時產生觸發(fā)信號發(fā)送到處理器710。輸入/輸出端口730中的通用輸出端口被觸發(fā)后,處理器710將根據(jù)當前觸發(fā)狀態(tài)執(zhí)行輸出動作常量指令,可輸出邏輯高電平、邏輯低電平、單正脈沖信號、單負脈沖信號、或脈沖串信號。
定時/計數(shù)器750在定時/計時時間到達后,將產生事件中斷信號會發(fā)送到處理器710。
音頻處理器760和數(shù)字混合器770用于對音頻信號進行處理并進行多通道混音處理,通過數(shù)模轉換電路780在播放特定的音符或聲音片斷時,處理器710也會根據(jù)事先的設定接收到對應的觸發(fā)信號。
此外,低電壓復位和上電復位電路740在觸發(fā)時會引發(fā)復位事件,發(fā)送到處理器710。
存儲器720存儲動作事件、觸發(fā)信號與動作事件之間的對應關系。
處理器710根據(jù)觸發(fā)信號查找存儲器720內的對應關系,并獲取動作事件的地址,執(zhí)行相應的動作事件。
可以理解的是,觸發(fā)信號提供單元還可以是圖像接收單元,用于從控制裝置外部接收圖像信號。
用于輸出處理器產生的輸出信號的信號輸出單元還可以是圖像顯示驅動電路,此不贅述。
綜上所述,本發(fā)明將可編程控制裝置模塊化劃分各個功能對象,同時將控制程序模塊化為功能對象選定、觸發(fā)機制配置和動作事件設定等部分,用戶能站在更高的層面描述軟硬件觸發(fā)環(huán)境,而不需要關心底層軟、硬件的實現(xiàn)細節(jié),所以使產品應用程序的開發(fā)簡化、快速且清晰直觀,并且方便用戶的后續(xù)功能擴充。
本發(fā)明可以協(xié)調控制裝置各個部件功能,屏蔽底層硬件的細節(jié),提供用戶一個功能描述的環(huán)境,使得開發(fā)人員能把主要精力放在產品的功能上,而不需要對該裝置的硬件資源非常熟悉,因此用戶做的只是需要考慮實現(xiàn)控制裝置哪些功能,而不需要去關心實現(xiàn)方案的細節(jié),以此帶給用戶更大的功能設計空間。
本發(fā)明提供QPL高級語言,其兼有模塊化功能描述語言和集成化程序設計高級語言的優(yōu)點,運用模塊化功能描述語法,用戶能站在更高的層面描述軟硬件觸發(fā)環(huán)境,而不需要關心底層軟、硬件的實現(xiàn)細節(jié),所以使產品應用程序清晰直觀,從而方便了用戶的后續(xù)功能擴充;運用集成化程序設計高級語言語法,用戶能方便靈活的運用系統(tǒng)提供的各種播放控制指令、事件控制指令、時間控制指令來控制硬體的行為,同時配以集成化程序設計語言的控制流,表達式語法,用戶能充分的描述動作事件。
本發(fā)明可以應用于多個領域的可編程控制裝置,采用本發(fā)明開發(fā)的控制裝置可以應用于語音類控制器、通訊、多媒體電子產品,如兒童電子琴、電子語音玩具、電子圖書、和弦鈴聲、游戲機、智能電話、多功能玩具等。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。
權利要求
1.一種可編程控制裝置,其特征在于,包括功能單元,具有至少一個功能對象;存儲單元,用于存儲所述功能對象的觸發(fā)狀態(tài)設定信息、以及各觸發(fā)狀態(tài)下功能對象被觸發(fā)時控制裝置的動作事件;事件響應電路,用于在所述功能對象被觸發(fā)時,根據(jù)功能對象的當前觸發(fā)狀態(tài)查找該功能對象關聯(lián)的動作事件;執(zhí)行電路,用于根據(jù)事件響應電路的查找結果執(zhí)行所述動作事件。
2.根據(jù)權利要求1所述的可編程控制裝置,其特征在于,所述功能對象在接收到預定的外部信號時被觸發(fā)。
3.根據(jù)權利要求2所述的可編程控制裝置,其特征在于,所述功能單元是輸入電路;所述功能對象是輸入管腳,用于接收控制裝置外部的輸入信號;該輸入電路還包括輸入信號處理電路,用于根據(jù)該輸入信號產生觸發(fā)信號并傳送到事件響應電路。
4.根據(jù)權利要求3所述的可編程控制裝置,其特征在于,所述輸入信號處理電路是輸入管腳讀取電路或睡眠/喚醒電路。
5.根據(jù)權利要求2所述的可編程控制裝置,其特征在于,該控制裝置還包括模數(shù)轉換電路,用于將從控制裝置外部接收模擬信號轉換為數(shù)字信號;所述功能單元是鍵盤掃描單元,用于從控制裝置外部接收按鍵信號;或紅外信號接收電路,用于從控制裝置外部接收紅外信號;或比較器電路,用于從控制裝置外部接收比較輸入信號。
6.根據(jù)權利要求2所述的可編程控制裝置,其特征在于,所述功能對象將接收到的外部信號傳送到事件響應電路,該事件響應電路根據(jù)該外部信號判斷功能單元是否被觸發(fā);或者所述功能對象在接收到預定的外部信號時產生觸發(fā)信號并傳送到事件響應電路。
7.根據(jù)權利要求1所述的可編程控制裝置,其特征在于,所述功能對象在執(zhí)行預定功能時被觸發(fā)。
8.根據(jù)權利要求7所述的可編程控制裝置,其特征在于,所述功能對象是定時器,用于在計時時間到達時產生觸發(fā)信號。
9.根據(jù)權利要求7所述的可編程控制裝置,其特征在于,所述功能單元是音頻播放單元,所述功能對象是該音頻播放單元播放的音符或聲音片斷;所述功能單元或者是圖像顯示單元,所述功能對象是該圖像顯示單元產生的圖像掃描驅動信號。
10.根據(jù)權利要求1所述的可編程控制裝置,其特征在于,所述功能對象在切換到觸發(fā)狀態(tài)時被觸發(fā)。
11.根據(jù)權利要求10所述的可編程控制裝置,其特征在于,所述功能單元是信號輸出單元,用于在被觸發(fā)時輸出預定的輸出信號。
12.根據(jù)權利要求10所述的可編程控制裝置,其特征在于,所述信號輸出單元包括輸出電路、音頻播放單元或者圖像顯示單元。
13.根據(jù)權利要求1至12任一項所述的可編程控制裝置,其特征在于,所述執(zhí)行電路執(zhí)行的動作事件至少包括產生輸出信號、切換功能對象的觸發(fā)狀態(tài)或者啟動另一動作事件。
14.根據(jù)權利要求1至12任一項所述的可編程控制裝置,其特征在于,還包括復位電路,用于實現(xiàn)所述可編程控制裝置的復位操作。
15.根據(jù)權利要求3、6或8所述的可編程控制裝置,其特征在于,所述功能對象在被觸發(fā)時產生的觸發(fā)信號是異常事件信號或中斷事件信號。
16.一種可編程控制裝置的程序程式化方法,該控制裝置包括功能單元,所述功能單元具有至少一功能對象;其特征在于,包括步驟1)選定所述可編程控制裝置的功能對象;2)配置前述功能對象的觸發(fā)狀態(tài);3)設置觸發(fā)狀態(tài)下前述功能對象被觸發(fā)時由控制裝置執(zhí)行的動作事件;4)定義前述動作事件;并且至少在一動作事件中設定功能對象的當前觸發(fā)狀態(tài)。
17.如權利要求16所述的可編程控制裝置的程序程式化方法,其特征在于,在所述步驟3)中還包括設定所述功能對象在接收到預定的外部信號時被觸發(fā);或者在執(zhí)行預定功能時被觸發(fā);或者在切換到觸發(fā)狀態(tài)時被觸發(fā)。
18.如權利要求16所述的可編程控制裝置的程序程式化方法,其特征在于,所述動作事件包括產生輸出信號、切換功能對象的觸發(fā)狀態(tài)或者啟動另一動作事件。
19.根據(jù)權利要求16至18任一項所述的可編程控制裝置的程序程式化方法,其特征在于,所述功能對象包括輸入管腳、鍵盤按鍵、紅外接收命令、比較器、輸出管腳和/或定時器。
20.根據(jù)權利要求16至18任一項所述的可編程控制裝置的程序程式化方法,其特征在于,所述功能單元是音頻播放單元或者圖像顯示單元;所述功能對象是音頻播放單元播放的音符或聲音片斷,或者是圖像顯示單元產生的圖像掃描驅動信號;所述步驟1)中還包括設定與功能對象關聯(lián)的資源文件。
21.一種可編程控制裝置,其特征在于,包括觸發(fā)信號提供單元,用于接收或產生與控制裝置相關的觸發(fā)信號;存儲器,用于存儲控制裝置所要執(zhí)行的代碼,其中該代碼包括代表動作事件、觸發(fā)信號與動作事件之間的對應關系的參數(shù);處理器,用于根據(jù)該觸發(fā)信號查找前述對應關系,并根據(jù)查找的結果執(zhí)行對應的動作事件;信號輸出單元,用于輸出處理器產生的輸出信號。
22.根據(jù)權利要求21所述的可編程控制裝置,其特征在于,所述觸發(fā)信號提供單元包括輸入電路、鍵盤掃描單元、定時器、音樂播放單元、語音播放單元、圖像接收單元、比較器或模數(shù)轉換電路。
23.根據(jù)權利要求21所述的可編程控制裝置,其特征在于,所述信號輸出單元包括輸出電路、音頻信號播放電路或圖像顯示驅動電路。
24.根據(jù)權利要求21所述的可編程控制裝置,其特征在于,所述觸發(fā)信號提供單元在接收到預定的外部信號時、或者在執(zhí)行預定功能時、或者在切換到觸發(fā)狀態(tài)時產生觸發(fā)信號。
25.一種可編程控制裝置,包括功能對象,該控制裝置在功能對象被觸發(fā)時,根據(jù)內部存儲的控制程序來執(zhí)行設定的動作事件;其特征在于,該控制程序的程式化方法包括步驟a)選定所述可編程控制裝置的功能對象;a)配置前述功能對象的觸發(fā)狀態(tài);c)設置觸發(fā)狀態(tài)下前述功能對象被觸發(fā)時由控制裝置的動作事件;d)定義前述動作事件;并且在至少一動作事件中設定功能對象的當前觸發(fā)狀態(tài)。
全文摘要
本發(fā)明公開了一種可編程控制裝置,包括功能單元,具有至少一個功能對象;存儲單元,用于存儲所述功能對象的觸發(fā)狀態(tài)設定信息、以及各觸發(fā)狀態(tài)下功能對象被觸發(fā)時控制裝置的動作事件;事件響應電路,用于在所述功能對象被觸發(fā)時,根據(jù)功能對象的當前觸發(fā)狀態(tài)查找該功能對象關聯(lián)的動作事件;執(zhí)行電路,用于根據(jù)事件響應電路的查找結果執(zhí)行所述動作事件。本發(fā)明還相應地公開了一種可編程控制裝置的程序程式化方法。本發(fā)明具有實現(xiàn)簡單直觀、且容易擴展的特點,能夠應用于具有各種復雜、多樣化功能的IC設計。
文檔編號G06F15/76GK1801081SQ20051000001
公開日2006年7月12日 申請日期2005年1月4日 優(yōu)先權日2005年1月4日
發(fā)明者陳泳成, 馬濤, 姬傳國 申請人:凌陽科技股份有限公司