<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 義隆單片機(jī)和MCS—51單片機(jī)的區(qū)別

          義隆單片機(jī)和MCS—51單片機(jī)的區(qū)別

          作者: 時(shí)間:2012-08-25 來(lái)源:網(wǎng)絡(luò) 收藏

          的匯編語(yǔ)言和很相似,但兩者是完全不停體系結(jié)構(gòu)。

          我總結(jié)的,首先從堆棧結(jié)構(gòu)去看。堆棧開(kāi)辟在RAM空間,實(shí)現(xiàn)要用戶根據(jù)程序調(diào)用情況估算堆棧的使用量,讓后定義堆棧指針的棧頂?shù)刂?,?dāng)用戶讀寫(xiě)操作改變堆棧區(qū)數(shù)據(jù)會(huì)導(dǎo)致程序跑飛。義隆和pic單片機(jī)的堆棧是獨(dú)立固定的深度,用戶無(wú)法直接對(duì)堆棧區(qū)進(jìn)行讀寫(xiě)操作,只有當(dāng)發(fā)生程序調(diào)用時(shí),才會(huì)有保護(hù)現(xiàn)場(chǎng)的地址壓入堆棧,所以不會(huì)跑飛,但深度還是有限的所以不宜太多嵌套調(diào)用函數(shù)。

          1,內(nèi)部結(jié)構(gòu)和PIC單片機(jī)是一樣的,單片機(jī)的總線結(jié)構(gòu)是馮-諾依曼型,計(jì)算機(jī)在同一個(gè)存儲(chǔ)空間取指令和數(shù)據(jù),兩者不能同時(shí)進(jìn)行;而PIC單片機(jī)的總線結(jié)構(gòu)是哈佛結(jié)構(gòu),指令和數(shù)據(jù)空間是完全分開(kāi)的,一個(gè)用于指令,一個(gè)用于數(shù)據(jù),由于可以對(duì)程序和數(shù)據(jù)同時(shí)進(jìn)行訪問(wèn),所以提高了數(shù)據(jù)吞吐率。正因?yàn)樵赑IC單片機(jī)中采用了哈佛雙總線結(jié)構(gòu),所以與常見(jiàn)的微控制器不同的一點(diǎn)是:程序和數(shù)據(jù)總線可以采用不同的寬度。數(shù)據(jù)總線都是8位的,但指令總線位數(shù)分別位12、14、16位。

          2,MCS-51單片機(jī)的取指和執(zhí)行采用單指令流水線結(jié)構(gòu),即取一條指令,執(zhí)行完后再取下一條指令;而PIC的取指和執(zhí)行采用雙指令流水線結(jié)構(gòu),當(dāng)一條指令被執(zhí)行時(shí),允許下一條指令同時(shí)被取出,這樣就實(shí)現(xiàn)了單周期指令。

          3,PIC單片機(jī)的所有寄存器,包括I/O口,定時(shí)器和程序計(jì)數(shù)器等都采用RAM結(jié)構(gòu)形式,而且都只需要一個(gè)指令周期就可以完成訪問(wèn)和操作;而MCS-51單片機(jī)需要兩個(gè)或兩個(gè)以上的周期才能改變寄存器的內(nèi)容。

          塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理


          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();