單片機第五章 51定時計數(shù)器串行口和中斷系統(tǒng)_第1頁
單片機第五章 51定時計數(shù)器串行口和中斷系統(tǒng)_第2頁
單片機第五章 51定時計數(shù)器串行口和中斷系統(tǒng)_第3頁
單片機第五章 51定時計數(shù)器串行口和中斷系統(tǒng)_第4頁
單片機第五章 51定時計數(shù)器串行口和中斷系統(tǒng)_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第5章MCS-51定時/計數(shù)器、串行口和中斷系統(tǒng)應用領域對定時/計數(shù)功能的技術需求:1)定時發(fā)出控制信號和處理某種工作;2)測量外部信號的頻率和計數(shù)值;3)產(chǎn)生時間基準,測量信號脈寬,產(chǎn)生脈寬調(diào)制信號(PWM)等。這些技術需求往往不能或不適合采用CPU軟件處理辦法,而需要特定的硬件模塊支持,因此單片機往往都集成一定數(shù)量的定時/計數(shù)器單元,稱為Timer/Counter模塊,簡稱T/C。一、51單片機的定時/計數(shù)器51系列內(nèi)部有2個16位的定時/計數(shù)器T0、T1功能:產(chǎn)生定時間隔對外部脈沖計數(shù)串行口異步串行通信時做波特率發(fā)生器現(xiàn)代的新型高性能單片機大多集成了數(shù)目4~16不等的多用途定時/計數(shù)器單元,這些單元除了基本的定時\計數(shù)器功能外,還能實現(xiàn)脈寬調(diào)制輸出(PWM)、脈沖俘獲和比較器輸出(Capture&Compare,簡稱CCP)、光柵/增量式角度編碼器四倍頻辯向計數(shù)器功能等,使單片機片上的集成單元功能大為豐富。一、51單片機定時/計數(shù)器的結構與工作原理1、結構CPUTH1(8位)TL1(8位)T1

T1(P3.5)(8DH)(8BH)7070TH0(8位)TL0(8位)T0

T0(P3.4)(8CH)(8AH)7070TCON(88H)TMOD(89H)啟動啟動溢出溢出工作方式工作方式圖5-1定時/計數(shù)器邏輯結構結構2個16位T/C分別由8位計數(shù)器TH0、TL0、

TH1、TL1組成內(nèi)核是個加“1”計數(shù)器控制寄存器TCON:控制T/C的啟停、中斷等方式寄存器TMOD:控制T/C的工作方式2、工作原理⑴定時器作為定時器工作時,是對單片機內(nèi)部的機器周期信號做“+1”計數(shù),每個機器周期加1,故而可以產(chǎn)生精確的定時間隔。T0T1∵1個機器周期=12振蕩脈沖若單片機的晶振主頻為12MHz則計數(shù)周期為1μs⑵計數(shù)器由外部引腳(T0為P3.4,T1為P3.5)輸入計數(shù)脈沖外部輸入脈沖寬度應大于2個機器周期>TCY>TCY外部輸入脈沖發(fā)生負跳變時,進行“+1”計數(shù)下降沿高電平低電平TCY:為機器周期關于單片機定時器/計數(shù)器的說明51單片機的T/C內(nèi)核就是一個+1計數(shù)器,16位寬度,最大計數(shù)值65535.當其對CPU機器周期計數(shù)時,即稱為定時器,用于產(chǎn)生精準定時間隔操作;當其用于對T0,T1管腳外部不可預測的脈沖信號計數(shù)時,即稱為計數(shù)器。此外還可以利用計數(shù)器功能對外部已知低頻率信號進行計數(shù),來產(chǎn)生長時間定時間隔中斷等。二、定時計數(shù)器的方式寄存器和控制寄存器1、方式寄存器TMODGATEC/TM1M0GATEC/TM1M0LSBMSB(89H)TMOD控制T1控制T0門控位功能選擇位工作方式選擇!TMOD只能字節(jié)尋址GATEC/TM1M0GATEC/TM1M0INT1INT0引腳輸入電平的控制GATE:門控位。設定T1、T0運行時是否受GATE=0:C/T不受INTX控制C/T=1:C/T受INTX控制0為定時功能1為計數(shù)功能

