新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 牛人業(yè)話 > 菜鳥零基礎(chǔ)學(xué)電子之像把妹一樣去學(xué)51

菜鳥零基礎(chǔ)學(xué)電子之像把妹一樣去學(xué)51

作者:Snake0301 時(shí)間:2013-11-20 來(lái)源:電子產(chǎn)品世界 收藏

  點(diǎn)燈

本文引用地址:http://2s4d.com/article/192430.htm

  就好像偉大的程序猿們,學(xué)習(xí)一門新的語(yǔ)言時(shí),先會(huì)嘗試打印一句“Hello World!”一樣,高手們拿到一塊新的,往往都會(huì)先拿來(lái)點(diǎn)亮一個(gè)LED。不要小看這個(gè)點(diǎn)亮LED,雖然很簡(jiǎn)單,但是至少要求有基本的模電知識(shí)和了解這塊的IO端口的基本操作。LED啊LED,PN結(jié)啊PN結(jié),導(dǎo)通啊導(dǎo)通,發(fā)光啊發(fā)光。在模電里面我們知道,LED其實(shí)就是個(gè)摻入了電致發(fā)光材料的PN結(jié),只要PN結(jié)導(dǎo)通,并有電流流過(guò),就能夠發(fā)光。瞧瞧上面的兩種接法,假設(shè)IO口是P1.1,D1在IO口輸出什么電平的情況下發(fā)光呢?看看接法1,D1陽(yáng)極連接Vcc,陰極連接IO口,D1導(dǎo)通的前提是PN結(jié)正偏,陽(yáng)極電壓要大于陰極電壓,且差值要大于某個(gè)值,這個(gè)值由D1的材料特性決定。到這里,P1.1要輸出啥,D1才會(huì)亮呢?吼吼,必須是一個(gè)低電平喲。那好,代碼里面,我們寫上“P1.1=0;”,編譯下載,“咣機(jī)”,瞧瞧是不是燈亮了?要是我們?cè)賹懸粋€(gè)300ms延時(shí)函數(shù)delay(),“P1.1=1;delay();P1.1=0;delay();”,重新編譯下載,瞧瞧,燈是不是閃起來(lái)了?吼吼,控制就是這么簡(jiǎn)單。還有接法2,大家可以自己分析一下了。在這個(gè)基礎(chǔ)上,還有更多的玩法,跑馬燈、呼吸燈等等。

  中斷

  這部分涉及IO口操作很少,基本上都是內(nèi)部中斷的操作。中斷,其實(shí)就是優(yōu)先級(jí)更高的一個(gè)任務(wù);比如周末有一打算睡到12點(diǎn)的任務(wù),當(dāng)您正在呼呼大睡的時(shí)候,突然老板9點(diǎn)鐘打來(lái)一個(gè)電話中斷了睡覺(jué)任務(wù),并給出12點(diǎn)前完成深入開(kāi)展當(dāng)?shù)娜罕娐肪€的高質(zhì)量個(gè)人對(duì)照檢查材料的任務(wù),睡覺(jué)任務(wù)被打斷了,只能起床苦逼地進(jìn)行寫材料的任務(wù),10點(diǎn)鐘完成材料的撰寫并發(fā)送任務(wù)后,繼續(xù)睡覺(jué)到12點(diǎn)。上面這個(gè)流程,基本上就是一個(gè)中斷的基本流程。而我們操作內(nèi)部中斷,主要是為了確定是否應(yīng)答中斷和中斷如何開(kāi)始。S51的中斷寄存器常用的有6個(gè),中斷允許控制寄存器IE是決定系統(tǒng)是否響應(yīng)中斷,如果需要中斷,這個(gè)寄存器必須要置位;定時(shí)器控制寄存器TCON決定系統(tǒng)是否采用定時(shí)器方式來(lái)激活中斷;定時(shí)器工作方式控制寄存器TMOD用于選擇定時(shí)器的工作方式,一般需要先使用定時(shí)器初值賦予寄存器(TH0/TH1,TL0/TL1)來(lái)裝載一個(gè)初始值,然后根據(jù)TMOD來(lái)確定是加計(jì)數(shù)至溢出來(lái)產(chǎn)生中斷,還是減計(jì)數(shù)至0來(lái)產(chǎn)生中斷;串口控制寄存器SCON則是確定是否由串口數(shù)據(jù)傳輸來(lái)激活中斷;而中斷優(yōu)先控制寄存器IP則是用于控制多個(gè)中斷產(chǎn)生時(shí),系統(tǒng)響應(yīng)的順序。當(dāng)然,最最重要的還是中斷服務(wù)程序,也就是一旦中斷來(lái)臨,系統(tǒng)需要進(jìn)行的動(dòng)作,一般情況下,建議中斷服務(wù)程序還是盡可能的簡(jiǎn)單,不要進(jìn)行復(fù)雜的數(shù)據(jù)運(yùn)算或長(zhǎng)時(shí)間的延時(shí),最好只是給出一個(gè)事件標(biāo)志,由main函數(shù)根據(jù)這個(gè)事件標(biāo)志去完成相對(duì)應(yīng)的動(dòng)作。

  中斷是里面的壓軸貨,從應(yīng)用層面來(lái)講,可以實(shí)現(xiàn)簡(jiǎn)單多任務(wù),如果中斷high不起來(lái),誰(shuí)也不能說(shuō)自己精通S51。

  外設(shè)驅(qū)動(dòng)

  一個(gè)系統(tǒng),只有51單片機(jī),那叫光桿司令,絕大部分情況下,51單片機(jī)外圍會(huì)連接各種各樣的芯片,這些芯片會(huì)以各種總線形式與單片機(jī)相連接,常見(jiàn)的有1-wire、I2C、SPI、Can等等。物理連接后,單片機(jī)與芯片之間必須建立起某種協(xié)議才能正常進(jìn)行通信。啥叫協(xié)議?聽(tīng)上去很牛逼,其實(shí)說(shuō)白了就一句話,語(yǔ)言、習(xí)慣要相通。先說(shuō)語(yǔ)言,就好像說(shuō)話,單片機(jī)說(shuō)漢語(yǔ),外設(shè)芯片說(shuō)德語(yǔ),咋溝通交流?再說(shuō)習(xí)慣,就好像喝酒猜拳,外設(shè)芯片猜拳前要開(kāi)場(chǎng)詞“哥倆好”,單片機(jī)單刀直入直接喊拳碼,這樣哥倆明顯不能同步,不能交流了撒。一般情況下,都需要利用數(shù)電知識(shí)仔細(xì)研究外設(shè)芯片的操作時(shí)序,操作時(shí)序圖直接描述了外設(shè)芯片的語(yǔ)言習(xí)慣,對(duì)單片機(jī)編程時(shí),必須符合外設(shè)芯片的語(yǔ)言習(xí)慣,兄弟倆才能正常溝通。以I2C總線為例,I2C總線空閑時(shí),單片機(jī)以啟動(dòng)信號(hào)START來(lái)掌管總線,以停止信號(hào)STOP來(lái)釋放總線;每次通訊以START開(kāi)始,以STOP結(jié)束;啟動(dòng)信號(hào)START并后緊接著發(fā)送一個(gè)地址字節(jié),其中7位為被控器件的地址碼,一位為讀/寫控制位R/W,R/W位為0表示由單片機(jī)向被控器件寫數(shù)據(jù),R/W為1表示由單片機(jī)向被控器件讀數(shù)據(jù);當(dāng)被控器件檢測(cè)到收到的地址與自己的地址相同時(shí),在第9個(gè)時(shí)鐘期間反饋應(yīng)答信號(hào)ACK;單片機(jī)檢測(cè)到ACK信號(hào)后,開(kāi)始數(shù)據(jù)的傳輸,每個(gè)字節(jié)數(shù)據(jù)傳輸結(jié)束,都會(huì)發(fā)送一次ACK信號(hào),如果全部結(jié)束則發(fā)送NACK信號(hào),每個(gè)數(shù)據(jù)字節(jié)在傳送時(shí)都是高位(MSB)在前。這個(gè)例子其實(shí)可以很明顯地看出,要想完成外設(shè)芯片的驅(qū)動(dòng),必須通過(guò)迪特希特的時(shí)序圖了解它的習(xí)慣,讓單片機(jī)去適應(yīng)它,最后達(dá)到天人合一,魚水交融的境界,就像把妹一樣。邪惡了,吼吼。

  小結(jié)

  上面是小弟在學(xué)習(xí)過(guò)程中的一點(diǎn)點(diǎn)小認(rèn)識(shí),由于能力關(guān)系肯定會(huì)有不對(duì)的地方,歡迎各路大神,各種品牌、各種材質(zhì)的板磚。

  其實(shí)單片機(jī)入門沒(méi)有那么困難,特別是用簡(jiǎn)單方便的51單片機(jī)來(lái)入門,簡(jiǎn)直是無(wú)敵了,但前提是要熟悉編譯環(huán)境和一定的基礎(chǔ)。學(xué)51單片機(jī)和屌絲們把妹是一樣一樣的,你用心去對(duì)待它,用熱情去融化它,用真誠(chéng)去感動(dòng)它,女神也會(huì)被推倒。

c語(yǔ)言相關(guān)文章:c語(yǔ)言教程



上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