2-《电子入门趣谈》第一章_一切从单片机开始-1.1单片机概述
?
接下來,我將帶您走入一個(gè)神奇的世界。
? ? 我知道,當(dāng)您拿起這本書翻開第一頁的時(shí)候,您心里肯定還是在嘀咕“我到底該如何入門電子科技呢?這個(gè)頭該怎么開呢?”。
? ? 好吧,我來告訴你,從單片機(jī)開始。
? ? 為何要從單片機(jī)開始,原因很簡單,這是一個(gè)科技入門的捷徑。請相信我,如果能把一塊單片機(jī)開發(fā)板學(xué)會(huì)了那基本上軟件編程和硬件電路知識(shí)就都能小有造詣了,因?yàn)槟阒挥锌炊穗娐穲D才能編出正確的程序,將程序都玩通了之后還可以試著自己設(shè)計(jì)新的電路,這是一個(gè)互相促進(jìn)的過程,這也是好多電子愛好者達(dá)成的共識(shí),好多人就是從單片機(jī)開始入門科技制作,然后他們學(xué)會(huì)了編程,學(xué)會(huì)了電子電路的實(shí)戰(zhàn)技巧,然后又試著開始制作屬于自己的競賽機(jī)器人,再然后獲得了很多個(gè)科技獎(jiǎng)項(xiàng),再然后你會(huì)發(fā)現(xiàn)他們學(xué)習(xí)其他的東西(尤其是和軟硬件沾邊的)往往比一般人要快,再然后等他們上研究生了或者畢業(yè)了往往要比別人有更好的發(fā)展前景,呵呵,這是一條因果使然的人生軌跡,而且,并不夸張。
? ? 好吧,不多說廢話了。
? ? 諸位看官。
? ? 讓我們直接進(jìn)入今天的主題,單片機(jī)!
1.1 單片機(jī)概述
??? 1.1.1 啥叫單片機(jī)
? ? 您有時(shí)候也許會(huì)聽到周圍的大神們常常說道這樣的字眼,像什么“單片機(jī)”、“單片機(jī)開發(fā)板”、“單片機(jī)學(xué)習(xí)板”之類的,我第一次聽到“單片機(jī)”三個(gè)字的時(shí)候曾天真的以為單片機(jī)就是一臺(tái)很高深莫測的機(jī)器,也許長得很像一輛卡丁車,也許就像一部手機(jī)吧。但是很快就發(fā)現(xiàn)了自己被騙了,其實(shí)“單片機(jī)”還不如直接叫“單片”,因?yàn)樗_確實(shí)實(shí)的就是一個(gè)孤單的小芯片。
? ? 那時(shí)候我經(jīng)常懷著一份好奇,到底單片機(jī)是個(gè)什么東西,于是免不了的就往圖書館跑跑,結(jié)果不要緊,一眼望去《單片機(jī)基礎(chǔ)教程》《51單片機(jī)接口技術(shù)》《單片機(jī)原理》《51單片機(jī)設(shè)計(jì)實(shí)例》。。。我勒個(gè)去,滿滿的一屋子都是關(guān)于單片機(jī)的書,隨便的抽出這么幾本,發(fā)現(xiàn)不是講一些基本理論讓人看了一頭霧水,就是擺一堆亂七八糟的電路原理圖不知所云的。唉,就沒有一本通俗點(diǎn)的書告訴我單片機(jī)到底是個(gè)啥嗎?
? ? 好吧,下面慢慢地告訴你,它到底是個(gè)啥。
? ? 根據(jù)經(jīng)驗(yàn),姑且以為初入門的親們往往有著兩個(gè)誤區(qū),這兩個(gè)誤區(qū)說大不大說小不小,但是當(dāng)親們成為大神之后再回看當(dāng)年這兩個(gè)錯(cuò)誤,就會(huì)哭笑不得。來看看這兩個(gè)想法你有沒有過呢?
? ? 1.單片機(jī)是一塊板子,上面有好多的芯片。
? ? 2.各種芯片工作是純靠板子上的電路完成的。
? ? 這兩個(gè)問題是不是有點(diǎn)似曾相識(shí)呢?如果沒有,那恭喜你,你已經(jīng)比很多學(xué)生入門的時(shí)候要聰明很多啦~
首先第一個(gè)問題,第一段已經(jīng)說了,單片機(jī)就是一個(gè)孤單的芯片,那塊大大的電路板叫做開發(fā)板,上面除了單片機(jī)(最小系統(tǒng)電路),還有各種芯片、數(shù)碼管、蜂鳴器、繼電器巴拉巴拉的。雖然單片機(jī)芯片的樣式、大小不同,什么直插式啦,貼片式啦,什么20引腳、40引腳啦,那都是浮云,重點(diǎn)是單片機(jī)就是一個(gè)片,而他的偉大之處正在于此,一個(gè)龐大的檢測和控制的核心,往往就是這小小的一個(gè)片兒。據(jù)知情人爆料,一個(gè)飛思卡爾單片機(jī)就有著控制一架波音747的能力,是不是有一種“哇塞”的感覺呢?
? ? 那么第二個(gè)問題,一個(gè)功能到底是怎么實(shí)現(xiàn)的呢?肯定不是純電路結(jié)構(gòu)啦,其實(shí)我們可以簡單地理解為,單片機(jī)就是一個(gè)大腦,它通過識(shí)別和控制引腳電平的變化來工作。我們結(jié)合下圖一起來看一下。
? ? 那是一個(gè)電阻,串聯(lián)著一個(gè)發(fā)光二極管,您可以把它理解成一個(gè)燈泡,現(xiàn)在我想把這個(gè)燈泡點(diǎn)亮,需要怎么辦?用打火機(jī)嗎?肯定不行!只要稍微懂點(diǎn)電子知識(shí)的大家都知道,只需要在右面加一個(gè)正電源,比如5V,左端加一個(gè)0電壓,俗稱“地”,OK,一個(gè)點(diǎn)燈的項(xiàng)目就完成了。
?????
? ? 接下來我對上圖做一個(gè)改裝。把“地”去掉,取而代之的是一塊長方形芯片,再擴(kuò)展成如下圖所示的樣子。
? ? 沒錯(cuò),中間的那個(gè)長方形的東西就叫單片機(jī),假如你想讓燈L亮起來,只需要讓P1.4那個(gè)地方(學(xué)名叫管腳)作用等同于“地”即可,你想讓燈L滅掉只需要讓P1.4管腳作用等同于“+5V”電源,而這些我們都可以通過編寫程序來實(shí)現(xiàn),具體怎么編寫程序這是后話暫且不表。各位再看P1.0管腳,目前的情況是,P1.0管腳通過了一個(gè)電阻直接連到了+5V電源,如果我這個(gè)時(shí)候按下了按鍵S,此時(shí)P1.0管腳會(huì)被短路直接接地,這個(gè)特性很有意思,單片機(jī)的P1.0管腳可以通過感應(yīng)自身是高電平(高電平是數(shù)字電子技術(shù)中的術(shù)語,在上圖中就是代表+5V電源電壓)還是低電平(同高電平一個(gè)道理,在上圖中代表“地”)來判斷您是否按下了S,有了這個(gè)功能我就可以實(shí)現(xiàn)一個(gè)很有生活氣息的小項(xiàng)目:通過按鍵控制一個(gè)燈的亮滅,當(dāng)P1.0檢測到有按鍵按下時(shí)就讓P1.4轉(zhuǎn)換一個(gè)電平狀態(tài),從而達(dá)到控制燈泡L亮滅的目的。這就是一個(gè)簡單的測量與控制系統(tǒng)。很多人在沒學(xué)習(xí)單片機(jī)的時(shí)候可能會(huì)認(rèn)為,按鍵部位通過一條線連接到P1.4處,然后按下按鍵燈就會(huì)亮。不知道你有沒有這樣認(rèn)為過呢?這樣雖然從原理圖上看起來是沒錯(cuò)的,但是單片機(jī)就悲催的毫無作用了……所以說,單片機(jī)就是可以控制一個(gè)引腳輸出高/低電平(電源電壓或者地)并可以檢測一個(gè)引腳輸入了何種電平的芯片。要實(shí)現(xiàn)這些功能,就需要我們親自動(dòng)手編寫程序并且將程序送給單片機(jī)來實(shí)現(xiàn),單片機(jī)就是憑著可以由用戶來編寫智能程序來實(shí)現(xiàn)各種功能而笑傲整個(gè)電子江湖,臭美去吧!
?
1.1.2 學(xué)習(xí)單片機(jī)
? ? 為啥要學(xué)?
? ? 單片機(jī)重要之處在于它的開發(fā)目的是將計(jì)算機(jī)的應(yīng)用推廣到智能儀表、數(shù)據(jù)采集、自動(dòng)測試、工業(yè)自動(dòng)化領(lǐng)域中,讓非計(jì)算機(jī)專業(yè)的工程技術(shù)人員能容易地掌握計(jì)算機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)、組裝和調(diào)試。???
? ? 與通用計(jì)算機(jī)如PC機(jī)相比,單片機(jī)結(jié)構(gòu)簡單,只要外加一些擴(kuò)展電路及必要的通道接口,就可以構(gòu)成各種計(jì)算機(jī)應(yīng)用系統(tǒng)。
? ? 再說點(diǎn)接點(diǎn)地氣的話,就像一開始提到的那樣,單片機(jī)是電子愛好者初學(xué)者們?nèi)腴T的一個(gè)不二捷徑,而且,相當(dāng)?shù)摹安欢?#xff01;
??? 怎么學(xué)?
? ? 不編程永遠(yuǎn)學(xué)不會(huì)單片機(jī)!
? ? 單片機(jī)是門學(xué)問呀,怎么學(xué)?想做題海戰(zhàn)術(shù)?呃,您老給出道題看看。檢驗(yàn)出真知,學(xué)單片機(jī)只能靠實(shí)踐。怎么實(shí)踐?編程!
? ? 就像人體會(huì)檢測身體狀況并做出反應(yīng)一樣,單片機(jī)功能也是如此。你的胃空了,你的大腦會(huì)識(shí)別傳來的信號(hào),然后輸出“餓”的信號(hào)讓你察覺。相似的,按鍵按下,某個(gè)管腳的電平置低,單片機(jī)識(shí)別電平變化并操縱連接LED的管腳置低電平。大腦有一套天生的系統(tǒng),會(huì)識(shí)別,知道識(shí)別到信號(hào)變化后進(jìn)行怎樣的操作。但是單片機(jī)怎么知道如何做呢?那就是靠你下載到里面的程序啦~
? ? 胃空了大腦會(huì)讓你感覺餓,腿抽筋了大腦會(huì)讓你覺得疼。那開發(fā)板上每個(gè)芯片也像身體的不同器官,有不同的信號(hào)變化和對應(yīng)的不同操作。因此你要學(xué)習(xí)對不同芯片的程序的編寫。
? ? 編程說難也難,說容易也容易,編程的根本目的就在于控制單片機(jī),由您來給單片機(jī)發(fā)口令,讓它執(zhí)行各種任務(wù),比如你對它喊“讓燈亮!”,它就老老實(shí)實(shí)的讓燈亮,再對它喊“睡大覺”,它就得心甘情愿的去睡大覺!只不過我們對單片機(jī)發(fā)口令的時(shí)候不是真的靠“喊”,而是靠“寫”,寫它能認(rèn)識(shí)的文字。懂點(diǎn)單片機(jī)的發(fā)燒友應(yīng)該都有這個(gè)體會(huì),編程有一個(gè)經(jīng)常要用到的關(guān)鍵東西:寄存器。
? ? 寄存器是一個(gè)神奇的東西,顧名思義,寄存器,寄存器,寄存東西的各種神器,你可以把單片機(jī)理解成一個(gè)大盒子,而寄存器就是這個(gè)大盒子中的一個(gè)個(gè)排列整齊的小盒子,小盒子里當(dāng)然可以存東西,寄存器里面就是存放口令的地方,一個(gè)寄存器在單片機(jī)里對應(yīng)一種功能,您對單片機(jī)編寫程序基本上都要對寄存器進(jìn)行操作,它像一個(gè)個(gè)的箱子。小盒子里面還可以有小小盒子,比如一個(gè)小盒子又分為8個(gè)小小盒,寄存器也是一樣的,有的有8個(gè)空,有的有16個(gè),通過往里面放1或者0,單片機(jī)就會(huì)改變它的工作狀態(tài)。比如在飛思卡爾單片機(jī)里,向PTB管腳的方向寄存器PTBDD里放1,管腳就成為輸出管腳,放0則成為輸入管腳。在AD轉(zhuǎn)換的程序中,寄存器的值還可以控制時(shí)鐘分頻、觸發(fā)方式、中斷開關(guān)等,有一個(gè)老師這樣跟我們說“單片機(jī)編程就是玩寄存器”,謙虛的我們一般會(huì)接上一句“編程就是被寄存器玩”,都無所謂啦。具體如何編程,且聽下文分解。???
?
1.1.3 世界上有多少種單片機(jī)
?
? ? 要問世界上有多少種單片機(jī),這個(gè)問題恐怕和問世界上有多少種手機(jī)是一個(gè)意思,單片機(jī)多的數(shù)不勝數(shù),各自都有各自的功能特點(diǎn)。比較主流的單片機(jī)類型有以下幾種。
1、Motorola單片機(jī)
? ? Motorola公司曾經(jīng)是世界上最大的單片機(jī)生產(chǎn)廠商,產(chǎn)品覆蓋8位、16位、32位單片機(jī)領(lǐng)域,現(xiàn)在Motorola公司的單片機(jī)行業(yè)已經(jīng)由Freescale公司接管。我們平時(shí)接觸到的QG8 、JM60等單片機(jī)就是出自Freescale旗下。Motorola單片機(jī)的運(yùn)行速度快、高頻噪聲低、抗干擾能力強(qiáng),特別適合在工業(yè)領(lǐng)域或其他惡劣環(huán)境下運(yùn)行。M-Core架構(gòu)的32位單片機(jī)在性能和功耗方面甚至超過了ARM7.
2、Microchip單片機(jī)
? ? 在8位單片機(jī)領(lǐng)域,Microchip公司是市場份額增長最快的單片機(jī)生產(chǎn)廠商,其CPU率先采用RISC結(jié)構(gòu),運(yùn)行速度快,性價(jià)比也很高,適合用于生產(chǎn)量大、價(jià)格敏感、檔次一般的產(chǎn)品。
3、Intel單片機(jī)
? ? 同胞們,我們通常所說的51單片機(jī)實(shí)際上有STC-51和AT89S51兩種,其中著名的STC-51系列單片機(jī)就是STC公司以Intel公司在1980年推出的8位單片機(jī)MCS-51內(nèi)核生產(chǎn)的,它能夠利用串口來直接燒寫程序所以被廣泛使用,因?yàn)槭?0年誕生的所以這一系列中最著名的單片機(jī)就起其名曰“8051”。后來Intel公司又推出了16位單片機(jī),性能更強(qiáng),適用于要求較高的場合。
4、三星單片機(jī)
? ? 三星公司以生產(chǎn)存儲(chǔ)器芯片著稱,但在存儲(chǔ)器市場供大于求的形勢下,它也涉足參與單片機(jī)行業(yè)的競爭了。三星公司里比較有名的單片機(jī)有KS51和KS57系列4位單片機(jī),KS86和KS88系列8位單片機(jī),KS17系列16位單片機(jī)和KS32系列32位單片機(jī)。三星公司走的思路是引進(jìn)發(fā)達(dá)技術(shù),生產(chǎn)與之兼容的單片機(jī)產(chǎn)品,以價(jià)格優(yōu)勢取勝。比如在4位單片機(jī)上采用NEC的技術(shù),8位單片機(jī)上引進(jìn)Zilog公司的Z8技術(shù),32位單片機(jī)購買ARM7內(nèi)核,還有DEC、東芝公司的技術(shù)等。三星公司的裸片具有非常強(qiáng)的競爭力。
5、Zilog單片機(jī)
? ? Zilog公司的旗艦產(chǎn)片就是Z8單片機(jī)了,它采用多累加器結(jié)構(gòu),有較強(qiáng)的中斷處理能力,開發(fā)工具物美價(jià)廉。單片機(jī)以18引腳封裝為主,主要面向低端應(yīng)用場合。
6、Atmel單片機(jī)
? ? 同胞們,不得不提的AT89S51單片機(jī)就誕生于Atmel公司,說51單片機(jī)的粉絲量居世界首位一點(diǎn)都不為過,尤其在學(xué)生領(lǐng)域里的受歡迎程度就更不用提了。Atmel公司是世界上最著名的高性能、低功耗、非易失性存儲(chǔ)器和數(shù)字集成電路的一流半導(dǎo)體生產(chǎn)公司。它最令人矚目的就是它的EEPROM電可擦除技術(shù)和閃存(Flash,也就是您手中的優(yōu)盤)技術(shù)等。Atmel公司的單片機(jī)獨(dú)具特色而又性能優(yōu)越,它在計(jì)算機(jī)外圍設(shè)備、通信設(shè)備、自動(dòng)化、工業(yè)控制、宇航設(shè)備、儀器儀表和各種消費(fèi)類產(chǎn)品中有著廣泛的應(yīng)用前景,其生產(chǎn)的AT90系列是增強(qiáng)型RSIC架構(gòu)、內(nèi)含閃速存儲(chǔ)器的單片機(jī),它有一個(gè)和51一樣如雷貫耳名字——AVR。目前AT89S51的生命力依然旺盛,目測這種51熱還會(huì)一直延續(xù)下去。
7、NEC單片機(jī)
? ? NEC單片機(jī)自成體系,以78K系列8位單片機(jī)生產(chǎn)量最高,它的發(fā)展思路主要是服務(wù)大客戶,并投入相當(dāng)大的技術(shù)力量為大客戶開發(fā)產(chǎn)品。比如九安公司電子血壓計(jì)的主要CPU就基于NEC平臺(tái)。
8、華邦單片機(jī)
? ? 華邦單片機(jī)也屬于8051內(nèi)核類單片機(jī),它們的W78系列與標(biāo)準(zhǔn)的8051兼容,W77為增強(qiáng)型51系列,對8051的時(shí)序作了改進(jìn),在同樣的時(shí)鐘頻率下,其CPU速度提升了2.5倍,更重要的是具有了在線系統(tǒng)編程(In-System Programming,ISP)的功能,這種能力對程序調(diào)試來說具有劃時(shí)代的意義。
9. 等等等等。。。。
?
? ? 選擇單片機(jī)和選擇手機(jī)的道理也一樣,看你需要實(shí)現(xiàn)什么功能了,有的單片機(jī)沒什么功能,有的就集成了AD轉(zhuǎn)換、I2C、SPI等模塊,如果只是控制個(gè)燈泡之類的,51單片機(jī)足夠用了,如果需要測量信號(hào)或者需要和其他芯片通信那就選擇帶有AD轉(zhuǎn)換和通信功能的單片機(jī),下圖是一些常見單片機(jī)的實(shí)物展示圖。樣子其實(shí)都差不多,長得跟小蜈蚣似的。
?? ????
? ??
? ? 再引申一下。剛才說的是單片機(jī)控制一個(gè)燈,其實(shí)單片機(jī)不止能控制燈,它能控制很多電子器件,如LED數(shù)碼管、蜂鳴器、液晶、繼電器、還有各種數(shù)字的或者模擬的芯片等等等等。我們將這些器件都和單片機(jī)連到一起然后焊接到一塊電路板上,這就構(gòu)成了一個(gè)單片機(jī)開發(fā)板,或者又叫單片機(jī)學(xué)習(xí)板,目前市場上流行著很多單片機(jī)學(xué)習(xí)板供初學(xué)者學(xué)習(xí),他們的樣子大都大同小異,類似于下圖。
???
? ? 在國內(nèi),目前最流行的單片機(jī)有51單片機(jī),AVR單片機(jī),飛思卡爾單片機(jī)等等,不用擔(dān)心不同的單片機(jī)使用起來會(huì)有很大的不同,其實(shí)不同的單片機(jī)就像不同的手機(jī)一樣,最簡單的手機(jī)只能打電話,發(fā)短信,后來的手機(jī)可以照相,上網(wǎng),聽音樂,你會(huì)使用一款手機(jī)就應(yīng)該也會(huì)很快入手其他款手機(jī),這跟單片機(jī)是一樣的。它并不神秘,記住“我們是用單片機(jī)。不是做單片機(jī)”。后文中講到單片機(jī)編程時(shí),基本上都是借助于51單片機(jī),需要說明的是目前比較流行的AT89S52、AT89C52和STC89C52都是51內(nèi)核單片機(jī),AT89S52除了性能提升和具有ISP下載功能外,他們沒有本質(zhì)區(qū)別、驅(qū)動(dòng)能力也相當(dāng)接近,所以大家約定俗成的將它們統(tǒng)稱為“51單片機(jī)”。
? ? 跟大家分享一個(gè)小技巧,有時(shí)候我們不想花錢買芯片怎么辦?這就需要和生產(chǎn)廠家申請樣片了,登陸芯片公司的網(wǎng)址一般都會(huì)有申請樣片的網(wǎng)頁,試著填寫一下,往往一個(gè)月之內(nèi)就能收到樣片。
1.1.4 要掌握的基礎(chǔ)知識(shí)
?
(1)編程語言
? ? 關(guān)于使用的編程語言,單片機(jī)編程語言高手會(huì)使用匯編語言,就是比較高深那種,新手一般使用C語言就足夠了,學(xué)習(xí)C語言請到網(wǎng)上找一些C語言編程的入門書稍微看看即可,一般教學(xué)視頻里都會(huì)詳細(xì)教給你。
如果您學(xué)過C++那就會(huì)給你省很多時(shí)間,只不過單片機(jī)中的C語言和您在電腦上用C++編程有兩點(diǎn)不同之處,一定要注意。
①C語言中定義變量一定要在函數(shù)的最前面定義,如
Void main()????????????????? void main()
{?????????????????????????????????? {
? int a;?? //正確???????????????? … …
? char b;????????????????????????? int a; //這樣就錯(cuò)誤,是不是挺矯情的?
?… …????????????????????????????char b;
}????????? ?????????????????????????}
②單片機(jī)程序最后一定要進(jìn)入一個(gè)死循環(huán)。
? ? 單片機(jī)死循環(huán)的理念和我們在電腦上利用VC6.0編寫程序時(shí)的理念大相徑庭。因?yàn)樵陔娔X上CPU不允許你做死循環(huán),那是大忌,電腦可不想讓自己處于死循環(huán)的類死機(jī)狀態(tài)。但是單片機(jī)就不同了,它一定要進(jìn)入到一個(gè)死循環(huán)里,舉一個(gè)例子,比如我們用單片機(jī)來編寫一個(gè)家用熱水器的程序,功能是這樣:
??? 當(dāng)水的溫度低于80°的時(shí)候,熱水器處于加熱狀態(tài)。
??? 當(dāng)水的溫度達(dá)到100°的時(shí)候,熱水器處于保溫狀態(tài)。
??? 單片機(jī)需要做的就是時(shí)時(shí)刻刻的檢測水的溫度,根據(jù)水的溫度來調(diào)控內(nèi)部加熱器的工作狀態(tài),那問題就來了,假如單片機(jī)的程序和電腦上C++一樣也是運(yùn)行一遍就完的話,它只會(huì)檢測一遍水的溫度,以后水的溫度無論變成什么樣跟它都沒有任何關(guān)系了,聽著似乎很悲壯的一個(gè)愛情故事。這個(gè)時(shí)候我們就需要將“檢測水溫”的程序放到死循環(huán)里,讓他不停的檢測,一遍又一遍的做出判斷,然后做出相應(yīng)的控制,不用擔(dān)心它會(huì)累死,這是上天賦予它的基本使命,就算累死,也得干!
常用死循環(huán)程序
for( ;? ; ){…
//這里面寫主程序
?…}或
while(1){…
//這里面寫主程序
?…}
?
(2)位和字節(jié)、數(shù)制
??? 位和字節(jié)在單片機(jī)里是特別重要的兩個(gè)概念。
??? 位(bit):指的是取值只能為0或1的一個(gè)二進(jìn)制數(shù)值位。記作b
??? 字節(jié)(byte):由8位二進(jìn)制位組成,通常用作計(jì)算存儲(chǔ)容量的單位。記作B。我們常說的B,K,M,G,T之間有如下的轉(zhuǎn)換關(guān)系:
??????? K(kelo),1K=1024B=210
??????? M(mega),1M=1024K=220
??????? G(giga),1G=1024M=230
??????? T(tera),1T=1024G=240
? ? 數(shù)制:數(shù)制也稱計(jì)數(shù)制,是用一組固定的符號(hào)和統(tǒng)一的規(guī)則來表示數(shù)值的方法。單片機(jī)中的數(shù)制主要涉及10進(jìn)制、2進(jìn)制、16進(jìn)制。編程的時(shí)候更多的是2進(jìn)制和16進(jìn)制之間的轉(zhuǎn)換,3種數(shù)制之間的轉(zhuǎn)換關(guān)系如下表所示:
?| 10進(jìn)制(默認(rèn)數(shù)制) | 2進(jìn)制(聲明方式0b或0B) | 16進(jìn)制(聲明方式0x或0X) |
| 0 | 0 | 0 |
| 1 | 1 | 1 |
| 2 | 10 | 2 |
| 3 | 11 | 3 |
| 4 | 100 | 4 |
| 5 | 101 | 5 |
| 6 | 110 | 6 |
| 7 | 111 | 7 |
| 8 | 1000 | 8 |
| 9 | 1001 | 9 |
| 10 | 1010 | A |
| 11 | 1011 | B |
| 12 | 1100 | C |
| 13 | 1101 | D |
| 14 | 1110 | E |
| 15 | 1111 | F |
?
? ? 之所以說位和字節(jié)的概念重要是因?yàn)樗鼈兒蜕衔奶岬降摹凹拇嫫鳌毕⑾⑾嚓P(guān),一個(gè)寄存器通常情況下就是一個(gè)字節(jié)(有的單片機(jī)一個(gè)寄存器是兩個(gè)字節(jié)),一個(gè)字節(jié)對應(yīng)8位,一個(gè)寄存器在單片機(jī)里都對應(yīng)著一種功能指令,我們通過向寄存器里寫二進(jìn)制數(shù)來控制單片機(jī)。?
? ? 明白了位、字節(jié)、數(shù)制的概念后再對寄存器舉一個(gè)例子:
? ? 51單片機(jī)姓P1的管腳一共有8個(gè),分別叫P1^0、P1^1、P1^2、P1^3……P1^7,我們想讓P1^1、P1^3、P1^5、P1^7輸出低電平,P1^0、P1^2、P1^4、P1^6輸出高電平,則只需要向控制P1輸出狀態(tài)的寄存器“P1”中寫二進(jìn)制數(shù)0b01010101(0b代表后面的數(shù)為二進(jìn)制數(shù),8位字節(jié)最高位代表P1^7,最低位代表P1^0,1代表高電平,0代表低電平),編程的時(shí)候由于單片機(jī)只認(rèn)16進(jìn)制,所以寫成C語言就像下面這個(gè)樣子
? ? P1=0x55;
對,就是這樣一句簡單的代碼就能讓單片機(jī)實(shí)現(xiàn)功能了。
?
未完待續(xù)。。。
總結(jié)
以上是生活随笔為你收集整理的2-《电子入门趣谈》第一章_一切从单片机开始-1.1单片机概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: grub4dos修改/制作message
- 下一篇: MBTI职业倾向测验