*00方式013位計數(shù)器(*不要求掌握*)01方式116位計數(shù)器

10方式2可自動重新裝載初值的8位計數(shù)器

*11方式3T0分為2個8位計數(shù)器,T1停止計數(shù)M1M0操作方式功能只要求掌握方式1,方式2即可,方式0/方式3無特定用途,不要求掌握2、控制寄存器TCONLSBMSB(88H)TCONTF1TR1TF0TR0IE1IT1IE0IT0T1、T0

啟/??刂莆籘1、T0

溢出標志位與外部中斷INT1、INT0有關將在中斷系統(tǒng)介紹“0”停止“1”啟動“1”有溢出“0”無溢出可編程可控制“+1”亦可由指令清“0”工作“1”“0”記錄有無溢出TCON可以位尋址三、定時/計數(shù)器的4種工作方式⑴方式0M1M0=0013位的定時計數(shù)器,由TH的8位和TL的低5位組成T1(P3.5)GATETR1INT1震蕩器÷12TL15位TH18位TF1中斷KC/T=0C/T=1控制

定時/計數(shù)器方式0邏輯圖111“+1”中斷以T1為例:13位計數(shù)器TF1“+1”“+1”方式0不要求,跳過⑵方式1M1M0=0116位的定時計數(shù)器,由TH的8位和TL的8位組成T1(P3.5)GATETR1INT1震蕩器÷12TL18位TH18位TF1中斷KC/T=0C/T=1控制

定時/計數(shù)器方式1邏輯圖16位計數(shù)器“+1”1以T1為例:中斷TF1“+1”“+1”⑶方式2M1M0=10可自動重裝載的8位計數(shù)器TH1(TH0)被定義為賦值寄存器TL1(TL0)被定義為計數(shù)器

定時/計數(shù)器方式2邏輯圖T1(P3.5)

GATETR1INT1震蕩器÷12TL18位TF1中斷KC/T=0C/T=1控制TH18位重裝載重裝載1“+1”以T1為例:中斷TL18位TF1“+1”“+1”⑷方式3*(刪除)M1M0=11(該方式只適用于T0)T0被分成2個相互獨立的8位計數(shù)器TL0、TH0

TL0使用自己本身的一些控制位C/T、GATE、TR0、TF0、INT0等。

TH0只能做定時器,并使用T1的控制位TR1、TF1,同時占用T1的中斷源。四、定時/計數(shù)器的初始化初始化一般有以下幾個步驟:⑴確定工作方式,對方式寄存器TMOD賦值⑵預置定時或計數(shù)初值,直接將其寫入T0、T1中⑶根據(jù)需要對中斷允許寄存器有關位賦值,以開放或禁止定時/計數(shù)器中斷⑷啟動定時/計數(shù)器,將TRi賦值為“1”計數(shù)初值的設定:最大計數(shù)值M:不同的工作方式M值不同方式0:M=213=8192方式1:M=216=65536方式2、3:M=28=256計數(shù)初值X的計算方法:X=M-計數(shù)值(X即為計數(shù)值的補碼數(shù))計數(shù)初值的裝入計算公式:假設應計數(shù)值為C=64H方式0:13位初值X=2000H-64H=1F9CH方式1:16位初值X=10000H-64H=FF9CH方式2:8位初值X=100H-64H=9CH則方式0,1,2的TL0,TH0應裝入的值分別為方式0:TH0=0FCH,TL0=1CH,取1F9C的低5位和高8位方式1:TH0=0FFH,TL0=9CH方式2:TH0=TL0=9CH定時計數(shù)器應用編程舉例例5-1如圖5-2,P1外接8個發(fā)光二極管,編程使8個發(fā)光二極管輪流點亮,時間間隔為100ms,設晶振為fosc=6MHz。解:利用T1實現(xiàn)100ms定時,每隔100ms,P1口寄存器值左移一次實現(xiàn),分別采用查詢T1溢出標志位TF1和定時中斷方式實現(xiàn)。先計算100ms定時初值,采用16位方式1.機器周期Ts=2us。應計脈沖數(shù)100ms/2us=50000則計數(shù)器初值為X=65536-50000=15536=3CB0H,TH1=3CH,TL1=0B0H*當定時時間到時,TF1標志位會自動置1*1)查詢方式(反復查詢TF1,等候定時到)ORG0000HMOVA,#0FEH;第一個燈亮MOVTMOD,#10H;設置模式,T1方式1MOVTH1,#3CH;設定初值MOVTL1,#0B0HSETBTR1;啟動定時器T1LOOP:MOVP1,A;P1輸出CHEK:JNBTF1,CHEK;TF1=1?定時100ms到?

