版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
單片機技術(shù)及應(yīng)用SCMTechnology&Application
全套可編輯PPT課件12345CONTENTS目錄PART
ONEPART
TWOPART
THREEPART
FOURPART
FIVE緒論MCS-51結(jié)構(gòu)及系統(tǒng)指令MCS-51的C語言基礎(chǔ)MCS-51的基本內(nèi)部資源單片機的資源擴展PART
ONE緒論1單片機的概念及發(fā)展單片機的特點及應(yīng)用全套可編輯PPT課件Concept&Development單片機的概念與發(fā)展單片機的概念SingleChipMicrocomputer單片機全稱為單片微型計算機(SingleChipMicrocomputer)。由于單片機主要多應(yīng)用于控制系統(tǒng)中,因此又被稱為微控制器(MicrocomputerUnit,MCU)或嵌入式控制器(EmbeddedController)。它把計算機的基本部件微型化并集成到一塊芯片上,通常片內(nèi)都含有中央處理器(CPU)、數(shù)據(jù)存儲器(RAM)、程序存儲器(ROM\EPROM\Flash)、定時器/計數(shù)器和各種I/O接口,如串行通信口、中斷控制、系統(tǒng)時鐘和系統(tǒng)總線等。*
單片機的典型結(jié)構(gòu)圖時鐘OSC程序存儲器ROM數(shù)據(jù)存儲器
RAM內(nèi)部總線中央數(shù)據(jù)
處理器CPUI/0外設(shè)
接口定時器/計數(shù)器CTC中斷全套可編輯PPT課件單片機的概念與發(fā)展1978-1983發(fā)展階段1983至今
爆炸式發(fā)展階段1970-1978初級階段單片機的發(fā)展概況Concept&Development單片機發(fā)展至今已有40余年,它的生產(chǎn)與發(fā)展和微處理器的發(fā)展大體上同步,若將4位單片機的誕生為起點,那么單片機的發(fā)展可以分為以下幾個階段:Concept&Development單片機的概念與發(fā)展單片機的未來發(fā)展趨勢小容量
價格低廉化大容量
高性能化外圍電路內(nèi)裝化低功耗化Features&Application單片機的特點及應(yīng)用單片機的特點①集成度高、可靠性高②低電壓低功耗③高性價比④針對性強Features&Application單片機的特點及應(yīng)用由于單片機的飛速發(fā)展,它的應(yīng)用領(lǐng)域也越來越廣泛。小到玩具、日用品,大到衛(wèi)星、航天器,從實現(xiàn)數(shù)據(jù)采集、過程控制、模糊控制等智能系統(tǒng)到人類日常生活,處處都有單片機的影子,其主要應(yīng)用領(lǐng)域如下:單片機的應(yīng)用1234工業(yè)自動化中的應(yīng)用智能儀器儀表中的應(yīng)用日常生活中的應(yīng)用在軍事領(lǐng)域的應(yīng)用Features&Application單片機的特點及應(yīng)用常用單片機簡介
類型特征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)、國家半導(dǎo)體(NationalSemiconductor)、愛特梅爾(Atmel)、微型(Microchip)、德州儀器(TI)等;日本的東芝(Toshiba)、日立(Hitachi)、日電(NEC)等;荷蘭的飛利浦(Philips);德國的西門子(Siemens)等等思考與練習(xí)什么是單片機?簡述它的典型結(jié)構(gòu)。單片機的發(fā)展分為哪幾個階段?各階段的有哪些功能特點。單片機的未來發(fā)展分為哪幾個方向?并簡述之。例舉一些我們身邊的單片機的應(yīng)用。
感謝聆聽THANK
YOU!單片機技術(shù)及應(yīng)用SCMTechnology&Application
12345CONTENTS目錄PART
ONEPART
TWOPART
THREEPART
FOURPART
FIVE緒論MCS-51結(jié)構(gòu)及系統(tǒng)指令MCS-51的C語言基礎(chǔ)MCS-51的基本內(nèi)部資源單片機的資源擴展PART
TWOMCS-51硬件結(jié)構(gòu)及系統(tǒng)指令2MCS-51單片機的結(jié)構(gòu)MCS-51單片機的時鐘模塊及
工作方式StructureMCS-51單片機的結(jié)構(gòu)MCS-51單片機的結(jié)構(gòu)MCS-51單片機系統(tǒng)內(nèi)部由CPU、數(shù)據(jù)存儲器RAM、程序存儲器ROM、定時器/計數(shù)器和I/O口等功能部件構(gòu)成,如圖所示時鐘模塊程序存儲器數(shù)據(jù)存儲器16位
定時器/計數(shù)器中央數(shù)據(jù)處理器CPU總線擴展控制可編程并行I/0可編程全雙工串行口外部時鐘源計數(shù)器輸入中斷P1P2P3P4控制串口輸入串口輸出StructureMCS-51單片機的結(jié)構(gòu)MCS-51系列單片機內(nèi)部模塊功能如下程序存儲器ROM數(shù)據(jù)存儲器RAM中央處理器CPU可編程全雙工串行口16位定時/計時器可編程I/0口時鐘模塊中斷系統(tǒng)MCS-51內(nèi)部結(jié)構(gòu)框圖StructureMCS-51單片機的結(jié)構(gòu)一、中央處理器CPU中央處理器CPU是單片機的核心單元,它由控制器和運算器組成。而控制器由程序計數(shù)器PC、數(shù)據(jù)指針DPTR、指令寄存器IR、指令譯碼器及定時控制邏輯組成,運算器由算術(shù)邏輯運算單元ALU、累加器A、寄存器B、程序狀態(tài)字PSW和堆棧指針SP組成。1.控制器單片機是程序控制式的計算機,指令是逐條地存放在程序存儲器中,執(zhí)行指令時首先將指令碼送到指令寄存器中寄存,然后對該指令譯碼,轉(zhuǎn)換成一些列的定時控制的微操作,用于控制單片機各個部分運行。StructureMCS-51單片機的結(jié)構(gòu)一、中央處理器CPU2.運算器運算器主要用來實現(xiàn)對操作數(shù)的算術(shù)邏輯預(yù)算和位操作。它包括一個可進行8位算術(shù)運算和邏輯運算的ALU單元、8位的暫存器1和暫存器2、8為的累加器ACC、B寄存器,以及程序狀態(tài)標(biāo)志寄存器PSW等。其結(jié)構(gòu)如圖所示。StructureMCS-51單片機的結(jié)構(gòu)二、引腳說明MCS-51系列單片機的外形封裝有兩種方式,雙列直插式(DIP)和方形封裝(PLCC、MQFP)。如圖2-4所示,給出了DIP封裝的引腳排列圖。40條引腳功能如下主電源引腳VCC和GND時鐘引腳XTAL1和XTAL2控制信號引腳ALE/、PROG、PSEN、EA/Vpp和RST輸入輸出端引腳(也稱I/O口)StructureMCS-51單片機的結(jié)構(gòu)
從物理地空間上來看,MCS-51有4個存儲器地址空間,即片內(nèi)程序存儲器(片內(nèi)ROM)、片外程序存儲器(片外ROM)、片內(nèi)數(shù)據(jù)存儲器(片內(nèi)RAM)、片外數(shù)據(jù)存儲器(片外RAM)。MCS-51存儲器結(jié)構(gòu)如圖2-5所示。三、存儲器結(jié)構(gòu)StructureMCS-51單片機的結(jié)構(gòu)三、存儲器結(jié)構(gòu)由于程序存儲器是用來存放程序和初始表格常數(shù)的,所以單片機中的程序存儲器為只讀型存儲器(ROM)。對于8051,它片內(nèi)駐留4KB的ROM(0000H~0FFFH)。它片外ROM最大容量可達64KB(0000H~FFFFH)。片內(nèi)和片外ROM在低4KB的地址是重疊的,這時候它們的訪問用EA腳來控制。當(dāng)EA置1時,訪問內(nèi)部4KB的ROM,外部ROM從1000H開始編址。當(dāng)PC指針大于0FFFH時自動轉(zhuǎn)向外部ROM。當(dāng)EA為0時,將直接從片外ROM的低4KB開始訪問。此時地址從0000H~FFFFH都是外部ROM存儲空間程序存儲器的某些特定單元被保留用于特定的程序入口地址。一般在該位置反之相應(yīng)的跳轉(zhuǎn)指令,使得PC指針跳轉(zhuǎn)到相應(yīng)的程序代碼塊其實存放地址,常用的幾個入口地址,如表2-2所示。1.程序存儲器ROM特定程序入口地址系統(tǒng)復(fù)位0000H外部中斷00003H定時器T0溢出中斷000BH外部中斷10013H定時器T1溢出中斷001BH串行口中斷0023H定時器T2溢出(8052)002BH表2-2特定程序的入口地址StructureMCS-51單片機的結(jié)構(gòu)三、存儲器結(jié)構(gòu)2.數(shù)據(jù)存儲器RAM(1)片內(nèi)RAM片內(nèi)RAM最大尋址范圍為256字節(jié),其在物理上又可以分為兩個獨立的、功能不同的區(qū)域。
其配置如圖2-6所示。圖2-6MCS-51片內(nèi)RAM地址空間StructureMCS-51單片機的結(jié)構(gòu)三、存儲器結(jié)構(gòu)2.數(shù)據(jù)存儲器RAM①片內(nèi)低128字節(jié)RAM片內(nèi)低128字節(jié)RAM是用于真正可以存取隨機數(shù)據(jù)的數(shù)據(jù)存儲器,其地址為00H~7FH。根據(jù)尋址方式的不同,低128字節(jié)RAM又可以分為工作寄存器區(qū)、位尋址區(qū)、用戶RAM區(qū)和堆棧區(qū)。
表2-3RAM位尋址區(qū)字節(jié)地址與位地址對應(yīng)表字節(jié)地址位地址765432102FH7FH7EH7DH7CH7BH7AH79H78H2EH77H76H75H74H73H72H71H70H2DH6FH6EH6DH6CH6BH6AH69H68H2CH67H66H65H64H63H62H61H60H2BH5FH5EH5DH5CH5BH5AH59H58H2AH57H56H55H54H53H52H51H50H29H4FH4EH4DH4CH4BH4AH49H48H28H47H46H45H44H43H42H41H40H27H3FH3EH3DH3CH3BH3AH39H38H26H37H36H35H34H33H32H31H30H25H2FH2EH2DH2CH2BH2AH29H28H24H27H26H25H24H23H22H21H20H23H1FH1EH1DH1CH1BH1AH19H18H22H17H16H15H14H13H12H11H10H21H0FH0EH0DH0CH0BH0AH09H08H20H07H06H05H04H03H02H01H00H表2-3RAM位尋址區(qū)字節(jié)地址與位地址對應(yīng)表StructureMCS-51單片機的結(jié)構(gòu)三、存儲器結(jié)構(gòu)2.數(shù)據(jù)存儲器RAM②片內(nèi)高128字節(jié)RAMMCS-51內(nèi)高128字節(jié)的RAM內(nèi)有21個特殊功能寄存器SFR,他們離散地分布在80H~FFH的RAM空間中。訪問特殊功能寄存器只能使用直接尋址方式。常用的特殊功能寄存器如表2-4所示。標(biāo)示符寄存器名稱字節(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é)地址與位地址對應(yīng)表StructureMCS-51單片機的結(jié)構(gòu)三、存儲器結(jié)構(gòu)2.數(shù)據(jù)存儲器RAM(2)片外RAM片外RAM的地址最大可以為64KB,即0000H~FFFFH,其中0000H~00FFH的低位地址與部分片內(nèi)RAM重疊。這種重疊有不同的指令來區(qū)分,片內(nèi)ROM使用MOV指令,而片外RAM使用MOVX指令。對片外RAM通常采用間接尋址方法,使用R0、R1和DPTR作為間址寄存器。當(dāng)使用R0、R1尋址時,由于R0和R1均為8位寄存器,其最大尋址空間為256字節(jié)。當(dāng)使用DPTR作為間址寄存器是,由于DPTR為16位寄存器,故其最大尋址范圍可達64KB。StructureMCS-51單片機的結(jié)構(gòu)四、定時器/計時器8051內(nèi)部有兩個16位可編程的定時器/計數(shù)器T0和T1。它們分別由高8位寄存器TH0、TH1和低8位寄存器TL0、TL1組成。在定時器工作模式下,T0和T1的計數(shù)脈沖有單片機時鐘脈沖經(jīng)12分頻后提供,定時時間與單片機時鐘頻率有關(guān)。在計數(shù)器工作模式下,T0和T1的計數(shù)脈沖分別從P3.4和P3.5引腳輸入。五、中斷系統(tǒng)當(dāng)CPU正在處理某項事物時,如果外界或者內(nèi)部發(fā)生了緊急事件,要求CPU暫停正在處理的工作轉(zhuǎn)而去處理這個緊急事件,待處理完以后再回到原來被中斷的地方繼續(xù)執(zhí)行,這個過程稱為中斷。
MCS-51允許有5個中斷源,提供兩個中斷優(yōu)先級。每個中斷優(yōu)先級的高低都可以通過程序來設(shè)定。StructureMCS-51單片機的結(jié)構(gòu)六、輸入/輸出端口結(jié)構(gòu)MCS-51系列單片機設(shè)有4個8位雙向I/O端口,分別為P0、P1、P2和P3,每一條I/O線都能獨立的用作輸入或者輸出。P0口為三態(tài)雙向口,能帶8個TTL電路。P1、P2和P3口為準(zhǔn)雙向口(在用做輸入線時,口鎖存器必須先寫入“1”,故稱為準(zhǔn)雙向口),負(fù)載能力為4個TTL電路。七、串行接口MCS-51還有一個全雙工的可編程串行I/O口。它可以把CPU的8位并行數(shù)據(jù)變成串行數(shù)據(jù)一位一位的由發(fā)送數(shù)據(jù)腳TXD發(fā)送出去,也可以由接收數(shù)據(jù)腳RXD串行接收數(shù)據(jù)并轉(zhuǎn)變成8位并行數(shù)據(jù)送給CPU。發(fā)送和接收可以同時進行,也可單獨進行。Module&WayMCS-51單片機的時鐘模塊及工作方式一、時鐘模塊時鐘模塊用于產(chǎn)生單片機工作所需的時鐘信號,單片機工作過程中的各個信號之間的關(guān)系稱之為時序。1.
MCS-51單片機時鐘產(chǎn)生單片機內(nèi)部所有的時序都由時鐘統(tǒng)一產(chǎn)生,MCS-51系列單片機內(nèi)部自帶一個高增益反相放大器,所以可以使用石英晶體和反相放大器作為單片機的時鐘源,當(dāng)然,也可以使用其他獨立的時鐘源。如圖2-7所示。2.
MCS-51單片機的時序時序是指處理器指令譯碼產(chǎn)生的一系列操作在時間上的先后次序,MCS-51單片機的時序周期包括振蕩周期、時鐘周期、機器周期和指令周期。圖2-7MCS-51的兩種時鐘連接方式Module&WayMCS-51單片機的時鐘模塊及工作方式一、單片機的工作方式②程序執(zhí)行方式④編程方式③低功耗方式⑤單步執(zhí)行方式①復(fù)位方式Module&WayMCS-51單片機的時鐘模塊及工作方式一、單片機的工作方式1.
復(fù)位方式MCS-51單片機的復(fù)位電路如圖2-8所示。當(dāng)在RST管腳輸入加上2個機器周期的高電平時,CPU在第二個機器周期內(nèi)執(zhí)行內(nèi)部復(fù)位操作,以后每一個機器周期重復(fù)一次,直至RST端轉(zhuǎn)為低電平。圖2-8復(fù)位電路Module&WayMCS-51單片機的時鐘模塊及工作方式一、單片機的工作方式2.程序執(zhí)行方式程序執(zhí)行方式是單片機最常見的工作方式,復(fù)位后單片機將正常執(zhí)行放置在單片機程序存儲器中的程序,當(dāng)EA=1時從內(nèi)部程序存儲器開始執(zhí)行,當(dāng)EA=0時從外部程序存儲器開始執(zhí)行。3.低功耗方式CMOS型的MCS-51單片機有待機模式和掉電模式兩種低功耗操作方式,可以減少單片機系統(tǒng)的功耗。在待機模式下,單片機的CPU停止工作,其他部分保持工作;在掉電模式下單片機僅RAM保持供電,其他部分均不工作。單片機通過設(shè)置電源控制寄存器PCON的相應(yīng)位來使得單片機進入相應(yīng)的工作模式,PCON的相關(guān)位如下所示:PCON.0——IDL:待機模式設(shè)置位,當(dāng)該位被置位后單片機進入待機模式。PCON.1——PD:掉電模式設(shè)置位,當(dāng)該位被置位后單片機進入掉電模式。PCON.2——GF0:通用標(biāo)志位0,用于判斷單片機所處的模式。PCON.3——GF1:通用標(biāo)志位1,用于判斷單片機所處的模式。PCON.4——IDL:保留位。PCON.5——IDL:保留位。PCON.6——IDL:保留位。PCON.7——SMOD:波特率倍增位,用于串行通信。Module&WayMCS-51單片機的時鐘模塊及工作方式在待機模式下,有一個事先被允許的中斷被觸發(fā),IDL會被硬件清0,單片機結(jié)束待機模式,進入程序工作方式,PC跳轉(zhuǎn)到進入待機模式之前的位置開始執(zhí)行。硬件復(fù)位,復(fù)位后PCON中的各位均被重新初始化,從而結(jié)束待機模式。1方式-12方式-2退出待機模式有兩種方式思考與練習(xí)MCS-51系列單片機的基本組成部分是什么?片內(nèi)各邏輯部件的主要功能是什么?程序狀態(tài)字PSW的作用是什么?PSW中的各位有何含義?堆棧的功能是什么?程序設(shè)計時,為什么一般還要對SP重新賦值?MCS-51內(nèi)部RAM區(qū)功能結(jié)構(gòu)如何分配?使用時如何選用四組工作寄存器?位尋址區(qū)域的字節(jié)地址范圍是多少?簡述中斷、中斷源、中斷優(yōu)先級以及中斷嵌套的含義。MCS-51的4個8位并行I/O端口中,16位的地址線由哪兩個I/O端口組成?P3口有何功能?單片機的復(fù)位有哪幾種方法?復(fù)位后機器的初始狀態(tài)如何?各寄存器及RAM中的狀態(tài)如何?MCS-51有哪幾種尋址方式,并簡其特點。簡述偽指令的概念及用途。分別簡述簡單程序、分支程序、循環(huán)程序和查表程序的各自特點及應(yīng)用場合。
感謝聆聽THANK
YOU!單片機技術(shù)及應(yīng)用SCMTechnology&Application
12345CONTENTS目錄PART
ONEPART
TWOPART
THREEPART
FOURPART
FIVE緒論MCS-51結(jié)構(gòu)及系統(tǒng)指令MCS-51的C語言基礎(chǔ)MCS-51的基本內(nèi)部資源單片機的資源擴展PARTTWOMCS-51的C語言基礎(chǔ)3C語言基礎(chǔ)知識KeilC51集成開發(fā)環(huán)境BasicKnowledgeC語言基礎(chǔ)知識一、數(shù)據(jù)類型、運算符與表達式標(biāo)準(zhǔn)C語言中主要有整形、實型(又分為單精度型和雙精度型)、字符型和空類型。這些數(shù)據(jù)類型的長度和范圍會因處理器的類型和C語言編譯程序的實現(xiàn)而有所不同,對于keil產(chǎn)生的目標(biāo)文件,表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語言基礎(chǔ)知識一、數(shù)據(jù)類型、運算符與表達式(1)標(biāo)識符命名在C語言中,標(biāo)識符可以作為變量名、函數(shù)名、數(shù)組名以及文件名。它可以是一個字符或是多個字符。大多數(shù)情況下,標(biāo)識符必須以字母或者下劃線開始,后面可以是字母、數(shù)字或者下劃線。例如,_Data、count1和Set_Flag這是正確的形式,而2countSet..Flag是錯誤形式。2.標(biāo)示符與關(guān)鍵字2)關(guān)鍵字關(guān)鍵字是一種含有特殊意義的字符,又稱為保留字。它在編譯器中已經(jīng)有了定義,所以不能再進行重復(fù)定義,需要加以保留。這就是上面提到的標(biāo)識符不能與關(guān)鍵字同名的原因。數(shù)據(jù)類型關(guān)鍵字:auto、char、const、double、enum、extern、float、int、register、sizeof、short、static、struct、typedef、union、unsigned、void、volitile等。程序控制關(guān)鍵字:break、case、continue、default、do、else、for、goto、if、return、switch、while等。BasicKnowledgeC語言基礎(chǔ)知識一、數(shù)據(jù)類型、運算符與表達式(1)常量C語言中在程序運行過程中,其值不能被改變的量稱為常量。常量區(qū)分為不同的類型,如10、0、-1為整形常量,3.14、-1.26為實型常量,‘a(chǎn)’‘b’位字符型常量。3.常量與變量(2)變量C語言中在程序運行過程中,其值可以改變的量稱為變量。一個變量應(yīng)該有一個名字,在內(nèi)存中占用一定的存儲單元,在該存儲單元中存放該變量的值。定義變量的一般形式是:typevariable_list;
這里type必須是有效地數(shù)據(jù)類型,variable_list(變量表)可以由一個或者多個由逗號分隔的標(biāo)識符構(gòu)成。BasicKnowledgeC語言基礎(chǔ)知識一、數(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語言基礎(chǔ)知識一、數(shù)據(jù)類型、運算符與表達式6.字符型數(shù)據(jù)
字符型數(shù)據(jù)主要處理字符相關(guān)的內(nèi)容,比如處理英文字母或者漢字。一般來說會將多個字符型變量組成一個字符串來使用。在這里需要強調(diào)一下數(shù)值和字符常量在表現(xiàn)形式上是有區(qū)別的。例如‘8’表示的是字符,而8則表示數(shù)值。字符變量主要是char型。需要強調(diào)的是字符是以單引號表示的。它的定義方法如下:charc1;c1=‘A’;上面的例子定義了字符變量c1,并給它賦值為‘A’。BasicKnowledgeC語言基礎(chǔ)知識一、數(shù)據(jù)類型、運算符與表達式7.各種數(shù)據(jù)之間的轉(zhuǎn)換在某些應(yīng)用場合需要進行數(shù)據(jù)類型的轉(zhuǎn)換,比如把字符型變量轉(zhuǎn)換成整型,把int型數(shù)據(jù)轉(zhuǎn)換成long型等。下面給出數(shù)據(jù)類型轉(zhuǎn)換的例子:voidchange(void){chardata;intidata;data=‘C’;idata=(int)(data);}BasicKnowledgeC語言基礎(chǔ)知識二、C語言的運算符與表達式C語言的運算符范圍很寬,不僅可以進行加、減、乘、除等算術(shù)運算,還可以進行比如關(guān)系運算、邏輯運算、賦值運算和位運算等。1.算術(shù)運算
算術(shù)運算主要是進行一些加、減、乘、除等運算,表3-2給出了算術(shù)運算符。算術(shù)運算符含義舉例(設(shè)a=5,b=3)+加a+b結(jié)果:8-減a-b結(jié)果:2*乘a*b結(jié)果:15/除a/b結(jié)果:1%模運算(取余)a%b結(jié)果:2++自增a++結(jié)果:6--自減a--結(jié)果:4BasicKnowledgeC語言基礎(chǔ)知識二、C語言的運算符與表達式2.關(guān)系運算
關(guān)系運算主要是對操作數(shù)進行某種條件的判斷,結(jié)果只有兩種true或false。表3-3給出一些關(guān)系運算。關(guān)系運算符含義舉例(設(shè)a=5,b=3)>
大于a>b結(jié)果:true>=大于等于a>=b結(jié)果:true==等于a==b結(jié)果:false<
小于a<b結(jié)果:false<=小于等于a<=b結(jié)果:false!=不等于a!=b結(jié)果:trueBasicKnowledgeC語言基礎(chǔ)知識二、C語言的運算符與表達式3.邏輯運算
邏輯運算和關(guān)系運算比較相似,也是處理操作操作數(shù)之間的關(guān)系,結(jié)果只有true和false兩種,表3-4給出邏輯運算符。關(guān)系運算符含義舉例(設(shè)a=true,b=false)&&與a&&b結(jié)果:false||或a||b結(jié)果:true!非!a結(jié)果:falseBasicKnowledgeC語言基礎(chǔ)知識二、C語言的運算符與表達式
通常把“=”稱為賦值運算。該運算符是一個二元運算符,需要兩個操作數(shù),左邊的操作數(shù)是變量或者數(shù)組,右邊的是表達式,例如:unsignedchara,b;a=8; //賦值運算b=a+3; //賦值運算另外“=”還可以和其他的運算符結(jié)合起來使用。例如+=、-=、*=、/=、%=等,它們的意義分別是: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;另外,“=”還可以和位運算符“>>”等結(jié)合起來使用,含義和上面的類似。4.賦值運算BasicKnowledgeC語言基礎(chǔ)知識二、C語言的運算符與表達式5.位運算位運算在單片機的開發(fā)中非常重要,比如設(shè)置某個管腳的輸出電平的操作就是通過位運算來實現(xiàn)的,表3-5給出位運算符。關(guān)系運算符含義舉例(設(shè)a=10,b=13)&與m=a&b結(jié)果:m=8|或m=a|b結(jié)果:m=15~取反m=~a結(jié)果:m=0xf5>>
右移m=a>>2結(jié)果:m=40<<
左移m=a<<2結(jié)果:m=2表3-5給出位運算符BasicKnowledgeC語言基礎(chǔ)知識二、C語言的運算符與表達式6.運算的優(yōu)先級
通過前面的介紹,現(xiàn)在應(yīng)對C語言的幾種運算有了大概的了解。在實際應(yīng)用的過程中大部分的計算可能是包括上面幾種運算的組合,這樣進行運算的時候,執(zhí)行的順序就非常的重要,此時就有了解運算的優(yōu)先級順序,表3-6給出了運算的優(yōu)先級順序。運算優(yōu)先級運算符1!~++--等2*/%3+-4<<>>5<<=>>===!=6&7|8&&9||10=+=-=*=/=等BasicKnowledgeC語言基礎(chǔ)知識同一般的C程序開發(fā)一樣,C51的程序設(shè)計也有一些程序設(shè)計的技巧。同時由于嵌入式系統(tǒng)的實時性、資源有限性等特點,C51程序設(shè)計也有一些普通C程序設(shè)計所不具備的特點。一、養(yǎng)成好的編程習(xí)慣1.程序的總體設(shè)計2.命名規(guī)則(1)常量的命名(2)變量的命名(3)函數(shù)的命名3.編程規(guī)范(1)縮進(2)對齊(3)空行(4)注釋(5)不應(yīng)當(dāng)把多個短語句寫在一行中,即一行只寫一條語句,例如:(6)if、for、do、while、case、switch、default等語句應(yīng)當(dāng)自占一行,且if、for、do、while等語句的執(zhí)行語句部分無論多少都要加括號{}。(7)不管有沒有無效分支,switch函數(shù)一定要處理default這個分支。這不僅提示閱讀者程序員并沒有遺忘default,另外也可以防止程序運行過程中出現(xiàn)意外,加強程序的健壯性BasicKnowledgeC語言基礎(chǔ)知識二、宏定義宏定義屬于預(yù)處理指令,通過它可以是程序設(shè)計簡化,增加程序的可讀性、可維護性和可移植性。宏定義分為簡單的宏定義和帶參數(shù)的宏定義。
1.簡單的宏定義
#define標(biāo)示符字符串
2.帶參數(shù)的宏定義
#define宏名(參數(shù)表)字符串三、條件編譯
C51中的條件編譯預(yù)處理指令可以通過C51編譯器根據(jù)編譯選項有條件的辨析這部分代碼。使用條件編譯的好處是可以使程序中某些功能模塊可以根據(jù)需要有選擇的加入到項目中去,或使同一個程序方便的移植到不同的硬件平臺上,條件編譯有幾種指令,最基本的格式有三種。
1.#ifdef型
2.#ifndef型
3.#if型BasicKnowledgeC語言基礎(chǔ)知識四、具體指針的應(yīng)用C51編譯器支持兩種不同類型的指針:普通指針和存儲器特殊指針。在C51編譯器中普通指針總是使用3個字節(jié)機型保存:第一個字節(jié)用于保存存儲器類型;第二個字節(jié)用于保存地址的高字節(jié);第三個字節(jié)用于保存地址的低字節(jié)。存儲器特殊指針在指針定義中,總是包含存儲器類型的指定,并總是指向一個特定的存儲器空間區(qū)域。如:chardata*cp;這個定義使得字符型指針cp指向51片內(nèi)字節(jié)尋址的數(shù)據(jù)存儲區(qū)。BasicKnowledgeC語言基礎(chǔ)知識五、中斷響應(yīng)快速性的一種實現(xiàn)在工業(yè)控制中,系統(tǒng)的實時性是非常重要的,有時甚至是關(guān)鍵性的。在一個大的系統(tǒng)中,CPU的負(fù)荷可能會很高,處理著眾多的程序和中斷。在這種情況下,如果某一個或某些中斷處理函數(shù)占用過多的CPU時間,就很可能導(dǎo)致其他中斷無法響應(yīng),甚至?xí)?dǎo)致系統(tǒng)的癱瘓。如果在一個單片機實現(xiàn)數(shù)據(jù)采集系統(tǒng)中,單片機不僅要不停的采集數(shù)據(jù)、處理數(shù)據(jù),而且更重要的是要負(fù)責(zé)系統(tǒng)的協(xié)調(diào)工作,協(xié)調(diào)好各個中斷及各個任務(wù)的順利進行。這時候可以把采集數(shù)據(jù)的工作放到一個定時器中斷里去做。BasicKnowledgeC語言基礎(chǔ)知識六、一些關(guān)鍵字的使用關(guān)鍵字的靈活應(yīng)用能夠使程序很大程度上提高程序的效率,這里將主要介紹一下幾個關(guān)鍵字:1.staticstatic關(guān)鍵字在許多C語言教程中都值介紹該關(guān)鍵字定義的變量為靜態(tài)變量,他在每次調(diào)用以后,值都保持不變,即具有記憶性。但static的意義并不局限于此,它還有以下兩層主要意思:(1)不論用static聲明的變量在程序中是什么位置,即使它是函數(shù)內(nèi)部的局部變量,編譯器都會給它分配一個固定的內(nèi)存空間。而這個變量在整個程序的執(zhí)行過程中都存在,程序執(zhí)行完畢它才消亡。盡管他在全局中都存在,會占用存儲空間,但適當(dāng)?shù)膽?yīng)用它會給程序的設(shè)計帶來一些好處。如可以定義一個局部靜態(tài)變量作為計數(shù)器,每次調(diào)用的時候加1,這樣就不必定義一個全局變涼了,有利于程序的移植。例如上一節(jié)數(shù)據(jù)采集和處理的程序代碼中采集次數(shù)的技術(shù)部分可以用靜態(tài)變量來代替,省去了全局變量的定義,便于程序移植。(2)用static聲明的變量或函數(shù)同時指明了變量或函數(shù)的作用域為本文本,其他文件的函數(shù)都無法訪問這個文件里的這些變量和函數(shù)。在一個比較龐大的系統(tǒng)中可能會有很多個文件,這些文件由許多程序員來開發(fā),所以不同的文件中同名的變量或函數(shù)很可能存在,用static對其進行聲明可以防止同名變量或函數(shù)的意外混調(diào)。BasicKnowledgeC語言基礎(chǔ)知識2.constconst關(guān)鍵字在許多C教程中都只用于定義一個常量,這是不完全的。用const修飾的變量、指針、函數(shù)參數(shù)返回值等都是只讀的,即它們都受到保護,不能改變它們的值。當(dāng)在代碼中試圖對上述上述變量進行賦值或者修改等操作時,在編譯的時候編譯器會報錯。3.reentrantreentrant關(guān)鍵字用于聲明一個函數(shù)為再入函數(shù)。再入函數(shù)可以同時由幾個程序功用,如主函數(shù)和中斷函數(shù)同時調(diào)用一個函數(shù)。當(dāng)執(zhí)行再入函數(shù)時,其他程序可以中斷執(zhí)行并開始執(zhí)行同一個再入函數(shù)。一般情況下,C51函數(shù)不能遞歸調(diào)用或被幾個可能同時執(zhí)行的函數(shù)同時調(diào)用。這是因為函數(shù)自變量和局部變量都存放在固定的存儲空間里,如果同時調(diào)用,函數(shù)的堆棧會發(fā)生混亂。再入函數(shù)屬性允許說明那些可以重入的函數(shù),因此可以實現(xiàn)遞歸調(diào)用,那些只有自己的局部變量而不涉及其他固定地址變量的函數(shù)體。BasicKnowledgeC語言基礎(chǔ)知識七、使用移位運算代替乘除和求模等運算在C51語音中,乘、除、求模和浮點運算等都是通過調(diào)用庫函數(shù)來實現(xiàn)的,調(diào)用庫函數(shù)的一個特點是使編程方便簡潔,但也存在效率不高的問題。而且他們編譯后的代碼太長。在通常情況下我們可以用移位操作來代替。既提高了程序的效率,又縮短了編譯后代碼的長度。如乘4和除4分別可以通過左移2位和右移2位來實現(xiàn),求模也可以通過移位的組合來實現(xiàn)。因為除法和求模運算中調(diào)用庫函數(shù)很耗時,在MCS-51單片機的應(yīng)用系統(tǒng)中對時間要求比較嚴(yán)格的場合,如定時器中短周期較短而任務(wù)較多是,可以用移位來實現(xiàn)每次中斷的定時器重載。KeilC51軟件集成開發(fā)環(huán)境一、概述一、概述常見的MCS-51系列單片機編程語言有4種,即匯編語言、C語言、BASIC語言和PL/M語言。目前使用最多的單片機開發(fā)語言就是匯編語言和C語言。這兩種語言都有良好的編譯器支持,使用廣泛。一般來說,C語言用于編寫較復(fù)雜的程序,匯編則用于對效率要求很高的場合,尤其是底層函數(shù)的編寫。一個好的單片機開發(fā)人員,不僅要屬性MCS-51單片機體系結(jié)構(gòu),更要深刻理解單片機指令和執(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預(yù)處理器選擇支持匯編語言。速度慢,要求匯編中間環(huán)節(jié)。支持分體切換并和ANSI兼容,需要一個較復(fù)雜的鏈接程序控制文件支持后,程序才能運行。軟件包括編譯器、匯編器、鏈接器、庫MAKE工具和編譯器,集成環(huán)境類似Borland和Turbo。TASKING公司原名BSO/Tasking,是一家專業(yè)開發(fā)和銷售嵌入式系統(tǒng)軟件工具的公司。它是非專業(yè)的軟件包,不支持floats、longs或結(jié)構(gòu)等。KeilC51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。它的編譯器用起來比較難,要由可執(zhí)行的宏語句控制編譯、匯編和鏈接,且選項很多。它不支持浮點數(shù)、長整數(shù)、結(jié)構(gòu)和多維數(shù)組。KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境三、KeilC51軟件集成開發(fā)環(huán)境三、KeilC51集成開發(fā)環(huán)境
KeilC51是美國KeilSoftware公司的產(chǎn)品,它集項目管理、編譯公爵、代碼編寫工具、調(diào)試工具以及仿真于一體可以完成編輯、編譯、連接、調(diào)試、仿真等整個開發(fā)流程,是一款功能強大的開發(fā)平臺。1.KeilC51界面及菜單介紹KeilC51軟件的界面窗口如圖3-1所示,該軟件提供了豐富的工具,常用命令都有快捷工具欄。圖3-1KeilC51開發(fā)環(huán)境界面KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境Project菜單菜單主要用于項目的配置以及目標(biāo)代碼的生成管理。Debug菜單主要提供在軟件和硬件仿真環(huán)境下的調(diào)試選項。Flash菜單用于管理Flash文件操作。用于在仿真系統(tǒng)中控制芯片的復(fù)位和對外圍芯片的狀態(tài)檢查。Tools菜單用于和第三方軟件聯(lián)合調(diào)試。SVSC菜單用于管理軟件的版本。Window菜單用于管理窗口視圖。Help菜單給使用者提供包括庫函數(shù)查詢在內(nèi)的幫助管理。File菜單提供了文件操作功能。Edit菜單提供了文本編輯和操作的基本功能。View菜單提供界面顯示內(nèi)容的設(shè)置。KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境三、KeilC51軟件集成開發(fā)環(huán)境2.KeilC51開發(fā)流程使用KeilC51的軟件工具時,項目的開發(fā)流程基本上與使用其他軟件開發(fā)項目一樣,如下:(1)創(chuàng)建一個項目,從器件數(shù)據(jù)庫中選擇目標(biāo)芯片,并配置工具軟件的設(shè)置。(2)用C或者匯編創(chuàng)建源程序。(3)用項目管理器構(gòu)造(build)應(yīng)用。(4)糾正源文件的位置。(5)調(diào)試鏈接后的應(yīng)用。
Keil的8051開發(fā)工具具有很多功能和優(yōu)點,可以幫助用戶快速、成功地開發(fā)嵌入式應(yīng)用。這些軟件的使用非常簡單,保證幫助設(shè)計人員達到設(shè)計目標(biāo)。KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境三、KeilC51軟件集成開發(fā)環(huán)境下面介紹建立一個簡單工程的各個步驟:(1)啟動程序雙擊KeilC51圖標(biāo),會彈出顯示KeilLogo圖片,如圖3-2所示。當(dāng)見到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啟動文件,單擊“是”按鈕,該文件用于初始化單片機內(nèi)部存儲器等,添加完成之后在項目管理窗口中可以看到startup.A51文件已經(jīng)被加入,如圖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)語法錯誤,以及程序的大小等信息。當(dāng)編譯信息窗口顯示“0Error(s),0Warning(s)”,則表示程序編譯成功了。圖3-10編寫簡單程序并進行編譯單擊“Rebuildalltargetfiles”按鍵KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境三、KeilC51集成開發(fā)環(huán)境默認(rèn)Keil不會生成Hex文件,Hex文件用于燒寫到單片機里面,單片機沒有程序是不能運行的。為了生成Hex文件,我們必須要勾選“CreateHex”選項,讓Keil編譯代碼時生成Hex文件。右鍵單擊工程窗口“Target1”命令,然后從右鍵菜單選中“OptionsforTarget‘Target1’”選項,從彈出的“OptionsforTarget‘Target1’”對話框中選中“Output”選項卡,然后勾選“CreateHex”選項即可,如圖3-11所示,最終生成hello.hex文件。圖3-11設(shè)置生成Hex文件選中“Output”選項卡,然后勾選“CreateHex”選項。KeilC51IntegratedDevelopmentEnvironmentKeilC51軟件集成開發(fā)環(huán)境思考與練習(xí)什么是算術(shù)運算?什么是關(guān)系運算?什么是邏輯運算?給下列運算符按優(yōu)先級順序排序:+&||++>%寫出下面?zhèn)€邏輯表達式的值。設(shè)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!單片機技術(shù)及應(yīng)用SCMTechnology&Application
12345CONTENTS目錄PART
ONEPART
TWOPART
THREEPART
FOURPART
FIVE緒論MCS-51結(jié)構(gòu)及系統(tǒng)指令MCS-51的C語言基礎(chǔ)MCS-51的基本內(nèi)部資源單片機的資源擴展PART
FOURMCS-51的基本內(nèi)部資源4I/O口中斷系統(tǒng)定時器/計數(shù)器串行口外部中斷MCS-51內(nèi)部資源應(yīng)用技巧第一節(jié)I/O口一、I/O端口結(jié)構(gòu)I/O端口即輸入輸出端口,用于單片機對外部實現(xiàn)控制,具有信息交換過程中的速度匹配、隔離和增強復(fù)雜的功能。MCS-51有4個I/O端口,分別為P0、P1、P2和P3,各端口的每一位均由鎖存器、輸出驅(qū)動器和輸入緩沖器所組成。CPU通過這4個I/O口的任何一個輸出數(shù)據(jù)時,都可以被鎖存,輸入數(shù)據(jù)時可以得到緩沖。*
I/O典型結(jié)構(gòu)圖1.P0口第一節(jié)I/O口P0口是一個8位漏極開路型雙向I/O口,如圖4-1是P0口中的1位結(jié)構(gòu)圖,其中包含一個輸出鎖存器、兩個三態(tài)緩沖器、一個輸出驅(qū)動電路和一個輸出控制電路。輸出驅(qū)動電路由一對FET(場效應(yīng)管)T1和T2組成,其工作狀態(tài)收輸出控制電路所控制,控制電路包括一個與門、一個反相器和模擬轉(zhuǎn)換開關(guān)MUX。P0口中由兩個三態(tài)輸入緩沖器用于讀操作。因而有兩種讀入法,即“讀鎖存器”和“讀引腳”。*
P0口1位結(jié)構(gòu)圖2.P1口第一節(jié)I/O口P1口是一個帶有內(nèi)部上拉電阻的8位準(zhǔn)雙向I/O口,每一位內(nèi)部結(jié)構(gòu),如圖4-2所示。在接口上P1口沒有模擬轉(zhuǎn)換開關(guān)MUX和控制電路部分,輸出驅(qū)動電路只有一個FET(場效應(yīng)管),但內(nèi)部有上拉電阻。當(dāng)作輸出用時,將1寫入鎖存器,使輸出驅(qū)動管T截止,輸出線由內(nèi)部上拉電阻拉成高電平;將0寫入鎖存器是,T導(dǎo)通輸出0。當(dāng)作為輸入時,必須先將1寫入鎖存器,使T截止,把該口先由內(nèi)部上拉拉成高電平。*
P1口1位結(jié)構(gòu)圖3.P2口第一節(jié)I/O口P2口是一個帶有內(nèi)部上拉電阻的8位準(zhǔn)雙向I/O口,每一位的內(nèi)部結(jié)構(gòu),如圖4-3所示。P2口的上拉電阻結(jié)構(gòu)與P1口相同,但是比P1口增加了一個模擬轉(zhuǎn)換開關(guān)MUX。MUX的切換有內(nèi)部控制信號控制:一個是輸出鎖存器的輸出端Q(不同于P1口使用Q(非)端)送入MUX的輸入端;另一個是內(nèi)部地址寄存器的高位輸出端送至MUX的輸入,MUX的輸出經(jīng)過反相器去控制輸出FET(場效應(yīng)管)。*
P2口1位結(jié)構(gòu)圖4.P3口第一節(jié)I/O口P3口是一個帶有內(nèi)部上拉電阻的準(zhǔn)雙向I/O口,同時它又是一個多功能端口,它的每一位結(jié)構(gòu),如圖所示。當(dāng)P3口作為第一功能口,即通用I/O口使用時,工作原理與P1口和P2口類似,但是第二輸出功能線保持為高電平,使與非門N3對鎖存器輸出(Q端)暢通。當(dāng)P3口作為第二功能使用時,相應(yīng)位的鎖存器必須為“1”狀態(tài),使與非門N3的輸出由第二輸出功能線的狀態(tài)來決定,或使此口線允許輸入第二功能信號。*
P3口1位結(jié)構(gòu)圖二、I/O口驅(qū)動能力第一節(jié)I/O口在標(biāo)準(zhǔn)的51核單片機中,P0口的高電平的驅(qū)動電流為160μA,低電平的驅(qū)動電流為2.88mA;P1、P2和P3的驅(qū)動電流為P0的一般,當(dāng)驅(qū)動能力不夠的時候應(yīng)該在I/O扣上加驅(qū)動器來驅(qū)動負(fù)載,否則很容易造成單片機系統(tǒng)的不穩(wěn)定,甚至損壞單片機。但是現(xiàn)在很多的51系列單片機都提供較大的電流驅(qū)動能力,能夠直接驅(qū)動發(fā)光管等負(fù)責(zé)。不過從系統(tǒng)的可靠性角度出發(fā),建議盡可能的不要用單片機的I/O口直接驅(qū)動負(fù)載。當(dāng)P3口作為第一功能口,即通用I/O口使用時,工作原理與P1口和P2口類似,但是第二輸出功能線保持為高電平,使與非門N3對鎖存器輸出(Q端)暢通。當(dāng)P3口作為第二功能使用時,相應(yīng)位的鎖存器必須為“1”狀態(tài),使與非門N3的輸出由第二輸出功能線的狀態(tài)來決定,或使此口線允許輸入第二功能信號。三、I/O口的位操作第一節(jié)I/O口51系列單片機I/O口的每一位都有自己的位地址,均可以進行位尋址,可以方便的使用位操作命令進行輸入、輸出以及邏輯運行等操作。在實際的使用過程中,一般使用sbit關(guān)鍵字對引腳進行預(yù)定義,然后進行對應(yīng)位操作。下面給出一些示例:例:P1.3和P1.5為按鍵輸入端,當(dāng)兩個按鍵同時按下時(輸入為低電平),通過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經(jīng)常作為一個整體來傳送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)先級排列如下:一、中斷向量地址和中斷標(biāo)志位第二節(jié)中斷系統(tǒng)中斷向量地址存在于單片機的程序存儲器中,每當(dāng)單片機檢測到一個中斷事件之后,程序指針(PC)就會自動的跳轉(zhuǎn)到該地址。一般情況下是在該地址放入一個跳轉(zhuǎn)指令,以使程序指針再次跳轉(zhuǎn)到對應(yīng)的中斷服務(wù)子程序入口。表4-1列出了51單片機中斷源的中斷向量地址。中斷源中斷向量入口地址外部中斷00x0003定時器/計數(shù)器00x000B外部中斷10x0012定時器/計數(shù)器10x001B串行數(shù)據(jù)發(fā)送與接收0x0023表4-1中斷向量地址注意:不同的51系列單片機的中斷向量入口地址可能有所不同,需要詳細(xì)的參看具體器件的說明手冊。一、中斷向量地址和中斷標(biāo)志位第二節(jié)中斷系統(tǒng)MCS-51系列單片機的每一個中斷源,都對應(yīng)一個中斷請求標(biāo)志位,這些標(biāo)志位位于特殊功能寄存器TCON和SCON內(nèi)。1.TCON(Timer/CounterControlRegister.地址為0x88)TCON為定時計數(shù)器控制寄存器,系統(tǒng)被復(fù)位后該寄存器數(shù)值為0x00。其功能如表4-2所示。表4-2TCON功能說明TCON88H
用于外部中斷TCON.7TCON.6TCON.5TCON.4TCON.3TCON.2TCON.1TCON.0TF1TR1TF0TR0IE1IT1IE0IT0定時器/計數(shù)器T1溢出標(biāo)志定時器T1的運行控制位定時器/計數(shù)器T0溢出中斷標(biāo)志定時器T0的運行控制位外部中斷0請求源標(biāo)志外部中斷1請求源標(biāo)志外部中斷1觸發(fā)方式控制位外部中斷0觸發(fā)方式控制位一、中斷向量地址和中斷標(biāo)志位第二節(jié)中斷系統(tǒng)2.SCON(SerialControlRegister,地址為Ox98H)
SCON為串行通信口控制寄存器,其中的兩位RI和TI為串行發(fā)送、接收中斷的標(biāo)志位,下面給出了SCON寄存器中這兩位的功能說明,其余部分在以后的章節(jié)中講述,這兩位在單片機復(fù)位后均為0。(1)TI:串行發(fā)送中斷標(biāo)志位,當(dāng)串行口完成一次發(fā)送任務(wù)后將該位置位,該位不能夠被硬件自動清除,必須由用戶在程序中手動清除。(2)RI:串行接收中斷標(biāo)志位,當(dāng)串行口完成一次接收任務(wù)后將該位置位,該位不能夠被硬件自動清除,必須由用戶在程序中手動清除。二、中斷控制第二節(jié)中斷系統(tǒng)2.SCON(SerialControlRegister,地址為Ox98H)在MCS-51系列單片機中斷的開關(guān)控制和優(yōu)先級控制都是通過對相應(yīng)的寄存器對應(yīng)位進行操作來完成的。中斷的開關(guān)控制是由中斷允許控制寄存器(IE)來完成。1.IE(InterruptEnableRegister.地址為0xA8)IE為中斷控制寄存器,MCS-51系列單片機的中斷開啟和關(guān)閉都是由該寄存器控制的,該寄存器每位的功能如表4-3所示。它支持位操作,可以對其中任何一位置位或復(fù)位,從而禁止或開發(fā)對應(yīng)的中斷源,系統(tǒng)復(fù)位后IE被清零。表4-3IE功能說明位標(biāo)號位名稱描
述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寄存器的設(shè)置來修改每個中斷源的優(yōu)先級別,這樣就可實現(xiàn)兩級中斷的嵌套。
IP寄存器的功能如表4-4所示,該寄存器同樣可以進行按位的操作,可以對每一位進行置位和復(fù)位,從而改變相應(yīng)中斷源的優(yōu)先級別,單片機復(fù)位后該寄存器被清零。表4-4IP功能說明位標(biāo)號位名稱描
述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)先級之間的關(guān)系遵循如下兩條原則:(1)高優(yōu)先級別的中斷可以中斷低優(yōu)先級別所請求的中斷,反之不能。(2)同一級別的中斷一旦得到響應(yīng)后隨即屏蔽同級的中斷,也就說相同優(yōu)先級的中斷不夠再次引發(fā)中斷。當(dāng)單片機接收到幾個相同優(yōu)先級別的中斷請求后,將按照單片機內(nèi)部默認(rèn)的順序來決定響應(yīng)哪一個中斷,單片機內(nèi)部默認(rèn)的中斷響應(yīng)順序如下:中斷源相應(yīng)順序外部中斷0最高定時器/計數(shù)器0外部中斷1定時器/計數(shù)器0串行數(shù)據(jù)發(fā)送與接收最低三、中斷響應(yīng)第二節(jié)中斷系統(tǒng)MCS-51系列的單片機在每一個機器周期都會檢查各個中斷源的中斷請求信號,會按照中斷優(yōu)先級進行響應(yīng)處理。如果在中斷產(chǎn)生過程中出現(xiàn)了以下3種情況之一,單片機將延遲對中斷的響應(yīng)。(1)單片機所處的機器周期不是當(dāng)前執(zhí)行中指令的最后的一個機器周期。(2)單片機正在處理相同級別或者是更高級別的中斷。(3)單片機正在訪問IE.IP寄存器或者是正在從中斷服務(wù)子程序中退出。單片機對沒有能夠及時響應(yīng)的中斷請求標(biāo)志位不做任何的保存,單片機的響應(yīng)中斷過程如下:①封鎖同級和低級別的中斷。②把當(dāng)前程序指針PC的內(nèi)容保存到堆棧中。③根據(jù)中斷標(biāo)志位,把相應(yīng)的中斷源對應(yīng)的中斷向量入口地址裝入到PC中。④從中斷向量入口地址跳轉(zhuǎn)到對應(yīng)的中斷服務(wù)程序中。⑤執(zhí)行中斷服務(wù)。⑥中斷服務(wù)執(zhí)行完成之后打開被封鎖的中斷,然后從堆棧中取出原先保存的PC內(nèi)容,使得程序可以從原先的PC地址繼續(xù)運行。三、中斷響應(yīng)第二節(jié)中斷系統(tǒng)單片機對中斷的響應(yīng)時間可以分為兩種情況2.有其他因素影響如果在一個中斷申請響應(yīng)的時候有其他的高優(yōu)先級中斷正在執(zhí)行,那么這個中斷的響應(yīng)延時需要由該高優(yōu)先級中斷的中斷服務(wù)程序執(zhí)行時間決定。如果在申請中斷時單片機正在執(zhí)行一條普通指令,并且沒有執(zhí)行完成,則這個指令周期將不會超過3個機器周期。如果申請時單片機正在執(zhí)行從另一個中斷服務(wù)子程序中退出的RETI指令,或者是正在訪問IE或執(zhí)行IP的指令,則由于完成當(dāng)前指令需要1個機器周期,加上下一條指令的最長的4個機器周期,一共為5個機器周期。獨立中斷這種情況是指單片機在該時刻只需要處理一個中斷事件,或者是該中斷事件相對正在響應(yīng)的中斷是一個高優(yōu)先級別中斷且沒有前面提到的3種情況之一出現(xiàn)。四、中斷服務(wù)程序的設(shè)計第二節(jié)中斷系統(tǒng)單片機中斷系統(tǒng)的應(yīng)用應(yīng)該包括硬件系統(tǒng)和中斷服務(wù)程序設(shè)計兩個部分,中斷服務(wù)程序是用戶根據(jù)自己系統(tǒng)的需求所指定的響應(yīng)事件,單片機系統(tǒng)在響應(yīng)中斷后會自動的將程序指針PC跳轉(zhuǎn)到對應(yīng)中斷源的中斷向量入口地址處。2.中斷服務(wù)程序應(yīng)該包括以下內(nèi)容:(1)在中斷向量入口放置一條跳轉(zhuǎn)指令,以便把程序指針修改為中斷服務(wù)程序的起始地址。(2)保護現(xiàn)場,一般是寄存器中的內(nèi)容。(3)如果需要,清除中斷標(biāo)志。(4)進行相應(yīng)的中斷服務(wù)操作。(5)恢復(fù)現(xiàn)場,返回到原來主程序的斷點處。1.單片機的中斷初始化應(yīng)該包括以下內(nèi)容:(1)初始化堆棧指針SP,給單片機定義一個合適大小的堆棧空間。(2)初始化中斷源的觸發(fā)方式。(3)設(shè)置中斷的優(yōu)先級別(4)開放相應(yīng)的中斷源。四、中斷服務(wù)程序的設(shè)計第二節(jié)中斷系統(tǒng)串口中斷服務(wù)函數(shù)的實例:例:voidUart_Isr(void)interrupt4using1{if(RI==1){RI=0; //清串口接收終端標(biāo)志位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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度項目經(jīng)理安全施工與綠色環(huán)保一體化合同3篇
- 2025版人工智能技術(shù)遠(yuǎn)期許可合同4篇
- 2025年度餐飲行業(yè)供應(yīng)鏈金融服務(wù)合同協(xié)議3篇
- 2025年度旅游與文化創(chuàng)意產(chǎn)業(yè)融合發(fā)展合同范本4篇
- 2025年股權(quán)交易合同修訂范本及執(zhí)行細(xì)則2篇
- 二零二五版二手房買賣合同裝修補償協(xié)議范本3篇
- 2025年軌道交通站點私家停車車位租賃及接駁服務(wù)合同3篇
- 二零二五年版旅游客運車輛安全監(jiān)控合同規(guī)范4篇
- 2025年特殊印刷工藝紙張銷售合同模板3篇
- 二零二五年度生態(tài)旅游租賃合同范本3篇
- 課題申報書:GenAI賦能新質(zhì)人才培養(yǎng)的生成式學(xué)習(xí)設(shè)計研究
- 外配處方章管理制度
- 2025年四川長寧縣城投公司招聘筆試參考題庫含答案解析
- 駱駝祥子-(一)-劇本
- 《工程勘察設(shè)計收費標(biāo)準(zhǔn)》(2002年修訂本)
- 全國醫(yī)院數(shù)量統(tǒng)計
- 【MOOC】PLC技術(shù)及應(yīng)用(三菱FX系列)-職教MOOC建設(shè)委員會 中國大學(xué)慕課MOOC答案
- 2023七年級英語下冊 Unit 3 How do you get to school Section A 第1課時(1a-2e)教案 (新版)人教新目標(biāo)版
- 泌尿科主任述職報告
- 2024年醫(yī)美行業(yè)社媒平臺人群趨勢洞察報告-醫(yī)美行業(yè)觀察星秀傳媒
- 第六次全國幽門螺桿菌感染處理共識報告-
評論
0/150
提交評論