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