五分鐘了解PIC與51單片機(jī)的區(qū)別
單片機(jī)是一個籠統(tǒng)的概念,如果對其進(jìn)行細(xì)分,能夠劃分出很多不同的種類,PIC單片機(jī)與51單片機(jī)就是其中兩種,對于電源新手來說,很多人對于這兩款單片機(jī)無法給予較為明確的概念界定,因此經(jīng)常會出現(xiàn)概念混淆的情況,針對于此,本文特意為大家整理了PIC單片機(jī)與51單片機(jī)的區(qū)別,感興趣的朋友快來看一看吧。
本文將以PIC16、PIC12、10系列為例來進(jìn)行介紹。PIC系列單片機(jī)采用哈佛總線結(jié)構(gòu),程序空間總線和數(shù)據(jù)總線分開,地址長度也不一樣,也同樣不在一個連續(xù)的空間,程序?yàn)閱巫纸Y(jié)構(gòu),一句程序占用一個程序字長,這與51不一樣,51系列則采用馮·諾依曼結(jié)構(gòu),程序空間和數(shù)據(jù)空間共用一組8BIT的總線,程序空間和數(shù)據(jù)空間共用一個連續(xù)的地址空間;程序?yàn)槎嘧止?jié)結(jié)構(gòu),根據(jù)不同指令及數(shù)據(jù)每句程序有不同的長度,這種結(jié)構(gòu)有可能在程序跑飛的時候讓系統(tǒng)把數(shù)據(jù)當(dāng)做指令執(zhí)行。
PIC系列單片機(jī)使用精簡指令集,總共不超過35條指令,采用預(yù)取指令的做法使絕大多數(shù)指令只要一個指令時鐘周期,51則采用復(fù)雜指令集,需要4個或更多指令周期才能執(zhí)行一條指令。
PIC中低檔單片機(jī)只有一個中斷入口,一些低檔單片機(jī)甚至沒有中斷,中斷發(fā)生后需要用軟件清除中斷標(biāo)志,并且需要用軟件來判斷中斷源,這與51系列有豐富的中斷入口相比有一些局限,而且由于指令長度的局限,PIC程序和數(shù)據(jù)尋址采用分頁(PAGE)和分塊(BANK)的做法,在程序跳轉(zhuǎn)和數(shù)據(jù)查找方面需要注意頁面和塊的跳轉(zhuǎn)。
PIC系列單片機(jī)采用硬件堆棧,堆棧只儲存程序跳轉(zhuǎn)前的程序地址,而且堆棧深度最多8級,不能支持程序的無限嵌套,不能使用51系列PUSH。POP等方便的數(shù)據(jù)堆棧指令來保護(hù)現(xiàn)場。在中斷中保護(hù)現(xiàn)場比較繁瑣。
可以看到PIC單片機(jī)與51單片機(jī)還是存在很多差異的。PIC單片機(jī)在指令集上要簡于51單片機(jī),而在中斷入口方面51單片機(jī)也擁有較為明顯的優(yōu)勢。對于51單片機(jī)與PIC單片機(jī)仍舊存在迷惑的朋友在閱讀本文之后相信一定能夠?qū)烧叩膮^(qū)別有所了解。