CLRTF1;軟件清零溢出標志

RLA;循環(huán)左移

MOVTH1,#3CH;溢出后需重賦初值MOVTL1,#0B0HSJMPLOOP2)中斷方式ORG0000HAJMPMAINORG001BHAJMPIV1ORG0030HMAIN:MOVA,#0FEHMOVP1,AMOVTMOD,#10HMOVTH1,#3CHMOVTL1,#0B0HSETBTR1SETBET1SETBEASJMP$IV1:RLAMOVP1,AMOVTH1,#3CHMOVTL1,#0B0HRETI例7-2在P1.7端接一個發(fā)光二極管LED,要求利用定時計數(shù)器控制使LED閃亮,一秒為周期,設fosc=6MHz。方法1:用T0產(chǎn)生周期200ms脈沖,讓P1.0每100ms取反一次輸出作為T1的脈沖計數(shù)輸入,T1計數(shù)5個脈沖剛好1000ms。T0,T1初始化設置TMOD=61H,T1方式2計數(shù),T0方式1定時T0計數(shù)初值X=65536-50000=15536=3CB0H,T1計數(shù)初值Y=28-5=FBH。采用查詢方式編程如下ORG0000HMAIN:CLRP1.7 SETBP1.0MOVTMOD,#61HMOVTH1,#0FBHMOVTL1,#0FBHSETBTR1LP1:CPLP1.7LP2:MOVTH0,#3CHMOVTL0,#0B0HSETBTR0LP3:JBCTF0,LP4SJMPLP3LP4:CPLP1.0JBCTF1,LP1AJMPLP2END方法2:用T0每100ms中斷一次,連續(xù)中斷10次P1.7取反一次,即實現(xiàn)1秒輸出反轉一次。ORG0000HAJMPMAINORG000BHAJMPT0INTORG0030HMAIN:CLRP1.7MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBET0SETBEAMOVR4,#0AHSETBTR0SJMP$T0INT:MOVTH0,#3CHMOVTL0,#0B0HDJNZR4,BACKMOVR4,#0AHCPLP1.7BACK:RETIEND本章小結,課后習題討論討論內(nèi)容:PWM(脈寬調(diào)制),51單片機利用定時/計數(shù)器實現(xiàn)不等寬方波輸出二、51單片機串行接口一有關串行通信的基本概念和名詞通信:計算機與外界的信息交換稱為通信。兩種基本通信方式:并行通信和串行通信并行通信:一次被傳輸?shù)臄?shù)據(jù)有多少位,就需要多少根數(shù)據(jù)傳輸線。特點:通信速度快,編程簡單。缺點:不適合長距離傳輸,傳輸線多。大多數(shù)單片機,DSP等都具有并行接口總線,比如常見的地址、數(shù)據(jù)和控制三總線接口。串行通信:數(shù)據(jù)在一根線路上按照位的先后順序一位一位的傳送。特點:占用線路少,硬件接口簡單,比較適合長距離傳輸,一般比并行通信方式略慢。串行通信需要定義專門的通信協(xié)議。基本的串行通信方式有同步通信和異步通信兩種。串行通信中的數(shù)據(jù)是按幀(Frame)進行傳輸。通信方向:異步串行通信的三種工作方式:單工、半雙工、全雙工(p133.圖8-2)通信協(xié)議:指通信雙方為確保通信成功而訂立并共同遵守的通信約定,主要包括數(shù)據(jù)幀格式,時鐘速率,檢查糾錯方式。各種串行通信方式都必須嚴格遵守其通信協(xié)議才能保證通信的正確性。**串行通信和并行通信的應用**并行通信:通信線路多,通信距離短,速度快,通信協(xié)議簡單,適合于電路板上CPU和外圍并行接口芯片的快速通信,例如CPU和RAM,并行接口的ADC,DAC等。串行通信:線路少,硬件接口簡單,可靠性高,通信距離較長,但通信協(xié)議復雜,每種串行通信的協(xié)議各不相同。串行通信又可分為芯片間通信和設備間通信兩種。芯片間通信常見的有SPI,I2C兩種設備間通信常用的有USART(232/485/422),CAN,LIN,Profibus等1.異步傳送方式中的幀數(shù)據(jù)格式一幀數(shù)據(jù):一個字符在異步傳送中稱為一幀數(shù)據(jù)一幀數(shù)據(jù)由4部分組成:起始位、數(shù)據(jù)位、奇偶位、停止位1/01/01/01/01/01/01/01/01/001一幀數(shù)據(jù)起始位數(shù)據(jù)位奇偶位停止位01/01/01/0起始位數(shù)據(jù)位11/0停止位第n個字符第n+1個字符LSBMSB為邏輯“0”信號,占用一位,用來通知接收設備,一個新的字符開始了數(shù)據(jù)位:起始位:奇偶位:5~8位。數(shù)據(jù)的最低位在前,最高位在后。緊跟在最高位之后,占用一位,奇偶校驗時,根據(jù)協(xié)議置“1”或“0”停止位:為邏輯“1”信號,占用1位或2位,當接收端收到停止位時,表示一幀數(shù)據(jù)結束。2.波特率(Baudrate,單位bps,即bitpersecond):簡單理解為每秒鐘一根串行線路上可以傳輸?shù)亩M制數(shù)據(jù)位數(shù),如PC機串行口常見的波特率值:600,1200,2400,4800,9600,19200,38400,57600,115200,230400…**波特率是串行通信協(xié)議的基礎部分之一,其定義了雙方通信的速率,雙方波特率必須一致才能實現(xiàn)正常通信,協(xié)議的基礎部分之二是數(shù)據(jù)幀的格式,雙方也必須一致才可**波特率發(fā)生器:串行通信中數(shù)據(jù)是按照一定的時鐘頻率按位向外一位一位移入移出內(nèi)部移位寄存器的,用于產(chǎn)生該移位時鐘的電路叫波特率發(fā)生器。在51單片機中,方式0采用固定波特率方式,方式1為可變波特率方式,一般都由T1定時器的自動溢出作為波特率發(fā)生器的。雙機異步串行通信的幾種不同接口方式。1)單片機雙機直連(TTL電平,僅適用于很短通信距離和較低波特率,連接如下圖

