正如標(biāo)題所說,c語言是我們和各種芯片對話的語言(其他吹牛逼的話請去多找找專業(yè)書籍,我就不贅述了)。我在本張只會講解一些常用和簡單的用法,便于大家入門和熟悉單片機(jī)的程序的設(shè)計(jì)原理。
第一招,開門見山。
單片機(jī)是怎樣運(yùn)行的?它內(nèi)部是怎么設(shè)計(jì)的?這些問題,可以說是很重要,但也不重要(這句話,你品你細(xì)品,就是裝逼用的)。
其實(shí)單片機(jī)就認(rèn)識一個東西,他的一生最愛:main小姐。每次單片機(jī)只要蘇醒了(也就是給他點(diǎn)電,像打了雞血似的),它就會瘋狂的找尋它們女朋友(MAIN小姐)。當(dāng)他找到main小姐后,man小姐就會把它肚子里面的所有想法和要求告訴單片機(jī)。而單片機(jī)就像一個好丈夫,孜孜不倦的滿足main小姐的全部要求。最終換來的可能只是一句:你是個好單片機(jī),我們不合適。哈哈。。。
給你們看看 main 小姐的美妙身材:
main
{
// ........... 我們存放所有流程的地方。
}
第二招,認(rèn)祖歸宗。
舉個例子:比如在課堂上,老師叫小明,你給我滾出去。這時候小明會看看自己,然后老老實(shí)實(shí)的滾出去。但是如果班級里面沒有小明,那么同學(xué)們就會沒有反應(yīng)。這可以理解為簡單的死機(jī)了。哈哈哈。
所以,我們一定要告訴單片機(jī),我們想讓誰干嘛。
比如:
int nums = 10;此時,我們用int(類似的還有char ...)來告訴單片機(jī),臭小子,我現(xiàn)在需要生個孩子,它的名字叫做 nums,它現(xiàn)在初始值是10(單片機(jī)中的所有東西都只是數(shù)字)。這句話只要單片機(jī)讀完或者運(yùn)行完,那它知道我一個兒子叫 nums 并且也知道 nums 等于 10。
nums = nums + 1;我隨后想讓我兒子自己加一下。那好,我只需要告訴單片機(jī),把我兒子加1,至于為什么是 nums = nums + 1 而不是 nums + 1 = nums 。這就好比吃飯為什么要用筷子,因?yàn)槲覀兪侵袊?,這是我們的驕傲。(其實(shí)就是編譯器是別人寫的,我們必須準(zhǔn)守這樣的規(guī)則一樣)。
第三招,明碼標(biāo)價
比如,出門你去買衣服,或者買手機(jī)。這手機(jī)你再喜歡一看標(biāo)價:10w,你心里就在想,臥槽,老子窮屌絲,你這么貴,我怎么買。這樣你連頭都不帶回的就溜了。
單片機(jī)也是會這樣的,比如我們告訴單片機(jī),如果我要的這個兒子比 10 大,那你把它丟掉。如果比 10 小,那你就給他加點(diǎn)。這樣單片機(jī)每次檢查你兒子的時候就會看他是不是比10大。
代碼如下:
if(nums > 10){
丟掉
}else{
nums = nums + 1
}
第四招,偷工減料
我想知道大家都很不愿意做一些傻瓜式,枯燥,重復(fù)性的事情吧。但是單片機(jī)沒得選,它不做就得我們自己來做,每個人都是貪婪的,我們都喜歡偷懶,那就把我們的輕松轉(zhuǎn)嫁到單片機(jī)的身上了,這樣我們就輕松了。
舉個例子:比如我現(xiàn)在需要找到 1-100 之間的偶數(shù)。
第一種,自己沒事找事型:
首先按照第二招,我們要告訴單片機(jī)我們又要一個孩子了,比如:int nums = 1;這時候我們只需要檢測 i 是不是 2 的倍數(shù)。然后讓 nums = nums + 1,再檢測一次。我感覺從 1 - 100 我需要寫 n 個。
nums 是不是2 的倍數(shù)?
nums = nums + 1
nums 是不是2 的倍數(shù)?
nums = nums + 1
nums 是不是2 的倍數(shù)?
nums = nums + 1
....
自我寫個 100 遍,我tm又不是默寫出錯了,憑什么讓我罰寫。這時候我們觀察一下,其實(shí)這些都是有規(guī)律的,他總是檢查,檢查完后加1.這樣我們的先輩們就給我們提供了一個更好的解決方式:
for(nums = 1;nums < 100;nums ++){
nums 是不是2 的倍數(shù)?
}
臥槽,真的這么簡單嗎?是的就是這么簡單。原本幾百行的代碼,在你面前被縮減成了 3 行。臥槽,你真牛逼。但是對于單片機(jī)而言,它的工作量沒有太大的變化,我們確實(shí)節(jié)約了不少的時間。
====
我們開發(fā)的主要流程,以及一些步驟:
- 我們需要使用 C 語言編寫一段符合 C 語言規(guī)范的程序。(這時候你如想想深入學(xué)習(xí),擴(kuò)展一下自己的 C 語言功底)。
- 我們需要找到合適的編譯器(比如,keil,iar,gcc 。。。)將 C 語言文件轉(zhuǎn)化你要燒錄芯片的二進(jìn)制文件(這個類型的文件可以是,hex,bin,mot。。。哪怕是 txt 類型文件也無所謂,主要看編譯器可以生成什么樣的文件)。
- 想辦法把編譯器生成的二進(jìn)制文件燒錄到單片機(jī)中。這樣單片機(jī)就能按照你編寫的 c 語言邏輯運(yùn)行了。
燒錄的部分細(xì)節(jié)說明:編譯生成的文件只是一個載體,就是說這個文件里面存放了我們要燒錄到單片機(jī)中的信息。其實(shí)燒錄過程就是講二進(jìn)制文件中的信息解析出來,然后存放到單片機(jī)當(dāng)中,至于這個流程細(xì)節(jié)怎么實(shí)現(xiàn)的不知道也沒關(guān)系,因?yàn)槟阒灰獣镁涂梢粤恕?/p>
====
至此,你基本就需要會了 C 語言在單片機(jī)里面的基本簡單運(yùn)用方式。如有問題請留言,我將一一解答
下一節(jié)給大家初略的介紹單片機(jī)的三頭六臂!