第一篇:單片機實驗心得體會
單片機實驗心得體會
時間過得真快,不經意間,一個學期就到了尾聲,進入到如火如荼的期末考試階段。
在學習單片機這門課程之前,就早早的聽各種任課老師和學長學姐們說過這門課程的重要性和學好這門課程的關鍵~~多做單片機實驗。
這個學期,我們除了在課堂上學習理論知識,還在實驗室做了7次實驗。將所學知識運用到實踐中,在實踐中發現問題,強化理論知識。
現在,單片機課程已經結束,即將開始考試了,需要來好好的反思和回顧總結下了。
第一次是借點亮LED燈來熟悉keil軟件的使用和試驗箱上器材。第一次實驗體現了一個人對新事物的接受能力和敏感度。雖然之前做過許多種實驗。但依舊發現自己存在一個很大的問題,對已懂的東西沒耐心聽下去,容易開小差;在聽老師講解軟件使用時,思路容易停滯,然后就跟不上老師的步驟了,結果需要別人再次指導;對軟件的功能沒有太大的熱情去研究探索,把一個個圖標點開,進去看看。所以第一次試驗相對失敗。鑒于此,我自己在宿舍下載了軟件,然后去熟悉它的各個功能,使自己熟練掌握。
在做實驗中,第二個問題應該是準備不充分吧。一開始,由于沒有課前準備的意識,每每都是到了實驗室才開始編程,完成作業,導致每次時間都有些倉促。后來在老師的批評下,認識到這是個很大的問題:老師提前把任務告訴我們,就是希望我們私下把程序編好。于是我便在上機之前把程序編好,拷到U盤,這樣上機時只需調試,解決出現的問題。這樣就會節約出時間和同學討論,換種思路,換種方法,把問題給吃透。發現、提出、分析、解決問題和實踐能力是作為我們這個專業的基本素質。
三是我的依賴性很大,剛開始編程序時喜歡套用書上的語句,卻對語句的理解不夠。于是當程序出現問題時,不知道如何修改,眼前的程序都是一塊一塊的被拼湊整合起來的,沒法知道哪里錯了。但是編程是一件很嚴肅的事情,容不得半點錯誤。于是便只能狠下決心,堅持自己編寫,即使套用時,也把每條語句弄懂。這也能激發了學習的興趣。
還有一次實驗是調出電腦里的程序,讓它在試驗箱上實現其功,讓我們去體會別人編程的技巧和程序邏輯美感??戳酥螅坏貌徽f我目前的水平簡直太小兒科了。還有連線也是個問題,對試驗箱內部結構功能的不懂,以至于不知道如何連線讓程序實現其功能。這讓我意識到單片機是軟件和硬件的結合,兩者是一個整體。所以必須把硬件方面加強。
五是基礎知識的薄弱,也是最基礎的問題吧!在用C語言編程時,才發現自己C語言真的太差勁了,雖然這門課程早就學過,但是就目前所掌握的C語言知識,對于單片機編程遠遠不夠。C語言也是我們以后學各種語言的基礎,必須要花大量的時間溫習強化。
通過這個學期的單片機實驗,我發現了自己很多問題,也從中學到了很多。它不是物理實驗時,只需要記住老師說的步驟,順次做完就可以了;并不是matlab實驗,只需要你知道一些語句表達,然后在不違背語法的情況下,組合好就可以了;它不是EDA實驗,把一節課混下去就行了,反正大家都不知道,都是混,都跟不上老師的節奏思路。他需要我們在掌握硬件的基礎上,用單片機語言在keil軟件上寫出一定的程序,然后利用stcisp燒到試驗箱上,實現其特定的功能。而在編程時需要邏輯力,創新力,知識組合力,知識搜索。
單片機在電子技術應用領域中,單片機的應用愈來愈多地應用到各行各業。要開發單片機的應用,不但要掌握單片機硬件和軟件方面的知識,而且還要深入了解各應用系統的專業知識,融會貫通和有機結合,才能設計出優良的應用系統。并且需要與時俱進,不斷了解各公司最新芯片的結構和應用,在實際應用中找到最好的性能價格比。培養自己接受新知識的自學能力,掌握芯片發展動態。培養自己的創新精神,在原有的基礎上進行改進,使之功能不斷完善。當然,最重要到還是態度,無論做什么事情,足夠認真,足夠堅強,足夠毅力,足夠決心,足夠勇氣,就一定能辦到。
第二篇:單片機實驗心得體會
單片機實驗心得體會
單片機實驗心得體會一:單片機實驗心得體會
時間過得真快,不經意間,一個學期就到了尾聲,進入到如火如荼的期末考試階段。
在學習單片機這門課程之前,就早早的聽各種任課老師和學長學姐們說過這門課程的重要性和學好這門課程的關鍵~~多做單片機實驗。
這個學期,我們除了在課堂上學習理論知識,還在實驗室做了7次實驗。將所學知識運用到實踐中,在實踐中發現問題,強化理論知識。
現在,單片機課程已經結束,即將開始考試了,需要來好好的反思和回顧總結下了。
第一次是借點亮LED燈來熟悉keil軟件的使用和試驗箱上器材。第一次實驗體現了一個人對新事物的接受能力和敏感度。雖然之前做過許多種實驗。但依舊發現自己存在一個很大的問題,對已懂的東西沒耐心聽下去,容易開小差;在聽老師講解軟件使用時,思路容易停滯,然后就跟不上老師的步驟了,結果需要別人再次指導;對軟件的功能沒有太大的熱情去研究探索,把一個個圖標點開,進去看看。所以第一次試驗相對失敗。鑒于此,我自己在宿舍下載了軟件,然后去熟悉它的各個功能,使自己熟練掌握。
在做實驗中,第二個問題應該是準備不充分吧。一開始,由于沒有課前準備的意識,每每都是到了實驗室才開始編程,完成作業,導致每次時間都有些倉促。后來在老師的批評下,認識到這是個很大的問題:老師提前把任務告訴我們,就是希望我們私下把程序編好。于是我便在上機之前把程序編好,拷到U盤,這樣上機時只需調試,解決出現的問題。這樣就會節約出時間和同學討論,換種思路,換種方法,把問題給吃透。發現、提出、分析、解決問題和實踐能力是作為我們這個專業的基本素質。
三是我的依賴性很大,剛開始編程序時喜歡套用書上的語句,卻對語句的理解不夠。于是當程序出現問題時,不知道如何修改,眼前的程序都是一塊一塊的被拼湊整合起來的,沒法知道哪里錯了。但是編程是一件很嚴肅的事情,容不得半點錯誤。于是便只能狠下決心,堅持自己編寫,即使套用時,也把每條語句弄懂。這也能激發了學習的興趣。
還有一次實驗是調出電腦里的程序,讓它在試驗箱上實現其功,讓我們去體會別人編程的技巧和程序邏輯美感??戳酥?,不得不說我目前的水平簡直太小兒科了。還有連線也是個問題,對試驗箱內部結構功能的不懂,以至于不知道如何連線讓程序實現其功能。這讓我意識到單片機是軟件和硬件的結合,兩者是一個整體。所以必須把硬件方面加強。
五是基礎知識的薄弱,也是最基礎的問題吧!在用C語言編程時,才發現自己C語言真的太差勁了,雖然這門課程早就學過,但是就目前所掌握的C語言知識,對于單片機編程遠遠不夠。C語言也是我們以后學各種語言的基礎,必須要花大量的時間溫習強化。通過這個學期的單片機實驗,我發現了自己很多問題,也從中學到了很多。它不是物理實驗時,只需要記住老師說的步驟,順次做完就可以了;并不是matlab實驗,只需要你知道一些語句表達,然后在不違背語法的情況下,組合好就可以了;它不是EDA實驗,把一節課混下去就行了,反正大家都不知道,都是混,都跟不上老師的節奏思路。他需要我們在掌握硬件的基礎上,用單片機語言在keil軟件上寫出一定的程序,然后利用stcisp燒到試驗箱上,實現其特定的功能。而在編程時需要邏輯力,創新力,知識組合力,知識搜索。單片機在電子技術應用領域中,單片機的應用愈來愈多地應用到各行各業。要開發單片機的應用,不但要掌握單片機硬件和軟件方面的知識,而且還要深入了解各應用系統的專業知識,融會貫通和有機結合,才能設計出優良的應用系統。并且需要與時俱進,不斷了解各公司最新芯片的結構和應用,在實際應用中找到最好的性能價格比。培養自己接受新知識的自學能力,掌握芯片發展動態。培養自己的創新精神,在原有的基礎上進行改進,使之功能不斷完善。當然,最重要到還是態度,無論做什么事情,足夠認真,足夠堅強,足夠毅力,足夠決心,足夠勇氣,就一定能辦到。
>單片機實驗心得體會二:單片機實驗的心得和體會>>(819字)
這是我第一次做單片機實驗,說起來有一些緊張和新奇。在此之前我并沒有接觸過單片機,我本以為與之前的光學實驗及其它實驗差不多,可我進到實驗室之后,我就改變了這個看法。
單片機實驗要求的是一種思維的創新,而不是簡單的重復老師所說的實驗步驟。因此第一次實驗,實驗老師向我們講解了CVAVR編譯器的大體情況及使用方法和技巧,并簡單的向我們示例——如何在CVAVR中編寫一段程序。編完程序之后,知道我們如何使用AVRStudio達到將編好的程序輸入到單片機中來使其運行。
之后老師讓我們以組為單位合作編寫一段程序,并使其運行。我們組想要編寫一個跑馬燈的程序。在第一次運行CVAVR時,我們組就遇到了一個麻煩,我們在建立一個新project文件那里出現了錯誤。在保存這個新project文件的時候,我們單擊了Save,而不是Generate,SaveandExit.因此它彈不出我們我們所需要的源程序。之后我們通過詢問其他人解決了這個問題。在編程中,我們開始做的是兩盞燈的交替閃爍,間隔時間是1000ms。在運用AVRStudio的時候,我們又犯了一個錯誤。在我們打開編譯好的工程文件時,開始調試,在最后一步點擊Finish時,彈出一對話框,問我們是否更新,然后我們單擊了Yes。這導致了仿真器無法下次使用。這是由于實驗室中的仿真器是盜版的,無法進行更新。
經過我們的不斷努力,我們終于實現了簡單的跑馬燈的運行,便是兩個燈地交替閃爍。我們感到興奮極了。但是我們并沒有滿足于當前,我們又編寫了三個燈地交替閃爍,四個及多個。當我們一步步實現我們的目的時,我得到莫大成就感和自信。
在這次實驗中,我體會到了合作的重要性。一個人也可能實現這一系列的過程,但是要花費很多精力和時間。群策群力,分工明確,可以使我們更好、更快地完成我們的工作。在此期間,你可以更好知道自己的不足和缺陷,來得到改正。還可以知道自己的優勢所在,把握好自己的優勢。
以上便是我做這次實驗的心得體會。
>單片機實驗心得體會三:單片機實驗心得體會>>(894字)
最近自己對單片機特別的感興趣,因為看到它能控制電機的轉動,自己覺得很神奇,單片機實訓心得體會。就想弄清楚它到底是怎么做到的?
我看到書上講:單片機可以用兩種語言編寫,一種是C語言,另外一種是匯編語言。匯編語言是一種機器語言,且代碼繁瑣,不易記憶。需要掌握單片機的內部結構和邏輯結構,通過看了幾本書讓我了解認識到匯編確實太繁瑣,不過我學習過C語言,也參加了全國計算機二級考試,覺得自己在一方面具有優勢,能很快學好它。
不過在學習中,我才發現學習單片機不僅僅需要軟件的知識,還需要硬件的知識。我買了一個單片機在實踐中就是一個活生生的例子,沒有相應的硬件知識,我連單片機怎么和電腦相連都不知道,我為我當初的想法感到羞愧。單片機是一門很好的學問,需要我去鉆研它。
時光飛逝,一轉眼,一個學期又進尾聲了,本學期的單片機綜合課程設計也在一周內完成了。
俗話說“好的開始是成功的一半”。說起課程設計,我認為最重要的就是做好設計的預習,認真的研究老師給的題目,選一個自己有興趣的題目,其次,老師對實驗的講解要一絲不茍的去聽去想,因為只有都明白了,做起設計就會事半功倍,如果沒弄明白,就迷迷糊糊的去選題目做設計,到頭來一點收獲也沒有。最后,要重視程序的模塊化,修改的方便,也要注重程序的調試,掌握其方法。
雖然這次的課程設計算起來在實驗室的時間只有三天,不過因為我們都有自己的實驗板,所以在宿舍里做實驗的時間一定不止三天。
硬件的設計跟焊接都要我們自己動手去焊,軟件的編程也要我們不斷的調試,最終一個能完成課程設計的勞動成果出來了,很高興它能按著設計的思想與要求運動起來。
當然,這其中也有很多問題,第一、不夠細心比如由于粗心大意焊錯了線,由于對課本理論的不熟悉導致編程出現錯誤。第二,是在學習態度上,這次課設是對我的學習態度的一次檢驗。對于這次單片機綜合課程實習,我的第一大心得體會就是作為一名工程技術人員,要求具備的首要素質絕對應該是嚴謹。我們這次實習所遇到的多半問題多數都是由于我們不夠嚴謹。第三,在做人上,我認識到,無論做什么事情,只要你足夠堅強,有足夠的毅力與決心,有足夠的挑戰困難的勇氣,就沒有什么辦不到的。
第三篇:單片機實驗心得體會3篇
單片機實驗心得體會一:單片機實驗心得體會
時間過得真快,不經意間,一個學期就到了尾聲,進入到如火如荼的期末考試階段。
在學習單片機這門課程之前,就早早的聽各種任課老師和學長學姐們說過這門課程的重要性和學好這門課程的關鍵~~多做單片機實驗。
這個學期,我們除了在課堂上學習理論知識,還在實驗室做了7次實驗。將所學知識運用到實踐中,在實踐中發現問題,強化理論知識。
現在,單片機課程已經結束,即將開始考試了,需要來好好的反思和回顧總結下了。
第一次是借點亮led燈來熟悉keil軟件的使用和試驗箱上器材。第一次實驗體現了一個人對新事物的接受能力和敏感度。雖然之前做過許多種實驗。但依舊發現自己存在一個很大的問題,對已懂的東西沒耐心聽下去,容易開小差;在聽老師講解軟件使用時,思路容易停滯,然后就跟不上老師的步驟了,結果需要別人再次指導;對軟件的功能沒有太大的熱情去研究探索,把一個個圖標點開,進去看看。所以第一次試驗相對失敗。鑒于此,我自己在宿舍下載了軟件,然后去熟悉它的各個功能,使自己熟練掌握。
在做實驗中,第二個問題應該是準備不充分吧。一開始,由于沒有課前準備的意識,每每都是到了實驗室才開始編程,完成作業,導致每次時間都有些倉促。后來在老師的批評下,認識到這是個很大的問題:老師提前把任務告訴我們,就是希望我們私下把程序編好。于是我便在上機之前把程序編好,拷到u盤,這樣上機時只需調試,解決出現的問題。這樣就會節約出時間和同學討論,換種思路,換種方法,把問題給吃透。發現、提出、分析、解決問題和實踐能力是作為我們這個專業的基本素質。
三是我的依賴性很大,剛開始編程序時喜歡套用書上的語句,卻對語句的理解不夠。于是當程序出現問題時,不知道如何修改,眼前的程序都是一塊一塊的被拼湊整合起來的,沒法知道哪里錯了。但是編程是一件很嚴肅的事情,容不得半點錯誤。于是便只能狠下決心,堅持自己編寫,即使套用時,也把每條語句弄懂。這也能激發了學習的興趣。
還有一次實驗是調出電腦里的程序,讓它在試驗箱上實現其功,讓我們去體會別人編程的技巧和程序邏輯美感??戳酥?,不得不說我目前的水平簡直太小兒科了。還有連線也是個問題,對試驗箱內部結構功能的不懂,以至于不知道如何連線讓程序實現其功能。這讓我意識到單片機是軟件和硬件的結合,兩者是一個整體。所以必須把硬件方面加強。
五是基礎知識的薄弱,也是最基礎的問題吧!在用c語言編程時,才發現自己c語言真的太差勁了,雖然這門課程早就學過,但是就目前所掌握的c語言知識,對于單片機編程遠遠不夠。c語言也是我們以后學各種語言的基礎,必須要花大量的時間溫習強化。通過這個學期的單片機實驗,我發現了自己很多問題,也從中學到了很多。它不是物理實驗時,只需要記住老師說的步驟,順次做完就可以了;并不是matlab實驗,只需要你知道一些語句表達,然后在不違背語法的情況下,組合好就可以了;它不是eda實驗,把一節課混下去就行了,反正大家都不知道,都是混,都跟不上老師的節奏思路。他需要我們在掌握硬件的基礎上,用單片機語言在keil軟件上寫出一定的程序,然后利用stcisp燒到試驗箱上,實現其特定的功能。而在編程時需要邏輯力,創新力,知識組合力,知識搜索。單片機在電子技術應用領域中,單片機的應用愈來愈多地應用到各行各業。要開發單片機的應用,不但要掌握單片機硬件和軟件方面的知識,而且還要深入了解各應用系統的專業知識,融會貫通和有機結合,才能設計出優良的應用系統。并且需要與時俱進,不斷了解各公司最新芯片的結構和應用,在實際應用中找到最好的性能價格比。培養自己接受新知識的自學能力,掌握芯片發展動態。培養自己的創新精神,在原有的基礎上進行改進,使之功能不斷完善。當然,最重要到還是態度,無論做什么事情,足夠認真,足夠堅強,足夠毅力,足夠決心,足夠勇氣,就一定能辦到。
單片機實驗心得體會二:單片機實驗的心得和體會(819字)
這是我第一次做單片機實驗,說起來有一些緊張和新奇。在此之前我并沒有接觸過單片機,我本以為與之前的光學實驗及其它實驗差不多,可我進到實驗室之后,我就改變了這個看法。
單片機實驗要求的是一種思維的創新,而不是簡單的重復老師所說的實驗步驟。因此第一次實驗,實驗老師向我們講解了cvavr編譯器的大體情況及使用方法和技巧,并簡單的向我們示例——如何在cvavr中編寫一段程序。編完程序之后,知道我們如何使用avrstudio達到將編好的程序輸入到單片機中來使其運行。
之后老師讓我們以組為單位合作編寫一段程序,并使其運行。我們組想要編寫一個跑馬燈的程序。在第一次運行cvavr時,我們組就遇到了一個麻煩,我們在建立一個新project文件那里出現了錯誤。在保存這個新project文件的時候,我們單擊了save,而不是generate,saveandexit.因此它彈不出我們我們所需要的源程序。之后我們通過詢問其他人解決了這個問題。在編程中,我們開始做的是兩盞燈的交替閃爍,間隔時間是1000ms。在運用avrstudio的時候,我們又犯了一個錯誤。在我們打開編譯好的工程文件時,開始調試,在最后一步點擊finish時,彈出一對話框,問我們是否更新,然后我們單擊了yes。這導致了仿真器無法下次使用。這是由于實驗室中的仿真器是盜版的,無法進行更新。
經過我們的不斷努力,我們終于實現了簡單的跑馬燈的運行,便是兩個燈地交替閃爍。我們感到興奮極了。但是我們并沒有滿足于當前,我們又編寫了三個燈地交替閃爍,四個及多個。當我們一步步實現我們的目的時,我得到莫大成就感和自信。
在這次實驗中,我體會到了合作的重要性。一個人也可能實現這一系列的過程,但是要花費很多精力和時間。群策群力,分工明確,可以使我們更好、更快地完成我們的工作。在此期間,你可以更好知道自己的不足和缺陷,來得到改正。還可以知道自己的優勢所在,把握好自己的優勢。
以上便是我做這次實驗的心得體會。
單片機實驗心得體會三:單片機實驗心得體會(894字)
最近自己對單片機特別的感興趣,因為看到它能控制電機的轉動,自己覺得很神奇,單片機實訓心得體會。就想弄清楚它到底是怎么做到的?
我看到書上講:單片機可以用兩種語言編寫,一種是c語言,另外一種是匯編語言。匯編語言是一種機器語言,且代碼繁瑣,不易記憶。需要掌握單片機的內部結構和邏輯結構,通過看了幾本書讓我了解認識到匯編確實太繁瑣,不過我學習過c語言,也參加了全國計算機二級考試,覺得自己在一方面具有優勢,能很快學好它。
不過在學習中,我才發現學習單片機不僅僅需要軟件的知識,還需要硬件的知識。我買了一個單片機在實踐中就是一個活生生的例子,沒有相應的硬件知識,我連單片機怎么和電腦相連都不知道,我為我當初的想法感到羞愧。單片機是一門很好的學問,需要我去鉆研它。
時光飛逝,一轉眼,一個學期又進尾聲了,本學期的單片機綜合課程設計也在一周內完成了。
俗話說“好的開始是成功的一半”。說起課程設計,我認為最重要的就是做好設計的預習,認真的研究老師給的題目,選一個自己有興趣的題目,其次,老師對實驗的講解要一絲不茍的去聽去想,因為只有都明白了,做起設計就會事半功倍,如果沒弄明白,就迷迷糊糊的去選題目做設計,到頭來一點收獲也沒有。最后,要重視程序的模塊化,修改的方便,也要注重程序的調試,掌握其方法。
雖然這次的課程設計算起來在實驗室的時間只有三天,不過因為我們都有自己的實驗板,所以在宿舍里做實驗的時間一定不止三天。
硬件的設計跟焊接都要我們自己動手去焊,軟件的編程也要我們不斷的調試,最終一個能完成課程設計的勞動成果出來了,很高興它能按著設計的思想與要求運動起來。
當然,這其中也有很多問題,第一、不夠細心比如由于粗心大意焊錯了線,由于對課本理論的不熟悉導致編程出現錯誤。第二,是在學習態度上,這次課設是對我的學習態度的一次檢驗。對于這次單片機綜合課程實習,我的第一大心得體會就是作為一名工程技術人員,要求具備的首要素質絕對應該是嚴謹。我們這次實習所遇到的多半問題多數都是由于我們不夠嚴謹。第三,在做人上,我認識到,無論做什么事情,只要你足夠堅強,有足夠的毅力與決心,有足夠的挑戰困難的勇氣,就沒有什么辦不到的。
第四篇:單片機實驗
實驗
一、MCS51單片機基本開發環境
1. 實驗目的:
1)熟悉軟件的集成開發環境 2)掌握單片機軟件設計流程
3)掌握單片機存貯器結構及各窗口之間的聯系 2. 實驗內容:
1)用三種方法實現將累加器A內容改為20H
方法1--MOV A,#20H 方法2—MOV R0,#20H MOV A,R0 方法3—MOV R0,#20H XCH A,R0 心得:越往下做實驗時就越感覺這題根本不能說是題目,但不得不說在沒接觸過編程軟件,剛開始學的匯編,第一次做的實驗就光這道題都覺得不知道做什么.所以凡是總有開始,不了解情況的多簡單的都會覺得難.2)將58H位單元置為1,觀察內部RAM中2BH內容的變化 代碼:
SETB 2BH.0 JMP $ END 心得:這是關于內部存儲中對單元和字節了解,不理解很容易做錯.比如開始寫的指令為
MOV R0,#58H;MOV @R0,#1
這是錯誤的指令。這就需要認真去了解單片機中的字節地址與位地址的關系。80C51中有位尋址區和字節尋址區。題目中58H為位地址,2BH為字節地址,且58H為2B字節的最低位。由于58H屬于位尋址區,可用位操作指令 SETB 進行置位,SETB 2BH.0 執行后,2BH中內容變為01
3)如果當前狀態為有進位、工作寄存器使用區2,請用3種方法設置這種狀態
代碼:
ANL PSW,#01H MOV A,PSW
CJNE A,#01,LAB2 LAB1:JMP LAB1
LAB2: SETB PSW.4 MOV P0,#01H MOV R0,#18H CLR PSW.3 MOV C,P0.0 MOV PSW,R0 MOV PSW.4,C CPL C MOV PSW.3,C END
心得:以上LAB2寫了三段代碼,可分別完成題目要求。不過實驗時只是對代碼進行了錯誤調試,沒有對結果進行檢驗。其中值得注意的是對于布爾(位)操作指令的用法,比如傳送指令必須經累加器C,如第二段中MOV P0,#01H;MOV C,P0.0,以及對于位尋址的方式(如需用到“.”隔開)的應用。4)編一個小程序將內部RAM中的20H單元的內容送到21H單元并調試
代碼:
MOV R0,#20H MOV @R0,#10H MOV R1,#21H MOV @R1,20H JMP $ END
5)用程序將堆棧指針指向60H,然后在堆棧中依次壓入01,02,03,04,05五個數,觀察哪些單元內容發生了變化,各變為多少?從哪些窗口可以發現這些變化?順序將堆棧中的五個數放入30H~34H五個單元中,編程實現之。
代碼:
MOV R1,#60H MOV SP,R1 MOV DPL,#1H LAB1:PUSH DPL INC DPL MOV A,DPL CJNE A,#6,LAB1 POP 34H POP 33H POP 32H POP 31H POP 30H JMP $ END
6)將外部數據存貯器1000H~100FH 16個單元中存放00H~0FH 代碼:
MOV DPTR,#1000H MOV R1,#10H LOOP:MOVX @DPTR,#1234H MOVX A,@DPTR MOV @R1,A INC DPTR INC R1 CJNE R1,#40H,LOOP JMP $ END
心得:此處需要訪問片外存儲空間,需要借助寄存器DPTR,需注意其為16位的寄存器,在使用時若與八位寄存器進行數據交換時需分為高八位DPH與低八位DPL來用。7)若要求程序從0010H單元開始運行,可用兩種方法實現?
方法一 ORG 0010H 方法二 AJMP 0010H
3. 選做實驗內容:數據傳送 目的:
1)掌握8051單片機內部數據存貯器、外部數據存貯器的數據傳送特點和應用 2)掌握MOV,MOVX和MOVC類指令的用法及區別 內容:
1)將片內RAM數據區20H為首地址的十六個字節傳送到30H為首地址的數據區,即:20H~2FH送30H~3FH
代碼: ORG 0000H JMP MAIN ORG 0030H MAIN:MOV R0,#20H MOV R1,#30H LOOP:MOV @R0,#1234H MOVA,@R0 MOV @R1,A INC R0 INC R1 CJNE R1,#30H,LOOP JMP $ END
2)將外部數據存儲器2000H~200FH單元的十六個數傳送至內部數據存儲器的30H~3FH 代碼: ORG 0000H JMP MAIN ORG 0030H MAIN: MOV DPTR,#2000H MOV R1,#30H LOOP:MOVX @DPTR,#12H MOVX A,@DPTR MOV @R1,A INC DPTR INC R1 CJNE R1,#40H,LOOP JMP $ END
總體心得體會:
第一次做實驗主要是熟悉了解了下單片機編程軟件的使用,開始接觸時在對其軟件不是太了解的情況下實驗編程做的確實很亂,不清楚該怎樣進行,比如不知如何進行對指令的調試,也不清楚該如何觀察結果,沒有一個整體的概念,所以在了解其開發環境上花了不少時間。經過一段時間的摸索后也終于了解了其具體的使用,也能夠順利的對指令的編程運用。運行指令時遇到的一些問題需要注意的也在上面各題中做了說明。還有需要注意的是:進入軟件仿真時需要對存儲空間進行查看的方法是在Address窗口中輸入:d:00h 顯示內部數據存儲器從00h開始的單元; x:1000h 顯示外部數據存儲器從1000h開始的單元; c:0000H 顯示程序存儲器內容。還有由于偽指令 END 定義的原因,在程序末需加一條死循環調轉指令(如 JMP $)使程序不會進入其他未知空間執行其他指令。實驗
二、加、減法實驗
1. 實驗目的
1)正確使用單片機的加減運算指令
2)掌握不同指令對于程序狀態字的影響及程序狀態字的意義、用處 3)掌握ADD,ADDC,SUBB和DA A等指令的用法 4)學習模塊化程序設計方法 2. 實驗內容
1)編寫3字節二進制加法子程序,并用主程序調用不同的加數和被加數來檢測該子程序的正確性。需考慮有進位和無進位情況。程序入口為: 加數:22H,21H,20H三字節,22H為最高位
被加數:32H,31H,30H三字節,32H為最高位
程序出口為: 23H,22H,21H,20H四字節,23H為最高位 例如:地址:23 22 21 20 32 31 30 執行前數據: 01 23 45 FF 01 01 執行后數據:01 00 24 46
代碼:
ORG 0000H AJMP MAIN ORG 30H MAIN: MOV 22H,#01H MOV 21H,#23H MOV 20H,#45H MOV 32H,#0FFH MOV 1H,#01H MOV 30H,#01H ACALL ADDI HERE:JMP HERE ORG 100H ADDI: PUSH PSW MOV R0, #20H;加數1地址、和的地址 MOV R1, #30H;加數2地址 CLR C MOV R2, #3;循環3次 LOOP: MOV A, @R0;取 ADDC A, @R1;加 MOV @R0, A;存 INC R0 INC R1 DJNZ R2, LOOP CLR A ADDC A, #0;得到進位 MOV 23H, A;保存 POP PSW RET END
2)編寫三字節二進制減法子程序 入口:被減數: 52H,51H,50H, 50H為最低位
減數: 42H,41H,40H, 40H為最低位
出口:差:外部數據存貯器2003H~2000H(2000H為最低位)用主程序調用多組數據來調試,需考慮無借位和有借位兩種情況。例如:
執行前:地址: 52 51 50 42 41 40
數據: 90 80 70 10 10 10
執行后:地址: 2003 2002 2001 2000
數據: 00 80 70 60 代碼:
ORG 0000H AJMP MAIN ORG 30H MAIN: MOV 52H,#90H MOV 51H,#80H MOV 50H,#70H MOV 42H,#10H MOV 41H,#10H MOV 40H,#10H ACALL SUB1 HERE:JMP HERE SUB1: PUSH PSW MOV R0, #50H;被減數地址 MOV R1, #40H;減數地址 MOV DPTR, #2000H;差的地址 CLR C MOV R2, #3;循環3次 LOOP: MOV A, @R0;取 SUBB A, @R1;減 MOVX @DPTR, A;存 INC R0 INC R1 INC DPTR DJNZ R2, LOOP CLR A SUBB A, #0;得到借位 MOVX @DPTR, A;存 POP PSW RET END
3)編寫10位十進制加法子程序(十進制數采用壓縮BCD碼存放)入口: 加數:24H—20H,低地址放低字節
被加數:29H—25H,低地址放低字節
出口 和:4005H—4000H,低地址放低字節
要求調用多組數據調試,注意觀察PSW的變化,理解DA A指令的含義。例如:
執行前地址:24 23 22 21 20 29 28 27 26 25
數據:12 34 56 78 90 88 99 33 12 74
執行后地址:4005 4004 4003 4002 4001 4000
數據: 01 01 33 89 91 64
代碼:
ORG 0000H AJMP MAIN ORG 30H MAIN: MOV 24H,#12H MOV 23H,#34H MOV 22H,#56H MOV 21H,#78H MOV 20H,#90H MOV 29H,#88H MOV 28H,#99H MOV 27H,#33H MOV 26H,#12H MOV 5H,#74H ACALL ADD2 HERE:JMP HERE ADD2: PUSH PSW MOV R0, #20H;加數1地址 MOV R1, #25H;加數2地址 MOV DPTR,#4000H CLR C MOV R2, #5;循環5次 LOOP: MOV A, @R0;取 ADDC A, @R1;加
DA A;調整為BCD碼 MOVX @DPTR, A;存 INC R0 INC R1 INC DPTR DJNZ R2, LOOP POP PSW RET END
第五篇:單片機實驗
實驗一清0、移數
將片內20H~2FH及片外0010H~001FH單元清0;
然后將片內30H~3FH的數據移到片外0000H~000FH中;判斷:
若(30H)≤10,則求其平方存到31H中,并將位00H置1(其它位清0)若(30H)=10,則將AA存到31H中,并位01H置1(其它位清0)若(30H)≥10,則減10存到31H中,并位02H置1(其它位清0)
實驗二加法、排序
有兩個長度為10的無符號數分別放在片內20H和30H為首的存儲單元中(低位),求其對應項之和(帶進位位),結果放在40H為首的單元中(若最高位有進位則存在后續單元中),然后按升序排列放在50H為首的單元中
實驗三查表、散轉
設有一表格,表中數為:00H、11H、22H、33H、44H、55H、66H、77H、88H、99H、AAH、BBH、CCH、DDH、EEH、FFH。根據片外0001H單元的低4位的數,取出表中相應的值存到片內30H中;根據片外0001H單元的高4位的數,將片內RAM區中可位尋址的相應的位置1(從位00H~位0FH,只可有一個位地址為1)
實驗四外中斷
P1.0~P1.7接8個發光二極管,管腳INT0、INT1接兩個按鍵,分別定義為“L”和“R”。
要求:上電全滅,按 “L”(或R)鍵,最右(左)側燈亮,每按一次“L” ”(或R)鍵,則亮的燈向左(右)移一位,當移到最左(右)端時,燈全滅
實驗五定時器
P1.0、P1.1分別接兩個發光二極管,INT0腳接
一按鍵做開關,按一次開關,則啟動,兩個發
光管一亮一滅,亮滅時間均為1秒;再按一次
開關,則關閉,即兩個發光管都滅。
實驗六定時器、計數器
P3.2口輸出周期為2S的方波,T1口為脈沖輸入端,記錄輸入的脈沖個數,脈沖個數由P1口所接的8個數碼管顯示(二進制),設一按鍵作為開關控制系統運行,關閉時數碼管全滅,P3.2無輸出。