2)RS-232串行接口*國際電子工業(yè)協(xié)會(EIA)制定RS-232串行通信接口標準,規(guī)定如下:TXD,RXD信號:邏輯1=-3~-15V,邏輯0=+3~+15V,RS-232C最大通信距離在15m左右,PC機串口即是一個標準RS-232口PC機RS-232CDB9串行口引腳RS-232電平和單片機TTL電平間需要電平轉換芯片接口,常用的是MAX232.485、422串行通信接口(*僅做了解*)為進一步提高串行通信的距離,采用差分輸出驅動方式可以有效大幅提高可靠通信距離,即485通信方式,其中485為半雙工,422為全雙工通信方式,接口方式和常用芯片如下:485半雙工通信接口示意圖和真值表發(fā)送接收488全雙工串行接口(*僅做了解*)二MCS-51單片機串行口單元內(nèi)部結構1、數(shù)據(jù)緩沖器SBUF包括物理上獨立的發(fā)送緩沖器、接收緩沖器發(fā)送緩沖器:只能寫入不能讀出接收緩沖器:只能讀出不能寫入二者共用一個地址99H,統(tǒng)一名字SBUF2、串行口控制寄存器字節(jié)地址為98H,可位尋址,位地址為98H~9FHSM0SM1SM2RENTB8RB8TIRISCON(98H)允許接收控制位。由軟件置“1”時,允許接收,置“0”時,禁止接收REN:SM0SM1SM2RENTB8RB8TIRISCON(98H)D7D0SM0、SM1:串行口工作方式選擇位,如表6-3所示

