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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)系統(tǒng)的基本概念

          單片機(jī)系統(tǒng)的基本概念

          作者: 時(shí)間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
          (1)單片機(jī)組成:中央處理器、存儲器、I/O設(shè)備。
          (2)存儲器:物理實(shí)質(zhì)是一組或多組具備數(shù)據(jù)輸入/輸出和數(shù)據(jù)存儲功能的集成電路,用于充當(dāng)設(shè)備緩存或保存固定的程序及數(shù)據(jù)。

          A、ROM(只讀存儲器):一般用于存放固定的程序或數(shù)據(jù)表格等,數(shù)據(jù)在掉電后仍然會(huì)保留下來。
          B、RAM(隨機(jī)存儲器):用于暫存程序和數(shù)據(jù)、中間計(jì)算結(jié)果,或用作堆棧用等,數(shù)據(jù)在掉電后就會(huì)丟失。

          (3)I/O端口:單片機(jī)與外界聯(lián)系的通道,它可以對各類外部信號(開關(guān)量、模擬量、頻率信號)進(jìn)行檢測、判斷、處理,并可控制各類外部設(shè)備?,F(xiàn)在的單片機(jī)I/O口已經(jīng)集成了更多的特性和功能,對I/O端口的功能進(jìn)行了拓展和復(fù)用,例如外部中斷、ADC檢測以及PWM輸出等等。

          (4)輸出電平:高電平電壓(輸出“1”時(shí))和低電平電壓(輸出“0”時(shí))
          A、TTL電平:正邏輯,5V為邏輯正,0V為邏輯負(fù),例如單片機(jī)的輸出。
          B、RS232電平:負(fù)邏輯,-12V為邏輯正,+12V為邏輯負(fù),例如PC的輸出。
          注:因此在單片機(jī)和PC進(jìn)行通訊的時(shí)候需要一個(gè)MAX232芯片進(jìn)行電平轉(zhuǎn)換。

          (5)堆棧:它是一種線性的數(shù)據(jù)結(jié)構(gòu),是一個(gè)只有一個(gè)進(jìn)出口的一維空間。
          A、堆棧特性:后進(jìn)先出(LIFO)
          B、堆棧指針:用于指示棧頂?shù)奈恢茫ǖ刂罚?,?dāng)發(fā)生壓?;蛘叱鰲2僮鲿r(shí),導(dǎo)致棧頂位置變化時(shí),堆棧指針會(huì)隨之變化。
          C、堆棧操作:壓棧操作(PUSH)和出棧操作(POP)。
          D、堆棧類型:“向上生長”型堆棧,每次壓棧時(shí)堆棧指針加1;“向下生長”型堆棧,每次壓棧堆棧時(shí)指針減1。
          E、堆棧應(yīng)用:調(diào)用子程序、響應(yīng)中斷時(shí),堆棧用于保護(hù)現(xiàn)場;還可以用作臨時(shí)數(shù)據(jù)緩沖區(qū)來使用。
          F、使用注意:堆棧溢出問題,壓棧和出棧的匹配問題。
          (6)定時(shí)/計(jì)數(shù)器:實(shí)質(zhì)都是計(jì)數(shù)器。用作定時(shí)器時(shí)是對單片機(jī)內(nèi)部的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),而在用作計(jì)數(shù)器時(shí)是對單片機(jī)外部的輸入脈沖進(jìn)行計(jì)數(shù),其作用如下:
          A、計(jì)時(shí)、定時(shí)或延時(shí)控制;
          B、脈沖技術(shù);
          C、測量脈沖寬度或頻率(捕獲功能)
          (7)中斷:優(yōu)先級更高的事件發(fā)生,打斷優(yōu)先級低的時(shí)間進(jìn)程。引起中斷的事件稱為中斷源。一個(gè)單片機(jī)可能支持多個(gè)中斷源,這些中斷源可以分為可屏蔽中斷和非可屏蔽中斷,而這些中斷源并不都是系統(tǒng)工作所需的,我們可以根據(jù)系統(tǒng)需求屏蔽那些不需要的中斷源。
          A、中斷嵌套:當(dāng)一個(gè)低級中斷尚未執(zhí)行完畢,又發(fā)生了一個(gè)高級優(yōu)先級的中斷,系統(tǒng)轉(zhuǎn)而執(zhí)行高級中斷服務(wù)程序,待處理完高級中斷后再回過頭來執(zhí)行低級中斷服務(wù)程序。
          B、中斷響應(yīng)時(shí)間是指從發(fā)出中斷請求到進(jìn)入中斷處理所用的時(shí)間;中斷處理時(shí)間是指中斷處理開始到中斷處理結(jié)束的時(shí)間。
          C、中斷響應(yīng)過程:
          a、保護(hù)現(xiàn)場:將當(dāng)前地址、累加器ACC、狀態(tài)寄存器保存到堆棧中。
          b、切換PC指針:根據(jù)不同的中斷源所產(chǎn)生的中斷,切換到相應(yīng)的入口地址。
          c、執(zhí)行中斷服務(wù)處理程序。
          d、恢復(fù)現(xiàn)場:將保存在堆棧中的主程序地址、累加器ACC、狀態(tài)寄存器恢復(fù)。
          e、中斷返回:從中斷處返回到主程序,繼續(xù)執(zhí)行。
          D、中斷入口地址:單片機(jī)為每個(gè)中斷源分配了不同的中斷入口地址,也稱為中斷向量。
          (8)復(fù)位:通過外部電路給單片機(jī)的復(fù)位引進(jìn)一個(gè)復(fù)位信號,讓系統(tǒng)重新開始運(yùn)行。
          A、復(fù)位發(fā)生時(shí)的動(dòng)作:
          a、PC指針從起始位置開始執(zhí)行(大多數(shù)單片機(jī)都時(shí)從0x0000處開始執(zhí)行)。
          b、I/O端口設(shè)置成缺省狀態(tài)(高阻態(tài)、或者輸出低電平)。
          c、部分專用控制寄存器SFR恢復(fù)到缺省狀態(tài)。
          d、普通RAM不變(如果是上電復(fù)位,則是隨即數(shù))。
          B、兩種不同的復(fù)位啟動(dòng)方式:
          a、冷啟動(dòng):也叫上電復(fù)位,指在斷電狀態(tài)下給系統(tǒng)加電,讓系統(tǒng)開始正常運(yùn)行。
          b、熱啟動(dòng):在不斷電的狀態(tài)下,給單片機(jī)復(fù)位引進(jìn)一個(gè)復(fù)位信號,讓系統(tǒng)重新開始。
          C、兩種類型的復(fù)位電路:高電平復(fù)位和低電平復(fù)位。
          D注意事項(xiàng):
          a、
          注意復(fù)位信號的電平狀態(tài)及持續(xù)時(shí)間必須滿足系統(tǒng)要求。
          b、
          注意避免復(fù)位信號抖動(dòng)。
          (9)時(shí)鐘電路:單片機(jī)是一種時(shí)序電路,必須提供脈沖電路才能正常工作。時(shí)鐘電路相當(dāng)于單片機(jī)的心臟,它的每一次跳動(dòng)(振動(dòng)節(jié)拍)都控制著單片機(jī)的工作節(jié)奏。振蕩得慢時(shí),系統(tǒng)工作速度就慢,振蕩得快時(shí),系統(tǒng)工作速度就快(功耗也增大)。
          A、振蕩周期:振蕩源的振蕩節(jié)拍。
          B、機(jī)器周期:單片機(jī)完成一個(gè)基本操作需要的振蕩周期(節(jié)拍)。
          C、指令周期:執(zhí)行一條指令需要幾個(gè)機(jī)器周期。不同的指令需要的機(jī)器周期數(shù)不同。


          評論


          技術(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); })();