有些同學(xué)學(xué)了一年了51單片機(jī)還沒(méi)有入門(mén)
有些同學(xué)學(xué)了一年了51單片機(jī)還沒(méi)有入門(mén)

今天開(kāi)始將介紹一下51單片機(jī),也是應(yīng)用最廣泛的一個(gè)系列,雖然現(xiàn)在32位的單片機(jī)大行其道,但是51系列的8位機(jī)仍然是全球出貨量最大,應(yīng)用最廣泛的。這里我們不涉及具體的內(nèi)部東西,只是從俯視的角度來(lái)介紹一下C51單片機(jī)的結(jié)構(gòu)以及它的工作過(guò)程。我就以點(diǎn)個(gè)LED等為例,假設(shè)P0端口中的第一個(gè)口,就是0號(hào)口上接了一個(gè)LED,當(dāng)這個(gè)口上的PIN輸出高電平時(shí)LED等亮,輸出低電平時(shí)熄滅。
如標(biāo)題中的圖為一個(gè)C51單片機(jī)的最小系統(tǒng)(何為最小系統(tǒng),就是能夠保證CPU能夠運(yùn)行起來(lái)的最簡(jiǎn)單結(jié)構(gòu)),我們把它各模塊抽象出來(lái)如下圖:
這個(gè)基本是最簡(jiǎn)單的一顆C51芯片內(nèi)部結(jié)構(gòu)圖了,主要就包括CPU,代碼存儲(chǔ)器(ROM哪里),數(shù)據(jù)存儲(chǔ)器(RAM哪里),定時(shí)器,中斷控制器,串口控制器,I/O口控制器。CPU通過(guò)內(nèi)部總線來(lái)控制和訪問(wèn)各個(gè)功能模塊,但其中我們可以忽略掉一些模塊,只看3部分就好了,CPU+存儲(chǔ)器(代碼存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器)+I/O口控制器。
那么這顆芯片是怎么工作的?首先我們要對(duì)CPU內(nèi)部結(jié)構(gòu)有個(gè)大概了解,不清楚的可以去百度了解下。CPU工作的過(guò)程分成3步,取出指令,分析指令,執(zhí)行指令。就這樣,CPU會(huì)不停的重復(fù)上面3個(gè)動(dòng)作。那么指令是什么東西?開(kāi)始時(shí)第一條指令從哪里取出?這里我們借助一張圖來(lái)看會(huì)比較清晰。
首先指令是由程序通過(guò)編譯器編譯之后生成的二進(jìn)制數(shù)據(jù),指令是由操作碼+操作數(shù)(或者操作數(shù)的地址)2部分組成。CPU可以直接識(shí)別這些指令,并完成相應(yīng)操作。這些指令就存儲(chǔ)在代碼存儲(chǔ)器中。單片機(jī)內(nèi)部有個(gè)程序計(jì)數(shù)器寄存器(PC),用來(lái)指明CPU下一條將要執(zhí)行的指令的地址(注意,這個(gè)寄存器本身并不像其他寄存器一樣,它沒(méi)有地址,所以不能被程序?qū)?/span>址)。單片機(jī)上電復(fù)位時(shí),PC=0000H,即代碼存儲(chǔ)器的0地址,之后取出存儲(chǔ)在0地址的數(shù)據(jù)并交給CPU分析,同時(shí)并修改PC指針的內(nèi)容。