000移位寄存器方式(用于I/O擴展)

0118位UART,波特率可變1029位UART,波特率為fosc/32或fosc/641139位UART,波特率可變SM0SM1

方式功能串行口工作方式**只要求掌握方式0和方式1即可,其余不用***TB8:在方式2和方式3中要發(fā)送的第9位數(shù)據(jù),需要時由軟件置位或復位*RB8:在方式2和方式3中要接收的第9位數(shù)據(jù),在方式1時,如SM2=0,RB8是接收到的停止位。在方式0中,不使用RB8TI:發(fā)送中斷標志。在方式0串行發(fā)送第8位結束時由硬件置“1”,或在其他方式中串行發(fā)送停止位的開始時置“1”,必須由軟件清“0”RI:接收中斷標志。在方式0串行發(fā)送第8位結束時由硬件置“1”,或在其他方式中串行發(fā)送停止位的開始時置“1”,必須由軟件清“0”3、特殊功能寄存器PCON其字節(jié)地址87H,沒有位尋址功能。PCON(87H)SMODSMOD:波特率選擇位。SMOD=1時,波特率加倍三、串行口工作方式1、方式0移位寄存器輸入輸出方式,可外接移位寄存器,以擴展I/O口方式0的波特率為:波特率=fosc/128051RXDTXD74LS164345610111213數(shù)據(jù)輸出移位脈沖⑴方式0發(fā)送一個數(shù)據(jù)寫入SBUF,串口將數(shù)據(jù)從RXD輸出(波特率fosc/12),TXD輸出同步移位信號,發(fā)送完后TI自動置1,必須由軟件清TI位。D7D0方式0擴展I/O口硬件邏輯圖串入并出擴展輸出端口⑵方式0接收REN置1,串口將數(shù)據(jù)從RXD輸入(波特率fosc/12),TXD輸出同步移位信號,一個字符數(shù)據(jù)接收完RI置1,必須軟件清RI位8051RXDTXD74LS165345614111213數(shù)據(jù)輸入移位脈沖D7D0方式0擴展I/O口硬件邏輯圖并入串出擴展輸入端口2、方式1波特率可變的8位異步通信接口方式。波特率=(2SMOD/32)×T1溢出率⑴方式1發(fā)送CPU執(zhí)行一條寫SBUF指令,就啟動了串口發(fā)送當SEND和DATA有效時,數(shù)據(jù)從TXD輸出。⑵方式1接收允許接收位REN被置“1”后,接收器就開始工作,RXD引腳上發(fā)生由“1”到“0”的跳變,接收器開始接收。停止位起始位四、波特率的設計(1)方式0的波特率是固定的:波特率=fosc/12波特率=2SMOD/32×T1的溢出率(2)方式1波特率取決于T1的溢出率(3)定時器1作波特率發(fā)生器T1的溢出率=計數(shù)速度/(2K-初值)K為定時器T1的位數(shù)K=8(方式2)

K=13(方式0)K=16(方式1)T1為計數(shù)器時:T1為定時器時:T1的溢出率=fosc/[12×(2K-初值)]最常用五、串行口的應用1、方式0的應用共陽LED數(shù)碼管:公共端(字位)

接高電平,筆劃(字段)

置為低電平就被點亮了hgfedcba累加器A110000000C0H=“0”?比如要顯示“0”

須令abcdef為“0”

電平,gh為“1”電平。?再比如要顯示“3”

須令abcdg為“0”

