普通io口識別輸入狀態(tài)的方法及裝置制造方法
【專利摘要】本發(fā)明公開一種普通IO口識別輸入狀態(tài)的方法及裝置,所述方法包括:將待讀取輸入狀態(tài)的普通IO口設(shè)置為輸入功能,讀取普通IO口的初始電平狀態(tài);根據(jù)初始電平狀態(tài)對單片機的內(nèi)部配置模塊進行模式配置,并基于外部電阻模塊及內(nèi)部配置模塊對普通IO口進行檢測;基于檢測的結(jié)果識別普通IO口的輸入狀態(tài)。本發(fā)明由于所述內(nèi)部配置模塊能配置出內(nèi)部強、弱上拉模式、內(nèi)部強、弱下拉模式等多種模式,因此,可通過單片機的普通IO口來對多種狀態(tài)的輸入進行識別判斷,十分靈活,且無需增加AD轉(zhuǎn)換功能,降低了成本。
【專利說明】普通IO 口識別輸入狀態(tài)的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及單片機【技術(shù)領(lǐng)域】,尤其涉及一種普通IO 口識別輸入狀態(tài)的方法。
【背景技術(shù)】
[0002]目前,普通的輸入輸出口如單片機的IO口只能實現(xiàn)識別判斷兩種狀態(tài)的輸入:高電平輸入和低電平輸入,當(dāng)應(yīng)用于PCB板版本管理時,只能對應(yīng)識別判斷兩種PCB板的版本,但是,一般的情況下,PCB板會超出兩個版本,這樣就需要利用單片機的IO 口識別多種狀態(tài)的輸入來解決這個問題。現(xiàn)有技術(shù)中,要識別多種狀態(tài)的輸入,通常需要利用單片機的AD轉(zhuǎn)換功能接口,成本較高,單片機的普通IO 口由于不具有AD轉(zhuǎn)換功能,因此,按目前常用的方法則無法對多種狀態(tài)的輸入進行識別,然而,有時為了控制成本或設(shè)計的需要,必須通過單片機的普通IO 口來實現(xiàn)對多種狀態(tài)的輸入進行識別判斷,則無法通過現(xiàn)有技術(shù)來實現(xiàn)。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的主要目的在于提供一種普通IO 口識別輸入狀態(tài)的方法及裝置,旨在提高普通IO 口的功能及降低成本。
[0004]為了達(dá)到上述目的,本發(fā)明提出一種普通IO 口識別輸入狀態(tài)的方法,包括:
[0005]將待讀取輸入狀態(tài)的普通IO 口設(shè)置為輸入功能,讀取所述普通IO 口的初始電平狀態(tài);
[0006]根據(jù)所述初始電平狀態(tài)對單片機的內(nèi)部配置模塊進行模式配置,并基于外部電阻模塊及內(nèi)部配置模塊對所述普通IO 口進行檢測;
[0007]基于檢測的結(jié)果識別所述普通IO 口的輸入狀態(tài)。
[0008]優(yōu)選地,所述根據(jù)所述初始電平狀態(tài)對單片機的內(nèi)部配置模塊進行模式配置,并基于外部電阻模塊及內(nèi)部配置模塊對所述普通IO 口進行檢測的步驟具體為:
[0009]根據(jù)所述初始電平狀態(tài)進行所述內(nèi)部配置模塊的模式配置,基于配置的所述內(nèi)部配置模塊及所述外部電阻模塊對供電電源的電壓進行分壓,并對所述普通IO 口的高低電平狀態(tài)進行檢測,獲取檢測結(jié)果。
[0010]優(yōu)選地,當(dāng)所述初始電平狀態(tài)為高電平狀態(tài)時,所述根據(jù)所述初始電平狀態(tài)對單片機的內(nèi)部配置模塊進行配置,并基于外部電阻模塊及內(nèi)部配置模塊對所述普通IO 口進行檢測的步驟具體包括:
[0011]將所述內(nèi)部配置模塊配置成強下拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)A ;
[0012]基于所述狀態(tài)A將所述內(nèi)部配置模塊配置成弱下拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)B ;
[0013]所述基于檢測的結(jié)果識別所述普通IO 口的輸入狀態(tài)的步驟具體為:
[0014]根據(jù)所述狀態(tài)A、狀態(tài)B識別所述普通IO 口的輸入狀態(tài)。[0015]優(yōu)選地,當(dāng)所述初始電平狀態(tài)為低電平狀態(tài)時,所述根據(jù)所述初始電平狀態(tài)對單片機的內(nèi)部配置模塊進行模式配置,并基于外部電阻模塊及內(nèi)部配置模塊對所述普通IO口進行檢測的步驟具體包括:
[0016]將所述內(nèi)部配置模塊配置成強上拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)C ;
[0017]基于所述狀態(tài)C將所述內(nèi)部配置模塊配置成弱上拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)D ;
[0018]所述基于檢測的結(jié)果識別所述普通IO 口的輸入狀態(tài)的步驟具體為:
[0019]根據(jù)所述狀態(tài)C、狀態(tài)D識別所述普通IO 口的輸入狀態(tài)。
[0020]優(yōu)選地,所述基于檢測的結(jié)果識別所述普通IO 口的輸入狀態(tài)的步驟還包括:
[0021]根據(jù)預(yù)先設(shè)定的所述普通IO 口不同的輸入狀態(tài)與其代表的不同標(biāo)示制定一查詢表,識別出所述普通IO 口的不同輸入狀態(tài)后,在所述查詢表中進行查找比對,識別出與之對應(yīng)的標(biāo)示。
[0022]本發(fā)明還提出一種普通IO 口識別輸入狀態(tài)的裝置,包括:
[0023]讀取模塊,用于將待讀取輸入狀態(tài)的普通IO 口設(shè)置為輸入功能,讀取所述普通IO口的初始電平狀態(tài);
[0024]配置檢測模塊,用于根據(jù)所述初始電平狀態(tài)對單片機的內(nèi)部配置模塊進行模式配置,并基于外部電阻模塊及內(nèi)部配置模塊對所述普通IO 口進行檢測;
[0025]識別模塊,用于基于檢測的結(jié)果識別所述普通IO 口的輸入狀態(tài)。
[0026]優(yōu)選地,所述配置檢測模塊用于:
[0027]根據(jù)所述初始電平狀態(tài)進行所述內(nèi)部配置模塊的模式配置,基于配置的所述內(nèi)部配置模塊及所述外部電阻模塊對供電電源的電壓進行分壓,并對所述普通IO 口的高低電平狀態(tài)進行檢測,獲取檢測結(jié)果。
[0028]優(yōu)選地,所述外部電阻模塊為外部上拉電阻,所述外部上拉電阻的一端與單片機的供電電源連接,所述外部上拉電阻的另一端與所述普通IO 口連接;所述內(nèi)部配置模塊用于配置強下拉模式、弱下拉模式。
[0029]優(yōu)選地,所述外部電阻模塊為外部下拉電阻,所述外部下拉電阻的一端與所述普通IO 口連接,所述外部下拉電阻的另一端接地;所述內(nèi)部配置模塊用于配置強上拉模式、弱上拉模式。
[0030]優(yōu)選地,所述識別模塊用于:
[0031]根據(jù)預(yù)先設(shè)定的所述普通IO 口不同的輸入狀態(tài)與其代表的不同標(biāo)示制定一查詢表,識別出所述普通IO 口的不同輸入狀態(tài)后,在所述查詢表中進行查找比對,識別出與之對應(yīng)的標(biāo)示。
[0032]本發(fā)明提出的一種普通IO 口識別輸入狀態(tài)的方法及裝置,根據(jù)讀取的所述普通IO 口的初始電平狀態(tài)對單片機的內(nèi)部配置模塊進行模式配置,再通過配置的所述內(nèi)部配置模塊及外部電阻模塊對供電電源的電壓進行分壓,并對所述普通IO 口的高低電平狀態(tài)進行檢測,根據(jù)檢測的結(jié)果識別所述普通IO 口的輸入狀態(tài),由于所述內(nèi)部配置模塊能配置出內(nèi)部強、弱上拉模式、內(nèi)部強、弱下拉模式等多種模式,因此,即可通過單片機的普通IO 口來對多種狀態(tài)的輸入進行識別判斷,十分靈活,且無需增加AD轉(zhuǎn)換功能,降低了成本。【專利附圖】
【附圖說明】
[0033]圖1是本發(fā)明普通IO 口識別輸入狀態(tài)的方法較佳實施例的流程示意圖;
[0034]圖2是本發(fā)明普通IO 口識別輸入狀態(tài)的裝置較佳實施例的結(jié)構(gòu)示意圖。
[0035]為了使本發(fā)明的技術(shù)方案更加清楚、明了,下面將結(jié)合附圖作進一步詳述。
【具體實施方式】
[0036]本發(fā)明實施例的解決方案主要是:根據(jù)讀取的所述普通IO 口的初始電平狀態(tài)對單片機的內(nèi)部配置模塊進行模式配置,再通過配置的所述內(nèi)部配置模塊及外部電阻模塊對供電電源的電壓進行分壓,并對所述普通IO 口的高低電平狀態(tài)進行檢測,根據(jù)檢測的結(jié)果識別所述普通IO 口的輸入狀態(tài)。
[0037]如圖1所示,本發(fā)明較佳實施例提出一種普通IO 口識別輸入狀態(tài)的方法,包括:
[0038]步驟SlOl,將待讀取輸入狀態(tài)的普通IO 口設(shè)置為輸入功能,讀取所述普通IO 口的初始電平狀態(tài);
[0039]單片機的普通10(Input/0utput,輸入/輸出)口具有輸入輸出功能,單片機可根據(jù)不用應(yīng)用選擇IO 口相應(yīng)的輸入輸出狀態(tài),對于待讀取輸入狀態(tài)的普通IO 口,首先由單片機將該普通IO 口設(shè)置為輸入功能,即該普通IO 口作為輸入口接收輸入信號。
[0040]單片機外與所述普通IO 口接有一外部電阻模塊,所述外部電阻模塊可為一外部上拉電阻或外部下拉電阻,當(dāng)所述外部電阻模塊為外部上拉電阻時,所述外部上拉電阻的一端與單片機的供電電源連接,所述外部上拉電阻的另一端與所述普通IO 口連接;當(dāng)所述外置分壓模塊為外部下拉電阻時,所述外部下拉電阻的一端與所述普通IO 口連接,所述外部下拉電阻的另一端接地。進一步地,根據(jù)取值大小的不同,外部上拉電阻還可分為外部強上拉電阻和外部弱上拉電阻,外部下拉電阻可分為外部強下拉電阻和外部弱下拉電阻,且在一種情況下,所述外部電阻模塊中還可既無外部上拉電阻,也無外部下拉電阻。所述普通IO 口連接的所述外部電阻模塊中電阻的連接位置及大小不同時,對應(yīng)的輸入狀態(tài)也會不同,因此,本實施例中即可通過判斷所述普通IO 口連接的所述外部電阻模塊中電阻的連接位置及大小的不同來對不同的輸入狀態(tài)進行識別。
[0041]根據(jù)所述外部電阻模塊中電阻的連接位置及大小的不同,所述普通IO 口初始的輸入狀態(tài)也會不同,檢測待讀取輸入狀態(tài)的普通IO 口的高低電平狀態(tài),獲取所述普通IO 口的初始電平狀態(tài)。
[0042]步驟S102,根據(jù)所述初始電平狀態(tài)對單片機的內(nèi)部配置模塊進行模式配置,并基于外部電阻模塊及內(nèi)部配置模塊對所述普通IO 口進行檢測;
[0043]根據(jù)獲取的所述普通IO 口的初始電平狀態(tài)判斷所述外部電阻模塊中電阻的連接位置,當(dāng)所述初始電平狀態(tài)為高電平狀態(tài)時,則判斷與所述普通IO 口連接的所述外部電阻模塊中的電阻為外部上拉電阻;當(dāng)所述初始電平狀態(tài)為低電平狀態(tài)時,則判斷與所述普通IO 口連接的所述外部電阻模塊中的電阻為外部下拉電阻。因此,根據(jù)獲取到的所述普通IO口的初始電平狀態(tài)即可判斷出所述普通IO 口連接的所述外部電阻模塊中的電阻是外部上拉電阻還是外部下拉電阻,從而對單片機的內(nèi)部配置模塊進行模式配置。
[0044]根據(jù)所述初始電平狀態(tài)判斷出所述外部電阻模塊中的電阻是外部上拉電阻還是外部下拉電阻后,單片機通過內(nèi)部寄存器進行所述內(nèi)部配置模塊的模式配置,所述內(nèi)部配置模塊可根據(jù)所述外部電阻模塊中的電阻是外部上拉電阻還是外部下拉電阻而相應(yīng)的配置為下拉模式或上拉模式,具體地,本實施例中,所述內(nèi)部配置模塊可配置為強上拉模式、強下拉模式、弱上拉模式及弱下拉模式。
[0045]需要說明的是,不同型號的單片機其內(nèi)部配置模塊配置的模式種類也會有所不同,如有的單片機內(nèi)部配置模塊可配置成強、弱上拉模式及強、弱下拉模式,進一步地,有的單片機內(nèi)部配置模塊還可更加細(xì)化配置成強強上拉、強上拉模式,弱弱上拉、弱上拉模式,強強下拉、強下拉模式,弱弱下拉、弱下拉模式,其工作原理均相同,都是基于所述外部電阻模塊及配置的所述內(nèi)部配置模塊對所述供電電源的電壓進行分壓,并對所述普通IO 口的高低電平狀態(tài)進行檢測,為了便于說明,本實施例中以單片機內(nèi)部配置模塊配置成強、弱上拉模式及強、弱下拉模式為例進行說明,當(dāng)然,也不限定單片機內(nèi)部配置模塊配置成其他更多種類的模式,其工作原理可參照單片機內(nèi)部配置模塊配置成強、弱上拉模式及強、弱下拉模式的工作原理,在此不再贅述。
[0046]具體地,本實施例中,當(dāng)判斷所述外部電阻模塊中的電阻為外部上拉電阻時,則將單片機的內(nèi)部配置模塊配置成下拉模式,如可配置成強下拉模式、弱下拉模式后對所述普通IO 口的高低電平狀態(tài)進行檢測,對配置成強下拉模式、弱下拉模式來進行檢測的順序不作進一步地限定,如可先配置成強下拉模式、再配置成弱下拉模式,也可先配置成弱下拉模式、再配置成強下拉模式,為了便于說明,在此僅以先配置成強下拉模式、再配置成弱下拉模式為例進行詳細(xì)說明。先將單片機的內(nèi)部配置模塊配置成強下拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)A ;并基于狀態(tài)A將單片機的內(nèi)部配置模塊配置成弱下拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)B。
[0047]當(dāng)判斷所述外部電阻模塊中的電阻為外部下拉電阻時,則將單片機的內(nèi)部配置模塊配置成上拉模式,如可配置成強上拉模式、弱上拉模式后對所述普通IO 口的高低電平狀態(tài)進行檢測,對配置成強上拉模式、弱上拉模式來進行檢測的順序不作進一步地限定,如可先配置成強上拉模式、再配置成弱上拉模式,也可先配置成弱上拉模式、再配置成強上拉模式,為了便于說明,在此僅以先配置成強上拉模式、再配置成弱上拉模式為例進行詳細(xì)說明。先將單片機的內(nèi)部配置模塊配置成強上拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)C ;并基于狀態(tài)C將單片機的內(nèi)部配置模塊配置成弱上拉模式,對所述普通IO口的高低電平狀態(tài)進行檢測得到狀態(tài)D。
[0048]步驟S103,基于檢測的結(jié)果識別所述普通IO 口的輸入狀態(tài)。
[0049]根據(jù)獲取的狀態(tài)A、B或狀態(tài)C、D對所述普通IO 口的輸入狀態(tài)進行識別,具體地,當(dāng)判斷所述外部電阻模塊中的電阻為外部上拉電阻時,先將單片機的內(nèi)部配置模塊配置成強下拉模式,對此時所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)A,若狀態(tài)A為高電平狀態(tài),則識別出此時所述普通IO 口的輸入狀態(tài)為強上拉電源正輸入狀態(tài);若狀態(tài)A為低電平狀態(tài),則繼續(xù)將單片機的內(nèi)部配置模塊配置成弱下拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)B,若狀態(tài)B為高電平狀態(tài),則識別出此時所述普通IO 口的輸入狀態(tài)為弱上拉電源正輸入狀態(tài),若狀態(tài)B為低電平狀態(tài),則識別出此時所述普通IO 口的輸入狀態(tài)為高阻輸入狀態(tài)。
[0050]當(dāng)判斷所述外部電阻模塊中的電阻為外部下拉電阻時,先將單片機的內(nèi)部配置模塊配置成強上拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)C ;若狀態(tài)C為高電平狀態(tài),則識別出此時所述普通IO 口的輸入狀態(tài)為強下拉電源負(fù)輸入狀態(tài);若狀態(tài)C為低電平狀態(tài),則繼續(xù)將單片機的內(nèi)部配置模塊配置成弱上拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)D,若狀態(tài)D為高電平狀態(tài),則識別出此時所述普通IO 口的輸入狀態(tài)為弱下拉電源負(fù)輸入狀態(tài),若狀態(tài)D為低電平狀態(tài),則識別出此時所述普通IO 口的輸入狀態(tài)為高阻輸入狀態(tài)。
[0051]由此,本實施例中由于所述內(nèi)部配置模塊能配置出強、弱上拉模式、強、弱下拉模式等多種模式,因此,即可通過單片機的普通IO 口來對多種狀態(tài)的輸入進行識別判斷,十分靈活,且無需增加AD轉(zhuǎn)換功能,降低了成本。具體在本實施例中,根據(jù)所述初始電平狀態(tài)將所述內(nèi)部配置模塊配置成強、弱上拉模式或強、弱下拉模式后對所述普通IO 口的高低電平狀態(tài)進行檢測,基于檢測結(jié)果普通IO 口可至少識別出強上拉電源正輸入狀態(tài)、弱上拉電源正輸入狀態(tài)、強下拉電源負(fù)輸入狀態(tài)、弱下拉電源負(fù)輸入狀態(tài)及高阻輸入狀態(tài)這5種狀態(tài),比現(xiàn)有技術(shù)中普通IO 口只能識別出高電平輸入狀態(tài)及低電平輸入狀態(tài)多出3種,能基本滿足實際應(yīng)用中需普通IO 口識別多種狀態(tài)的要求,且不同單片機的內(nèi)部配置模塊中可配置的模式種類可能更多,則相應(yīng)的可識別出的輸入狀態(tài)種類也更多。可利用本實施例中普通IO 口能對多種輸入狀態(tài)進行識別來通過普通IO 口標(biāo)示不同的版本號,如PCB版本號等,本實施例中的普通IO 口即能對5個不同的PCB版本號進行標(biāo)示,進一步地,還可通過若干普通IO 口輸入狀態(tài)的組合來對版本號進行標(biāo)示,則能標(biāo)示的版本號數(shù)目也大大增加,如通過2個普通IO 口的組合來對PCB版本號進行標(biāo)示時,則可標(biāo)示25個不同的PCB版本號,在實際應(yīng)用中可為產(chǎn)品的開發(fā)、設(shè)計帶來很大的方便。
[0052]在本實施例的一個可選實施方式中,還可在需識別不同標(biāo)示如PCB版本號時,預(yù)先設(shè)定所述普通IO 口不同的輸入狀態(tài)與其代表的不同標(biāo)示即對應(yīng)的PCB版本號,并根據(jù)預(yù)先設(shè)定所述普通IO 口不同的輸入狀態(tài)與其代表的不同標(biāo)示制定一查詢表,在識別出所述普通IO 口的不同輸入狀態(tài)后,在所述查詢表中進行查找比對,識別出與之對應(yīng)的標(biāo)示,能更加方便、快捷的應(yīng)用在識別PCB版本號等不同標(biāo)示上。
[0053]如圖2所示,本發(fā)明較佳實施例提出一種普通IO 口識別輸入狀態(tài)的裝置,包括:讀取模塊201、配置檢測模塊202以及識別模塊203,其中:
[0054]讀取模塊201,用于將待讀取輸入狀態(tài)的普通IO 口設(shè)置為輸入功能,讀取所述普通IO 口的初始電平狀態(tài);
[0055]單片機的普通10(Input/0utput,輸入/輸出)口具有輸入輸出功能,單片機可根據(jù)不用應(yīng)用選擇IO 口相應(yīng)的輸入輸出狀態(tài),對于待讀取輸入狀態(tài)的普通IO 口,首先由單片機將該普通IO 口設(shè)置為輸入功能,即該普通IO 口作為輸入口接收輸入信號。
[0056]單片機外與所述普通IO 口接有一外部電阻模塊,所述外部電阻模塊可為一外部上拉電阻或外部下拉電阻,當(dāng)所述外部電阻模塊為外部上拉電阻時,所述外部上拉電阻的一端與單片機的供電電源連接,所述外部上拉電阻的另一端與所述普通IO 口連接;當(dāng)所述外置分壓模塊為外部下拉電阻時,所述外部下拉電阻的一端與所述普通IO 口連接,所述外部下拉電阻的另一端接地。進一步地,根據(jù)取值大小的不同,外部上拉電阻還可分為外部強上拉電阻和外部弱上拉電阻,外部下拉電阻可分為外部強下拉電阻和外部弱下拉電阻,且在一種情況下,所述外部電阻模塊中還可既無外部上拉電阻,也無外部下拉電阻。所述普通IO 口連接的所述外部電阻模塊中電阻的連接位置及大小不同時,對應(yīng)的輸入狀態(tài)也會不同,因此,本實施例中即可通過判斷所述普通IO 口連接的所述外部電阻模塊中電阻的連接位置及大小的不同來對不同的輸入狀態(tài)進行識別。
[0057]根據(jù)所述外部電阻模塊中電阻的連接位置及大小的不同,所述普通IO 口初始的輸入狀態(tài)也會不同,檢測待讀取輸入狀態(tài)的普通IO 口的高低電平狀態(tài),獲取所述普通IO 口的初始電平狀態(tài)。
[0058]配置檢測模塊202,用于根據(jù)所述初始電平狀態(tài)對單片機的內(nèi)部配置模塊進行模式配置,并基于外部電阻模塊及內(nèi)部配置模塊對所述普通IO 口進行檢測;
[0059]根據(jù)獲取的所述普通IO 口的初始電平狀態(tài)判斷所述外部電阻模塊中電阻的連接位置,當(dāng)所述初始電平狀態(tài)為高電平狀態(tài)時,則判斷與所述普通IO 口連接的所述外部電阻模塊中的電阻為外部上拉電阻;當(dāng)所述初始電平狀態(tài)為低電平狀態(tài)時,則判斷與所述普通IO 口連接的所述外部電阻模塊中的電阻為外部下拉電阻。因此,根據(jù)獲取到的所述普通IO口的初始電平狀態(tài)即可判斷出所述普通IO 口連接的所述外部電阻模塊中的電阻是外部上拉電阻還是外部下拉電阻,從而對單片機的內(nèi)部配置模塊進行模式配置。
[0060]根據(jù)所述初始電平狀態(tài)判斷出所述外部電阻模塊中的電阻是外部上拉電阻還是外部下拉電阻后,單片機通過內(nèi)部寄存器進行所述內(nèi)部配置模塊的模式配置,所述內(nèi)部配置模塊可根據(jù)所述外部電阻模塊中的電阻是外部上拉電阻還是外部下拉電阻而相應(yīng)的配置為下拉模式或上拉模式,具體地,本實施例中,所述內(nèi)部配置模塊可配置為強上拉模式、強下拉模式、弱上拉模式及弱下拉模式。
[0061]需要說明的是,不同型號的單片機其內(nèi)部配置模塊配置的模式種類也會有所不同,如有的單片機內(nèi)部配置模塊可配置成強、弱上拉模式及強、弱下拉模式,進一步地,有的單片機內(nèi)部配置模塊還可更加細(xì)化配置成強強上拉、強上拉模式,弱弱上拉、弱上拉模式,強強下拉、強下拉模式,弱弱下拉、弱下拉模式,其工作原理均相同,都是基于所述外部電阻模塊及配置的所述內(nèi)部配置模塊對所述供電電源的電壓進行分壓,并對所述普通IO 口的高低電平狀態(tài)進行檢測,為了便于說明,本實施例中以單片機內(nèi)部配置模塊配置成強、弱上拉模式及強、弱下拉模式為例進行說明,當(dāng)然,也不限定單片機內(nèi)部配置模塊配置成其他更多種類的模式,其工作原理可參照單片機內(nèi)部配置模塊配置成強、弱上拉模式及強、弱下拉模式的工作原理,在此不再贅述。
[0062]具體地,本實施例中,當(dāng)判斷所述外部電阻模塊中的電阻為外部上拉電阻時,則將單片機的內(nèi)部配置模塊配置成下拉模式,如可配置成強下拉模式、弱下拉模式后對所述普通IO 口的高低電平狀態(tài)進行檢測,對配置成強下拉模式、弱下拉模式來進行檢測的順序不作進一步地限定,如可先配置成強下拉模式、再配置成弱下拉模式,也可先配置成弱下拉模式、再配置成強下拉模式,為了便于說明,在此僅以先配置成強下拉模式、再配置成弱下拉模式為例進行詳細(xì)說明。先將單片機的內(nèi)部配置模塊配置成強下拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)A ;并基于狀態(tài)A將單片機的內(nèi)部配置模塊配置成弱下拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)B。
[0063]當(dāng)判斷所述外部電阻模塊中的電阻為外部下拉電阻時,則將單片機的內(nèi)部配置模塊配置成上拉模式,如可配置成強上拉模式、弱上拉模式后對所述普通IO 口的高低電平狀態(tài)進行檢測,對配置成強上拉模式、弱上拉模式來進行檢測的順序不作進一步地限定,如可先配置成強上拉模式、再配置成弱上拉模式,也可先配置成弱上拉模式、再配置成強上拉模式,為了便于說明,在此僅以先配置成強上拉模式、再配置成弱上拉模式為例進行詳細(xì)說明。先將單片機的內(nèi)部配置模塊配置成強上拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)C ;并基于狀態(tài)C將單片機的內(nèi)部配置模塊配置成弱上拉模式,對所述普通IO口的高低電平狀態(tài)進行檢測得到狀態(tài)D。
[0064]識別模塊203,用于基于檢測的結(jié)果識別所述普通IO 口的輸入狀態(tài)。
[0065]根據(jù)獲取的狀態(tài)A、B或狀態(tài)C、D對所述普通IO 口的輸入狀態(tài)進行識別,具體地,當(dāng)判斷所述外部電阻模塊中的電阻為外部上拉電阻時,先將單片機的內(nèi)部配置模塊配置成強下拉模式,對此時所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)A,若狀態(tài)A為高電平狀態(tài),則識別出此時所述普通IO 口的輸入狀態(tài)為強上拉電源正輸入狀態(tài);若狀態(tài)A為低電平狀態(tài),則繼續(xù)將單片機的內(nèi)部配置模塊配置成弱下拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)B,若狀態(tài)B為高電平狀態(tài),則識別出此時所述普通IO 口的輸入狀態(tài)為弱上拉電源正輸入狀態(tài),若狀態(tài)B為低電平狀態(tài),則識別出此時所述普通IO 口的輸入狀態(tài)為高阻輸入狀態(tài)。
[0066]當(dāng)判斷所述外部電阻模塊中的電阻為外部下拉電阻時,先將單片機的內(nèi)部配置模塊配置成強上拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)C ;若狀態(tài)C為高電平狀態(tài),則識別出此時所述普通IO 口的輸入狀態(tài)為強下拉電源負(fù)輸入狀態(tài);若狀態(tài)C為低電平狀態(tài),則繼續(xù)將單片機的內(nèi)部配置模塊配置成弱上拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)D,若狀態(tài)D為高電平狀態(tài),則識別出此時所述普通IO 口的輸入狀態(tài)為弱下拉電源負(fù)輸入狀態(tài),若狀態(tài)D為低電平狀態(tài),則識別出此時所述普通IO 口的輸入狀態(tài)為高阻輸入狀態(tài)。
[0067]由此,本實施例中由于所述內(nèi)部配置模塊能配置出強、弱上拉模式、強、弱下拉模式等多種模式,因此,即可通過單片機的普通IO 口來對多種狀態(tài)的輸入進行識別判斷,十分靈活,且無需增加AD轉(zhuǎn)換功能,降低了成本。具體在本實施例中,根據(jù)所述初始電平狀態(tài)將所述內(nèi)部配置模塊配置成強、弱上拉模式或強、弱下拉模式后對所述普通IO 口的高低電平狀態(tài)進行檢測,基于檢測結(jié)果普通IO 口可至少識別出強上拉電源正輸入狀態(tài)、弱上拉電源正輸入狀態(tài)、強下拉電源負(fù)輸入狀態(tài)、弱下拉電源負(fù)輸入狀態(tài)及高阻輸入狀態(tài)這5種狀態(tài),比現(xiàn)有技術(shù)中普通IO 口只能識別出高電平輸入狀態(tài)及低電平輸入狀態(tài)多出3種,能基本滿足實際應(yīng)用中需普通IO 口識別多種狀態(tài)的要求,且不同單片機的內(nèi)部配置模塊中可配置的模式種類可能更多,則相應(yīng)的可識別出的輸入狀態(tài)種類也更多。可利用本實施例中普通IO 口能對多種輸入狀態(tài)進行識別來通過普通IO 口標(biāo)示不同的版本號,如PCB版本號等,本實施例中的普通IO 口即能對5個不同的PCB版本號進行標(biāo)示,進一步地,還可通過若干普通IO 口輸入狀態(tài)的組合來對版本號進行標(biāo)示,則能標(biāo)示的版本號數(shù)目也大大增加,如通過2個普通IO 口的組合來對PCB版本號進行標(biāo)示時,則可標(biāo)示25個不同的PCB版本號,在實際應(yīng)用中可為產(chǎn)品的開發(fā)、設(shè)計帶來很大的方便。
[0068]在本實施例的一個可選實施方式中,還可在需識別不同標(biāo)示如PCB版本號時,預(yù)先設(shè)定所述普通IO 口不同的輸入狀態(tài)與其代表的不同標(biāo)示即對應(yīng)的PCB版本號,并根據(jù)預(yù)先設(shè)定所述普通IO 口不同的輸入狀態(tài)與其代表的不同標(biāo)示制定一查詢表,在識別出所述普通IO 口的不同輸入狀態(tài)后,在所述查詢表中進行查找比對,識別出與之對應(yīng)的標(biāo)示,能更加方便、快捷的應(yīng)用在識別PCB版本號等不同標(biāo)示上。
[0069]上述普通IO 口識別輸入狀態(tài)的方法及裝置,根據(jù)讀取的所述普通IO 口的初始電平狀態(tài)對單片機的內(nèi)部配置模塊進行模式配置,再通過配置的所述內(nèi)部配置模塊及外部電阻模塊對供電電源的電壓進行分壓,并對所述普通IO 口的高低電平狀態(tài)進行檢測,根據(jù)檢測的結(jié)果識別所述普通IO 口的輸入狀態(tài),由于所述內(nèi)部配置模塊能配置出內(nèi)部強、弱上拉模式、內(nèi)部強、弱下拉模式等多種模式,因此,即可通過單片機的普通IO 口來對多種狀態(tài)的輸入進行識別判斷,十分靈活,且無需增加AD轉(zhuǎn)換功能,降低了成本。
[0070]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能單元、模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能單元或模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能單元或模塊,以完成以上描述的全部或者部分功能。實施例中的各功能單元、模塊可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中,上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。另外,各功能單元、模塊的具體名稱也只是為了便于相互區(qū)分,并不用于限制本申請的保護范圍。上述裝置中單元、模塊的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
[0071]以上所述僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或流程變換,或直接或間接運用在其它相關(guān)的【技術(shù)領(lǐng)域】,均同理包括在本發(fā)明的專利保護范圍內(nèi)。
【權(quán)利要求】
1.一種普通IO 口識別輸入狀態(tài)的方法,其特征在于,包括: 將待讀取輸入狀態(tài)的普通IO 口設(shè)置為輸入功能,讀取所述普通IO 口的初始電平狀態(tài); 根據(jù)所述初始電平狀態(tài)對單片機的內(nèi)部配置模塊進行模式配置,并基于外部電阻模塊及內(nèi)部配置模塊對所述普通IO 口進行檢測; 基于檢測的結(jié)果識別所述普通IO 口的輸入狀態(tài)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述初始電平狀態(tài)對單片機的內(nèi)部配置模塊進行模式配置,并基于外部電阻模塊及內(nèi)部配置模塊對所述普通IO 口進行檢測的步驟具體為: 根據(jù)所述初始電平狀態(tài)進行所述內(nèi)部配置模塊的模式配置,基于配置的所述內(nèi)部配置模塊及所述外部電阻模塊對供電電源的電壓進行分壓,并對所述普通IO 口的高低電平狀態(tài)進行檢測,獲取檢測結(jié)果。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,當(dāng)所述初始電平狀態(tài)為高電平狀態(tài)時,所述根據(jù)所述初始電平狀態(tài)對單片機的內(nèi)部配置模塊進行模式配置,并基于外部電阻模塊及內(nèi)部配置模塊對所述普通IO 口進行檢測的步驟具體包括: 將所述內(nèi)部配置模塊配置成強下拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)A ; 基于所述狀態(tài)A將所述內(nèi)部配置模塊配置成弱下拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)B ; 所述基于檢測的結(jié)果識別所述普通IO 口的輸入狀態(tài)的步驟具體為: 根據(jù)所述狀態(tài)A、狀態(tài)B識別所述普通IO 口的輸入狀態(tài)。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,當(dāng)所述初始電平狀態(tài)為低電平狀態(tài)時,所述根據(jù)所述初始電平狀態(tài)對單片機的內(nèi)部配置模塊進行模式配置,并基于外部電阻模塊及內(nèi)部配置模塊對所述普通IO 口進行檢測的步驟具體包括: 將所述內(nèi)部配置模塊配置成強上拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)C ; 基于所述狀態(tài)C將所述內(nèi)部配置模塊配置成弱上拉模式,對所述普通IO 口的高低電平狀態(tài)進行檢測得到狀態(tài)D ; 所述基于檢測的結(jié)果識別所述普通IO 口的輸入狀態(tài)的步驟具體為: 根據(jù)所述狀態(tài)C、狀態(tài)D識別所述普通IO 口的輸入狀態(tài)。
5.根據(jù)權(quán)利要求1至4中任一項所述的方法,其特征在于,所述基于檢測的結(jié)果識別所述普通IO 口的輸入狀態(tài)的步驟還包括: 根據(jù)預(yù)先設(shè)定的所述普通IO 口不同的輸入狀態(tài)與其代表的不同標(biāo)示制定一查詢表,識別出所述普通IO 口的不同輸入狀態(tài)后,在所述查詢表中進行查找比對,識別出與之對應(yīng)的標(biāo)示。
6.一種普通IO 口識別輸入狀態(tài)的裝置,其特征在于,包括: 讀取模塊,用于將待讀取輸入狀態(tài)的普通IO 口設(shè)置為輸入功能,讀取所述普通IO 口的初始電平狀態(tài); 配置檢測模塊,用于根據(jù)所述初始電平狀態(tài)對單片機的內(nèi)部配置模塊進行模式配置,并基于外部電阻模塊及內(nèi)部配置模塊對所述普通IO 口進行檢測; 識別模塊,用于基于檢測的結(jié)果識別所述普通IO 口的輸入狀態(tài)。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述配置檢測模塊用于: 根據(jù)所述初始電平狀態(tài)進行所述內(nèi)部配置模塊的模式配置,基于配置的所述內(nèi)部配置模塊及所述外部電阻模塊對供電電源的電壓進行分壓,并對所述普通IO 口的高低電平狀態(tài)進行檢測,獲取檢測結(jié)果。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述外部電阻模塊為外部上拉電阻,所述外部上拉電阻的一端與單片機的供電電源連接,所述外部上拉電阻的另一端與所述普通IO口連接;所述內(nèi)部配置模塊用于配置強下拉模式、弱下拉模式。
9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述外部電阻模塊為外部下拉電阻,所述外部下拉電阻的一端與所述普通IO 口連接,所述外部下拉電阻的另一端接地;所述內(nèi)部配置模塊用于配置強上拉模式、弱上拉模式。
10.根據(jù)權(quán)利要求6至9中任一項所述的裝置,其特征在于,所述識別模塊用于: 根據(jù)預(yù)先設(shè)定的所述普通IO 口不同的輸入狀態(tài)與其代表的不同標(biāo)示制定一查詢表,識別出所述普通IO 口的不同輸入狀態(tài)后,在所述查詢表中進行查找比對,識別出與之對應(yīng)的標(biāo)示。
【文檔編號】G05B19/042GK103543682SQ201310548110
【公開日】2014年1月29日 申請日期:2013年11月6日 優(yōu)先權(quán)日:2013年11月6日
【發(fā)明者】吳新祥 申請人:深圳市邦彥信息技術(shù)有限公司