第一篇: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ù)增加,大家共享。
第二篇: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中定義的庫函數(shù)和標(biāo)準(zhǔn)C語言定義的庫函數(shù)不同。標(biāo)準(zhǔn)的C語言定義的庫函數(shù)是按通用微型計(jì)算機(jī)來定義的,而C51中的庫函數(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)。? 注意全局的的變量,不要造成變量沖突 ? 編程模版大致相同。
第四篇:學(xué)習(xí)plc單片機(jī)組態(tài)軟件,嵌入式的一些心得
學(xué)習(xí)plc,單片機(jī),組態(tài)軟件,嵌入式的一些心得
學(xué)習(xí)plc,單片機(jī),組態(tài)軟件,嵌入式的一些心得
如果專注于某一興趣,且投入進(jìn)去,那么一定會(huì)有一種感覺:學(xué)習(xí)真的沒完沒了,永遠(yuǎn)有學(xué)不完的東西!
plc,51單片機(jī),嵌入式系統(tǒng),組態(tài)軟件等等這些東西要學(xué)精學(xué)透真的必須踏踏實(shí)實(shí)的下功夫去鉆研,要花大量的時(shí)間和精力!同時(shí)這些知識(shí)必須不斷溫習(xí)和鞏固且要去實(shí)踐,否則即便是當(dāng)時(shí)理解了學(xué)會(huì)了,過些時(shí)日有些知識(shí)點(diǎn)便會(huì)遺漏掉。
上周用51單片機(jī)開發(fā)板+固態(tài)繼電器+DC5V手機(jī)充電器+DC24V開關(guān)電源+DC24V繼電器+飛利浦電風(fēng)扇紅外遙控器這些硬件自己動(dòng)手做了一個(gè)帶溫度自動(dòng)控制功能的AC220V遙控電源;雖然體積比較大,但是畢竟是自己的一件DIY作品,還是比較喜歡的。在動(dòng)手制作的過程中,對(duì)硬件的掌握有了更深的認(rèn)識(shí),尤其是51單片機(jī)1602液晶顯示出現(xiàn)的一些問題,這些問題如果不是自己動(dòng)手是不可能發(fā)現(xiàn)的!
本周,終于編寫plc程序并動(dòng)手實(shí)踐接線了。以前總是看書,看程序例子,雖然花了很多時(shí)間感覺理論上已經(jīng)學(xué)得很好了,但是通過實(shí)踐發(fā)現(xiàn)理論和實(shí)踐的距離還是很大的!首先是筆記本電腦和plc的通信問題,我用的是USB通信電纜,即USB--RS485串口通信,打開編程軟件后怎么也通信不上,為了這個(gè)通信問題我?guī)缀跏且煌砩蠜]有睡好覺,第二天還不斷打電話請(qǐng)教別人,結(jié)果是電話費(fèi)浪費(fèi)不老少問題依然沒有解決。直到第三天通過自己不斷實(shí)驗(yàn)和設(shè)置終于把通信問題解決了!在這個(gè)過程中,不斷懷疑是不是通信電纜或者plc或者驅(qū)動(dòng)程序有問題,搞得人真的好憔悴。通過實(shí)踐發(fā)現(xiàn)西門子的編程軟件功能真的太強(qiáng)大了!對(duì)于plc的接線,工作電源等等資源有了更深的認(rèn)識(shí)。真的是:實(shí)踐出真知!
接下來就要?jiǎng)邮謱?shí)踐通過上位機(jī)組態(tài)軟件來控制plc了。這也是一個(gè)大工程。
以前總希望自己的一些同事,年輕的大學(xué)生多學(xué)點(diǎn)業(yè)務(wù)知識(shí)。現(xiàn)在看來真的不要去學(xué)習(xí)這些東西了。玩硬件是很花錢的,花錢耗精力不說,關(guān)鍵是不能為自己帶來經(jīng)濟(jì)效益,而且領(lǐng)導(dǎo)根本就不重視技術(shù)!在國(guó)企,想通過真本事改變命運(yùn)真的幾乎不可能,要想出頭還得下血本送禮請(qǐng)客溜須。
自從學(xué)上這些東西之后,我是欲罷不能了。因?yàn)橹挥袕?qiáng)烈的興趣而且熱愛這些東西,一個(gè)人才能孤獨(dú)的堅(jiān)持學(xué)習(xí)。也只有在電子世界我才能有一種歸屬感!
對(duì)于愛學(xué)習(xí)的人來說,永遠(yuǎn)有學(xué)不完的東西要學(xué),永遠(yuǎn)覺得時(shí)間和精力不夠。然而現(xiàn)實(shí)是:凡是愛學(xué)習(xí)的人,愛好鉆研技術(shù)的人一般是混得不怎么樣的人;試想,哪個(gè)為官者會(huì)花時(shí)間和精力去讀書鉆研專業(yè)技術(shù)?
世上的眾多情感中,我唯獨(dú)不信愛情!我相信絕大部分人都是將就過日子。什么是愛情?年輕人會(huì)有許多美好的憧憬,然而,現(xiàn)實(shí)很殘酷!愛情是什么?愛情是選擇,你有得選擇嗎?你有資本選擇嗎?
人只會(huì)在危難的時(shí)候才能感悟出深刻的道理!身體是人類的萬欲之源,如同厚德載物的天地。“身體好,才是真的好!”,試想,有誰會(huì)躺在棺材里數(shù)鈔票,追逐名利,談情說愛?恐怕還沒來得及“試想”,老婆早就改了姓!所以說,一定要珍惜身體,哪怕是行尸走肉也要健健康康的行走!
原以為,組態(tài)軟件很簡(jiǎn)單就能學(xué)會(huì)。組態(tài)王和MCGS組態(tài)軟件不知道哪個(gè)更好?就先學(xué)MCGS吧!感覺組態(tài)軟件的腳步程序和一些函數(shù)必須要非常熟悉才能組建一個(gè)較完善的工程。組態(tài)軟件和plc構(gòu)建工程時(shí),plc的程序怎么寫呢?這個(gè)問題是學(xué)習(xí)組態(tài)軟件的最大難點(diǎn)。
STM32的學(xué)習(xí),有所停滯;一定要堅(jiān)持把STM32學(xué)透,哪怕花兩年的時(shí)間。最終要用STM32和固態(tài)繼電器設(shè)計(jì)出一個(gè)帶液晶界面功能強(qiáng)大的近似于萬能的plc。不過,這個(gè)plc只能用c語言編寫程序。
人必須要學(xué)會(huì)變態(tài)!
第五篇:為什么嵌入式要用c語言編寫
為什么嵌入式軟件要用C語言編寫
嵌入式軟件一般需著重考慮三個(gè)方面:性能、安全性和開發(fā)效率(包括代碼可移植性等)。性能(運(yùn)行效率)方面,匯編明顯是最高的。但匯編在安全性和開發(fā)效率方面明顯是最低的(不考慮機(jī)器語言--)。所以除非是要求極端高性能的嵌入式平臺(tái)(或者是系統(tǒng)實(shí)在是太簡(jiǎn)單而沒辦法支持高級(jí)語言,orz--),使用匯編語言的不多。
相對(duì)于C,其它高級(jí)語言的運(yùn)行效率一般比較低(C程序運(yùn)行效率可達(dá)匯編的80%,而其它程序可能只有C程序的80%),源代碼和目標(biāo)代碼也可能會(huì)比較長(zhǎng)。對(duì)于嵌入式系統(tǒng),性能的瓶頸是非常致命的,很可能某種用C編寫的程序可以達(dá)到預(yù)期目標(biāo),而用其它語言使用同樣算法編寫的程序就不行。(不過也正因?yàn)檫@個(gè)原因,在嵌入式系統(tǒng)上實(shí)現(xiàn)的可用編程語言并不多。)
基于系統(tǒng)的用途,安全性設(shè)計(jì)嵌入式系統(tǒng)也是必須考慮的一個(gè)部分(比如說用于醫(yī)療衛(wèi)生設(shè)施),必須盡可能在開發(fā)期間減少潛在的錯(cuò)誤。這方面C不占優(yōu)勢(shì),但如果保證代碼嚴(yán)格遵守安全規(guī)范,也可以接受(相對(duì)而言,匯編就郁悶了--)。
開發(fā)效率和安全性類似,也在可接受范圍之內(nèi)。
也可以用匯編編寫c語言也好 匯編也好 或者更高級(jí)的語言都是跟人看和些的讓人的思維能夠描述出來
然后通過編譯環(huán)境編譯成計(jì)算機(jī)能看的懂的東西 不同的語言 編譯完以后 邏輯上其實(shí)都是一樣的然后交給芯片去運(yùn)行要說效率c沒有匯編效率高
舉個(gè)例子
一個(gè)韓國(guó)工人(計(jì)算機(jī))只會(huì)懂韓語(機(jī)器語言)領(lǐng)導(dǎo)有一個(gè)中國(guó)人(程序員)只會(huì)說漢語(C語言)另一個(gè)日本人(程序員)只會(huì)說日語(匯編)還有一個(gè)西班牙人(程序員)只會(huì)說西班牙語(另一種高級(jí)語言比如java)想讓韓國(guó)人做同樣一個(gè)事情中國(guó)人用漢語說完經(jīng)過翻譯(編譯系統(tǒng))變成韓國(guó)語韓國(guó)工人明白了要干什么日本人用日語通過翻譯 變成韓國(guó)語韓國(guó)工人也知道要干什么了另一個(gè)西班牙人 用西班牙語 翻譯成韓國(guó)語讓韓國(guó)人干的是同一個(gè)活翻譯完的結(jié)果是一樣的 只是不同語言表達(dá)罷了c語言更方便 移植性更強(qiáng)(比匯編)
我目前接觸的一般的嵌入式上層軟件 c語言就可以搞定
如果遇到比較嚴(yán)格的或者軍工的甲方
c語言搭鉤框架,然后剩下的全部用匯編語言實(shí)現(xiàn)
之所以用c 是因?yàn)閏比匯編操作簡(jiǎn)單
調(diào)試方便 開發(fā)效率較高
但是代碼運(yùn)行效率可能沒那么
而且匯編可以精確定時(shí),代碼運(yùn)行時(shí)間是可以計(jì)算出來的因?yàn)镃效率高~相對(duì)其他高級(jí)語言代碼所占用的空間少~通用性也不錯(cuò)
所以要用C嘍
嵌入式的芯片ROM有限