電平,efh為“1”電平。101100000B0H=“3”共陽極低電平點亮hgf……a接高電平hgfedcbaabcdgefh某共陰數(shù)碼管腳位圖某4位共陰數(shù)碼管腳位圖例:利用串行口工作方式0擴展出8位并行I/O口,驅動共陽LED數(shù)碼管顯示0—9。ABCLKhgfedcbaCLR+5VVCCTxDRxD803174LS164共陽LED數(shù)碼管共陽LED數(shù)碼管顯示0-9數(shù)字的子程序(查表):DSPLY:MOVDPTR,#TABLEMOVCA,@A+DPTRMOVSBUF,AJNBTI,$CLRTIRETTABLE:DB0C0H,0F9H,0A4HDB0B0H,99H,92HDB82H,0F8H,80H,90HABCLKhgfedcbaCLRABCLKCLRABCLKCLR+5V74LS16474LS16474LS164hgfedcbahgfedcba+5V共陽LED數(shù)碼管VCCTxDRxD8051P1.0DISPLY:MOV SCON,#00H MOV R7,#03H MOV R0,#DISBUF SETB P1.0L1: MOV A,@R0

MOVDPTR,#TABLEMOVCA,@A+DPTR

MOV SBUF,AJNB TI,$ CLR TI INC R0 DJNZ R7,L1 CLR P1.0 RETP1.0作串行輸出選擇信號TABLE:DB0C0H,0F9H,0A4H,0B0H,99HDB92H,82H,0F8H,80H,90H DISBUFEQU70H2、方式1的應用(雙機通信)RXDTXDGNDRXDTXDGND甲機乙機思考:硬件連接如上圖,試編程實現(xiàn)甲機連續(xù)發(fā)送16個數(shù)據(jù)給乙機提示:通常查詢發(fā)送,中斷接收也可查詢接收,但要耗費

CPU資源。例:把內(nèi)部RAM40H~5FH單元中的ASCII碼,由甲機發(fā)送到乙機,波特率1200,無奇偶校驗,晶振fosc=11.0592MHz。解:設置甲機在方式1下發(fā)送,SCON←40H;乙機串行方式1接收,SCON←50H。T1做波特率發(fā)生器,TH1重裝初值E8H,TMOD←20H。波特率計算波特率=2SMOD/32×T1的溢出率T1的溢出率=fosc/(28-x)*12因此T1的初值代入條件得x=256-24=232=E8H參考程序:甲機發(fā)送

MOVTMOD,#20H;T1方式2MOVTL1,#0E8HMOVTH1,#0E8H;賦初值

SETBTR1;啟動T1MOVSCON,#40H;串口方式1MOVR0,#40H;內(nèi)部RAM指針

MOVR1,#32NEXT:MOVA,@R0;取ASCII碼

MOVSBUF,AJNBTI,$CLRTIINCR0DJNZR1,NEXT;循環(huán)將32字節(jié)發(fā)送完乙機接收:將收到的32字節(jié)放在60~7FH單元。(查詢接收方式)

MOVTMOD,#20HMOVTL1,#0E8HMOVTH1,#0E8H;波特率與甲機相同

SETBTR1MOVR0,#60H;存放區(qū)首址

MOVR1,#32NEXT:JNBRI,$MOVA,SBUFMOV@R0,ACLRRIDJNZR1,NEXT;未完繼續(xù)接收ORG0000HLJMPMAINORG0023HLJMPCOMINTORG0100HMAIN:MOVR0,#60HMOVR1,#32MOVTMOD,#20HMOVTL1,#0E8HMOVTH1,#0E8H

SETBTR1SETBESSETBEASJMP$

中斷接收方法程序范例:(主程序)中斷服務子程序COMINT:MOVA,SBUFMOV@R0,AINCR0CLRRIRETI

