两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

實(shí)現(xiàn)微控制器可配置性的方法和可配置的微控制器的制作方法

文檔序號(hào):6459088閱讀:565來(lái)源:國(guó)知局

專利名稱::實(shí)現(xiàn)微控制器可配置性的方法和可配置的微控制器的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及微控制器,特別涉及一種低成本實(shí)現(xiàn)微控制器電路功能可配置性的方法和一種可配置的纟效控制器。
背景技術(shù)
:與通用微處理器不同,微控制器是一種更為強(qiáng)調(diào)自足性(即盡量少用外接硬件)和性價(jià)比的微處理器,其通常將只讀存儲(chǔ)器(ROM)、隨機(jī)存儲(chǔ)器(RAM)、中央處理單元(CPU)、定時(shí)器和I/O端口等單元集成在一塊芯片內(nèi),以滿足不同場(chǎng)合下的應(yīng)用需求。有關(guān)微控制器的結(jié)構(gòu)和工作原理已有諸多描述,例如可參見(jiàn)《8051孩乏控制器教程》(第3版)(清華大學(xué)出版社2005年12月1日出版),該文獻(xiàn)在此以全文引用方式包含在本文中。為了進(jìn)一步減少凝:控制器所需的外接硬件,人們嘗試將一些數(shù)字電路單元和模擬電路單元也集成到微控制器芯片內(nèi)。圖1示出了一種典型的集成了數(shù)字電路和模擬電路的微控制器芯片的架構(gòu)圖。如圖l所示,該微控制器包括內(nèi)核、數(shù)字系統(tǒng)、模擬系統(tǒng)和系統(tǒng)資源,而可配置的全局總線資源可將所有的器件資源組合成為一個(gè)完整的定制系統(tǒng)。內(nèi)核作為處理引擎,包含用于存儲(chǔ)數(shù)據(jù)的靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)、中斷控制、時(shí)鐘資源(包括內(nèi)部主晶體振蕩器(IMO)和內(nèi)部低速晶體振蕩器(ILO))和中央處理單元核。數(shù)字系統(tǒng)包含若干可配置的數(shù)字邏輯電路單元,它們可以獨(dú)立或以組合方式構(gòu)成各種外部設(shè)備,例如I2C接口、SPI接口、通用異步收發(fā)器(UART)和脈沖寬度調(diào)制(PWM)電路等。上述數(shù)字邏輯電路單元可以可編程方式經(jīng)由全局總線與通用10端口相連,由此實(shí)現(xiàn)任一信號(hào)在任一引腳上的輸入和輸出。模擬系統(tǒng)包括若干可配置的模擬電路單元,它們可以生成各種復(fù)雜的模擬信號(hào)流以實(shí)現(xiàn)各種模擬類外部設(shè)備的功能,例如模數(shù)轉(zhuǎn)換器和電壓比較器等。上述模擬電路單元同樣也可以由可編程方式經(jīng)由全局總線與通用IO端口相連,由此實(shí)現(xiàn)任一信號(hào)在任一引腳上的輸入和輸出。系統(tǒng)資源提供了諸多的附加功能,例如可提升數(shù)字系統(tǒng)靈活性的數(shù)字時(shí)鐘、可實(shí)現(xiàn)I2C主、從和多主通訊的12C功能、向微控制器內(nèi)的其它單元提供電壓基準(zhǔn)的內(nèi)部電壓基準(zhǔn)、可產(chǎn)生高于電池電壓的工作電壓的開(kāi)關(guān)充電泵(switchmodepump)以及得到中央處理單元核支持的各種系統(tǒng)復(fù)位功能。有關(guān)圖1所示微控制器的詳細(xì)描述可參見(jiàn)位于美國(guó)加利福尼亞州的賽普雷斯半導(dǎo)體有限公司(CypressSemiconductorCorp.)提供的型號(hào)為CY8C21234的微控制器芯片的產(chǎn)品數(shù)據(jù)表(datasheet),該文件作為參考文獻(xiàn)在此以全文引用方式包含在本文中。然而,模擬電路和數(shù)字電路在一塊芯片上的混成以及集成度的提高將加大芯片的設(shè)計(jì)難度并且增加微控制器的制造成本,因此不利于微控制器性價(jià)比的提高。
發(fā)明內(nèi)容本發(fā)明的一個(gè)目的是提供一種低成本實(shí)現(xiàn)微控制器電路功能可配置性的方法。本發(fā)明的另外一個(gè)目的是提供一種可配置的微:控制器,其可低成本地實(shí)現(xiàn)電路功能的配置。按照本發(fā)明的一個(gè)方面,提出了一種實(shí)現(xiàn)微控制器可配置性的方法,所述微控制器包括中央處理單元、數(shù)據(jù)存儲(chǔ)器、程序存儲(chǔ)器、輸A/輸出端口和定時(shí)器,該方法包含下列步驟確定所需配置的石更件電路的功能;以及在所述程序存儲(chǔ)器內(nèi)存儲(chǔ)應(yīng)用程序和子程序,所述子程序用于實(shí)現(xiàn)所需配置的硬件電路的功能并且可被所述應(yīng)用程序調(diào)用。優(yōu)選地,在上述方法中,所述應(yīng)用程序用C語(yǔ)言編寫(xiě),所述子程序用匯編語(yǔ)言編寫(xiě),并且所述應(yīng)用程序以函數(shù)調(diào)用的方式調(diào)用所述子程序。優(yōu)選地,在上述方法中,所述應(yīng)用程序和子程序是可更新的。更好地,所述應(yīng)用程序和子程序通過(guò)系統(tǒng)可編程或應(yīng)用可編程方式更新。優(yōu)選地,在上述方法中,所述子程序以加密保護(hù)的形式存儲(chǔ)在5所述程序存儲(chǔ)器內(nèi)。按照本發(fā)明的另一個(gè)方面,提供了一種可配置的纟敖控制器,包括中央處理單元、數(shù)據(jù)存儲(chǔ)器、程序存儲(chǔ)器、輸入/輸出端口和定時(shí)器,其中,所述程序存儲(chǔ)器內(nèi)存儲(chǔ)多個(gè)子程序,所述子程序用于實(shí)現(xiàn)硬件電路的功能并且可被由所述中央處理單元執(zhí)行的應(yīng)用程序調(diào)用。優(yōu)選地,在上述微控制器中,所述硬件電路為輸入輸出設(shè)備接口。更好地,所述輸入輸出設(shè)備接口為液晶顯示器并行接口電路、發(fā)光二極管數(shù)碼管接口電路、電容式感應(yīng)鍵接口電路或鍵盤(pán)接口電路中的至少一種。優(yōu)選地,在上述微控制器中,所述硬件電路為通信接口。更好地,所述通信接口為通用異步收發(fā)器、12C接口電路、SPI接口電路和單總線接口電路中的至少一種。優(yōu)選地,在上述微控制器中,所述硬件電路為脈沖寬度調(diào)制電路、數(shù)模/模數(shù)轉(zhuǎn)換器、電壓比較電路、溫度測(cè)量電路中的至少一種。優(yōu)選地,在上述微控制器中,所述數(shù)據(jù)存儲(chǔ)器為隨機(jī)存取存儲(chǔ)器,所述程序存儲(chǔ)器為只讀存儲(chǔ)器或快閃存儲(chǔ)器。優(yōu)選地,在上述微控制器中,所述微控制器基于哈佛架構(gòu)。優(yōu)選地,在上述微控制器中,所述微控制器基于馮*諾依曼架構(gòu)。優(yōu)選地,在上述^f敬控制器中,所述程序存儲(chǔ)器包括多個(gè)快速存儲(chǔ)器,其中兩個(gè)分別用于存儲(chǔ)引導(dǎo)程序和所述子程序。更好地,所述引導(dǎo)程序支持系統(tǒng)可編程或應(yīng)用可編程功能?;蛘吒玫兀鎯?chǔ)所述子程序的快速存儲(chǔ)器是受加密保護(hù)的。優(yōu)選地,在上述微控制器中,所述程序存儲(chǔ)器包括一個(gè)劃分為多個(gè)區(qū)域的快閃存儲(chǔ)器,引導(dǎo)程序和所述子程序被存儲(chǔ)在不同的所述區(qū)域內(nèi)。按照本發(fā)明的實(shí)施例,將實(shí)現(xiàn)硬件電路功能的子程序來(lái)替代集成在微控制器內(nèi)的數(shù)字和模擬電路,因此降低了微控制器的設(shè)計(jì)難度和制造成本。此外,由于通過(guò)軟件升級(jí)即可擴(kuò)展和改變微控制器的功能,因此與在《敖控制器內(nèi)集成硬件電路的方式相比,在可擴(kuò)展性和開(kāi)發(fā)的便利性方面具有明顯的優(yōu)勢(shì)。還有,隨著處理器性能的不斷提高,其計(jì)算能力變得越來(lái)越強(qiáng)大,本發(fā)明的實(shí)施例利用軟件程序來(lái)實(shí)現(xiàn)硬件電路的功能可以充分挖掘處理器的計(jì)算資源,從而6進(jìn)一步提高系統(tǒng)的性價(jià)比。附圖簡(jiǎn)述本發(fā)明的上述和/或其它方面和優(yōu)點(diǎn)將通過(guò)以下結(jié)合附圖的各個(gè)方面的描述變得更加清晰和更容易理解,附圖包括圖1示出了一種典型的集成了數(shù)字電路和模擬電路的微控制器的架構(gòu)圖。圖2示出了按照本發(fā)明一個(gè)實(shí)施例的可配置的微控制器的功能框圖。圖3a和3b示出了圖2所示微控制器的存儲(chǔ)器的組織形式。圖4示出了在圖2所示微控制器內(nèi)運(yùn)行的軟件的分層模型。圖5為虛擬硬件子程序的調(diào)用過(guò)程示意圖。圖6示出來(lái)利用虛擬硬件子程序來(lái)實(shí)現(xiàn)脈沖寬度調(diào)制電路功能的模型框圖。圖7a和7b示出來(lái)利用虛擬硬件子程序來(lái)實(shí)現(xiàn)I2C接口電路功能的模型框圖,其中,圖7a示出的是微控制器作為主設(shè)備的情形,圖7b示出的是微控制器作為從設(shè)備的情形。圖8為利用虛擬硬件子程序來(lái)實(shí)現(xiàn)通用異步收發(fā)器電路功能的才莫型框圖。圖9a和9b分別示出了利用虛擬硬件子程序?qū)崿F(xiàn)數(shù)模轉(zhuǎn)換功能和模數(shù)轉(zhuǎn)換功能的才莫型框圖。圖10示出了利用虛擬硬件子程序?qū)崿F(xiàn)溫度測(cè)量功能的模型框圖。圖11示出了利用虛擬硬件子程序?qū)崿F(xiàn)電容式感應(yīng)鍵捕獲功能的模型框圖。圖12a和12b示出了利用虛擬硬件子程序?qū)崿F(xiàn)鍵盤(pán)鍵值讀取功能的模型框圖。圖13示出了利用虛擬硬件子程序?qū)崿F(xiàn)液晶顯示器接口功能的模型框圖。具體實(shí)施例方式在以下的詳細(xì)討論中,借助文字描述和附圖來(lái)闡述本發(fā)明的各個(gè)不同方面,這些方面僅以示意性例子的方式給出,并且可以是本7發(fā)明一個(gè)或者多個(gè)示范性實(shí)施例。對(duì)于本領(lǐng)域中的技術(shù)人員來(lái)說(shuō),在不背離本發(fā)明的精神或范圍的前提下,可以以各種不同的方法來(lái)改動(dòng)所述的各個(gè)方面。,在下面的描述中,除非特別說(shuō)明,微控制器和微控制器芯片是可以互換4吏用的術(shù)語(yǔ)。此外,通用輸入/輸出端口(GPIO)指的是一種可進(jìn)行各種定制連接的并行接口,其一般包含多個(gè)端口引腳或端口線,例如8個(gè)端口引腳。按照本發(fā)明的一個(gè)方面,在微控制器的程序存儲(chǔ)器內(nèi)存儲(chǔ)了一類特殊的子程序供微控制器的中央處理單元調(diào)用執(zhí)行,這類特殊的子程序通過(guò)調(diào)用各種資源來(lái)實(shí)現(xiàn)硬件電路功能,從而替代設(shè)置于微控制器內(nèi)部的硬件電路或者外接于微控制器外部的硬件電路,以下又將這類子程序稱為虛擬硬件子程序。上面所述的硬件電路應(yīng)當(dāng)廣義理解為可實(shí)現(xiàn)一定電路功能的物理裝置或設(shè)備,例如通過(guò)光刻工藝在芯片上形成的圖案和焊接在印刷電路板上并通過(guò)布線相連的若干分立元件,包括但不限于諸如液晶顯示器并行接口電路、發(fā)光二極管數(shù)碼管接口電路、電容式感應(yīng)鍵接口電路或鍵盤(pán)接口電路之類的輸入輸出設(shè)備接口、諸如通用異步收發(fā)器、I2C接口電路和SPI接口電路之類的通信接口以及數(shù)字脈沖寬度調(diào)制電路、數(shù)模/模數(shù)轉(zhuǎn)換器、電壓比較電路、溫度測(cè)量電路等。值得指出的是,可供上述虛擬硬件子程序訪問(wèn)或調(diào)用的資源包括但不限于在孩£控制器內(nèi)一般都配置的定時(shí)器/計(jì)數(shù)器、I/O端口、靜態(tài)隨機(jī)存儲(chǔ)器、中斷系統(tǒng)和看門(mén)狗定時(shí)器等。一般而言,為了能夠?qū)崿F(xiàn)硬件電路的功能,虛擬硬件子程序往往需要訪問(wèn)或調(diào)用微控制器內(nèi)的多個(gè)資源;此外,微控制器內(nèi)的資源越豐富,則虛擬硬件子程序能夠仿真或模擬更多的硬件電路。圖2示出了按照本發(fā)明一個(gè)實(shí)施例的可配置的凝:控制器的功能框圖。如圖2所示,該微控制器200包括中央處理單元210、靜態(tài)隨才幾存儲(chǔ)器(RAM)211a和211b、中斷控制邏輯212、可編程定時(shí)器/計(jì)數(shù)器213a和213b、看門(mén)狗(WDT)定時(shí)器214、晶體振蕩器215、通用異步收發(fā)器216、快閃存儲(chǔ)器(FLASH)217a~217e、多個(gè)8位通用輸入/輸出端口218a~218d和安全加鎖單元(security1ock)219。在圖2所示的微控制器200中,中夾處理單元210、RAM211a和211b、中斷控制邏輯212、可編程定時(shí)器/計(jì)數(shù)器213a和213b、看門(mén)狗定時(shí)器214、晶體振蕩器215、通用異步收發(fā)器216、快閃存儲(chǔ)器217a-217e、通用輸入/輸出端口218a~218d和安全加鎖單元219通過(guò)總線互聯(lián),而中斷控制邏輯212和晶體振蕩器215與中央處理單元210直接相連。值得指出的是,圖2所示的微控制器基于馮"若伊曼結(jié)構(gòu),但是由下面的描述將可以理解,完全可以將本發(fā)明利用虛擬硬件子程序來(lái)實(shí)現(xiàn)硬件電路功能的概念應(yīng)用于基于哈佛結(jié)構(gòu)或其他架構(gòu)的微控制器。此外,從下面的描述還將看到,本發(fā)明對(duì)于釆用CISC指令集和RISC指令集的微控制器都是適合的。在圖2中,中央處理單元210基于典型處理器的架構(gòu),例如8051處理器核,其包括算術(shù)邏輯單元(ALU)、累加器(ACC)、指令寄存器、程序計(jì)數(shù)器以及時(shí)序和控制邏輯等,用于順序操作和控制與RAM211a和211b之間的數(shù)據(jù)傳輸,并且還可實(shí)現(xiàn)對(duì)通用輸^/輸出端口218a~218d的控制。有關(guān)中央處理單元210內(nèi)部結(jié)構(gòu)的詳細(xì)描述例如可參見(jiàn)《8051微控制器教程》(第3版)(清華大學(xué)出版社2005年12月1日出版),此處不再贅述。中斷控制邏輯212將各種中斷請(qǐng)求信號(hào)傳送給中央處理單元210以響應(yīng)特定事件的發(fā)生。可編程定時(shí)器/計(jì)數(shù)器213a和213b為16位寄存器,它們可內(nèi)部定時(shí),也可外部計(jì)數(shù),可一次性工作,計(jì)滿后發(fā)中斷請(qǐng)求,也可以自動(dòng)連續(xù)計(jì)數(shù)??撮T(mén)狗定時(shí)器214用于軟件死鎖時(shí)的安全失效保護(hù)和自動(dòng)恢復(fù)。晶體振蕩器215用于向中央處理單元210提供時(shí)鐘基準(zhǔn)信號(hào),在某些應(yīng)用下,可以為晶體振蕩器215配備除頻電路,或者,可以用一組晶體振蕩器替代單個(gè)晶體振蕩器212,從而提供多個(gè)時(shí)鐘基準(zhǔn)信號(hào)。通用異步收發(fā)器216是一個(gè)全雙工端口,其允許通過(guò)發(fā)送寄存器和接收寄存器同時(shí)進(jìn)行數(shù)據(jù)的發(fā)送和接收。發(fā)送寄存器和接收寄存器皆位于串行數(shù)據(jù)緩沖器(SBUF)特殊功能寄存器內(nèi)。對(duì)SBUF寄存器的寫(xiě)操作將加載發(fā)送寄存器的數(shù)據(jù),而對(duì)SBUF的讀操作將獲取接收寄存器的內(nèi)容。此外,還可以利用通用異步收發(fā)器216來(lái)改寫(xiě)快閃存儲(chǔ)器217a217d的內(nèi)容,從而實(shí)現(xiàn)系統(tǒng)可編程(ISP)或應(yīng)用可編程(IAP)功能。在圖2所示的微控制器200中快閃存儲(chǔ)器217a~217e用于存儲(chǔ)所執(zhí)行的程序,而RAM211a和211b被用于臨時(shí)存儲(chǔ)中央處理單元210執(zhí)行的指令和執(zhí)行過(guò)程中涉及的數(shù)據(jù),并且程序和數(shù)據(jù)存儲(chǔ)器被分配分立的地址空間。以下借助附圖對(duì)微控制器200的存儲(chǔ)器的組織形式(organization)作詳纟田4笛述。圖3a和3b示出了圖2所示微控制器的存儲(chǔ)器的組織形式,其中,圖3a為快閃存儲(chǔ)器217a~217e的組織形式示意圖,而圖3b為RAM211a和211b的組織形式示意圖。如圖3a所示,快閃存儲(chǔ)器217a分配的地址為43FFh~4000h,其容量為1K字節(jié),用于存儲(chǔ)引導(dǎo)的裝載程序和擦除/燒錄快閃存儲(chǔ)器217b~217d的子程序等,支持在系統(tǒng)中編程(ISP)和在應(yīng)用中編程(IAP)。當(dāng)微控制器200上電時(shí),其首先執(zhí)行快閃存儲(chǔ)器217a中存儲(chǔ)的程序,如果引導(dǎo)程序判斷不滿足外部改寫(xiě)程序的條件,則程序指針將指向其他快閃存儲(chǔ)器內(nèi)存儲(chǔ)的程序(例如快閃存儲(chǔ)器217e內(nèi)存儲(chǔ)的應(yīng)用程序),微控制器200開(kāi)始執(zhí)行程序指針指向的程序;否則,則允許通過(guò)通用異步收發(fā)器216對(duì)快閃存儲(chǔ)器217b~217e施行寫(xiě)入操作。如圖3a所示,快閃存儲(chǔ)器217b217e的存儲(chǔ)容量皆為4K字節(jié),它們被分配的地址空間依次為3FFFh~3000h、2FFFh~2000、lFFFh~1000h和0FFFh0000h。雖然分配給快閃存儲(chǔ)器217a~217e的地址空間是連續(xù)的,但是這并不意味著它們?cè)谖锢砩鲜且粔K連續(xù)的存儲(chǔ)區(qū)。'在本實(shí)施例中,為了實(shí)現(xiàn)對(duì)部分程序的加密保護(hù),快閃存儲(chǔ)器217a~217e在微控制器200內(nèi)被設(shè)置為分立的存儲(chǔ)器或獨(dú)立進(jìn)行讀寫(xiě)操作的存儲(chǔ)電路。顯然,當(dāng)無(wú)加密保護(hù)要求時(shí),也可以考慮采用一個(gè)被劃分為多個(gè)存儲(chǔ)區(qū)域的快閃存儲(chǔ)器來(lái)代替上述多個(gè)快閃存儲(chǔ)器??扉W存儲(chǔ)器217b用于存儲(chǔ)實(shí)現(xiàn)硬件電路功能的虛擬硬件子程序;快閃存儲(chǔ)器217c被仿真為EEPROM使用,其中的IK字節(jié)作為保留區(qū)域?qū)iT(mén)供虛擬硬件子程序使用,另外的3K字節(jié)則供用戶程序使用;快閃存儲(chǔ)器217d和217e都向系統(tǒng)開(kāi)發(fā)用戶開(kāi)放,其中,快閃存儲(chǔ)器217d用于存儲(chǔ)下面將作進(jìn)一步描述的應(yīng)用功能庫(kù),而快閃存儲(chǔ)器217e用于存儲(chǔ)其他程序,例如操作系統(tǒng)和用戶開(kāi)發(fā)的10應(yīng)用程序等。為了防止非法拷貝,對(duì)存儲(chǔ)了虛擬硬件子程序和應(yīng)用功能庫(kù)的快閃存儲(chǔ)器217b和217d進(jìn)行加密保護(hù)。在圖2所示的微控制器中,對(duì)程序的加密保護(hù)是借助安全加鎖單元219來(lái)實(shí)現(xiàn)的,該單元通過(guò)阻止指令MOVC對(duì)加密存儲(chǔ)空間的4喿作來(lái)達(dá)到加密保護(hù)的目的。某些商用的微控制器芯片已經(jīng)提供了上述安全加鎖機(jī)制,例如位于美國(guó)加利福尼亞州的超捷(SiliconStorageTechnology)股份有限公司提供的型號(hào)為SST89E52RC芯片。虛擬硬件子程序在運(yùn)行過(guò)程中可能需要執(zhí)行查表操作,但是由于受到加密保護(hù)的存儲(chǔ)器無(wú)法利用MOVC指令訪問(wèn),因此在圖2所示的微控制器200內(nèi),需要額外占用非加密的存儲(chǔ)器來(lái)存放查表類數(shù)據(jù)。為此,這里將快閃存儲(chǔ)器217c中容量為1K的保留區(qū)域作為查表類數(shù)據(jù)的存儲(chǔ)區(qū)域,以供虛擬硬件子程序通過(guò)EEPROM訪問(wèn)命令來(lái)調(diào)用。參見(jiàn)圖3b,RAM211a為內(nèi)部RAM,分配的地址為00h~FFh,其可利用MOV指令訪問(wèn)以供用戶程序使用;RAM211b為擴(kuò)展RAM,分配的地址亦為00h~FFh,但其只能利用MOVX指令間接訪問(wèn)并且由特定寄存器的標(biāo)志位控制其使能狀態(tài),在圖2所示的微控制器內(nèi),該存儲(chǔ)器僅供存儲(chǔ)在快閃存儲(chǔ)器217b內(nèi)的虛擬硬件子程序使用。應(yīng)當(dāng)理解的是,上述使用戶程序和虛擬硬件子程序運(yùn)行在不同的靜態(tài)隨機(jī)存儲(chǔ)器內(nèi)的配置僅是特例而非必須如此,因?yàn)檫@兩類程序是否加載到不同的靜態(tài)隨機(jī)存儲(chǔ)器并不會(huì)對(duì)硬件電路功能的實(shí)現(xiàn)有實(shí)質(zhì)性的影響。通用輸^v/輸出端口218a218d為8位I/0端口(即,每個(gè)通用輸^/輸出端口包含8個(gè)端口引腳或端口線),可以位選輸入/輸出方式。通用輸入/輸出端口218a218d經(jīng)由總線與獨(dú)L控制器200內(nèi)的其他單元互聯(lián),其提供了凝:控制器200與外部設(shè)備之間的通用接口。在中央處理單元210的控制下,可以在一個(gè)端口的其中一個(gè)引腳上發(fā)送所需的輸出信號(hào)或者從一個(gè)端口的其中一個(gè)引腳接收來(lái)自外部設(shè)備的輸入信號(hào)。圖4示出了在圖2所示微控制器內(nèi)運(yùn)行的軟件的分層模型。如圖4所示,所運(yùn)行的軟件由下向上被劃分為三層,其中,最底層為引導(dǎo)程序、操作系統(tǒng)和實(shí)現(xiàn)硬件電路功能的虛擬硬件庫(kù),它們可直接對(duì)硬件進(jìn)行操作;中間層為應(yīng)用功能庫(kù);最上層為應(yīng)用程序。對(duì)于基于4位、8位和16位微控制器的控制領(lǐng)域(例如冰箱、洗衣機(jī)、微波爐等家電控制),一般可以不釆用操作系統(tǒng),此時(shí)最底層由引導(dǎo)程序和虛擬硬件庫(kù)組成。如上所述,引導(dǎo)程序存儲(chǔ)在快閃存儲(chǔ)器217a內(nèi),其主要任務(wù)是完成系統(tǒng)啟動(dòng)之前必要的硬件初始化和操作系統(tǒng)的加載,并且管理ISP/IAP協(xié)議和控制對(duì)快閃存儲(chǔ)器217b217e的讀寫(xiě)和加密操作。操作系統(tǒng)存儲(chǔ)在快閃存儲(chǔ)器217d或217e內(nèi),在本實(shí)施例中可以采用各種嵌入式操作系統(tǒng),例如VxWorks操作系統(tǒng)、基于Linux內(nèi)核的系統(tǒng)、WindowsCE操作系統(tǒng)和基于^C/OS—II內(nèi)核的系統(tǒng)。虛擬硬件庫(kù)包含多個(gè)可被中間層和最上層的軟件調(diào)用的子程序,這些子程序以加密形式被存儲(chǔ)在快閃存儲(chǔ)器217b內(nèi),其入口地址以向量列表方式存儲(chǔ)在特定的位置,例如前述快閃存儲(chǔ)器217c的1K字節(jié)的保留區(qū)域內(nèi)。每個(gè)虛擬硬件子程序用于完成一種硬件電路功能,其實(shí)際上是一段調(diào)用各種資源來(lái)實(shí)現(xiàn)特定的硬件電路功能的代碼。為了提高代碼效率和執(zhí)行速度,虛擬硬件子程序可采用匯編語(yǔ)言編寫(xiě)。此外,為方^f更應(yīng)用系統(tǒng)的開(kāi)發(fā),上層的應(yīng)用功能庫(kù)和應(yīng)用程序一般都采用高級(jí)語(yǔ)言(例如C51)開(kāi)發(fā),由于這類語(yǔ)言都提供了對(duì)匯編語(yǔ)言編寫(xiě)的子程序進(jìn)行調(diào)用的功能,因此實(shí)現(xiàn)了混合編程。在本發(fā)明中,可以根據(jù)應(yīng)用系統(tǒng)的需要,通過(guò)編寫(xiě)不同的虛擬硬件子程序,對(duì)微控制器需要實(shí)現(xiàn)的硬件電路功能的種類和數(shù)量靈活地進(jìn)行定義。例如,作為一個(gè)完整的嵌入式系統(tǒng),一般都包含諸如小鍵盤(pán)和電容式感應(yīng)鍵之類的輸入設(shè)備和諸如液晶顯示器、發(fā)光二極管顯示屏之類的輸出設(shè)備,為此,可以編制用于實(shí)現(xiàn)液晶顯示器并行接口電路、發(fā)光二極管數(shù)碼管接口電路、電容式感應(yīng)鍵接口電路或鍵盤(pán)接口電路等硬件電路的虛擬硬件子程序并存儲(chǔ)在快閃存儲(chǔ)器217b以供調(diào)用。又如,應(yīng)用系統(tǒng)一般需要按照某些協(xié)議與外部設(shè)備進(jìn)行通信,因此在本實(shí)施例的微控制器.中,也可以提供用于實(shí)現(xiàn)常用通信接口(例如通用異步收發(fā)器、I2C接口電路、SPI接口和單總線(l-wire)接口)的功能的虛擬硬件子程序。此外,為了滿足測(cè)量應(yīng)用,還可在本實(shí)施例的微控制器中提供用于實(shí)現(xiàn)數(shù)模/模數(shù)轉(zhuǎn)換、脈沖寬度調(diào)制、電壓比較和溫度測(cè)量等功能的虛擬硬12件子程序。此外,在圖4所示的分層模型中,底層硬件的驅(qū)動(dòng)功能全部被封裝在最底層,這使得系統(tǒng)開(kāi)發(fā)人員無(wú)需關(guān)注底層硬件的具體驅(qū)動(dòng)細(xì)節(jié),從而加快了應(yīng)用系統(tǒng)的開(kāi)發(fā)速度,降低了開(kāi)發(fā)工作量。另夕卜,由于在微控制器內(nèi)提供了ISP和IAP功能,因此隨時(shí)升級(jí)更新虛擬硬件庫(kù)。如圖4所示,中間層為應(yīng)用功能庫(kù),其介于應(yīng)用程序與虛擬硬件庫(kù)和操作系統(tǒng)之間,通常包含一組針對(duì)某一類應(yīng)用(例如電飯煲、微波爐等小家電的控制系統(tǒng))并且可被最上層的應(yīng)用程序調(diào)用的程序模塊,這些程序模塊以加密形式被存儲(chǔ)在快閃存儲(chǔ)器217d內(nèi),其調(diào)用地址以向量列表方式存儲(chǔ)在特定的位置,例如快閃存儲(chǔ)器217c的其余3K字節(jié)的區(qū)域內(nèi)。應(yīng)用功能庫(kù)為上層的應(yīng)用軟件提供運(yùn)行與開(kāi)發(fā)的環(huán)境,可幫助用戶靈活、高效地開(kāi)發(fā)和集成復(fù)雜的應(yīng)用程序;此外,由于其通常針對(duì)特定類型的應(yīng)用場(chǎng)合開(kāi)發(fā),因此有助于提高軟件的復(fù)用性。圖4所示分層模型的最上層為應(yīng)用系統(tǒng)開(kāi)發(fā)廠商編寫(xiě)的應(yīng)用軟件,其被存儲(chǔ)在快閃存儲(chǔ)器217e內(nèi)并且可調(diào)用虛擬硬件庫(kù)和應(yīng)用功能庫(kù)的子程序。圖5為虛擬硬件子程序的調(diào)用過(guò)程示意圖。此處應(yīng)用程序采用C51語(yǔ)言編寫(xiě),而虛擬硬件子程序采用匯編語(yǔ)言編寫(xiě)。如圖5所示,應(yīng)用程序作為主程序,與虛擬硬件庫(kù)開(kāi)發(fā)商提供的頭文件同屬于用戶程序空間;虛擬^便件子程序的入口地址表和編譯后的子程序代碼則位于虛擬硬件子程序的存儲(chǔ)空間。頭文件中定義有虛擬硬件子程序的入口地址表的存儲(chǔ)位置,應(yīng)用程序中的調(diào)用函數(shù)VMLF1()從頭文件中獲取入口地址表的存儲(chǔ)地址,進(jìn)而根據(jù)入口地址表查找到被調(diào)用虛擬硬件子程序代碼的地址,并將程序指針跳轉(zhuǎn)到該地址。于是,被調(diào)用虛擬硬件子程序的代碼加載到RAM211b內(nèi)執(zhí)行,而執(zhí)行的結(jié)果則返回給應(yīng)用程序。以下給出一個(gè)調(diào)用虛擬硬件子程序的示意性實(shí)例,所調(diào)用的子程序用于將前述通用輸入/輸出端口上輸入的電信號(hào)轉(zhuǎn)換為溫度值,函數(shù)原型為unsignedcharTempl叩ut(void)。xy:"〃fm丄掙;tW興義斧,逸含7岸孩^聲坊13MW^gnec/c/a/"/e附;—va/we;//,效濕>^值寬#vfl/we=rew;/";wW,'〃源^溫《刺f子擺^,遽歐溫^值7圖6示出來(lái)利用虛擬硬件子程序來(lái)實(shí)現(xiàn)脈沖寬度調(diào)制電路功能的模型框圖。該模型提供兩個(gè)脈沖輸出子程序或函數(shù),它們分別可編程定時(shí)器213a和213b的資源,通過(guò)定時(shí)器中斷方式來(lái)控制端口引腳PWM和PWM2上的高電平和低電平持續(xù)時(shí)間,以輸出頻率和占空比可變的脈寬調(diào)制脈沖,這里的端口引腳PWM和PWM2選自通用輸入/輸出端口218a218d。上述子程序的函數(shù)原型為voidPWMOutput(unsignedintfrequency,unsignedcharduty)和voidPWM20utput(unsignedintfrequency,unsignedcharduty),函數(shù)參數(shù)中的fr叫為頻率,duty為高電平的占空比。相應(yīng)地,該模型還提供有停止在端口引腳PWM和PWM2上的脈沖輸出的兩個(gè)函數(shù),函數(shù)原型分別為voidPWMOff(void)和voidPWM20ff(void)。由上可見(jiàn),圖2所示的微控制器200內(nèi)雖然并未內(nèi)置單獨(dú)的脈沖寬度調(diào)制電路,但是虛擬硬件子程序可以利用定時(shí)器和端口資源,輸出寬度受到調(diào)制的脈沖信號(hào)。圖7a和7b示出來(lái)利用虛擬硬件子程序來(lái)實(shí)現(xiàn)12C接口電路功能的模型框圖,其中,圖7a示出的是微控制器作為主設(shè)備的情形,圖7b示出的是微控制器作為從設(shè)備的情形。在圖7a所示的模型中,提供了數(shù)據(jù)發(fā)送和數(shù)據(jù)輸出兩個(gè)子程序或函數(shù),這些子程序在RAM211b內(nèi)創(chuàng)建發(fā)送數(shù)據(jù)或接收數(shù)據(jù)的緩沖區(qū),其中,發(fā)逸數(shù)據(jù)的子程序經(jīng)端口引腳SCL和SDA發(fā)送緩沖區(qū)的數(shù)據(jù),接收數(shù)據(jù)的子程序從端口引腳SCL和SDA上接收數(shù)據(jù)并存儲(chǔ)到緩沖區(qū)內(nèi),這里的端口引腳SCL和SDA選自通用輸入/輸出端口218a~218d。上述函數(shù)的原型分別為unsignedchar12CMasterDataTx(unsignedcharn,unsignedchar氺buffer)和unsignedchar12CMasterDataRx(unsignedcharn,unsignedcharslave—address,unsignedchar*buffer),函數(shù)參數(shù)中的n為需發(fā)送或接收的字節(jié)數(shù),buffer為數(shù)據(jù)緩沖區(qū)指針,函數(shù)的返回值為0或1以表示操作成功與否。在圖7b所示的模型中,提供了從機(jī)初始化、數(shù)據(jù)發(fā)送和數(shù)據(jù)輸出三個(gè)子程序或函數(shù)。用于從機(jī)初始化的函數(shù)的原型為void12CSlavelnit(unsignedcharslave—addr),函數(shù)參數(shù)slave—addr為從機(jī)地址。發(fā)送和接收數(shù)據(jù)的子程序在RAM211b內(nèi)申請(qǐng)j儲(chǔ)區(qū)域作為發(fā)送數(shù)據(jù)或接收數(shù)據(jù)的緩沖區(qū),其中,發(fā)送數(shù)據(jù)的子程序經(jīng)端口引腳SCL和SDA發(fā)送緩沖區(qū)的數(shù)據(jù),接收數(shù)據(jù)的子程序從端口引腳SCL和SDA上接收數(shù)據(jù)并存儲(chǔ)到緩沖區(qū)內(nèi),這里的端口引腳SCL和SDA選自通用輸入/輸出端口218a~218d。如圖7b所示,發(fā)送和接收數(shù)據(jù)的函凄t的原型分別為unsignedchar12CSlaveDataTx(unsignedcharn,unsignedchar*buffer)和unsignedchar12CSlaveDataRx(unsignedcharn,unsignedcharslave—address,unsignedchar*buffer),函數(shù)參數(shù)中的n為需發(fā)送或接收的字節(jié)數(shù),buffer為數(shù)據(jù)緩沖區(qū)指針,函數(shù)的返回值為0或1以表示操作成功與否。利用微控制器200內(nèi)的靜態(tài)隨機(jī)存儲(chǔ)器和端口的資源,SPI接口、PS2接口和單總線(1-wire)接口的功能也可以軟件方式來(lái)實(shí)現(xiàn),因此圖7a和7b所示的模型也適于這些接口的虛擬硬件子程序。對(duì)于通用異步收發(fā)器電路,除了靜態(tài)隨機(jī)存儲(chǔ)器和端口的資源以外,還需要利用定時(shí)器。圖8為利用虛擬硬件子程序來(lái)實(shí)現(xiàn)通用異步收發(fā)器電路功能的模型框圖。該模型提供多個(gè)子程序,用于初始參數(shù)的設(shè)置和數(shù)據(jù)的發(fā)送和接收。在圖8所示的模型中,設(shè)置初始參數(shù)的子程序的函數(shù)原型為voidUARTInit(unsignedcharmode,unsignedintbaud,unsignedcharparity),函數(shù)參數(shù)mode為工作方式,baud為波特率,parity為校驗(yàn)碼;當(dāng)通用異步收發(fā)器作為從機(jī)使用時(shí),設(shè)置初始參數(shù)的子程序的函數(shù)原型為voidUARTSlaveSet(unsignedcharsaddr,unsignedcharsaden),函數(shù)參數(shù)saddr和saden分別為從機(jī)地址和地址掩碼。在多機(jī)通訊時(shí)用于主機(jī)發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的子程序的函數(shù)原型分另'J為unsignedcharUARTMasterDataTx(unsignedcharsadid,unsignedcharn,unsignedchar傘buffer)和unsignedcharUARTDataRx15200810033(unsignedcharn,unsignedcharovertime,unsignedchar*buffer),其功能是將數(shù)據(jù)緩沖區(qū)內(nèi)的數(shù)據(jù)在端口引腳TXD上發(fā)送或者將端口引腳RXD上接收的數(shù)據(jù)存入數(shù)據(jù)緩沖區(qū),函數(shù)參數(shù)sadid為從機(jī)識(shí)別地址,n為需發(fā)送的字節(jié)數(shù),buffer為需發(fā)送的數(shù)據(jù)緩沖區(qū)指針,overtime為超時(shí)時(shí)間,函數(shù)的返回值為0或1以表示纟喿作成功與否。在多機(jī)通訊時(shí)用于從機(jī)發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的子程序的函數(shù)原型分另'J為voidUARTDataTx(unsignedcharn,unsignedchar*buffer)和unsignedcharUARTSlaveDataRx(unsignedcharn,unsignedcharovertime,unsignedchar*buffer),其功能是將數(shù)據(jù)緩沖區(qū)內(nèi)的數(shù)據(jù)在端口引腳TXD端口上發(fā)送或者將端口引腳RXD上接收的數(shù)據(jù)存入數(shù)據(jù)緩沖區(qū),函數(shù)參數(shù)n為需發(fā)送的字節(jié)數(shù),buffer為需發(fā)送的數(shù)據(jù)緩沖區(qū)指針,overtime為超時(shí)時(shí)間,函數(shù)的返回值為O或1以表示操作成功與否。用于中斷發(fā)送數(shù)據(jù)和中斷接收數(shù)據(jù)的子程序的函數(shù)原型分別為voidUARTIntTx(unsignedcharn,unsignedchar承buffer)和unsignedcharUARTIntRx(unsignedcharn,unsignedchar*buffer),函數(shù)參數(shù)n為需發(fā)送或接收的字節(jié)數(shù),buffer為需發(fā)送或接收的數(shù)據(jù)緩沖區(qū)指針。在圖8所示的模型中,數(shù)據(jù)緩沖區(qū)在RAM211b內(nèi)創(chuàng)建,端口引腳TXD和RXD選自通用輸入/輸出端口218a~218d。可以利用虛擬硬件子程序在圖2所示微控制器200內(nèi)實(shí)現(xiàn)數(shù)模/模數(shù)轉(zhuǎn)換功能。圖9a和9b分別示出了實(shí)現(xiàn)數(shù)模轉(zhuǎn)換功能和模數(shù)轉(zhuǎn)換功能的模型框圖。如上所述,虛擬硬件子程序可利用可編程定時(shí)器213a或213b的資源,在端口上輸出頻率和占空比可變的脈寬調(diào)制脈沖。參見(jiàn)圖9a,微控制器200經(jīng)端口引腳D/A(選自通用輸入/輸出端口218a~218d)外接有低通濾波電路(例如RC低通濾波電路),因此虛擬硬件子程序DAOutput()產(chǎn)生輸入該低通濾波電路的脈寬調(diào)制脈沖,該脈沖信號(hào)經(jīng)過(guò)低通濾波后即獲得模擬輸出電壓,這里,虛擬硬件子程序DAOutput()可通過(guò)調(diào)節(jié)脈沖的頻率和占空比來(lái)控制模擬輸出電壓的大小。參見(jiàn)圖9b,微控制器200的端口引腳A/D(選自通用輸入/輸出端口218a218d)外接有充電電路(例如簡(jiǎn)單的RC充電電路),16虛擬硬件子程序ADI叩ut()通過(guò)充電時(shí)間的長(zhǎng)短來(lái)確定端口引腳上輸入的模擬電壓的值。以下進(jìn)一步描述模數(shù)轉(zhuǎn)換原理。首先,虛擬硬件子程序ADI叩ut()通過(guò)使電容C完全放電,將端口引腳A/D設(shè)置為低電平。接著,使該端口引腳轉(zhuǎn)為輸入狀態(tài)并利用可編程定時(shí)器213a或213b開(kāi)始計(jì)時(shí),與此同時(shí)模擬輸入電壓開(kāi)始經(jīng)電阻R對(duì)電容C充電。虛擬硬件子程序ADI叩ut()周期性地;險(xiǎn)測(cè)端口引腳A/D的電壓,并且在達(dá)到高電平門(mén)限電壓時(shí)停止計(jì)時(shí)。最后,虛擬硬件子程序ADInput()通過(guò)查表方式確定與充電時(shí)間相對(duì)應(yīng)的模擬輸入電壓值,從而實(shí)現(xiàn)A/D轉(zhuǎn)換過(guò)程。如上所述,充電時(shí)間與模擬輸入電壓值的對(duì)應(yīng)關(guān)系表可以存儲(chǔ)在靜態(tài)隨機(jī)存儲(chǔ)器217c供虛擬硬件子程序使用的保留區(qū)域內(nèi)。圖10示出了利用虛擬硬件子程序?qū)崿F(xiàn)溫度測(cè)量功能的模型框圖。孩i控制器200的端口引腳PRK、PRT和PR1(選自通用輸X/輸出端口218a218d)按照?qǐng)D10所示方式外接有RC充電電路,虛擬硬件子程序Templnput()通過(guò)比較熱敏電阻Rt和標(biāo)準(zhǔn)電阻Rk充電時(shí)間的長(zhǎng)短來(lái)確定阻值的變化量,再通過(guò)查表方式確定溫度值。以下進(jìn)一步描述溫度測(cè)量的原理。首先在虛擬硬件子程序Templ叩ut()的控制下,端口引腳PRK、PRT和PR1被設(shè)置為低電平輸出以使電容器C1完全放電。接著,虛擬硬件子程序Templnput()將端口引腳PR1置為輸入,端口引腳PRT置為低電平,端口引腳PRK置為高電平輸出,由此通過(guò)標(biāo)準(zhǔn)電阻Rk對(duì)電容器Cl充電并使可編程定時(shí)器213a或213b開(kāi)始計(jì)時(shí)。當(dāng)虛擬硬件子程序Templnput()檢測(cè)到端口引腳PR1的狀態(tài)為高電平時(shí),停止計(jì)時(shí)并記錄下第一充電時(shí)間timel。隨后,虛擬硬件子程序Templnput()再次將端口引腳PRK、PRT和PR1置低電平輸出,使電容器C1完全放電。接著,虛擬硬件子程序Templnput()將端口引腳PR1置為輸入,端口引腳PRK置為低電平,端口引腳PRT置為高電平輸出,由此通過(guò)熱敏電阻Rt對(duì)電容器Cl充電并使可編程定時(shí)器213a或213b開(kāi)始計(jì)時(shí)。當(dāng)虛擬硬件子程序Templnput()檢測(cè)到端口引腳PR1狀態(tài)為高電平時(shí),停止計(jì)時(shí)并記錄下第二充電時(shí)間time2。接著,虛擬硬件子程序Templnput()根據(jù)下式計(jì)算出熱敏電阻Rt的阻值這里,Rt和Rk分別為熱敏電阻Rt和標(biāo)準(zhǔn)電阻Rk的阻值。最后,虛擬硬件子程序Templnput()根據(jù)存儲(chǔ)在靜態(tài)隨M儲(chǔ)器217c保留區(qū)域內(nèi)的熱敏電阻特性曲線,通過(guò)查表方式確定溫度值。圖11示出了利用虛擬硬件子程序?qū)崿F(xiàn)電容式感應(yīng)鍵狀態(tài)判定功能的模型框圖。參見(jiàn)圖11,按照?qǐng)D6所示的方式,虛擬硬件子程序CapkeyGetKey()在微控制器200的端口引腳PPn上輸出脈沖方波,該脈沖方波作為圖11右邊所示倍壓檢波電路的信號(hào)源;端口引腳CPn作為輸入檢測(cè)口,其與倍壓檢波電路的輸出端相連這樣。這里,端口引腳PPn和CPn選自通用輸入/輸出端口218a~218d。以下描述電容式感應(yīng)鍵狀態(tài)的檢測(cè)原理。在虛擬」便件子程序CapkeyGetKey()的控制下,端口引腳PPn輸出的脈沖方波通過(guò)電容C3向電容C1充電。感應(yīng)式電容開(kāi)關(guān)基本上可以視為是兩個(gè)相鄰導(dǎo)體(電極)形成的電容器,當(dāng)手指按下電容式感應(yīng)鍵時(shí),將如圖11所示產(chǎn)生一個(gè)電容Cx,該電容將使得端口引腳PPn輸出的脈沖信號(hào)無(wú)法向電容Cl充電,由此使得端口引腳CPn上的電平將由低變高。當(dāng)虛擬硬件子程序CapkeyGetKey()在端口引腳CPn上^r測(cè)到高電平時(shí),即記錄充電時(shí)間并停止端口引腳PPn上的脈沖輸出。此時(shí),電容C1開(kāi)始經(jīng)R1放電,導(dǎo)致端口引腳CPn上的電壓下降。當(dāng)虛擬硬件子程序CapkeyGetKey()檢測(cè)到端口引腳CPn上為低電平時(shí),記錄放電時(shí)間。最后,虛擬硬件子程序CapkeyGetKey()根據(jù)所記錄的充電時(shí)間和放電時(shí)間確定電容式感應(yīng)鍵是否被按下,并在端口引腳PPn上重新輸出脈沖方波。為了提高判定準(zhǔn)確度,可以多次重復(fù)上述檢測(cè)過(guò)程并對(duì)多個(gè)檢測(cè)結(jié)果取平均值。圖12a和12b示出了利用虛擬硬件子程序?qū)崿F(xiàn)鍵盤(pán)鍵值讀取功能的模型框圖。參見(jiàn)圖12a,矩陣式鍵盤(pán)的N列線和N行線與微控制器的2x18xN個(gè)端口引腳(選自通用輸入/輸出端口218a~218d)—一相連,虛擬硬件子程序KeyboardGetKey()首先將所有的行線(即連接行線的端口引腳)置低電平,然后檢測(cè)列線(即連接列線的端口引腳)的狀態(tài),若有列線為低電平,則虛擬硬件子程序KeyboardGetKey()判定與該列線對(duì)應(yīng)的鍵被按下。圖12b示出了利用4個(gè)端口引腳實(shí)現(xiàn)3x3矩陣式鍵盤(pán)的鍵值讀取的方式。在圖12b中,三根行線與端口引腳PL1PL3——相連,列線經(jīng)三極管放大電路與端口引腳KIN相連。這里,端口引腳PL1~PL3和KIN選自通用輸入/輸出端口218a~218d。以下詳細(xì)描述鍵值讀取的原理。首先,虛擬硬件子程序Keyboard2GetKey()將端口引腳PR1PR3設(shè)置為低電平輸出,KIN設(shè)置為輸入,初始狀態(tài)為高電平,三極管Ql導(dǎo)通。當(dāng)有鍵按下時(shí),三極管Ql截止,端口引腳KIN上為低電平。然后將端口引腳PR1PR3設(shè)置為高電平輸出,三極管Q1導(dǎo)通,端口引腳KIN為高電平。分別依次將端口引腳PR1、PR2、PR3設(shè)為輸出低電平,其余為輸入,每次讀入PR1PR3以及KIN的端口值。如果其中出現(xiàn)三極管Ql截止,KIN為低電平,則將此次的端口值與下列編碼表比較,即可獲得鍵值。<table>tableseeoriginaldocumentpage19</column></row><table>圖13示出了利用虛擬硬件子程序?qū)崿F(xiàn)液晶顯示器接口功能的模型框圖。參見(jiàn)圖13,端口引腳D0D7與1602字符型液晶模塊的數(shù)據(jù)線引腳相連,端口引腳RS、RW和E分別與1602字符型液晶模塊的寄存器選擇引腳、讀寫(xiě)型號(hào)引腳和使能端相連。虛擬硬件子程序LCDDisplay()借助端口引腳RS、RW和E上的控制信號(hào),將端口引腳D0~D7上的數(shù)據(jù)寫(xiě)入1602字符型液晶模塊,從而在液晶顯示模塊上顯示所需的字符。上述虛擬硬件子程序的函數(shù)原型為voidLCDDisplay(unsignedcharrow,unsignedcharcol,unsignedcharn,unsignedchar*buffer),函數(shù)參數(shù)row表示字符顯示的起始行,col表示字符顯示的起始列,n為需顯示的字節(jié)數(shù),buffer為需顯示的數(shù)據(jù)緩沖區(qū)指針。雖然已經(jīng)展現(xiàn)和討論了本發(fā)明的一些方面,但是本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)該意識(shí)到可以在不背離本發(fā)明原理和精神的條件下對(duì)上述方面進(jìn)行改變,因此本發(fā)明的范圍將由權(quán)利要求以及等同的內(nèi)容所限定。權(quán)利要求1、一種實(shí)現(xiàn)微控制器可配置性的方法,所述微控制器包括中央處理單元、數(shù)據(jù)存儲(chǔ)器、程序存儲(chǔ)器、輸入/輸出端口和定時(shí)器,其特征在于,包含下列步驟確定所需配置的硬件電路的功能;以及在所述程序存儲(chǔ)器內(nèi)存儲(chǔ)應(yīng)用程序和子程序,所述子程序用于實(shí)現(xiàn)所需配置的硬件電路的功能并且可被所述應(yīng)用程序調(diào)用。2、如權(quán)利要求1所述的方法,其中,所述應(yīng)用程序用C語(yǔ)言編寫(xiě),所述子程序用匯編語(yǔ)言編寫(xiě),并且所述應(yīng)用程序以函數(shù)調(diào)用的方式調(diào)用所述子程序。3、如權(quán)利要求1所述的方法,所述應(yīng)用程序和子程序是可更新的。4、如權(quán)利要求3所述的方法,所述應(yīng)用程序和子程序通過(guò)系統(tǒng)可編^E或應(yīng)用可編^i方式更新。5、如權(quán)利要求1所述的方法,所述子程序以加密保護(hù)的形式存儲(chǔ)在所述程序存儲(chǔ)器內(nèi)。6、一種可配置的微:控制器,包括中央處理單元、數(shù)據(jù)存儲(chǔ)器、程序存儲(chǔ)器、輸7v/輸出端口和定時(shí)器,其特征在于,所述程序存儲(chǔ)器內(nèi)存儲(chǔ)多個(gè)子程序,所述子程序用于實(shí)現(xiàn)硬件電路的功能并且可被由所述中央處理單元執(zhí)行的應(yīng)用程序調(diào)用。7、如權(quán)利要求6所述的^:控制器,其中,所述硬件電路為輸入輸出設(shè)備接口。8、如權(quán)利要求7所述的微控制器,其中,所述輸入輸出設(shè)備接口為液晶顯示器并行接口電路、發(fā)光二極管數(shù)碼管接口電路、電容式感應(yīng)鍵接口電路或鍵盤(pán)接口電路中的至少一種。9、如權(quán)利要求6所述的微控制器,其中,所述硬件電路為通信接口。10、如權(quán)利要求9所述的微控制器,其中,所述通信接口為通用異步收發(fā)器、I2C接口電路、SPI接口電路和單總線接口電路中的至少一種。11、如權(quán)利要求6所述的微控制器,其中,所述硬件電路為脈沖寬度調(diào)制電路、數(shù)模/模數(shù)轉(zhuǎn)換器、電壓比較電路、溫度測(cè)量電路中的至少一種。12、如權(quán)利要求6所述的微控制器,其中,所述數(shù)據(jù)存儲(chǔ)器為隨機(jī)存取存儲(chǔ)器,所述程序存儲(chǔ)器為只讀存儲(chǔ)器或快閃存儲(chǔ)器。13、如權(quán)利要求6所述的微控制器,其中,所述微控制器基于哈佛架構(gòu)。14、如權(quán)利要求6所述的微控制器,其中,所述微控制器基于馮-諾依曼架構(gòu)。15、如權(quán)利要求6所述的微控制器,其中,所述程序存儲(chǔ)器包括多個(gè)快速存儲(chǔ)器,其中兩個(gè)分別用于存儲(chǔ)引導(dǎo)程序和所述子程序。16、如權(quán)利要求15所述的微控制器,所述引導(dǎo)程序支持系統(tǒng)可編程或應(yīng)用可編程功能。17、如權(quán)利要求15所述的微控制器,存儲(chǔ)所述子程序的快速存儲(chǔ)器是受加密保護(hù)的。18、如權(quán)利要求6所述的微控制器,其中,所述程序存儲(chǔ)器包括一個(gè)劃分為多個(gè)區(qū)域的快閃存儲(chǔ)器,引導(dǎo)程序和所述子程序被存儲(chǔ)在不同的所述區(qū)域內(nèi)。全文摘要一種可低成本地實(shí)現(xiàn)微控制器的電路功能可配置的方法,微控制器包括中央處理單元、數(shù)據(jù)存儲(chǔ)器、程序存儲(chǔ)器、輸入/輸出端口和定時(shí)器,包含下列步驟確定所需配置的硬件電路的功能;以及在程序存儲(chǔ)器內(nèi)存儲(chǔ)應(yīng)用程序和子程序,子程序用于實(shí)現(xiàn)所需配置的硬件電路的功能并且可被應(yīng)用程序調(diào)用。按照本發(fā)明,以實(shí)現(xiàn)硬件電路功能的子程序來(lái)替代集成在微控制器內(nèi)的硬件電路,降低了微控制器的設(shè)計(jì)難度和制造成本。此外,由于通過(guò)軟件升級(jí)即可擴(kuò)展和改變微控制器的功能,因此與在微控制器內(nèi)集成硬件電路的方式相比,在可擴(kuò)展性和開(kāi)發(fā)的便利性方面具有明顯的優(yōu)勢(shì)。還有,本發(fā)明利用子程序來(lái)實(shí)現(xiàn)硬件電路的功能可以充分挖掘處理器的計(jì)算資源,從而進(jìn)一步提高系統(tǒng)的性價(jià)比。文檔編號(hào)G06F15/78GK101499053SQ20081003336公開(kāi)日2009年8月5日申請(qǐng)日期2008年1月31日優(yōu)先權(quán)日2008年1月31日發(fā)明者趙依軍申請(qǐng)人:上海普芯達(dá)電子有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
河池市| 宁强县| 曲阜市| 桂平市| 洪洞县| 桐柏县| 义乌市| 吉木萨尔县| 瑞昌市| 甘孜| 肥城市| 昭通市| 绍兴市| 云阳县| 赤峰市| 钦州市| 湘乡市| 扎囊县| 仙居县| 南漳县| 镇巴县| 常宁市| 漳平市| 荆州市| 灌阳县| 庐江县| 陇西县| 大理市| 江陵县| 卓资县| 临夏市| 巴彦淖尔市| 光山县| 宁津县| 通州市| 新河县| 红原县| 大渡口区| 高陵县| 三穗县| 宜州市|