版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單片機技術及應用SCMTechnology&Application
全套可編輯PPT課件12345CONTENTS目錄PART
ONEPART
TWOPART
THREEPART
FOURPART
FIVE緒論MCS-51結構及系統(tǒng)指令MCS-51的C語言基礎MCS-51的基本內部資源單片機的資源擴展PART
ONE緒論1單片機的概念及發(fā)展單片機的特點及應用全套可編輯PPT課件Concept&Development單片機的概念與發(fā)展單片機的概念SingleChipMicrocomputer單片機全稱為單片微型計算機(SingleChipMicrocomputer)。由于單片機主要多應用于控制系統(tǒng)中,因此又被稱為微控制器(MicrocomputerUnit,MCU)或嵌入式控制器(EmbeddedController)。它把計算機的基本部件微型化并集成到一塊芯片上,通常片內都含有中央處理器(CPU)、數(shù)據(jù)存儲器(RAM)、程序存儲器(ROM\EPROM\Flash)、定時器/計數(shù)器和各種I/O接口,如串行通信口、中斷控制、系統(tǒng)時鐘和系統(tǒng)總線等。*
單片機的典型結構圖時鐘OSC程序存儲器ROM數(shù)據(jù)存儲器
RAM內部總線中央數(shù)據(jù)
處理器CPUI/0外設
接口定時器/計數(shù)器CTC中斷全套可編輯PPT課件單片機的概念與發(fā)展1978-1983發(fā)展階段1983至今
爆炸式發(fā)展階段1970-1978初級階段單片機的發(fā)展概況Concept&Development單片機發(fā)展至今已有40余年,它的生產與發(fā)展和微處理器的發(fā)展大體上同步,若將4位單片機的誕生為起點,那么單片機的發(fā)展可以分為以下幾個階段:Concept&Development單片機的概念與發(fā)展單片機的未來發(fā)展趨勢小容量
價格低廉化大容量
高性能化外圍電路內裝化低功耗化Features&Application單片機的特點及應用單片機的特點①集成度高、可靠性高②低電壓低功耗③高性價比④針對性強Features&Application單片機的特點及應用由于單片機的飛速發(fā)展,它的應用領域也越來越廣泛。小到玩具、日用品,大到衛(wèi)星、航天器,從實現(xiàn)數(shù)據(jù)采集、過程控制、模糊控制等智能系統(tǒng)到人類日常生活,處處都有單片機的影子,其主要應用領域如下:單片機的應用1234工業(yè)自動化中的應用智能儀器儀表中的應用日常生活中的應用在軍事領域的應用Features&Application單片機的特點及應用常用單片機簡介
類型特征80518051AH8052AH80C51BH83C51FA83C51FB83C51GA83C512JA83C512JC83C45183C4528位I/O口4444444557516位定時器/計數(shù)器22323322222可編程計數(shù)器(PAC)
√√
異步串行口(UART)√√√√√√√√√√√串行擴展口(SEP)
√
多功能串行口(GSC)
√√
DMA通道
22
2A/D
8
中斷源/中斷向量6/56/58/66/514/714/78/719/1119/116/59/8掉電和空閑方式
√√√√√√√√單片機的廠商很多。如美國的英特爾(Intel)、國家半導體(NationalSemiconductor)、愛特梅爾(Atmel)、微型(Microchip)、德州儀器(TI)等;日本的東芝(Toshiba)、日立(Hitachi)、日電(NEC)等;荷蘭的飛利浦(Philips);德國的西門子(Siemens)等等思考與練習什么是單片機?簡述它的典型結構。單片機的發(fā)展分為哪幾個階段?各階段的有哪些功能特點。單片機的未來發(fā)展分為哪幾個方向?并簡述之。例舉一些我們身邊的單片機的應用。
感謝聆聽THANK
YOU!單片機技術及應用SCMTechnology&Application
12345CONTENTS目錄PART
ONEPART
TWOPART
THREEPART
FOURPART
FIVE緒論MCS-51結構及系統(tǒng)指令MCS-51的C語言基礎MCS-51的基本內部資源單片機的資源擴展PART
TWOMCS-51硬件結構及系統(tǒng)指令2MCS-51單片機的結構MCS-51單片機的時鐘模塊及
工作方式StructureMCS-51單片機的結構MCS-51單片機的結構MCS-51單片機系統(tǒng)內部由CPU、數(shù)據(jù)存儲器RAM、程序存儲器ROM、定時器/計數(shù)器和I/O口等功能部件構成,如圖所示時鐘模塊程序存儲器數(shù)據(jù)存儲器16位
定時器/計數(shù)器中央數(shù)據(jù)處理器CPU總線擴展控制可編程并行I/0可編程全雙工串行口外部時鐘源計數(shù)器輸入中斷P1P2P3P4控制串口輸入串口輸出StructureMCS-51單片機的結構MCS-51系列單片機內部模塊功能如下程序存儲器ROM數(shù)據(jù)存儲器RAM中央處理器CPU可編程全雙工串行口16位定時/計時器可編程I/0口時鐘模塊中斷系統(tǒng)MCS-51內部結構框圖StructureMCS-51單片機的結構一、中央處理器CPU中央處理器CPU是單片機的核心單元,它由控制器和運算器組成。而控制器由程序計數(shù)器PC、數(shù)據(jù)指針DPTR、指令寄存器IR、指令譯碼器及定時控制邏輯組成,運算器由算術邏輯運算單元ALU、累加器A、寄存器B、程序狀態(tài)字PSW和堆棧指針SP組成。1.控制器單片機是程序控制式的計算機,指令是逐條地存放在程序存儲器中,執(zhí)行指令時首先將指令碼送到指令寄存器中寄存,然后對該指令譯碼,轉換成一些列的定時控制的微操作,用于控制單片機各個部分運行。StructureMCS-51單片機的結構一、中央處理器CPU2.運算器運算器主要用來實現(xiàn)對操作數(shù)的算術邏輯預算和位操作。它包括一個可進行8位算術運算和邏輯運算的ALU單元、8位的暫存器1和暫存器2、8為的累加器ACC、B寄存器,以及程序狀態(tài)標志寄存器PSW等。其結構如圖所示。StructureMCS-51單片機的結構二、引腳說明MCS-51系列單片機的外形封裝有兩種方式,雙列直插式(DIP)和方形封裝(PLCC、MQFP)。如圖2-4所示,給出了DIP封裝的引腳排列圖。40條引腳功能如下主電源引腳VCC和GND時鐘引腳XTAL1和XTAL2控制信號引腳ALE/、PROG、PSEN、EA/Vpp和RST輸入輸出端引腳(也稱I/O口)StructureMCS-51單片機的結構
從物理地空間上來看,MCS-51有4個存儲器地址空間,即片內程序存儲器(片內ROM)、片外程序存儲器(片外ROM)、片內數(shù)據(jù)存儲器(片內RAM)、片外數(shù)據(jù)存儲器(片外RAM)。MCS-51存儲器結構如圖2-5所示。三、存儲器結構StructureMCS-51單片機的結構三、存儲器結構由于程序存儲器是用來存放程序和初始表格常數(shù)的,所以單片機中的程序存儲器為只讀型存儲器(ROM)。對于8051,它片內駐留4KB的ROM(0000H~0FFFH)。它片外ROM最大容量可達64KB(0000H~FFFFH)。片內和片外ROM在低4KB的地址是重疊的,這時候它們的訪問用EA腳來控制。當EA置1時,訪問內部4KB的ROM,外部ROM從1000H開始編址。當PC指針大于0FFFH時自動轉向外部ROM。當EA為0時,將直接從片外ROM的低4KB開始訪問。此時地址從0000H~FFFFH都是外部ROM存儲空間程序存儲器的某些特定單元被保留用于特定的程序入口地址。一般在該位置反之相應的跳轉指令,使得PC指針跳轉到相應的程序代碼塊其實存放地址,常用的幾個入口地址,如表2-2所示。1.程序存儲器ROM特定程序入口地址系統(tǒng)復位0000H外部中斷00003H定時器T0溢出中斷000BH外部中斷10013H定時器T1溢出中斷001BH串行口中斷0023H定時器T2溢出(8052)002BH表2-2特定程序的入口地址StructureMCS-51單片機的結構三、存儲器結構2.數(shù)據(jù)存儲器RAM(1)片內RAM片內RAM最大尋址范圍為256字節(jié),其在物理上又可以分為兩個獨立的、功能不同的區(qū)域。
其配置如圖2-6所示。圖2-6MCS-51片內RAM地址空間StructureMCS-51單片機的結構三、存儲器結構2.數(shù)據(jù)存儲器RAM①片內低128字節(jié)RAM片內低128字節(jié)RAM是用于真正可以存取隨機數(shù)據(jù)的數(shù)據(jù)存儲器,其地址為00H~7FH。根據(jù)尋址方式的不同,低128字節(jié)RAM又可以分為工作寄存器區(qū)、位尋址區(qū)、用戶RAM區(qū)和堆棧區(qū)。
表2-3RAM位尋址區(qū)字節(jié)地址與位地址對應表字節(jié)地址位地址765432102FH7FH7EH7DH7CH7BH7AH79H78H2EH77H76H75H74H73H72H71H70H2DH6FH6EH6DH6CH6BH6AH69H68H2CH67H66H65H64H63H62H61H60H2BH5FH5EH5DH5CH5BH5AH59H58H2AH57H56H55H54H53H52H51H50H29H4FH4EH4DH4CH4BH4AH49H48H28H47H46H45H44H43H42H41H40H27H3FH3EH3DH3CH3BH3AH39H38H26H37H36H35H34H33H32H31H30H25H2FH2EH2DH2CH2BH2AH29H28H24H27H26H25H24H23H22H21H20H23H1FH1EH1DH1CH1BH1AH19H18H22H17H16H15H14H13H12H11H10H21H0FH0EH0DH0CH0BH0AH09H08H20H07H06H05H04H03H02H01H00H表2-3RAM位尋址區(qū)字節(jié)地址與位地址對應表StructureMCS-51單片機的結構三、存儲器結構2.數(shù)據(jù)存儲器RAM②片內高128字節(jié)RAMMCS-51內高128字節(jié)的RAM內有21個特殊功能寄存器SFR,他們離散地分布在80H~FFH的RAM空間中。訪問特殊功能寄存器只能使用直接尋址方式。常用的特殊功能寄存器如表2-4所示。標示符寄存器名稱字節(jié)地址位地址ACC累加器E0HE0H~E7HBB寄存器F0HF0H~F7HPSW程序狀態(tài)字D0HD0H~D7HSP堆棧指針81H-
DPTR數(shù)據(jù)指針(包括DPH和DPL)83H(DPH)82H(DPL)-
P0P0口80H80H~87HP1P1口90H90H~97HP2P2口A0HA0H~A7HP3P3口B0HB0H~B7HIP中斷優(yōu)先級控制B8HB8H~BFHIE中斷允許控制A8HA8H~AFHTOMD定時器/計數(shù)器工作方式89H-
TCON定時器/計數(shù)器控制88H
-TH0定時器/計數(shù)器0高8位8CH
-TL0定時器/計數(shù)器0低8位8AH
-TH1定時器/計數(shù)器1高8位8DH
-TL1定時器/計數(shù)器1低8位8BH
-SCON串口控制98H
-SBUF串行數(shù)據(jù)緩沖器99H
-PCON電源控制及波特率選擇87H
-表2-4RAM位尋址區(qū)字節(jié)地址與位地址對應表StructureMCS-51單片機的結構三、存儲器結構2.數(shù)據(jù)存儲器RAM(2)片外RAM片外RAM的地址最大可以為64KB,即0000H~FFFFH,其中0000H~00FFH的低位地址與部分片內RAM重疊。這種重疊有不同的指令來區(qū)分,片內ROM使用MOV指令,而片外RAM使用MOVX指令。對片外RAM通常采用間接尋址方法,使用R0、R1和DPTR作為間址寄存器。當使用R0、R1尋址時,由于R0和R1均為8位寄存器,其最大尋址空間為256字節(jié)。當使用DPTR作為間址寄存器是,由于DPTR為16位寄存器,故其最大尋址范圍可達64KB。StructureMCS-51單片機的結構四、定時器/計時器8051內部有兩個16位可編程的定時器/計數(shù)器T0和T1。它們分別由高8位寄存器TH0、TH1和低8位寄存器TL0、TL1組成。在定時器工作模式下,T0和T1的計數(shù)脈沖有單片機時鐘脈沖經12分頻后提供,定時時間與單片機時鐘頻率有關。在計數(shù)器工作模式下,T0和T1的計數(shù)脈沖分別從P3.4和P3.5引腳輸入。五、中斷系統(tǒng)當CPU正在處理某項事物時,如果外界或者內部發(fā)生了緊急事件,要求CPU暫停正在處理的工作轉而去處理這個緊急事件,待處理完以后再回到原來被中斷的地方繼續(xù)執(zhí)行,這個過程稱為中斷。
MCS-51允許有5個中斷源,提供兩個中斷優(yōu)先級。每個中斷優(yōu)先級的高低都可以通過程序來設定。StructureMCS-51單片機的結構六、輸入/輸出端口結構MCS-51系列單片機設有4個8位雙向I/O端口,分別為P0、P1、P2和P3,每一條I/O線都能獨立的用作輸入或者輸出。P0口為三態(tài)雙向口,能帶8個TTL電路。P1、P2和P3口為準雙向口(在用做輸入線時,口鎖存器必須先寫入“1”,故稱為準雙向口),負載能力為4個TTL電路。七、串行接口MCS-51還有一個全雙工的可編程串行I/O口。它可以把CPU的8位并行數(shù)據(jù)變成串行數(shù)據(jù)一位一位的由發(fā)送數(shù)據(jù)腳TXD發(fā)送出去,也可以由接收數(shù)據(jù)腳RXD串行接收數(shù)據(jù)并轉變成8位并行數(shù)據(jù)送給CPU。發(fā)送和接收可以同時進行,也可單獨進行。Module&WayMCS-51單片機的時鐘模塊及工作方式一、時鐘模塊時鐘模塊用于產生單片機工作所需的時鐘信號,單片機工作過程中的各個信號之間的關系稱之為時序。1.
MCS-51單片機時鐘產生單片機內部所有的時序都由時鐘統(tǒng)一產生,MCS-51系列單片機內部自帶一個高增益反相放大器,所以可以使用石英晶體和反相放大器作為單片機的時鐘源,當然,也可以使用其他獨立的時鐘源。如圖2-7所示。2.
MCS-51單片機的時序時序是指處理器指令譯碼產生的一系列操作在時間上的先后次序,MCS-51單片機的時序周期包括振蕩周期、時鐘周期、機器周期和指令周期。圖2-7MCS-51的兩種時鐘連接方式Module&WayMCS-51單片機的時鐘模塊及工作方式一、單片機的工作方式②程序執(zhí)行方式④編程方式③低功耗方式⑤單步執(zhí)行方式①復位方式Module&WayMCS-51單片機的時鐘模塊及工作方式一、單片機的工作方式1.
復位方式MCS-51單片機的復位電路如圖2-8所示。當在RST管腳輸入加上2個機器周期的高電平時,CPU在第二個機器周期內執(zhí)行內部復位操作,以后每一個機器周期重復一次,直至RST端轉為低電平。圖2-8復位電路Module&WayMCS-51單片機的時鐘模塊及工作方式一、單片機的工作方式2.程序執(zhí)行方式程序執(zhí)行方式是單片機最常見的工作方式,復位后單片機將正常執(zhí)行放置在單片機程序存儲器中的程序,當EA=1時從內部程序存儲器開始執(zhí)行,當EA=0時從外部程序存儲器開始執(zhí)行。3.低功耗方式CMOS型的MCS-51單片機有待機模式和掉電模式兩種低功耗操作方式,可以減少單片機系統(tǒng)的功耗。在待機模式下,單片機的CPU停止工作,其他部分保持工作;在掉電模式下單片機僅RAM保持供電,其他部分均不工作。單片機通過設置電源控制寄存器PCON的相應位來使得單片機進入相應的工作模式,PCON的相關位如下所示:PCON.0——IDL:待機模式設置位,當該位被置位后單片機進入待機模式。PCON.1——PD:掉電模式設置位,當該位被置位后單片機進入掉電模式。PCON.2——GF0:通用標志位0,用于判斷單片機所處的模式。PCON.3——GF1:通用標志位1,用于判斷單片機所處的模式。PCON.4——IDL:保留位。PCON.5——IDL:保留位。PCON.6——IDL:保留位。PCON.7——SMOD:波特率倍增位,用于串行通信。Module&WayMCS-51單片機的時鐘模塊及工作方式在待機模式下,有一個事先被允許的中斷被觸發(fā),IDL會被硬件清0,單片機結束待機模式,進入程序工作方式,PC跳轉到進入待機模式之前的位置開始執(zhí)行。硬件復位,復位后PCON中的各位均被重新初始化,從而結束待機模式。1方式-12方式-2退出待機模式有兩種方式思考與練習MCS-51系列單片機的基本組成部分是什么?片內各邏輯部件的主要功能是什么?程序狀態(tài)字PSW的作用是什么?PSW中的各位有何含義?堆棧的功能是什么?程序設計時,為什么一般還要對SP重新賦值?MCS-51內部RAM區(qū)功能結構如何分配?使用時如何選用四組工作寄存器?位尋址區(qū)域的字節(jié)地址范圍是多少?簡述中斷、中斷源、中斷優(yōu)先級以及中斷嵌套的含義。MCS-51的4個8位并行I/O端口中,16位的地址線由哪兩個I/O端口組成?P3口有何功能?單片機的復位有哪幾種方法?復位后機器的初始狀態(tài)如何?各寄存器及RAM中的狀態(tài)如何?MCS-51有哪幾種尋址方式,并簡其特點。簡述偽指令的概念及用途。分別簡述簡單程序、分支程序、循環(huán)程序和查表程序的各自特點及應用場合。
感謝聆聽THANK
YOU!單片機技術及應用SCMTechnology&Application
12345CONTENTS目錄PART
ONEPART
TWOPART
THREEPART
FOURPART
FIVE緒論MCS-51結構及系統(tǒng)指令MCS-51的C語言基礎MCS-51的基本內部資源單片機的資源擴展PARTTWOMCS-51的C語言基礎3C語言基礎知識KeilC51集成開發(fā)環(huán)境BasicKnowledgeC語言基礎知識一、數(shù)據(jù)類型、運算符與表達式標準C語言中主要有整形、實型(又分為單精度型和雙精度型)、字符型和空類型。這些數(shù)據(jù)類型的長度和范圍會因處理器的類型和C語言編譯程序的實現(xiàn)而有所不同,對于keil產生的目標文件,表3-1給出了幾種數(shù)據(jù)的長度和范圍。1.數(shù)據(jù)類型類型長度(bit)范圍char8-128~+127unsignedchar80~255signedchar8-128~+127int16-32768~32767unsignedint160~65535signedint16-32768~32767shortint16-32768~32767unsignedshortint160~65535signedshortint16-32768~32767longint32-2147483648~+2147483647unsignedlongint320~4294967295signedlongint32-2147483648~+2147483647float32-1.175494E-38~+3.402823E+38表3-1MCS-51中幾種常用數(shù)據(jù)的長度和范圍BasicKnowledgeC語言基礎知識一、數(shù)據(jù)類型、運算符與表達式(1)標識符命名在C語言中,標識符可以作為變量名、函數(shù)名、數(shù)組名以及文件名。它可以是一個字符或是多個字符。大多數(shù)情況下,標識符必須以字母或者下劃線開始,后面可以是字母、數(shù)字或者下劃線。例如,_Data、count1和Set_Flag這是正確的形式,而2countSet..Flag是錯誤形式。2.標示符與關鍵字2)關鍵字關鍵字是一種含有特殊意義的字符,又稱為保留字。它在編譯器中已經有了定義,所以不能再進行重復定義,需要加以保留。這就是上面提到的標識符不能與關鍵字同名的原因。數(shù)據(jù)類型關鍵字:auto、char、const、double、enum、extern、float、int、register、sizeof、short、static、struct、typedef、union、unsigned、void、volitile等。程序控制關鍵字:break、case、continue、default、do、else、for、goto、if、return、switch、while等。BasicKnowledgeC語言基礎知識一、數(shù)據(jù)類型、運算符與表達式(1)常量C語言中在程序運行過程中,其值不能被改變的量稱為常量。常量區(qū)分為不同的類型,如10、0、-1為整形常量,3.14、-1.26為實型常量,‘a’‘b’位字符型常量。3.常量與變量(2)變量C語言中在程序運行過程中,其值可以改變的量稱為變量。一個變量應該有一個名字,在內存中占用一定的存儲單元,在該存儲單元中存放該變量的值。定義變量的一般形式是:typevariable_list;
這里type必須是有效地數(shù)據(jù)類型,variable_list(變量表)可以由一個或者多個由逗號分隔的標識符構成。BasicKnowledgeC語言基礎知識一、數(shù)據(jù)類型、運算符與表達式4.整型數(shù)據(jù)整型數(shù)據(jù)是指整數(shù)型常數(shù)或者整型變量,它主要包括int、short、long等。整型變量的定義很簡單,具體如下面例子所示:
voidmain(){intsum,n,m;n=10;m=0x10;sum=n+m;}5.實型數(shù)據(jù)實型數(shù)據(jù)即為浮點型數(shù)據(jù)。它可以含有小數(shù)點,但是它表示的數(shù)據(jù)是有精度的。實型變量主要有float、double和longdouble這幾種類型。實型變量的定義方法也很簡單例如:
floata;doubleb;longdoublec;上面的例子分別定義了float型變量a、double型變量b以及l(fā)ongdouble型變量c。BasicKnowledgeC語言基礎知識一、數(shù)據(jù)類型、運算符與表達式6.字符型數(shù)據(jù)
字符型數(shù)據(jù)主要處理字符相關的內容,比如處理英文字母或者漢字。一般來說會將多個字符型變量組成一個字符串來使用。在這里需要強調一下數(shù)值和字符常量在表現(xiàn)形式上是有區(qū)別的。例如‘8’表示的是字符,而8則表示數(shù)值。字符變量主要是char型。需要強調的是字符是以單引號表示的。它的定義方法如下:charc1;c1=‘A’;上面的例子定義了字符變量c1,并給它賦值為‘A’。BasicKnowledgeC語言基礎知識一、數(shù)據(jù)類型、運算符與表達式7.各種數(shù)據(jù)之間的轉換在某些應用場合需要進行數(shù)據(jù)類型的轉換,比如把字符型變量轉換成整型,把int型數(shù)據(jù)轉換成long型等。下面給出數(shù)據(jù)類型轉換的例子:voidchange(void){chardata;intidata;data=‘C’;idata=(int)(data);}BasicKnowledgeC語言基礎知識二、C語言的運算符與表達式C語言的運算符范圍很寬,不僅可以進行加、減、乘、除等算術運算,還可以進行比如關系運算、邏輯運算、賦值運算和位運算等。1.算術運算
算術運算主要是進行一些加、減、乘、除等運算,表3-2給出了算術運算符。算術運算符含義舉例(設a=5,b=3)+加a+b結果:8-減a-b結果:2*乘a*b結果:15/除a/b結果:1%模運算(取余)a%b結果:2++自增a++結果:6--自減a--結果:4BasicKnowledgeC語言基礎知識二、C語言的運算符與表達式2.關系運算
關系運算主要是對操作數(shù)進行某種條件的判斷,結果只有兩種true或false。表3-3給出一些關系運算。關系運算符含義舉例(設a=5,b=3)>
大于a>b結果:true>=大于等于a>=b結果:true==等于a==b結果:false<
小于a<b結果:false<=小于等于a<=b結果:false!=不等于a!=b結果:trueBasicKnowledgeC語言基礎知識二、C語言的運算符與表達式3.邏輯運算
邏輯運算和關系運算比較相似,也是處理操作操作數(shù)之間的關系,結果只有true和false兩種,表3-4給出邏輯運算符。關系運算符含義舉例(設a=true,b=false)&&與a&&b結果:false||或a||b結果:true!非!a結果:falseBasicKnowledgeC語言基礎知識二、C語言的運算符與表達式
通常把“=”稱為賦值運算。該運算符是一個二元運算符,需要兩個操作數(shù),左邊的操作數(shù)是變量或者數(shù)組,右邊的是表達式,例如:unsignedchara,b;a=8; //賦值運算b=a+3; //賦值運算另外“=”還可以和其他的運算符結合起來使用。例如+=、-=、*=、/=、%=等,它們的意義分別是:x+=a; 等價于:x=x+a;x-=a; 等價于:x=x-a;x*=a; 等價于:x=x*a;x/=a; 等價于:x=x/a;x%=a; 等價于:x=x%a;另外,“=”還可以和位運算符“>>”等結合起來使用,含義和上面的類似。4.賦值運算BasicKnowledgeC語言基礎知識二、C語言的運算符與表達式5.位運算位運算在單片機的開發(fā)中非常重要,比如設置某個管腳的輸出電平的操作就是通過位運算來實現(xiàn)的,表3-5給出位運算符。關系運算符含義舉例(設a=10,b=13)&與m=a&b結果:m=8|或m=a|b結果:m=15~取反m=~a結果:m=0xf5>>
右移m=a>>2結果:m=40<<
左移m=a<<2結果:m=2表3-5給出位運算符BasicKnowledgeC語言基礎知識二、C語言的運算符與表達式6.運算的優(yōu)先級
通過前面的介紹,現(xiàn)在應對C語言的幾種運算有了大概的了解。在實際應用的過程中大部分的計算可能是包括上面幾種運算的組合,這樣進行運算的時候,執(zhí)行的順序就非常的重要,此時就有了解運算的優(yōu)先級順序,表3-6給出了運算的優(yōu)先級順序。運算優(yōu)先級運算符1!~++--等2*/%3+-4<<>>5<<=>>===!=6&7|8&&9||10=+=-=*=/=等BasicKnowledgeC語言基礎知識同一般的C程序開發(fā)一樣,C51的程序設計也有一些程序設計的技巧。同時由于嵌入式系統(tǒng)的實時性、資源有限性等特點,C51程序設計也有一些普通C程序設計所不具備的特點。一、養(yǎng)成好的編程習慣1.程序的總體設計2.命名規(guī)則(1)常量的命名(2)變量的命名(3)函數(shù)的命名3.編程規(guī)范(1)縮進(2)對齊(3)空行(4)注釋(5)不應當把多個短語句寫在一行中,即一行只寫一條語句,例如:(6)if、for、do、while、case、switch、default等語句應當自占一行,且if、for、do、while等語句的執(zhí)行語句部分無論多少都要加括號{}。(7)不管有沒有無效分支,switch函數(shù)一定要處理default這個分支。這不僅提示閱讀者程序員并沒有遺忘default,另外也可以防止程序運行過程中出現(xiàn)意外,加強程序的健壯性BasicKnowledgeC語言基礎知識二、宏定義宏定義屬于預處理指令,通過它可以是程序設計簡化,增加程序的可讀性、可維護性和可移植性。宏定義分為簡單的宏定義和帶參數(shù)的宏定義。
1.簡單的宏定義
#define標示符字符串
2.帶參數(shù)的宏定義
#define宏名(參數(shù)表)字符串三、條件編譯
C51中的條件編譯預處理指令可以通過C51編譯器根據(jù)編譯選項有條件的辨析這部分代碼。使用條件編譯的好處是可以使程序中某些功能模塊可以根據(jù)需要有選擇的加入到項目中去,或使同一個程序方便的移植到不同的硬件平臺上,條件編譯有幾種指令,最基本的格式有三種。
1.#ifdef型
2.#ifndef型
3.#if型BasicKnowledgeC語言基礎知識四、具體指針的應用C51編譯器支持兩種不同類型的指針:普通指針和存儲器特殊指針。在C51編譯器中普通指針總是使用3個字節(jié)機型保存:第一個字節(jié)用于保存存儲器類型;第二個字節(jié)用于保存地址的高字節(jié);第三個字節(jié)用于保存地址的低字節(jié)。存儲器特殊指針在指針定義中,總是包含存儲器類型的指定,并總是指向一個特定的存儲器空間區(qū)域。如:chardata*cp;這個定義使得字符型指針cp指向51片內字節(jié)尋址的數(shù)據(jù)存儲區(qū)。BasicKnowledgeC語言基礎知識五、中斷響應快速性的一種實現(xiàn)在工業(yè)控制中,系統(tǒng)的實時性是非常重要的,有時甚至是關鍵性的。在一個大的系統(tǒng)中,CPU的負荷可能會很高,處理著眾多的程序和中斷。在這種情況下,如果某一個或某些中斷處理函數(shù)占用過多的CPU時間,就很可能導致其他中斷無法響應,甚至會導致系統(tǒng)的癱瘓。如果在一個單片機實現(xiàn)數(shù)據(jù)采集系統(tǒng)中,單片機不僅要不停的采集數(shù)據(jù)、處理數(shù)據(jù),而且更重要的是要負責系統(tǒng)的協(xié)調工作,協(xié)調好各個中斷及各個任務的順利進行。這時候可以把采集數(shù)據(jù)的工作放到一個定時器中斷里去做。BasicKnowledgeC語言基礎知識六、一些關鍵字的使用關鍵字的靈活應用能夠使程序很大程度上提高程序的效率,這里將主要介紹一下幾個關鍵字:1.staticstatic關鍵字在許多C語言教程中都值介紹該關鍵字定義的變量為靜態(tài)變量,他在每次調用以后,值都保持不變,即具有記憶性。但static的意義并不局限于此,它還有以下兩層主要意思:(1)不論用static聲明的變量在程序中是什么位置,即使它是函數(shù)內部的局部變量,編譯器都會給它分配一個固定的內存空間。而這個變量在整個程序的執(zhí)行過程中都存在,程序執(zhí)行完畢它才消亡。盡管他在全局中都存在,會占用存儲空間,但適當?shù)膽盟鼤o程序的設計帶來一些好處。如可以定義一個局部靜態(tài)變量作為計數(shù)器,每次調用的時候加1,這樣就不必定義一個全局變涼了,有利于程序的移植。例如上一節(jié)數(shù)據(jù)采集和處理的程序代碼中采集次數(shù)的技術部分可以用靜態(tài)變量來代替,省去了全局變量的定義,便于程序移植。(2)用static聲明的變量或函數(shù)同時指明了變量或函數(shù)的作用域為本文本,其他文件的函數(shù)都無法訪問這個文件里的這些變量和函數(shù)。在一個比較龐大的系統(tǒng)中可能會有很多個文件,這些文件由許多程序員來開發(fā),所以不同的文件中同名的變量或函數(shù)很可能存在,用static對其進行聲明可以防止同名變量或函數(shù)的意外混調。BasicKnowledgeC語言基礎知識2.constconst關鍵字在許多C教程中都只用于定義一個常量,這是不完全的。用const修飾的變量、指針、函數(shù)參數(shù)返回值等都是只讀的,即它們都受到保護,不能改變它們的值。當在代碼中試圖對上述上述變量進行賦值或者修改等操作時,在編譯的時候編譯器會報錯。3.reentrantreentrant關鍵字用于聲明一個函數(shù)為再入函數(shù)。再入函數(shù)可以同時由幾個程序功用,如主函數(shù)和中斷函數(shù)同時調用一個函數(shù)。當執(zhí)行再入函數(shù)時,其他程序可以中斷執(zhí)行并開始執(zhí)行同一個再入函數(shù)。一般情況下,C51函數(shù)不能遞歸調用或被幾個可能同時執(zhí)行的函數(shù)同時調用。這是因為函數(shù)自變量和局部變量都存放在固定的存儲空間里,如果同時調用,函數(shù)的堆棧會發(fā)生混亂。再入函數(shù)屬性允許說明那些可以重入的函數(shù),因此可以實現(xiàn)遞歸調用,那些只有自己的局部變量而不涉及其他固定地址變量的函數(shù)體。BasicKnowledgeC語言基礎知識七、使用移位運算代替乘除和求模等運算在C51語音中,乘、除、求模和浮點運算等都是通過調用庫函數(shù)來實現(xiàn)的,調用庫函數(shù)的一個特點是使編程方便簡潔,但也存在效率不高的問題。而且他們編譯后的代碼太長。在通常情況下我們可以用移位操作來代替。既提高了程序的效率,又縮短了編譯后代碼的長度。如乘4和除4分別可以通過左移2位和右移2位來實現(xiàn),求模也可以通過移位的組合來實現(xiàn)。因為除法和求模運算中調用庫函數(shù)很耗時,在MCS-51單片機的應用系統(tǒng)中對時間要求比較嚴格的場合,如定時器中短周期較短而任務較多是,可以用移位來實現(xiàn)每次中斷的定時器重載。KeilC51軟件集成開發(fā)環(huán)境一、概述一、概述常見的MCS-51系列單片機編程語言有4種,即匯編語言、C語言、BASIC語言和PL/M語言。目前使用最多的單片機開發(fā)語言就是匯編語言和C語言。這兩種語言都有良好的編譯器支持,使用廣泛。一般來說,C語言用于編寫較復雜的程序,匯編則用于對效率要求很高的場合,尤其是底層函數(shù)的編寫。一個好的單片機開發(fā)人員,不僅要屬性MCS-51單片機體系結構,更要深刻理解單片機指令和執(zhí)行過程,能夠熟練的使用匯編語言和C語言進行單獨或聯(lián)合開發(fā)。KeilC51IntegratedDevelopmentEnvironment二、常用編譯器介紹二、常用編譯器介紹
C語言編程使用的編譯器為Cx51,因為Cx51編譯器是一個交叉編譯器?;贑x51編譯器主要:
1.AmericanAutomation2.IAR3.Avocet4.BSO/Tasking5.DunfieldShareware6.Keil7.Intermetrics8.MicroComputerControlsKeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境二、常用編譯器介紹通過#asm和#endasm預處理器選擇支持匯編語言。速度慢,要求匯編中間環(huán)節(jié)。支持分體切換并和ANSI兼容,需要一個較復雜的鏈接程序控制文件支持后,程序才能運行。軟件包括編譯器、匯編器、鏈接器、庫MAKE工具和編譯器,集成環(huán)境類似Borland和Turbo。TASKING公司原名BSO/Tasking,是一家專業(yè)開發(fā)和銷售嵌入式系統(tǒng)軟件工具的公司。它是非專業(yè)的軟件包,不支持floats、longs或結構等。KeilC51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調試工具,全Windows界面。它的編譯器用起來比較難,要由可執(zhí)行的宏語句控制編譯、匯編和鏈接,且選項很多。它不支持浮點數(shù)、長整數(shù)、結構和多維數(shù)組。KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境三、KeilC51軟件集成開發(fā)環(huán)境三、KeilC51集成開發(fā)環(huán)境
KeilC51是美國KeilSoftware公司的產品,它集項目管理、編譯公爵、代碼編寫工具、調試工具以及仿真于一體可以完成編輯、編譯、連接、調試、仿真等整個開發(fā)流程,是一款功能強大的開發(fā)平臺。1.KeilC51界面及菜單介紹KeilC51軟件的界面窗口如圖3-1所示,該軟件提供了豐富的工具,常用命令都有快捷工具欄。圖3-1KeilC51開發(fā)環(huán)境界面KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境Project菜單菜單主要用于項目的配置以及目標代碼的生成管理。Debug菜單主要提供在軟件和硬件仿真環(huán)境下的調試選項。Flash菜單用于管理Flash文件操作。用于在仿真系統(tǒng)中控制芯片的復位和對外圍芯片的狀態(tài)檢查。Tools菜單用于和第三方軟件聯(lián)合調試。SVSC菜單用于管理軟件的版本。Window菜單用于管理窗口視圖。Help菜單給使用者提供包括庫函數(shù)查詢在內的幫助管理。File菜單提供了文件操作功能。Edit菜單提供了文本編輯和操作的基本功能。View菜單提供界面顯示內容的設置。KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境三、KeilC51軟件集成開發(fā)環(huán)境2.KeilC51開發(fā)流程使用KeilC51的軟件工具時,項目的開發(fā)流程基本上與使用其他軟件開發(fā)項目一樣,如下:(1)創(chuàng)建一個項目,從器件數(shù)據(jù)庫中選擇目標芯片,并配置工具軟件的設置。(2)用C或者匯編創(chuàng)建源程序。(3)用項目管理器構造(build)應用。(4)糾正源文件的位置。(5)調試鏈接后的應用。
Keil的8051開發(fā)工具具有很多功能和優(yōu)點,可以幫助用戶快速、成功地開發(fā)嵌入式應用。這些軟件的使用非常簡單,保證幫助設計人員達到設計目標。KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境三、KeilC51軟件集成開發(fā)環(huán)境下面介紹建立一個簡單工程的各個步驟:(1)啟動程序雙擊KeilC51圖標,會彈出顯示KeilLogo圖片,如圖3-2所示。當見到KeilC51的啟動圖片時,會自動進入KeilC51的開發(fā)環(huán)境,如圖3-3所示。圖3-2Keil開始的logo界面圖3-3KeilC51初次打開界面KeilC51軟件集成開發(fā)環(huán)境三、KeilC51軟件集成開發(fā)環(huán)境(2)建立工程首先,單擊菜單的“Project”命令,然后單擊“NewProject”命令,彈出“CreateNewProject”對話框,如圖3-4所示。并輸入工程名(例如“hello”),單擊“保存”按鈕。退出,彈出“SelectDeviceForTarget”對話框,如圖3-5所示。圖3-4CreateNewProject對話框界面圖3-5芯片選擇對話框界面KeilC51IntegratedDevelopmentEnvironment三、KeilC51集成開發(fā)環(huán)境在此對話框中選取單片機的型號,例如,Atmel的AT89C52,首先找到Atmel打開樹形目錄找到AT89C52并選中。如圖3-6所示,右邊界面會顯示一些該芯片的簡單介紹。選擇完芯片之后,會出現(xiàn)對話框詢問是否自動加入8051啟動文件,單擊“是”按鈕,該文件用于初始化單片機內部存儲器等,添加完成之后在項目管理窗口中可以看到startup.A51文件已經被加入,如圖3-7所示。單擊“是”按鈕進入下一界面。圖3-6芯片選擇對話框界面(選中AT89C52芯片)圖3-7加入啟動文件KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境三、KeilC51集成開發(fā)環(huán)境(3)編寫程序單擊菜單“File”命令,然后選擇“New”選項,如圖3-8所示。建立一個文本文件,并保存該文件。圖3-8新建并保存文件KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境三、KeilC51集成開發(fā)環(huán)境注意文件名稱必須帶上.C的后綴名。否則會錯誤的保存為一個txt文件。例如輸入文件名Main.c,單擊“保存”按鈕,然后在左邊的工程窗口選中“SourceGroup1”并右鍵點擊出現(xiàn)右鍵菜單,選擇“AddFilestoGroupSourceGroup1”選項,彈出對話框,如圖3-9所示。選擇main.c文件,單擊“Add”命令,最后單擊“Close”命令。圖3-9加載.c文件KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境三、KeilC51集成開發(fā)環(huán)境接下來就可以開始編寫程序了。下面我們以一個閃爍的小燈為例。如圖3-10所示,程序編寫完成后單擊“Rebuildalltargetfiles”命令,最后在輸出窗口顯示編譯信息,主要包括編譯是否出現(xiàn)語法錯誤,以及程序的大小等信息。當編譯信息窗口顯示“0Error(s),0Warning(s)”,則表示程序編譯成功了。圖3-10編寫簡單程序并進行編譯單擊“Rebuildalltargetfiles”按鍵KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境三、KeilC51集成開發(fā)環(huán)境默認Keil不會生成Hex文件,Hex文件用于燒寫到單片機里面,單片機沒有程序是不能運行的。為了生成Hex文件,我們必須要勾選“CreateHex”選項,讓Keil編譯代碼時生成Hex文件。右鍵單擊工程窗口“Target1”命令,然后從右鍵菜單選中“OptionsforTarget‘Target1’”選項,從彈出的“OptionsforTarget‘Target1’”對話框中選中“Output”選項卡,然后勾選“CreateHex”選項即可,如圖3-11所示,最終生成hello.hex文件。圖3-11設置生成Hex文件選中“Output”選項卡,然后勾選“CreateHex”選項。KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境思考與練習什么是算術運算?什么是關系運算?什么是邏輯運算?給下列運算符按優(yōu)先級順序排序:+&||++>%寫出下面?zhèn)€邏輯表達式的值。設a=3,b=4,c=5。(1)a+b>c&&b==c(2)a||b+c&&b–c(3)!(a>b)&&!c||1(4)!(x=a)&&(y=b)&&0使用KeiluVision環(huán)境建立一個工程,并完成編譯。
感謝聆聽THANK
YOU!單片機技術及應用SCMTechnology&Application
12345CONTENTS目錄PART
ONEPART
TWOPART
THREEPART
FOURPART
FIVE緒論MCS-51結構及系統(tǒng)指令MCS-51的C語言基礎MCS-51的基本內部資源單片機的資源擴展PART
FOURMCS-51的基本內部資源4I/O口中斷系統(tǒng)定時器/計數(shù)器串行口外部中斷MCS-51內部資源應用技巧第一節(jié)I/O口一、I/O端口結構I/O端口即輸入輸出端口,用于單片機對外部實現(xiàn)控制,具有信息交換過程中的速度匹配、隔離和增強復雜的功能。MCS-51有4個I/O端口,分別為P0、P1、P2和P3,各端口的每一位均由鎖存器、輸出驅動器和輸入緩沖器所組成。CPU通過這4個I/O口的任何一個輸出數(shù)據(jù)時,都可以被鎖存,輸入數(shù)據(jù)時可以得到緩沖。*
I/O典型結構圖1.P0口第一節(jié)I/O口P0口是一個8位漏極開路型雙向I/O口,如圖4-1是P0口中的1位結構圖,其中包含一個輸出鎖存器、兩個三態(tài)緩沖器、一個輸出驅動電路和一個輸出控制電路。輸出驅動電路由一對FET(場效應管)T1和T2組成,其工作狀態(tài)收輸出控制電路所控制,控制電路包括一個與門、一個反相器和模擬轉換開關MUX。P0口中由兩個三態(tài)輸入緩沖器用于讀操作。因而有兩種讀入法,即“讀鎖存器”和“讀引腳”。*
P0口1位結構圖2.P1口第一節(jié)I/O口P1口是一個帶有內部上拉電阻的8位準雙向I/O口,每一位內部結構,如圖4-2所示。在接口上P1口沒有模擬轉換開關MUX和控制電路部分,輸出驅動電路只有一個FET(場效應管),但內部有上拉電阻。當作輸出用時,將1寫入鎖存器,使輸出驅動管T截止,輸出線由內部上拉電阻拉成高電平;將0寫入鎖存器是,T導通輸出0。當作為輸入時,必須先將1寫入鎖存器,使T截止,把該口先由內部上拉拉成高電平。*
P1口1位結構圖3.P2口第一節(jié)I/O口P2口是一個帶有內部上拉電阻的8位準雙向I/O口,每一位的內部結構,如圖4-3所示。P2口的上拉電阻結構與P1口相同,但是比P1口增加了一個模擬轉換開關MUX。MUX的切換有內部控制信號控制:一個是輸出鎖存器的輸出端Q(不同于P1口使用Q(非)端)送入MUX的輸入端;另一個是內部地址寄存器的高位輸出端送至MUX的輸入,MUX的輸出經過反相器去控制輸出FET(場效應管)。*
P2口1位結構圖4.P3口第一節(jié)I/O口P3口是一個帶有內部上拉電阻的準雙向I/O口,同時它又是一個多功能端口,它的每一位結構,如圖所示。當P3口作為第一功能口,即通用I/O口使用時,工作原理與P1口和P2口類似,但是第二輸出功能線保持為高電平,使與非門N3對鎖存器輸出(Q端)暢通。當P3口作為第二功能使用時,相應位的鎖存器必須為“1”狀態(tài),使與非門N3的輸出由第二輸出功能線的狀態(tài)來決定,或使此口線允許輸入第二功能信號。*
P3口1位結構圖二、I/O口驅動能力第一節(jié)I/O口在標準的51核單片機中,P0口的高電平的驅動電流為160μA,低電平的驅動電流為2.88mA;P1、P2和P3的驅動電流為P0的一般,當驅動能力不夠的時候應該在I/O扣上加驅動器來驅動負載,否則很容易造成單片機系統(tǒng)的不穩(wěn)定,甚至損壞單片機。但是現(xiàn)在很多的51系列單片機都提供較大的電流驅動能力,能夠直接驅動發(fā)光管等負責。不過從系統(tǒng)的可靠性角度出發(fā),建議盡可能的不要用單片機的I/O口直接驅動負載。當P3口作為第一功能口,即通用I/O口使用時,工作原理與P1口和P2口類似,但是第二輸出功能線保持為高電平,使與非門N3對鎖存器輸出(Q端)暢通。當P3口作為第二功能使用時,相應位的鎖存器必須為“1”狀態(tài),使與非門N3的輸出由第二輸出功能線的狀態(tài)來決定,或使此口線允許輸入第二功能信號。三、I/O口的位操作第一節(jié)I/O口51系列單片機I/O口的每一位都有自己的位地址,均可以進行位尋址,可以方便的使用位操作命令進行輸入、輸出以及邏輯運行等操作。在實際的使用過程中,一般使用sbit關鍵字對引腳進行預定義,然后進行對應位操作。下面給出一些示例:例:P1.3和P1.5為按鍵輸入端,當兩個按鍵同時按下時(輸入為低電平),通過P1.0將LED燈點亮(輸出低電平)。#include<reg51.h>sbitKey1=P1^3;sbitKey2=P1^5;sbitLED=P1^0;voidmain(void){LED=1;while(1){if((Key1==0)&(Key2==0))//判斷兩鍵是否同時按下
{LED=0;//點亮LED}}}四、I/O口的輸入輸出操作第一節(jié)I/O口單片機的P0~P3經常作為一個整體來傳送8位寬度的數(shù)據(jù),下面給出了利用P0和P1來進行數(shù)據(jù)輸入輸出操作的實例:
例:8位數(shù)據(jù)通過P1口輸入,單片機對這8位數(shù)據(jù)進行取反后從P0口輸出。#include<reg51.h>/*定義一個8位無符號字符變量inputData,用來存放P1口數(shù)據(jù)*/unsignedcharinputData;voidmain(void){P1=0xff;while(1){inputData=P1;//從P1口取值,存入inputDataP0=~inputData;//取反,并通過P0輸出
}}中斷系統(tǒng)第二節(jié)中斷系統(tǒng)MCS-51系列單片機有5個中斷源,分為兩個中斷優(yōu)先級,這些中斷源按照優(yōu)先級排列如下:一、中斷向量地址和中斷標志位第二節(jié)中斷系統(tǒng)中斷向量地址存在于單片機的程序存儲器中,每當單片機檢測到一個中斷事件之后,程序指針(PC)就會自動的跳轉到該地址。一般情況下是在該地址放入一個跳轉指令,以使程序指針再次跳轉到對應的中斷服務子程序入口。表4-1列出了51單片機中斷源的中斷向量地址。中斷源中斷向量入口地址外部中斷00x0003定時器/計數(shù)器00x000B外部中斷10x0012定時器/計數(shù)器10x001B串行數(shù)據(jù)發(fā)送與接收0x0023表4-1中斷向量地址注意:不同的51系列單片機的中斷向量入口地址可能有所不同,需要詳細的參看具體器件的說明手冊。一、中斷向量地址和中斷標志位第二節(jié)中斷系統(tǒng)MCS-51系列單片機的每一個中斷源,都對應一個中斷請求標志位,這些標志位位于特殊功能寄存器TCON和SCON內。1.TCON(Timer/CounterControlRegister.地址為0x88)TCON為定時計數(shù)器控制寄存器,系統(tǒng)被復位后該寄存器數(shù)值為0x00。其功能如表4-2所示。表4-2TCON功能說明TCON88H
用于外部中斷TCON.7TCON.6TCON.5TCON.4TCON.3TCON.2TCON.1TCON.0TF1TR1TF0TR0IE1IT1IE0IT0定時器/計數(shù)器T1溢出標志定時器T1的運行控制位定時器/計數(shù)器T0溢出中斷標志定時器T0的運行控制位外部中斷0請求源標志外部中斷1請求源標志外部中斷1觸發(fā)方式控制位外部中斷0觸發(fā)方式控制位一、中斷向量地址和中斷標志位第二節(jié)中斷系統(tǒng)2.SCON(SerialControlRegister,地址為Ox98H)
SCON為串行通信口控制寄存器,其中的兩位RI和TI為串行發(fā)送、接收中斷的標志位,下面給出了SCON寄存器中這兩位的功能說明,其余部分在以后的章節(jié)中講述,這兩位在單片機復位后均為0。(1)TI:串行發(fā)送中斷標志位,當串行口完成一次發(fā)送任務后將該位置位,該位不能夠被硬件自動清除,必須由用戶在程序中手動清除。(2)RI:串行接收中斷標志位,當串行口完成一次接收任務后將該位置位,該位不能夠被硬件自動清除,必須由用戶在程序中手動清除。二、中斷控制第二節(jié)中斷系統(tǒng)2.SCON(SerialControlRegister,地址為Ox98H)在MCS-51系列單片機中斷的開關控制和優(yōu)先級控制都是通過對相應的寄存器對應位進行操作來完成的。中斷的開關控制是由中斷允許控制寄存器(IE)來完成。1.IE(InterruptEnableRegister.地址為0xA8)IE為中斷控制寄存器,MCS-51系列單片機的中斷開啟和關閉都是由該寄存器控制的,該寄存器每位的功能如表4-3所示。它支持位操作,可以對其中任何一位置位或復位,從而禁止或開發(fā)對應的中斷源,系統(tǒng)復位后IE被清零。表4-3IE功能說明位標號位名稱描
述7EA單片機中斷允許控制位,EA=0,單片機禁止所有的中斷;EA=1,單片機開放中斷,但是每個中斷源的中斷是否開發(fā)還需要由自己的控制位來決定。6————5————4ES串行中斷允許控制位,ES=0,禁止串行中斷;ES=1,打開串行中斷。3ET1定時器/計數(shù)器1中斷允許位,ET1=0,禁止定時器/計數(shù)器1溢出中斷;ETl=l,允許定時器/計數(shù)器1溢出中斷。2EX1外部中斷1允許位,EXl=0,禁止外部中斷1;EX1=1,允許外部中斷1。1ET0定時器/計數(shù)器0中斷允許位,使用方法同ET1。0EX0外部中斷0允許為,使用方法同EX1。二、中斷控制第二節(jié)中斷系統(tǒng)2.IP(InterruptPriorityRegister,地址0xB8)MCS-51系列單片機提供兩個中斷優(yōu)先級,可以通過對IP寄存器的設置來修改每個中斷源的優(yōu)先級別,這樣就可實現(xiàn)兩級中斷的嵌套。
IP寄存器的功能如表4-4所示,該寄存器同樣可以進行按位的操作,可以對每一位進行置位和復位,從而改變相應中斷源的優(yōu)先級別,單片機復位后該寄存器被清零。表4-4IP功能說明位標號位名稱描
述7————6————5————4PS串行口中斷優(yōu)先級控制位。3PT1定時器/計數(shù)器1中斷優(yōu)先級控制位。2PX1外部中斷1中斷優(yōu)先級控制位。1PT0定時器/計數(shù)器0中斷優(yōu)先級控制位。0PX0外部中斷0中斷優(yōu)先級控制位。二、中斷控制第二節(jié)中斷系統(tǒng)MCS-51系列單片機中斷系統(tǒng)的兩級優(yōu)先級之間的關系遵循如下兩條原則:(1)高優(yōu)先級別的中斷可以中斷低優(yōu)先級別所請求的中斷,反之不能。(2)同一級別的中斷一旦得到響應后隨即屏蔽同級的中斷,也就說相同優(yōu)先級的中斷不夠再次引發(fā)中斷。當單片機接收到幾個相同優(yōu)先級別的中斷請求后,將按照單片機內部默認的順序來決定響應哪一個中斷,單片機內部默認的中斷響應順序如下:中斷源相應順序外部中斷0最高定時器/計數(shù)器0外部中斷1定時器/計數(shù)器0串行數(shù)據(jù)發(fā)送與接收最低三、中斷響應第二節(jié)中斷系統(tǒng)MCS-51系列的單片機在每一個機器周期都會檢查各個中斷源的中斷請求信號,會按照中斷優(yōu)先級進行響應處理。如果在中斷產生過程中出現(xiàn)了以下3種情況之一,單片機將延遲對中斷的響應。(1)單片機所處的機器周期不是當前執(zhí)行中指令的最后的一個機器周期。(2)單片機正在處理相同級別或者是更高級別的中斷。(3)單片機正在訪問IE.IP寄存器或者是正在從中斷服務子程序中退出。單片機對沒有能夠及時響應的中斷請求標志位不做任何的保存,單片機的響應中斷過程如下:①封鎖同級和低級別的中斷。②把當前程序指針PC的內容保存到堆棧中。③根據(jù)中斷標志位,把相應的中斷源對應的中斷向量入口地址裝入到PC中。④從中斷向量入口地址跳轉到對應的中斷服務程序中。⑤執(zhí)行中斷服務。⑥中斷服務執(zhí)行完成之后打開被封鎖的中斷,然后從堆棧中取出原先保存的PC內容,使得程序可以從原先的PC地址繼續(xù)運行。三、中斷響應第二節(jié)中斷系統(tǒng)單片機對中斷的響應時間可以分為兩種情況2.有其他因素影響如果在一個中斷申請響應的時候有其他的高優(yōu)先級中斷正在執(zhí)行,那么這個中斷的響應延時需要由該高優(yōu)先級中斷的中斷服務程序執(zhí)行時間決定。如果在申請中斷時單片機正在執(zhí)行一條普通指令,并且沒有執(zhí)行完成,則這個指令周期將不會超過3個機器周期。如果申請時單片機正在執(zhí)行從另一個中斷服務子程序中退出的RETI指令,或者是正在訪問IE或執(zhí)行IP的指令,則由于完成當前指令需要1個機器周期,加上下一條指令的最長的4個機器周期,一共為5個機器周期。獨立中斷這種情況是指單片機在該時刻只需要處理一個中斷事件,或者是該中斷事件相對正在響應的中斷是一個高優(yōu)先級別中斷且沒有前面提到的3種情況之一出現(xiàn)。四、中斷服務程序的設計第二節(jié)中斷系統(tǒng)單片機中斷系統(tǒng)的應用應該包括硬件系統(tǒng)和中斷服務程序設計兩個部分,中斷服務程序是用戶根據(jù)自己系統(tǒng)的需求所指定的響應事件,單片機系統(tǒng)在響應中斷后會自動的將程序指針PC跳轉到對應中斷源的中斷向量入口地址處。2.中斷服務程序應該包括以下內容:(1)在中斷向量入口放置一條跳轉指令,以便把程序指針修改為中斷服務程序的起始地址。(2)保護現(xiàn)場,一般是寄存器中的內容。(3)如果需要,清除中斷標志。(4)進行相應的中斷服務操作。(5)恢復現(xiàn)場,返回到原來主程序的斷點處。1.單片機的中斷初始化應該包括以下內容:(1)初始化堆棧指針SP,給單片機定義一個合適大小的堆??臻g。(2)初始化中斷源的觸發(fā)方式。(3)設置中斷的優(yōu)先級別(4)開放相應的中斷源。四、中斷服務程序的設計第二節(jié)中斷系統(tǒng)串口中斷服務函數(shù)的實例:例:voidUart_Isr(void)interrupt4using1{if(RI==1){RI=0; //清串口接收終端標志位if(DataEnable==0){Limit_Flag=1;RevBuff[RevPoint++]=SBUF; //讀取串口中斷buf里的數(shù)據(jù)if(RevPoint>=11){Limit_Flag=0;Limit_Time=0;RevPoint=0;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店租賃合同協(xié)議:企業(yè)年會合作
- 魯教版八年級下冊生物期中試卷
- 信用還款協(xié)議書
- 醫(yī)療環(huán)保公司醫(yī)師聘用合同模板
- 航空貨運倉儲配送協(xié)議三篇
- 制定個人學習日程的詳細規(guī)劃計劃
- 公司第一季度工作計劃
- 新聞專業(yè)實習總結報告5篇
- 青年教師工作總結范文
- 幼兒園小朋友參與制度
- 支氣管動脈造影護理
- 2024年度建筑工程有限公司股權轉讓合同3篇
- 校園春季安全
- 2024-2025學年度上學期九年級十二月聯(lián)考英語試卷
- 2024-2025學年六上科學期末綜合檢測卷(含答案)
- 2024年債權投資協(xié)議6篇
- 【MOOC】工程力學-浙江大學 中國大學慕課MOOC答案
- 2024-2025學年北師大版八年級數(shù)學上冊期末綜合測試卷(含答案)
- 2024廣州租房合同范本
- 菏澤學院中外教育史(高起專)復習題
- 分數(shù)的初步認識(單元測試)-2024-2025學年三年級上冊數(shù)學期末復習 人教版
評論
0/150
提交評論