第一篇:c語言編寫單片機感想
用C語言對單片機編程感想
起先接觸單片機,單片機的程序是用匯編語言編寫的。匯編語言是面向機器的低級語言,保持了機器語言的優點,具有直接和簡捷的特點,目標代碼簡短,占用內存少,執行速度快,是高效的程序設計語言。但對于一些復雜的程序,匯編語言就顯的繁瑣,并且效率不高。而C語言簡潔緊湊、靈活方便,數據類型豐富。C語言的最大的優點在于它的可移植性好。因此C語言對單片機的一些復雜程序就體現出它的優勢。單片機是一塊在集成電路芯片上集成了一臺有一定規模的微型計算機。單片機的應用到處可見,應用領域廣泛,主要應用在智能儀表、實時控制、通信、家電等方面。因此學習單片機是非常必要的。
在用匯編語言編寫MCS–51單片機程序必須要考慮其存儲器結構,尤其必須考慮其片內數據存儲器與特殊功能寄存器的使用以及按實際地址處理端口數據。
用C語言編寫的MCS–51單片機應用程序,則不用像匯編語言那樣須具體組織、分配存儲器資源和處理端口數據,但在C語言編程中,對數據類型與變量的定義,必須要與單片機的存儲結構相關聯,否則編譯器不能正確地映射定位。
C語言編寫單片機應用程序時,需根據單片機存儲結構及內部資源定義相應的數據類型和變量,而標準的C語言程序不需要考慮這些問題。
C51包含的數據類型、變量存儲模式、輸入輸出處理、函數等方面與標準的C語言有一定的區別。其它的語法規則、程序結構及程序設計方法等與標準的C語言程序設計相同。C51的語法規定、程序結構及程序設計方法都與標準的C語言程序設計相同,但C51程序與標準的C程序在以下幾個方面不一樣:
(1)C51中定義的庫函數和標準C語言定義的庫函數不同。標準的C語言定義的庫函數是按通用微型計算機來定義的,而C51中的庫函數是按MCS-51單片機相應情況來定義的。
(2)C51中的數據類型與標準C的數據類型也有一定的區別,在C51中還增加了幾種針對MCS-51單片機特有的數據類型。
(3)C51變量的存儲模式與標準C中變量的存儲模式不一樣,C51中變量的存儲模式是與MCS-51單片機的存儲器緊密相關。
(1)C51與標準C的輸入輸出處理不一樣,C51中的輸入輸出是通過MCS-51串行口來完成的,輸入輸出指令執行前必須要對串行口進行初始化。
(5)C51與標準C在函數使用方面也有一定的區別,C51中有專門的中斷函數。
學習單片機技術的關鍵,也就是學習編程,學習編程先要學習指令系統。掌握指令的準確含義、運用條件以及與相關硬件資源的關系;了解硬件資源,諸如內存、中斷、計數器、計時器和I/O,以及外部資源等。
其實現在很多人用C語言編程,匯編似乎很落伍了,但是,它還是較機器語言外最直接的描述語言,但是匯編能清楚的反應單片機是怎么樣工作的。學習編程的初級階段,可以從讀懂一小段程序開始,由簡到繁,由淺入深,逐步到讀懂一個較短的完整程序。借鑒現有程序,為一個新的目的修改程序,逐步熟練了就可以運籌資源架構程序。
程序就要會分析程序。程序與文章一樣,也有段落,一段程序應該有個明確的目的,分析程序要有段落和架構的概念。不管程序有多長,將它分成若干個段落,簡化成架構框圖,程序的結構和目的就清晰可見了,也有助于編寫程序。
編寫程序,往往一氣呵成,這時就不太會注意添加注釋,其實注釋很重要,有助于日后的修改,以及程序的可讀性。
要學好單片機不光要會編程,還有重要的一部分是外圍電路的拓展,這就要求我們對數電和模電有很好的基礎。運用一些芯片來使單片機組成的電路具有更加強大的功能。因此學習單片機是不斷嘗試和調整的過程,在這個過程中雖然有這樣或那樣的問題,但能收獲許多知道,以及體會成功的歡樂。
第二篇:C語言于單片機的編寫感想
C語言于單片機的編寫感想
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Y=max(m,n)這指的是y=m和n中最大的
這就是C語言和單片機語言的一個思想 C語言和單片機主要是靠邏輯思想來編程。但兩者之間也有差別: 應用的函數有的地方不同 編程的格式不同
功能相對而言我感覺C語音更強大一些。C語言真對的是系統 單片機主要是針對機
熟練運用這兩種就是現在計算機與自動化機械的基礎 學習函數應由淺到深,易于理解。算法也是其主要內容
算法的其中一種在于延時。
延時的作用多用在控制動作的次序以及時間間隔 C++是比較常用的C語言工具
? 此外還有VB等等
? 內容的編寫主要根據目的任務而定 ? 內容編寫應盡量工整,便于讀懂和檢查
? 注意編寫程序的循環的應用,應避免出現死循環。? 注意全局的的變量,不要造成變量沖突 ? 編程模版大致相同。
第三篇:C語言單片機嵌入式軟件編寫要點
C單片機嵌入式軟件
本質是:
在單片機裸機上寫一個操作系統。
技術范圍:
軟件工程。
具體指標:
一,模塊化。
二,層次化。
三,可讀性,可擴充性(中斷程序少做事)。四,可移植性。
五,追求邏輯簡單,不追求占用空間最少。
六,條件判斷可以重復判斷,追求邏輯和時間解耦。七,可以重復清理現場,提高軟件抗干擾能力。八,有心得,請繼續增加,大家共享。
第四篇:單片機感想
確定課程設計作品——>網上查找相關資料/購買開發板(魏凌同學私人提供)——>程序代碼/開發板接線——>檢查能否正常運行/找錯,修改——>功能展示——>整理資料
從最開始確定小組課程設計的作品為電子鎖,然后在網上查找相關資料,再一點一點地編寫修改程序代碼,開發板接線,最后運行。期間出現的問題真的算是蠻多的,一開始毫無頭緒,程序代碼有些搞
不懂,線也不知道怎么接,后來,基本上都是組長魏凌同學完成的。在這次實踐中,我才深深意識到自己單片機理論知識是有很大欠缺的。
通過這次的單片機課程設計,我了解到學習單片機沒有捷徑,不能指望兩三天就學會,要堅持不懈,重在積累。單片機是一門應用性和實踐性很強的學科,要多動手,多做實驗。在實踐的過程中,發現問題,想辦法解決問題。同時也可以學會參考別人的程序,減少自己琢磨的時間,迅速提高自己的編程能力。在碰到問題時,可以借助網絡來搜尋答案和對自己有幫助的問題,一定會有所收獲。另外,小組要團結,小組之間要多交流,技術是靠不斷的積累和交流才會進步的。
近年來,隨著計算機技術的迅速發展,單片機的越來越多的應用到了我們的生活中,但是單片機并不是一門純理論課,它要求有一定的時間能力,是一門理論與實踐相結合的課。在本學期,我們學習了單片機的原理及簡單應用,由淺入深,但是單單理論知識對于我們來說未免太過枯燥和抽象。在完成課程設計的過程中,我們更多的將理
論和實踐結合,不僅幫助我更好的理解了課本上的知識,鞏固了以前所學過的知識,也培養了我的動手能力。在實踐的過程中難免遇到一些困難,但是通過與組員的溝通和交流也成功解決了。最后的成品電子鎖出來后我收獲了滿滿的感動。
在這幾周的實踐中,我的實際動手能力和思考能力得到了很好的鍛煉,同時在與組員的思維火花碰撞過程中,我的思維得到了啟發,和人溝通的能力也得到了很好的鍛煉。
總的來說,我很感謝這次的課程實踐,也謝謝老師在這一學期的課程中對我們的悉心指導,更感謝我的組員們,沒有他們我就完成不了此次的課程設計。
通過這次的單片機課程設計,讓我們受益匪淺,確實單片機是一門很值得我們去深入研究拓展的課程。原來很多本來認為很神奇的東西還可以自己動手做出來,從理論到實踐,在這段日子里,我們學習到了很多很多東西,無論是從知識上還是實踐上,自己做單片機設計實物開闊了我們的眼界,很好的提高了我們對書本上知識的理解和應用,并且也在一定程度上提高了我們的團隊協作能力!我相信這在以后的生活道路上是一直受用的。
在這次自己動手的過程中,我們也遇到許許多多困難。我們通過各種途徑去自己解決這些問題,為此我們一起泡了很久的圖書館來查閱資料。從中我們也發現了自己對一些知識的掌握不夠,還有動手能力不夠強,希望以后可以通過更多的實踐來鞏固加強!
回顧起此次單片機課程設計,至今我仍感慨頗多,的確,從選題到定稿,從理論到實踐,在大半月的日子里,可以說得是苦多于甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟我第一次做的課程設計作品,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說、、、、、、、、、、(你自己舉點例子好了)對單片機匯編語言掌握得不好……通過這次課程設計之后,一定把以前所學過的知識重新溫故。雖然我們在這次課程設計中遇到了很多問題,但總歸算是完成了我們的作品,我們也從其中學到了很多在書本上無法學到的知識。
第五篇:學習單片機感想
人的一生是一個不斷學習、不斷成長的過程。轉眼間,研究生的學習生涯結束了,走上新的工作崗位?;仡^看看,發現自己不知不覺已經走過了五年的單片機學習之旅。
在2003年最初接觸單片機的時候,在我心中覺得51就是單片機,單片機就是51,根本不知道還有其他單片機的存在。那時候老師只教會了我們匯編語言,根本不知道用C語言也可以進行單片機開發。幸運的是,我加入了單片機興趣小組,在老師的指導下,做了一系列實驗,有“基于DS18B20的溫度采集系統”、“有基于164的移位寄存器的燈光控制系統”、“有步進電機和直流電機的控制系統”。這時候我才發現,這是學習單片機的一個最好途徑——在實踐中領悟理論,用理論指導實踐。在上課的整整一個學期中,雖然老師講得很詳細,但是大部分概念都是到了實際動手做東西的時候才弄明白的。而且在經歷了迷惑之后再搞清楚,印象就特別深刻。直到現在我對那些概念和接口都非常清晰。其實我也很慶幸學習和使用了兩年多的匯編語言。由于有這些鍛煉,我對單片機底層結構和接口時序就弄得很清楚。在使用C語言開發的時候,優化代碼和處理中斷也就不會太費勁。我覺得,雖然現在絕大部分單片機開發都使用C語言,甚至有些公司還推出了圖形化編程的工具,這樣對于項目的開展從時間上快了很多,在管理上也規范了不少,但是從學習和想深入掌握單片機精髓的角度來說,還是需要熟練掌握匯編語言的使用。
機會總是青睞于有準備的人。也許有了前面一段時間的理論和實踐的積累,我才慢慢得到了一些參加科技競賽和參與科研項目的機會。在參加第一屆浙江省機械設計競賽的時候,我們設計的由多單片機系統協調控制的“月球車”機器人奪得了唯一的一個特等獎。這個競賽給我最大的收獲是我對單片機的認識改變了,它不再僅僅是一門學科了,它是一個可以讓你的創意得到充分發揮的平臺。后來參與了“基于視頻分劃技術的鋼卷尺自動切零位機”、“電能表渦杠渦輪嚙合深度檢測系統”、“基于公共電話網的水表集抄數據路由器”、“高精度電感微位移測量系統”等一些實際的項目。在這些過程中,我發現只是精通單片機技術還不能很好的解決問題。體會最深的是,單片機只有融合到各種應用領域中,才能展現它的最大活力。然而單片機僅僅是一個工具而已,要做好單片機系統還需要各種應用領域的專業知識的支持。例如,在“基于視頻分劃技術的鋼卷尺自動切零位機”中,就需要搞清楚全電視信號的時序,弄明白鋼卷尺切零位機的工作原理,懂得怎么利用疊加在視頻信號中的橫豎線來進行刻度的瞄準等。沒有這些專業知識,就算單片機技術再厲害也不可能做好這個項目。脫離應用背景的單片機開發,就像一個沒有靈魂的軀體一樣。
隨著ARM的出現,我曾經認為,8位單片機可能在32位單片機的沖擊下就此走進歷史,可是很快就認識到我是錯誤的。隨著技術的革新和時間的推移,各大單片機公司紛紛將單片機朝著片上系統這個方向發展,集成了現在各種流行的技術和常用的模塊。我相信,在當前國內和國外的這個市場中,8位單片機應用的市場仍然是充滿生機,活力無限。在市場的不斷變化和技術的不斷更新過程中,8位單片機也會順應潮流不斷革新。
從我五年走過的路來看,單片機學習的過程應該是一個循序漸進、不斷學習、不斷積累的過程,可以分為三個階段。
第一階段:掌握開發單片機的必備基礎知識。首先是熟練掌握單片機的基本原理,其實各家各門的單片機其基本結構和原理都差不多,特別是共有的知識需要好好理解和掌握。例如,內核結構、內存分配、中斷處理、定時計數、串行通信、端口復用等一些最基本的概念和原理。除此之外,我們還需要具備模擬電子、數字電子、C語言程序開發知識以及原理圖和PCB
設計等一些技能。在進行系統開發的時候,進行原理設計、PCB布板、程序編寫、系統聯調這些工作都是在所難免的。
第二階段:在掌握好一款單片機原理和應用的基礎上,開始學習其他各家單片機的獨有技術,學不了那么多也要多了解了解。同時盡可能多地掌握單片機的一些外圍器件和常用電路,以備不時之需。有時候客戶要求低成本,那我們只好選用合鈦、義隆、華邦等這類臺灣芯片;如果客戶要求工業級的性能,那么我們就得從PIC、NEC、飛思卡爾、NXP等這些歐美和日式單片機中選擇;若要進行功耗的開發,選用MSP430系列應該有一定優勢;在進行測量儀器設計的時候,C8051和AduC842這類數?;旌闲酒惋@得比較方便。所以說最好每個類型的單片機都會一兩款,在實際項目選型中可以更加靈活。另外,要注意平時的技術積累。比如,在項目開發過程中將一些常用的接口程序和控制算法整理成模塊或者函數,在其他的項目開發中,有同樣或者接近的需求時馬上就可以使用,又快又好。
第三階段:在實際的項目開發過程中,不斷深化單片機應用技術,不斷積累應用行業的專業知識。例如,我完成了“高精度電感微位移測量系統”,就會對電感傳感器的測量機理和信號特性、測量電路的設計、電磁兼容處理、誤差修正和非線性處理等測控方面的專業技術有很深的認識。以后碰到類似的項目時,很多東西就可以直接利用了。有了扎實的單片機應用相關的基礎知識,并且熟悉掌握了幾款不同類型單片機的開發方法,再結合實際的應用背景,那么就可以隨心所欲,設計出性能最優、結構最合理的單片機應用系統。這是我最大的奮斗目標,我覺得這也應該是單片機應用的最高境界吧。
在這五年的學習中,有感慨、有遺憾、有憧憬、有希望,更重要的是我對單片機應用這個領域充滿熱情。由于才疏學淺、涉世未深,希望能與行業里的各位老師多多交流,不斷學習,不斷成長。