在目前絕大多數的電子產品和電力系統中,都因內部嵌入了單片機,所以PO端E作為輸入端口使用時,在讀入引腳的信息之前,應先向鎖而具有一定的智能化。正因為如此片機也因而得到了空前未有的發展和 存器中寫入“1”,使T2截止。這樣才能保證讀到內部總線上的信息,能正實際應用。確代表Po端E某個引腳的變化。這樣分析了它特有的硬件之后,才真正明白 單片機的廣泛普及和應用,不在于它的軟件有多么豐富,也不是因為它 了為什么要在讀端口之前,先進行寫…1 的輸出操作。同時也揭示了5系的硬件結構特殊,它真正的亮點在于能將軟件和硬件緊密的結合在一起,充 列的單片機4個端幾為什么都叫準雙向的真正內涵分發揮軟件和硬件的各自優勢。
如果只有軟件,我們無論如何都不能看到發 第_二、具體軟硬件的結合體現在整個存儲器的特點上。首先是單片機的光二極管的點亮、繼電器的動作、電機的旋轉等真實電路的具體變化,而要 片內存儲器中,不同的硬件區域有不同的軟件操作特性。想讓我們的這些想法和思路成為現實,那么我們必須借助于單片機精簡的硬 51系列的單片機片內有256字節的數據存儲器,但是在硬件結構L卻把件電路結構以及適當的輔助電路,才能完成將軟件中人的思想,具體在某個 這個整體分成了兩大塊兒,其中的高128字節不均勻的分布T21個特殊功能特定的硬件七放射光芒。
但是如果只靠單片機有限的硬件資源,來完成某個 寄存器,低128字節才是用戶的通用編程區。而且在低128字節中又分為3個產品的具體實現過程,那么這個產品只能是功能單一,十分不靈活,難以適 不同功能的區間,在3個區間中只有20H到2F|I這16個單元共128個位可以單獨應各種用戶的多樣需求,可是如果有了單片機軟件的密切配合之后,就可以 尋址。
在不改變硬件的前提下,通過調節、變換軟件指令,即可實現多個任務的靈 如果軟件編程的時候,我們不注意這些,僅僅根據指令的語法來判斷指活應變,從而使相同硬件結構的產品可以滿足各種用戶的不同需求。單片機 令的對錯,那么是根本無法排除軟件程序中的錯誤的。
例如:如果單一從軟的軟件和硬件在具體實現某個任務的過程中,已經成為一個無法分離的整 件的指令語法角度考慮,CLR IOH和CLR 20H.O兩條指令,它們的功能都是體。
如果將單片機實現某個具體的任務比喻成一個人,那么單片機的軟件就 將兩個由點操作符表示的一進制位清零。但是如果把這兩條指令交給任何一相當于人的思想,單片機的硬件就象人的軀體。硬件是軟件思想的一個有力 種能開發51系列單片機的編譯系統之后,結果都是只有CLR 20H.o這一條指支撐體,而軀體這個硬件的所有行為,又受到軟件思想的直接控制。二者缺令正確。那么為什么兩條同樣結構的指令中,前一條指令不正確而后一條指一不可。
令正確呢?產生這種編譯不通過的主要原因在于,51系列單片機片內RAM 下面以經典的51系列單片機為例,深入分析這種結合的具體體現。只有從20H到2FH這16個字節可以進行位尋址其他的地址,如這里的 第一、表現在四個并行端口的特點上。
在整個5l系列單片機軟件和硬件 IOH存儲單元,就不能用點操作符的形式單獨訪問它的某個二進制位,只能具體結合的過程中,最應該引起注意的是:為什么在讀取P0端口所連接外設 以整字節的形式訪問這些單元。
內容的時候,要用下面這樣的指令組合呢? 再比如:要用軟件編程實現累加器A中的內容暫時放入B中保存,然后把 MOV P0,#OFFH A中加68H的結果存入到某個直接地址中。
有人寫出如下的程序段: MOV A,PO MOV B,A‘ 如果拋開硬件結構,單一的從指令本身考慮,就是將一個立即數送到 ADD A 68HPo端口對應的寄存器中,然后馬上就讀它的內容到累加器A中,好象根本不能 MOV OFOH。A有任何變化,讀到累加器A中的內容就應該是剛剛送去的立即數“OFF}I”。從 MOV A,B軟件的表面上分析,只能說這兩個指令的組合僅相當于“M0v A,#OFFH” 這段程序原本的思路是,在A沒有參與加法運算之前,為了不丟失原來這樣的一條指令。
如果不了解單片機那種端口特有的硬件結構,遇到這樣的 A中的數據,把A中內容先放入B寄存器暫時保存,然后把加法結果保存到一指令組合之后,根本沒法用單一的軟件解釋清楚。
個地址是FOH的內存單元,最后從B中取回A中原來寄存的內容。可是實際上 在B中得到的信息根本不是A中原來的內容,而是這次加法的和。這主要是是 不了解單片機的硬件結構特點,而導致的一個軟件上的分析錯誤,最后丟失 了A中原來的數據。
當仔細分析了存儲器的內部結構特點才知道,原來在 lib 51系列單片機的內部,寄存器B的直接地址就是FOH,這樣在軟件指令中的 B和FOH,表面上看是兩個內容,一個是寄存器名稱,一個是直接地址,但實 質上它們是對應的是一個硬件宅間。
所以在進行軟件編程之前,應該首先對 存儲器的這種硬件結構特點有所了解。其次是訪問不同的存儲器空間,系統采用了使用軟件和硬件結合的方法 來區分。
圖1 PO端口某個引腳的內部結構 在51系列的單片機中,對于8051的存儲器加上外部可以擴展的,一共有 但是當仔細分析圖1中PO端口的內部硬件機構之后,發現P0端口某個引 4#-相對獨立的模塊,即片內256字節的RAM、片外可擴展的最多64K字節的腳的輸入,既加到了T1和T2的公共端上,同時也加到了“讀引腳”的三態緩 R刪、片內4K字節的R刪、片外可擴展的最多64K字節的ROM。
如果由D觸發器構成的鎖存器Q輸出端為“0”,則T2導通,那么 如果想知道單片機所執行的指令對應的機器碼。
到底存放到片內程序存P0口上的電位就被鉗制在低電平,這樣如果從引腳輸入數據“1”,就無法 儲器還是片外程序存儲器了,要借助硬件的巨X引腳外圍電路連接情況來判20 I井援博莧 萬方數據 焉烹黑烹息!===}蔫啊I 科學論壇斷,如果這個引腳連接的是高電平,那么8051單片機的指令是首先從片內 題中,被廣泛采用的方法大致有常見的3種處理方法,單純軟件、單純硬4l【程序存儲器中取出,然后自動調到片外的1000}Ij也址單元,繼續訪問片外 件、軟硬結合。
其中軟件的延時很簡單,只要利用某種程序控制某些指令的程序存儲器中的其它指令。相反假設這個引腳連接的是一個低電平,那么所 反復運行多次,即可實現延時操作的要求,但是它的最大缺點是時間不精有的指令的機器碼都來自單片機外擴的程序存儲器。
只有掌握了這個硬件的 確、大量占用了CPU的執行時間,使CPU的工作效率變得很低;硬件的延時需特點之后,才能對8031這種片內沒有程序存儲器的單片機,做出正確硬件設 要專門的硬件芯片搭接恰當的電路,當電路做好之后。
想重新調整延時時間計——將它的i五引腳唯一只能設計成低電平的電路結構。只能重新改變電路的參數和結構,這樣使設計在靈活性上失去了實用性;如 上面是采用了單片機豆X引腳,不同的硬件連接方式,訪問不同的程序 果能采用單片機的軟件和硬件的定時器相結合的方式,處理關于時間的問存儲器空間。
可是如果我們按照相同的規律,去分析如何用硬件再次區分數 題,利用這種軟件和硬件配合的方式,能很好的克服由單一的軟件或硬件帶據存儲器的片內、片外時,開始千方百計的尋找另外一個,用來區分數據存 來的種種缺點和不足,集軟件和硬件的優點于一身。
這主要是因為,單片機儲器是在片內還是在片外的硬件引腳時,卻根本沒有任何結論。
原因在于此 有一個能獨立工作的硬件定時器,它在得到了單片機的軟件初始化命令字之時單片機的軟件和硬件又一次開始交換了它們的功能和使命,硬件不能完成 后,就可以單獨的和CPU同步并行工作,這樣不但能實現精確的定時。而且就改用了軟件來實現。軟件和硬件已經開始相互融合、滲透。那么如果存 還可以充分提高CPU的工作效率。
這種軟件和硬件結合于一體的設計思路,儲運算結果時,想把這些數據指定存放到片內還是片外,或者從數據存儲器 為我們的實際應用帶來了方便。
中讀來的數據想知道是來自片內還是片外,我們怎樣來區分呢?此時單片機 第七、軟硬件結合,還能通過掉電保護和待機的工作方式中得到具體的給我們提供的操作方法是用軟件不同的指令來區分數據存儲器訪問的是片內 體現。
為了讓單片機功耗降到最低。在實際工作時我們可以讓單片機工作在還是片外。具體用MOVX的操作碼代表訪問片外數據存儲器,用MOV操作碼代 特定的節電工作方式之下。51系列單片機典型的節電工作方式有2種,它們表訪問片內的數據存儲器。是待機的工作方式和掉電保護的工作方式,分別由Pc0N寄存器的編程位 第三、軟硬件的結合可以從分析單片機的定時器溢出處理過程中得到結 IDL和PD位控制。
如果在單片機的硬件開始動作之前,用軟件將IDL位置“論。這里用定時器Tl為例,分析這種軟件和硬件的具體結合。單片機的定時 1”,即可讓單片機的硬件電路進入待機工作方式;可是如果軟件是設置了器控制寄存器TCON中,TF是溢出標志位。當T產生溢出時,由硬件自動使 PD位置“1”,則單片機立刻出現掉電的方式,此時送入時鐘電路的振蕩信TFl置l。
這時如果軟件程序設計是采用中斷的編程方式處理溢出,那么當 號被封鎖,不產生時鐘信號,片內的一切工作都停止,只有片內R心的數據CPU響應該中斷請求時,是由系統中特定的內部硬件自動將TFI清零。
但是如過保留。這里我們看到利用軟件可以直接改變硬件的工作狀態。
如果此時我們利用的是軟件查詢方式編程,來處理這次溢出,那么剛才由硬件 如果我們繼續分析待機的工作方式,我們還可以繼續發現這種軟件自動置l的TFl標志位,這時就要用~條相應的軟件指令來清除,也就是需要 和硬件的具體結合。
如果在單片機的硬件開始動作之前,用軟件將IDL位你用軟件將這種硬件的自動變化,調整回去,以便下次重新判斷定時器是否 置“1”,即進入待機工作方式,這時在程序運行過程中,如果CPU在等待有新的溢出產生。
由此可以看出。
同樣一個定時器的溢出的問題,如果采用 某個外設的結束麗沒有具體任務時,那么此時單片機的工作電流僅為中斷和查詢兩種不同的編程方法去處理,單片機就會用不同的硬件和軟件來 1.7mA一5mA,而正常的工作電流為1ImA-20mA。
此時CPU的工作“暫停”,處理標志位的復位。
通過這一點可以看到,單片機的軟硬件結合,確實達到 但是內部時鐘發生器仍然工作,并向中斷系統、串行IEI和定時器提供工了密不可分的程度。
作時鐘信號,但向CPU提供時鐘的電路被封鎖,CPUI作停止。
這里因為軟 第四、主要體現在對外部中斷源的處理過程上。
當5系列單片機在處理 件從而改變了單片機內部的電路工作狀態發生了不同的變化。
而且如果外部中斷的過程中,如果負責檢測中斷的硬件電路,想判斷某個外部中斷源 我們能了解這種特性之后,就可以大大降低單片機的功耗。
那么現在我是否有中斷產生之前,首先要判斷~下,軟件編程設定位IT0或ITl的當前狀 們最關心的是,這種由軟件改變的硬件工作方式,怎樣才能再次使它恢態,被軟件程序設置成什么樣的初始值,從而使硬件電路得到了外部中斷源 復到正常的工作狀態上來呢?這里有非常恰當的方法,而且是軟件和硬的觸發方式是邊沿觸發方式還是電平觸發方式,如果設定位是高電平,則中 件分別可以恢復的2種方法。
方法之一是軟件中斷激活,另一種方法是硬斷硬件電路會以邊沿的觸發方式,去檢測雨而或雨而引腳上的下降沿,來 件復位法。
在軟件中斷激活的方法中把軟件和硬件再次緊密的結合在一作為對應外部中斷源有中斷申請的標志;相反,如果是將設定位用軟件設定 起,在待機的工作方式之下,任何一個開放的中斷源發出的中斷請求,成了低電平,那么中斷硬件電路就會用電平的觸發方式,這次就不會去檢測 都能利用硬件對IDL清零,使單片機退出待機方式進入正常工作方式。硬INTO或祈i引腳上的F降沿了。而是用引腳上有沒有低電平,作為判斷中 件復位法的工作原理是,因為單片機在待機方式下時鐘發生器仍然工斷源是否有中斷申請的標志。
這時體現了因軟件設定方式不同,從而直接決 作,所以只要在RsT引腳上送一個脈寬大于兩個機器周期的正脈沖,就能定了硬件電路的工作情況軟件改變了硬件的工作。
接下來當外部引腳有硬 完成對單片機的復位操作,然后使之退出待機方式,但這次是讓單片機件的電平變化之后,單片機會將標志位IEO或IEI自動置“1”,硬件變化直 重新從頭開始工作,而不是在原來的基礎上繼續工作。接產生了軟件標志位的狀態變化。這樣硬件又返回來改變了軟件的狀態。
以上這些事實的列舉不能不說明單片機的軟件和硬件結合得如此之難舍 在這一點上,我們不僅看到了因單片機軟件設定不同,而導致硬件電路 難分,而且如果我們掌握了這些軟件和硬件結合的特點之后,能根據具體設的工作情況有所改變,而且同時也看到了硬件自動改變軟件標志位的真實所 計要求,可以方便地利用軟件和硬件各自的優勢,在它們之間進行靈活的自在。
單片機軟件和硬件的結合已經到了密不可分的地步了。由切換,充分發揮軟件和硬件的特長,達到最終滿意的理想設計效果。這也 第五、我們可以在串行口收發數據上,找到這種軟件和硬件結合的緊密 是單片機能具有廣泛應用的魅力之所在。但同時也給單片機的設計人員提出之處。我們知道,51系列的單片機有一個全雙工的串行口。
當我們要想利用 了即要精通軟件的設計精髓.同時也要合理的設計出容易控制的硬件電路,它的串行口發送數據時,軟件編程時只要寫出MOV SBUF,A這樣的核心指令 軟件和硬件都要學,而且兩樣都要精通,這樣單片機才能真正發揮它強大的就可以,剩下的任務就交給了硬件來完成。
當串行口的硬件電路將累加器中 內在潛力.要發送數據的一個字節,所有二進制位一位一位的經過幾個時間片在T)D引腳上,發送成功之后,軟件又開始接受硬件電路的變化了。
評論