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