Wednesday, March 19, 2008

科技:淺談8051



8051是常見的MCU,它有4K ROM on-chip Code Memory、128bytes on-chip Data Memory、兩個Timer。2系列則是Memory double、Timer+1,3系列無 on-chip Code Memory,7系列則以EPROM取代ROM。其他還包含四個IO port、一個Serial port、兩個外部中斷等等。



一般每個指令需要二到三個machine cycle不等,每個machine cycle費時12個clock,因此如果接上12Mhz的震盪器,則也1Mips的運算量。1T或4T,代表可在1個clock或4個clock完成一個machine cycle。

40根pin,crystal用掉兩根接腳,電源與接地兩根。四個8pin IO port 32根,還有四根是PSEN(low enable)、ALE、EA(low enable)、RST。P0可作為外接memory的8 bit data pin,P0+P2則是16bit的address pin,因此可接上64KBytes的Memory。P1一般用途,P3則有中斷、計數器、Serial資料收送與外部Data Memory的讀寫控制。

PSEN(low enable): 接到EPROM的OE(Output enable)。
ALE: port 0從address切到data mode時,用來latch記憶體的位址。
EA(low enable): 切換內外部的code memory。
RST: Reset。



128bytes的on-chip Data memory,首先是四個Register Bank,再來是128bits的bit addressable locations,以上到127則是一般用途。128到255則是SFR(Special function register)。在8032裡128到255的memory以indirect mode讀寫,這是data與idata不同之處,idata慢一點。

Addressing Modes
Register
Direct
Indirect
Immediate
Relative
Absolute
Long
Indexed

其中記憶體模式可以是SM(小型編譯模式Small,資料預設放入DATA區),CP(緊湊型編譯模式Compact,資料預設放入PDATA區)或LA(大型編譯模式Large,資料預設放入XDATA區),通常在變數不多的情形,用SM可增進程式效率(別忘了DATA區的存取速度最快),當然大一點的程式就要用LA了。pdata: paged external data memory allowing access 256 bytes at a time through port 0

參考資料:
The 8051 Microcontroller / I. Scott Mackenzie / Prentice Hall

No comments: