8051是mcs-51系列單片機的典型產(chǎn)品,我們以這一代表性的機型進(jìn)行系統(tǒng)的講解。
8051單片機包含中央處理器、程序存儲器(rom)、數(shù)據(jù)存儲器(ram)、定時/計數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,現(xiàn)在我們分別加以說明:
·中央處理器:
中央處理器(cpu)是整個單片機的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,cpu負(fù)責(zé)控制、指揮和調(diào)度整個單元系統(tǒng)協(xié)調(diào)的工作,完成運算和控制輸入輸出功能等操作。
·數(shù)據(jù)存儲器(ram):
8051內(nèi)部有128個8位用戶數(shù)據(jù)存儲單元和128個專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的的ram只有128個,可存放讀寫的數(shù)據(jù),運算的中間結(jié)果或用戶定義的字型表。
·程序存儲器(rom):
8051共有4096個8位掩膜rom,用于存放用戶程序,原始數(shù)據(jù)或表格。
·定時/計數(shù)器(rom):
8051有兩個16位的可編程定時/計數(shù)器,以實現(xiàn)定時或計數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。
·并行輸入輸出(i/o)口:
8051共有4組8位i/o口(p0、 p1、p2或p3),用于對外部數(shù)據(jù)的傳輸。
·全雙工串行口:
8051內(nèi)置一個全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。
·中斷系統(tǒng):
8051具備較完善的中斷功能,有兩個外中斷、兩個定時/計數(shù)器中斷和一個串行中斷,可滿足不同的控制要求,并具有2級的優(yōu)先級別選擇。
·時鐘電路:
8051內(nèi)置最高頻率達(dá)12mhz的時鐘電路,用于產(chǎn)生整個單片機運行的脈沖時序,但8051單片機需外置振蕩電容。
單片機的結(jié)構(gòu)有兩種類型,一種是程序存儲器和數(shù)據(jù)存儲器分開的形式,即哈佛(harvard)結(jié)構(gòu),另一種是采用通用計算機廣泛使用的程序存儲器與數(shù)據(jù)存儲器合二為一的結(jié)構(gòu),即普林斯頓(princeton)結(jié)構(gòu)。intel的mcs-51系列單片機采用的是哈佛結(jié)構(gòu)的形式,而后續(xù)產(chǎn)品16位的mcs-96系列單片機則采用普林斯頓結(jié)構(gòu)。
下圖是mcs-51系列單片機的內(nèi)部結(jié)構(gòu)示意圖。
■mcs-51的引腳說明:
mcs-51系列單片機中的8031、8051及8751均采用40pin封裝的雙列直接dip結(jié)構(gòu),右圖是它們的引腳配置,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個i/o口,中斷口線與p3口線復(fù)用?,F(xiàn)在我們對這些引腳的功能加以說明:
·pin20:接地腳。
·pin40:正電源腳,正常工作或?qū)ζ瑑?nèi)eprom燒寫程序時,接+5v電源。
·pin19:時鐘xtal1腳,片內(nèi)振蕩電路的輸入端。
·pin18:時鐘xtal2腳,片內(nèi)振蕩電路的輸出端。
8051的時鐘有兩種方式,一種是片內(nèi)時鐘振蕩方式,但需在18和19腳外接石英晶體(2-12mhz)和振蕩電容,振蕩電容的值一般取10p-30p。另外一種是外部時鐘方式,即將xtal1接地,外部時鐘信號從xtal2腳輸入。
<>
·輸入輸出(i/o)引腳:
pin39-pin32為p0.0-p0.7輸入輸出腳,pin1-pin1為p1.0-p1.7輸入輸出腳,pin21-pin28為p2.0-p2.7輸入輸出腳,pin10-pin17為p3.0-p3.7輸入輸出腳,這些輸入輸出腳的功能說明將在以下內(nèi)容闡述。
·pin9:reset/vpd復(fù)位信號復(fù)用腳,當(dāng)8051通電,時鐘電路開始工作,在reset引腳上出現(xiàn)24個時鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。初始化后,程序計數(shù)器pc指向0000h,p0-p3輸出口全部為高電平,堆棧指鐘寫入07h,其它專用寄存器被清“0”。reset由高電平下降為低電平后,系統(tǒng)即從0000h地址開始執(zhí)行程序。然而,初始復(fù)位不改變ram(包括工作寄存器r0-r7)的狀態(tài),8051的初始態(tài)如下表:
8051的復(fù)位方式可以是自動復(fù)位,也可以是手動復(fù)位,見下圖。此外,reset/vpd還是一復(fù)用腳,vcc掉電其間,此腳可接上備用電源,以保證單片機內(nèi)部ram的數(shù)據(jù)不丟失。
特殊功能寄存器
初始態(tài)
特殊功能寄存器
初始態(tài)
acc
00h
b
00h
psw
00h
sp
07h
dph
00h
th0
00h
dpl
00h
tl0
00h
ip
xxx00000b
th1
00h
ie
0xx00000b
tl1
00h
tmod
00h
tcon
00h
scon
xxxxxxxxb
sbuf
00h
p0-p3
1111111b
pcon
0xxxxxxxb
·pin30:ale/當(dāng)訪問外部程序器時,ale(地址鎖存)的輸出用于鎖存地址的低位字節(jié)。而訪問內(nèi)部程序存儲器時,ale端將有一個1/6時鐘頻率的正脈沖信號,這個信號可以用于識別單片機是否工作,也可以當(dāng)作一個時鐘向外輸出。更有一個特點,當(dāng)訪問外部程序存儲器,ale會跳過一個脈沖。
如果單片機是eprom,在編程其間,將用于輸入編程脈沖。
·pin29:當(dāng)訪問外部程序存儲器時,此腳輸出負(fù)脈沖選通信號,pc的16位地址數(shù)據(jù)將出現(xiàn)在p0和p2口上,外部程序存儲器則把指令數(shù)據(jù)放到p0口上,由cpu讀入并執(zhí)行。
·pin31:ea/vpp程序存儲器的內(nèi)外部選通線,8051和8751單片機,內(nèi)置有4kb的程序存儲器,當(dāng)ea為高電平并且程序地址小于4kb時,讀取內(nèi)部程序存儲器指令數(shù)據(jù),而超過4kb地址則讀取外部指令數(shù)據(jù)。如ea為低電平,則不管地址大小,一律讀取外部程序存儲器指令。顯然,對內(nèi)部無程序存儲器的8031,ea端必須接地。
在編程時,ea/vpp腳還需加上21v的編程電壓。