接下來的幾節(jié),我們會(huì)帶著人人編寫第一個(gè)單片機(jī)程序。在此之前,我們先來理解一些 51 單片機(jī)特有的程序語法以及 Keil 軟件的根本操作步調(diào),請(qǐng)人人必定要有耐煩。
我們次要是用 C 言語來對(duì)單片機(jī)編程,而有的單片機(jī)有那么幾條很特別的獨(dú)有的編程語句,51 單片機(jī)就有,先引見 2 條。
第一條語句是:sfr P0 = 0x80;
sfr 這個(gè)癥結(jié)字,是 51 單片機(jī)特有的,他的感化是界說一個(gè)單片機(jī)特別功用存放器(special function register)。51 單片機(jī)外部有許多個(gè)小模塊,每一個(gè)模塊寓居在具有獨(dú)一房間號(hào)的房間內(nèi),同時(shí)每一個(gè)模塊都有 8 個(gè)掌握開關(guān)。P0 就是一個(gè)功用模塊,就住在了 0x80 這個(gè)房間里,我們就是經(jīng)過設(shè)置 P0 外部這個(gè)模塊的 8 個(gè)開關(guān),來讓單片機(jī)的 P0 這 8 個(gè) IO 口輸入高電平或許低電平的。而 51 單片機(jī)外部有許多存放器,假如我們想運(yùn)用的話必需提早停止 sfr 聲明。不外 Keil 軟件曾經(jīng)把一切這些聲明都事后寫好并保管到一個(gè)專門的文件中去了,我們要用的話只需文件掃尾添加一行#include
第二條語句是:sbit LED = P0^0;
這個(gè) sbit,就是對(duì)方才所說的 SFR 里邊的 8 個(gè)開關(guān)個(gè)中的一個(gè)停止界說。經(jīng)由上邊第二條語句后,今后只需在程序里寫 LED,就代表了 P0.0 口(“^”這個(gè)符號(hào)在數(shù)字鍵 6 上邊),留意這個(gè) P 必需大寫,也就是說我們給 P0.0 又取了一個(gè)更抽象的名字叫做 LED。
理解了這兩個(gè)語句后,我們來大約看一下單片機(jī)的特別功用存放器。請(qǐng)留意,每一個(gè)型號(hào)的單片機(jī)都邑配有消費(fèi)廠商所編寫的數(shù)據(jù)手冊(cè)(Datasheet),所以我們來看一下 STC89C52 的數(shù)據(jù)手冊(cè),從 21 頁到 24 頁,全體是對(duì)特別功用存放器的引見以及地址映射列表。我們?cè)谶\(yùn)用這個(gè)存放器之前,必需對(duì)這個(gè)存放器的地址停止闡明。是不是花花綠綠的太多了,記不住啊,這個(gè)沒緊要的,不需求你記住,理解一下,后邊大局部我會(huì)漸漸給人人說明,少局部需求用到的時(shí)分,本人過去查手冊(cè)就可以了,做技巧不是為了敷衍測(cè)驗(yàn),你可以隨時(shí)翻閱手冊(cè)查找你需求的材料。
如圖 2-7,是截取的手冊(cè)中第 22 頁最下邊的一個(gè)表格。
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括都勻網(wǎng)站建設(shè)、都勻網(wǎng)站制作、都勻網(wǎng)頁制作以及都勻網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,都勻網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到都勻省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
圖 2-7 IO 口特別功用存放器
我們來看一下這個(gè)表,個(gè)中 P4 口 STC89C52 對(duì)規(guī)范 51 的擴(kuò)大,我們先疏忽它,只看前邊的 P0、P1、P2、P3 這 4 個(gè),每一個(gè) P 口自身又有 8 個(gè)掌握端口。人人可以聯(lián)合我們的開辟板道理圖或許圖 2-1 來看,那么如許就肯定了我們的單片機(jī)一共有 32 個(gè) IO 口(IO,Input 和 Output,辨別是輸出和輸入)。
個(gè)中 P0 口地點(diǎn)的地址是 0x80,一共有從 7 到 0 這 8 個(gè) IO 口掌握位,后邊有個(gè) Reset Value(復(fù)位值),這個(gè)很主要,是我們看存放器必看的一個(gè)參數(shù),8 個(gè)掌握位復(fù)位值全體多是 1。
這就是通知我們,每當(dāng)單片機(jī)上電復(fù)位的時(shí)分,一切的引腳的值默許是多是 1,即高電平,我們?cè)谠O(shè)計(jì)電路的時(shí)分也要充沛的思索這個(gè)成績(jī)。
那么上邊那 2 條語句,我們寫 sfr 的時(shí)分,必需要依據(jù)手冊(cè)里的這個(gè)地址(Add)去寫,寫sbit 的時(shí)分,就可以直接將一個(gè)字節(jié)個(gè)中某一位掏出來。我們編程的時(shí)分,也有現(xiàn)成的寫好存放器地址的頭文件,我們直接包括該頭文件就可以了,不需求一一去寫了。