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