串行口通信的C語言樣例代碼//UART串口初始化函數(shù),9600,N,8,1格式,發(fā)送接收均可,使能串口中斷voiduart_init(){SCON=0x50;TMOD=0x20;TH1=TL1=0xFD;//9600bps,fosc=11.0592MHzTR1=1;ES=1;}//串口接收一子節(jié)函數(shù)unsignedcharuart_receive(){unsignedchardat;while(!RI);dat=SBUF;RI=0;returndat;}//串口發(fā)送一字節(jié)函數(shù)voiduart_send(unsignedchardat){SBUF=dat;while(!TI);TI=0;}三、MCS-51單片機的中斷系統(tǒng)中斷系統(tǒng)結構:中斷源和中斷控制寄存器中斷響應過程中斷程序設計舉例關于中斷的幾個基本概念中斷:中斷是CPU為處理緊急突發(fā)事件而設置的應急處理機制,具體指當CPU正在正常執(zhí)行程序時,若有某種外部突發(fā)事件請求立即處理,則其向CPU提出處理申請,CPU暫停當前執(zhí)行程序轉而處理該突發(fā)事件,處理完畢后再回到原程序中斷位置(斷點)繼續(xù)執(zhí)行原程序,這種處理過程叫中斷。CPU和外設并行工作及中斷處理機制以計數(shù)器計數(shù)為例CPUCNT=0開始計數(shù)允許溢出中斷初始化計數(shù)器+1,+1…CPU自己的程序循環(huán)(主程序)CPU暫停當前工作,處理計數(shù)器溢出事件CNT>MAX計數(shù)器溢出通知CPU中斷執(zhí)行中斷處理子程序返回CPU主程序CPU和外設并行工作,以中斷申請和中斷服務子程序形式處理外設的特殊事件處理請求。中斷源:能夠引起CPU中斷的事件來源,成為中斷源,51單片機中斷源包括:INT0,T0,INT1,T1,UART等5個中斷優(yōu)先級:CPU對不同中斷源的處理優(yōu)先響應次序稱為中斷優(yōu)先級。中斷過程中,高優(yōu)先級的中斷能中斷低優(yōu)先級的中斷處理程序,反之則不行。中斷系統(tǒng)組織:中斷源中斷控制系統(tǒng)中斷服務程序入口地址(中斷向量表)中斷處理響應過程。中斷源51單片機有5個中斷源,當其向CPU申請中斷時,CPU會中斷當前正在執(zhí)行的程序,硬件將PC自動跳轉到指定的中斷入口地址處開始執(zhí)行程序,即進入中斷服務程序(ISR),這些中斷入口地址便程序中斷向量表,所有單片機在這一點上是基本相同的。外部中斷請求INT0定時/計數(shù)器T0溢出定時/計數(shù)器T1溢出串行口UART定時/計數(shù)器T2溢出外部中斷請求INT1中斷源中斷入口地址:0003H000BH0013H001BH0023H002BH

5個中斷源2個優(yōu)先級2個外部中斷3個內(nèi)部中斷INT0(P3.2)INT1(P3.3)T0T1UART

與中斷有關的特殊功能寄存器:IP:中斷優(yōu)先控制寄存器IE:中斷允許控制寄存器TCON:定時/計數(shù)控制寄存器SCON:UART控制寄存器中斷標志寄存器可編程,可控MCS–51中斷要點51單片機與中斷相關的內(nèi)容1、定時/計數(shù)器控制寄存器TCONTCON(88H)TF1

TF0

IE1

IT1

IE0IT0

INT1

INT0觸發(fā)方式控制位0

低電平觸發(fā)1

邊沿↓觸發(fā)

INT1

INT0外部中斷請求標志1有有效觸發(fā)時0

當CPU響應中斷時T1T0溢出標志1

計數(shù)器“+1”有溢出時,并向CPU請求中斷0

當CPU響應中斷時,也可由指令清除TR1TR0中斷請求標志可編程控制位TR1

TR000記錄有無中斷2、串行口控制寄存器SCONTI:串行口發(fā)送中斷標志在方式0,串行發(fā)送到第8位結束時,由硬件置“1”;或在其他方式中,串行發(fā)送到停止位的開始時,由硬件置“1”,RI:串行口接收中斷標志在方式0,串行接收到第8位結束時,由硬件置“1”;或在其他方式中,串行接收到停止位的開始時,由硬件置“1”,“1”發(fā)送完一幀數(shù)據(jù)后“1”接收完一幀數(shù)據(jù)后必須由軟件清“0”必須由軟件清“0”SCON(98H)

TIRI中斷控制寄存器1、中斷允許寄存器IEEA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論