版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
單片機初步認識第1章單片機自誕生以來至今已經(jīng)有五十多年的歷史。從最初的4位微處理器發(fā)展到現(xiàn)在8位、16位和32位單片機。單片機的應(yīng)用范圍也逐漸擴大,幾乎涵蓋了人們?nèi)粘Ia(chǎn)生活當(dāng)中各個領(lǐng)域,從家用電器到通信設(shè)備,從交通工具、醫(yī)療儀器到商用支付和娛樂產(chǎn)品,隨處可見單片機的身影。單片機的應(yīng)用如此之廣,我們應(yīng)該如何學(xué)習(xí)了解它呢?本章將從單片機發(fā)展歷史、內(nèi)部組成和工作原理,以及存儲器的結(jié)構(gòu)、單片機引腳、時鐘和復(fù)位電路進行介紹,讓大家對單片機有一個初步的認識。引言目錄單片機概述1單片機的內(nèi)部結(jié)構(gòu)2本章小結(jié)4單片機的引腳及其功能3本章習(xí)題5行業(yè)PPT模板/hangye/1.1單片機概述1.1.1單片機簡介單片微型計算機(SingleChipMicrocomputer,SCM)簡稱單片機,也叫微控制器(MicroControllerUnit,MCU),它不是一臺機器,而是一塊集成電路芯片。它是采用超大規(guī)模集成電路制造工藝,把中央處理器(CPU)、隨機存儲器(RAM)、只讀存儲器(ROM)、中斷系統(tǒng)、定時/計數(shù)器、通信接口和普通I/O口等集成到一塊硅片(晶體芯片)上構(gòu)成的一個微型的、完整的計算機系統(tǒng)。與計算機相比,單片機只缺少了鍵盤、鼠標等I/O設(shè)備。經(jīng)典51AVRPICSTM32STCTIMSP4301.1.1單片機簡介單片機的特點(1)高集成度,體積小,高可靠性。(2)控制功能強。(3)低電壓,低功耗,便于生產(chǎn)便攜式產(chǎn)品。(4)易擴展。(5)高性價比。單片機應(yīng)用領(lǐng)域:廣泛應(yīng)用于工業(yè)控制、儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、汽車電子、工業(yè)機器人、電子玩具等領(lǐng)域1.1.2單片機的發(fā)展歷史單片機的發(fā)展經(jīng)歷了探索、完善、MCU化(過渡)、百花齊放4個階段。1.芯片化探索階段(1976—1978年)20世紀70年代,美國仙童半導(dǎo)體公司首先推出了第一款8位單片機F-8;隨后,Intel公司推出了影響面更大、應(yīng)用更廣的MCS-48系列單片機。MCS-48系列單片機的推出標志著在工業(yè)控制領(lǐng)域,進入智能化嵌入式應(yīng)用的芯片形態(tài)計算機的探索階段。這個階段的單片機的特點是片內(nèi)集成有8位的CPU,1KB或2KB的ROM,64B或128B的RAM;只有并行接口,無串行接口;有1個8位的定時/計數(shù)器,有2個中斷源;片外尋址范圍為4KB,芯片引腳為40個。1.1.2單片機的發(fā)展歷史2.結(jié)構(gòu)體系的完善階段(1978—1982年)在MCS-48系列單片機探索成功的基礎(chǔ)上Intel公司很快推出了完善的、典型的MCS-5l系列單片機。MCS-51系列單片機的推出標志著SCM體系結(jié)構(gòu)的完善,成為SCM的經(jīng)典體系結(jié)構(gòu)。MCS-51系列單片機的特點是片內(nèi)包括8位的CPU,4KB或8KB的ROM,128B或256B的RAM,4個8位的并行口、1個全雙工串口,2個或3個16位的定時/計數(shù)器,5~7個中斷源;片外尋址范圍可達64KB,芯片引腳為40個。代表產(chǎn)品有英特爾公司的MCS-51系列,Motorola公司的MC6805系列,TI公司的TMS7000系列,Zilog公司的Z8系列等。1.1.1單片機簡介3.從SCM向MCU過渡的階段(1982—1990年)1982年,Intel公司推出了16位的MCS-96單片機,將一些用于測控系統(tǒng)的模數(shù)轉(zhuǎn)換器(ADC)、程序運行監(jiān)視器(WDT)、脈寬調(diào)制器(PWM)、高速I/O口納入片中。與此同時,Intel公司將MCS-51系列單片機的內(nèi)核結(jié)構(gòu)開放,允許其他公司采用此內(nèi)核結(jié)構(gòu)進行單片機的設(shè)計,這些單片機統(tǒng)稱為8051單片機(之后由于CMOS工藝的改進,稱為80C51)。隨著單片機內(nèi)、外圍功能電路的增強,強化了智能控制器特征,MCU就成為單片機較為準確的表達名詞。1.1.1單片機簡介4.MCU的百花齊放階段(1990—至今)1990年,Intel公司推出了i960系列的32位單片機,引起計算機界的轟動,成為單片機發(fā)展史上又一個重要的里程碑。2000年,Cygnal公司推出了C8051F系列單片機,采用單周期指令運行方式,其單周期指令的運行速度相比于8051提高了12倍。C8051F采用與MCS-51完全兼容的CIP51內(nèi)核,將模擬和數(shù)字電路混合集成設(shè)計,包含ADC、DAC電路,成為最早的SoC(SystemonChip,片上系統(tǒng))的典型代表。C8051F的推出也標志著單片機邁進了SoC時代。單片機發(fā)展到這一階段,表明其已成為工業(yè)控制領(lǐng)域普遍采用的智能化控制工具,小到玩具,大到車載、艦船電子系統(tǒng),遍及計量測試、工業(yè)過程控制、機械電子、金融電子、商用電子、辦公自動化、工業(yè)機器人、軍事和航空航天等領(lǐng)域。1.1.3單片機的發(fā)展趨勢1.CMOS化CMOS電路的特點是低功耗、高密度、低速度、低價格。2.低功耗單片機的電流已達微安級,甚至在1μA以下,如STM8L101系列單片機的最小工作電流為0.3μA。3.低電壓幾乎所有的單片機都有WAIT、STOP等省電運行方式,允許使用的電壓范圍越來越大,低電壓供電的單片機電源下限已可達1V以下,如TMS430L092的工作電壓位0.9~1.5V(工作頻率為1MHz時)。4.低噪聲與高可靠性增強單片機的抗電磁干擾能力,使產(chǎn)品能適應(yīng)惡劣的工作環(huán)境,滿足電磁兼容性方面更高標準的要求。5.大容量目前,單片機內(nèi)的ROM最大可達512KB,RAM最大可達8KB。1.1.3單片機的發(fā)展趨勢6.高性能主要是改進CPU的性能,提高指令運算速度和系統(tǒng)控制的可靠性?,F(xiàn)在,指令運算速度最高已達100MIPS(MillionInstructionPerSeconds,兆指令每秒),并加強了位處理功能、中斷和定時控制功能。這類單片機的運算速度比標準的單片機高出10倍以上。7.外圍電路內(nèi)裝隨著單片機集成度的不斷提高,有可能把眾多的外圍功能部件集成在片內(nèi)。除了一般必須具有的CPU、ROM、RAM、定時/計數(shù)器等,片內(nèi)集成的部件還有ADC、DMA控制器、以太網(wǎng)控制器等。8.串行擴展技術(shù)在很長一段時間里,通用型單片機通過三總線結(jié)構(gòu)擴展外圍器件成為單片機應(yīng)用的主流結(jié)構(gòu)。I2C、SPI、USB、CAN等串行總線的引入,可以使單片機的引腳設(shè)計得更少,單片機系統(tǒng)結(jié)構(gòu)更加簡化及規(guī)范化。9.指令集開源隨著開源技術(shù)的不斷發(fā)展,CPU的內(nèi)核指令集也逐漸走向開源化,比較知名的就是RISC-V。它基于精簡指令集計算原理建立了開放指令集架構(gòu)(ISA),V表示第五代,由美國加利福尼亞大學(xué)伯克利分校于2010年開始啟動。RISC-V是完全開源的,它采用BSD(BerkeleySoftwareDistribution)開源協(xié)議,任何公司都可以采用該結(jié)構(gòu)進行設(shè)計。1.1.4主流的單片機產(chǎn)品1.AT89S與AVR單片機Atmel公司生產(chǎn)的具有FlashROM的增強型51系列單片機目前在市場上仍然十分流行,其中AT89S系列十分活躍,AT89S系列是8位Flash單片機,與8051系列單片機兼容,采用靜態(tài)時鐘模式。AT90系列單片機是Atmel在20世紀90年代推出的單片機,是增強精簡指令集(RISC)結(jié)構(gòu)、全靜態(tài)工作方式、內(nèi)載在線可編程Flash的單片機,也叫AVR單片機,與PIC類似,其顯著的特點為高性能、高速度、低功耗。2.PIC單片機MicroChip單片機的主要產(chǎn)品是PIC16F系列、18F系列的8位單片機,其突出的特點是體積小、功耗低、精簡指令集(RISC)、運行速度高,抗干擾性好、可靠性高、有較強的模擬接口、代碼保密性好、價格低、大部分芯片有其兼容的Flash程序存儲器,適用于用量大、價格敏感的產(chǎn)品。3.STC單片機STC單片機是深圳市宏晶科技有限公司設(shè)計的51內(nèi)核單片機,目前在國內(nèi)8位單片機市場的占有率很高。STC單片機指令為復(fù)雜指令集,其優(yōu)點是加密性強,很難解密或破解,超強抗干擾能力,超低功耗,價格低,適用各種領(lǐng)域的設(shè)備控制。由于它的下載程序簡單,在學(xué)校的教學(xué)中使用非常廣泛,基本上取代了Atmel公司的AT89/90系列單片機。1.1.4主流的單片機產(chǎn)品4.恩智浦單片機恩智浦單片機有兩個系列,一個是原飛利浦的51LPC系列,它是基于80C51內(nèi)核的單片機,嵌入了掉電檢測、模擬及片內(nèi)RC振蕩器等功能,使51LPC在高集成度、低成本、低功耗的應(yīng)用設(shè)計中可以滿足多方面的性能要求。另一個系列是飛思卡爾單片機,于2015年并入恩智浦。飛思卡爾單片機源于摩托羅拉半導(dǎo)體,主要應(yīng)用在汽車、網(wǎng)絡(luò)、工業(yè)、消費電子領(lǐng)域,尤其在汽車電子領(lǐng)域占有較大的市場份額。單片機從8位到32位都有。5.德州儀器單片機德州儀器提供了TMS370和MSP430兩大系列通用單片機。TMS370系列單片機是8位CMOS單片機,具有多種存儲模式、多種外圍接口模式,適用于復(fù)雜的實時控制場合;MSP430系列單片機是一種超低功耗、功能集成度較高的16位單片機,特別適用于要求低功耗的場合。6.STM單片機STM單片機是意法半導(dǎo)體推出的系列單片機,擁有眾多品種,從穩(wěn)健的低功耗8位單片機STM8系列到基于各種ARMCortex-M0和M0+、Cortex-M3、Cortex-M4、Cortex-M7內(nèi)核的32位閃存微控制器STM32系列,為嵌入式產(chǎn)品開發(fā)人員提供了豐富的MCU選擇資源。1.1.4主流的單片機產(chǎn)品7.英飛凌單片機英飛凌的前身是西門子集團的半導(dǎo)體部門。英飛凌8位單片機能實現(xiàn)高性能的電機驅(qū)動控制,在嚴酷環(huán)境下(高溫、EMI、振動)具有極高的可靠性。英飛凌8位單片機主要有XC800系列、XC886系列、XC888系列、XC82x系列、XC83x系列等。英飛凌的MCU用在汽車、工業(yè)類上面的居多,消費類的較少。8.瑞薩單片機恩智浦單片機有兩個系列,一個是原飛利浦的51LPC系列,它是基于80C51內(nèi)核的單片機,嵌入了掉電檢測、模擬及片內(nèi)RC振蕩器等功能,使51LPC在高集成度、低成本、低功耗的應(yīng)用設(shè)計中可以滿足多方面的性能要求。另一個系列是飛思卡爾單片機,于2015年并入恩智浦。飛思卡爾單片機源于摩托羅拉半導(dǎo)體,主要應(yīng)用在汽車、網(wǎng)絡(luò)、工業(yè)、消費電子領(lǐng)域,尤其在汽車電子領(lǐng)域占有較大的市場份額。單片機從8位到32位都有。9.其他國內(nèi)的單片機國內(nèi)的8位單片機多數(shù)是采用MCS-51內(nèi)核設(shè)計的,部分采用RISC結(jié)構(gòu)。設(shè)計廠家眾多,如我國臺灣地區(qū)的合泰半導(dǎo)體(Holtek)、新唐科技(Nuvoton)、義隆電子(Emc)、松翰科技(Sonix)、凌陽科技(Sunplus)等,我國大陸地區(qū)的中穎電子、兆易創(chuàng)新、華潤微電子、沁恒微電子、樂鑫科技、芯??萍?、華大半導(dǎo)體等。1.2單片機的內(nèi)部結(jié)構(gòu)1.2.1單片機內(nèi)部組成MCS-51單片機由CPU(進行運算、控制)、RAM(數(shù)據(jù)存儲器)、ROM(程序存儲器)、I/O口(串口、并口)、定時/計數(shù)器、內(nèi)部總線和中斷系統(tǒng)等組成。組成框圖如下所示。1.2.1單片機內(nèi)部組成
8051單片機的內(nèi)部資源包括:(1)一個8位CPU。(2)128Byte(字節(jié),簡寫B(tài))內(nèi)部RAM數(shù)據(jù)存儲器,21個專用寄存器。(3)4KB內(nèi)部掩膜ROM程序存儲器。(4)2個16位可編程定時器/計數(shù)器。(5)32個(4×8位)雙向可獨立尋址的I/O口。(6)1個全雙工UART(異步串行通信口)。(7)5個中斷源、兩級中斷優(yōu)先級的中斷控制器。(8)時鐘電路,外接晶振和電容可產(chǎn)生3.5MHz~12MHz的時鐘頻率。(9)可尋址64KB外部數(shù)據(jù)存儲器和64KB外部程序存儲器空間的控制電路。(10)布爾代數(shù)處理器,具有位尋址能力。單片機內(nèi)部結(jié)構(gòu)細化框圖8051單片機的內(nèi)部結(jié)構(gòu)圖CPU1.中央處理器(CPU)CPU是單片機的核心部件。它由運算器和控制器等部件組成。(1)運算器運算器由8位算術(shù)邏輯運算單元ALU(ArithmeticLogicUnit)、8位累加器A(Accumulator)、8位寄存器B、程序狀態(tài)字寄存器PSW(ProgramStatusWord)、8位暫存寄存器TMP1和TMP2等組成。(2)控制器接受來自程序存儲器的指令,并對指令進行譯碼,發(fā)出指令功能所需的各種控制命令,控制各部分協(xié)調(diào)工作??刂破靼ǎ撼绦蛴嫈?shù)器PC(ProgramCounter)、指令寄存器IR(InstructionRegister)、指令譯碼器ID(InstructionDecoder)、堆棧指針SP、數(shù)據(jù)指針DPTR、定時控制邏輯和振蕩器OSC等電路。指令執(zhí)行過程:CPU根據(jù)PC中的地址從程序存儲器(ROM)中讀取指令代碼送入IR,經(jīng)ID譯碼后,定時和控制邏輯電路在OSC的配合下對譯碼后的信號進行分時,發(fā)出相應(yīng)的控制信號,完成指定的操作。1.2.1單片機內(nèi)部組成2.片內(nèi)數(shù)據(jù)存儲器片內(nèi)數(shù)據(jù)存儲器包括片內(nèi)RAM和特殊功能寄存器SFR。片內(nèi)RAM為單片機內(nèi)部數(shù)據(jù)存儲器,主要用于存儲運算的中間結(jié)果;SFR主要用于控制、管理和存儲單片機的工作方式、狀態(tài)結(jié)果。3.片內(nèi)程序存儲器片內(nèi)程序存儲器(ROM)為單片機內(nèi)部程序存儲器。主要用于存放程序、原始數(shù)據(jù)和表格等信息。4.并行I/O口P0~P3口是4個8位并行I/O口,單片機在與外部存儲器及I/O端口設(shè)備交換信息時,必須由P0~P3口完成。這些端口既可作為輸入,又可作為輸出。但通常P0口作為8位數(shù)據(jù)總線/低8位地址總線復(fù)用口,P2口常用作高8位地址總線,而P3口的各個管腳多以第二功能輸入或第二功能輸出形式出現(xiàn)。因此,在一般情況下P1口的8個管腳作為通用I/O口。1.2.1單片機內(nèi)部組成5.定時器/計數(shù)器定時器/計數(shù)器用于定時和對外部事件進行計數(shù),以實現(xiàn)定時或計數(shù)功能。當(dāng)它對具有固定時間間隔的單片機內(nèi)部時鐘電路提供的機器周期信號進行計數(shù)時,它是定時器;當(dāng)它對外部事件數(shù)字化處理后所產(chǎn)生的脈沖進行計數(shù)時,它是計數(shù)器。6.中斷系統(tǒng)8051單片機有5個中斷源,即2個外部中斷源、2個定時器/計數(shù)器中斷源和1個串行中斷源,全部中斷源可設(shè)定為高低2個優(yōu)先級。中斷處理系統(tǒng)靈活、方便,使單片機處理問題的靈活性和實時性大大提高。7.串行口8051單片機有1個全雙工異步通信的串行口,用以實現(xiàn)單片機和其他設(shè)備之間的串行數(shù)據(jù)傳送,既可以異步通信,也可同步移位傳送數(shù)據(jù)。8.時鐘電路CPU執(zhí)行指令的一系列動作都是在時序電路的控制下一拍一拍有序進行的,時鐘電路用于產(chǎn)生單片機中最基本的時間單位。8051內(nèi)置時鐘處理電路,可外接3.5MHz~12MHz的晶振。1.2.1單片機內(nèi)部組成8051單片機把數(shù)據(jù)存儲器和程序存儲器嚴格區(qū)分開,各自占用不同的存儲空間。程序存儲器和數(shù)據(jù)存儲器的結(jié)構(gòu)分別如圖所示。從物理地址空間看,8051單片機有4個存儲器地址空間,即片內(nèi)程序存儲器和片外程序存儲器,以及片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器。從邏輯上劃分,8051單片機有3個存儲器地址空間,即內(nèi)外統(tǒng)一編址的64KB的程序存儲器地址空間、片內(nèi)256B的數(shù)據(jù)存儲器地址空間、片外數(shù)據(jù)存儲器64KB地址空間。1.2.2存儲器結(jié)構(gòu)1.2.2存儲器結(jié)構(gòu)1.程序存儲器標準的8051單片機程序存儲器地址范圍是0000H~FFFFH,共64KB的空間,用指令MOVC進行訪問。ROM的0000H單元是特殊的地址單元,它是系統(tǒng)程序的起始地址。用戶程序的第一條指令應(yīng)放置在0000H單元中。低4KB程序可存儲在片內(nèi)ROM中,也可存儲在片外ROM中。片外ROM的低4KB地址與片內(nèi)ROM重疊,執(zhí)行選擇由/EA引腳來控制,如所示。EA=0(低電平),從片外ROM中的0000H單元開始執(zhí)行程序;EA=1(高電平),從片內(nèi)ROM的0000H單元開始執(zhí)行程序,當(dāng)(PC)>0FFFH(4KB)時,自動轉(zhuǎn)到片外ROM中執(zhí)行程序。1.2.2存儲器結(jié)構(gòu)除0000H單元外,其他的0003H、000BH、0013H、001BH和0023H特殊單元分別對應(yīng)5個中斷源的中斷子程序的入口地址。0003H~000AH:外部中斷0(INT0)的中斷地址區(qū)。000BH~0012H:定時/計數(shù)器0(T0)的中斷地址區(qū)。0013H~001AH:外部中斷1(INT1)的中斷地址區(qū)。001BH~0022H:定時/計數(shù)器1(T1)的中斷地址區(qū)。0023H~002AH:串口(TI,RI)中斷地址區(qū)。1.2.2存儲器結(jié)構(gòu)2.?dāng)?shù)據(jù)存儲器(1)片內(nèi)數(shù)據(jù)存儲器片內(nèi)數(shù)據(jù)存儲器的大小為256B,地址范圍是00H~FFH;用指令MOV進行訪問。它又分為兩部分:低128B(00H~7FH)為真正的片內(nèi)數(shù)據(jù)存儲器RAM區(qū),高128B(80H~FFH)為SFR區(qū)。低128B包括3部分:00H~1FH,共32B,由4個通用工作寄存器區(qū)組成;20H~2FH為位尋址區(qū),包含128個可尋址位;30H~7FH為數(shù)據(jù)緩沖區(qū),如圖所示。1.2.2存儲器結(jié)構(gòu)①工作寄存器區(qū)00H~1FH是工作寄存器區(qū),按地址由低到高分為4組,即0組、1組、2組、3組,具體分布如表所示。每組有8個8位寄存器,地址由低到高依次命名為R0~R7,即R0的地址為00H、R1地址為01H、依次類推,R7的地址為07H。當(dāng)前工作寄存器只能選用一個組,由PSW中的RS0和RS1位確定。復(fù)位初始化值RS0=0、RS1=0,即使用的是0組,為默認工作寄存器組地址范圍工作寄存器組別18H~1FH3組(R0~R7)工作寄存器組10H~17H2組(R0~R7)工作寄存器組08H~0FH1組(R0~R7)工作寄存器組00H~07H0組(R0~R7),默認工作寄存器組1.2.2存儲器結(jié)構(gòu)②位尋址區(qū)工作寄存器區(qū)上面的16個單元(20H~2FH)構(gòu)成固定的位尋址區(qū)。每個單元有8位,16個單元共128位,每位都有一個位地址,如表所示。該區(qū)域有位操作指令,可進行位尋址、位操作。若程序中沒有位操作,則該區(qū)的地址單元可作它用。字節(jié)地址(地址單元)位地址MSBLSBD7D6D5D4D3D2D1D02FH7F7E7D7C7B7A79782EH77767574737271702DH6F6E6D6C6B6A69682CH67666564636261602BH5F5E5D5C5B5A59582AH575655545352515029H4F4E4D4C4B4A494828H474645444342414027H3F3E3D3C3B3A393826H373635343332313025H2F2E2D2C2B2A292824H272625242322212023H1F1E1D1C1B1A191822H171615141312111021H0F0E0D0C0B0A090820H07060504030201001.2.2存儲器結(jié)構(gòu)③數(shù)據(jù)緩沖區(qū)在片內(nèi)數(shù)據(jù)存儲器RAM中,30~7FH單元一般可作數(shù)據(jù)緩沖區(qū)用,用于存放各種數(shù)據(jù)和中間結(jié)果。但要注意:沒有使用的工作寄存器區(qū)中的地址單元和位尋址區(qū)中的地址單元都可用作數(shù)據(jù)緩沖區(qū)用。④堆棧區(qū)堆棧區(qū)是在片內(nèi)數(shù)據(jù)存儲器RAM中開辟的一片特殊數(shù)據(jù)存儲區(qū),是CPU用于暫時存放數(shù)據(jù)的特殊“倉庫”。用堆棧指針指向堆棧棧頂?shù)刂?。堆棧的最低地址叫棧底。堆棧區(qū)的特殊性在于棧底可根據(jù)片內(nèi)數(shù)據(jù)存儲器的使用情況由指令設(shè)定,堆棧存取數(shù)據(jù)遵守“先進后出”的原則.復(fù)位后棧底為07H,即(SP)=07。(2)片外數(shù)據(jù)存儲器若片內(nèi)RAM不夠用,則可擴展片外數(shù)據(jù)存儲器RAM,最大范圍為0000H~FFFFH,共64KB。片外RAM有部分地址(00H~FFH)與內(nèi)RAM是重疊的。在單片機的匯編語言中,片內(nèi)、外RAM以不同的指令操作碼進行區(qū)分,即片內(nèi)RAM傳送指令用MOV表示,片外RAM傳送指令用MOVX表示。1.2.3SFR(特殊功能寄存器)SFR也稱專用寄存器,用來存放相應(yīng)功能部件的控制命令、狀態(tài)或數(shù)據(jù)的區(qū)域。8051單片機內(nèi)的端口鎖存器、程序狀態(tài)字PSW、定時/計數(shù)器、累加器、堆棧指針、數(shù)據(jù)指針,以及其他控制寄存器等都是SFR。它們離散地分布在片內(nèi)RAM的高128B(80H~FFH)中,共21個(字節(jié))。SFR的分布情況如表所示。其中有些既可字節(jié)尋址又可位尋址,有些只可字節(jié)尋址。凡是地址能被8整除(地址末位為0或8)的SFR既可字節(jié)尋址又可位尋址;否則,只字節(jié)尋址??晌粚ぶ返腟FR的每一位都有位地址,有的還有位名稱。對累加器ACC和PSW,還可對其位編號進行操作。例如,ACC.7是位編號,代表累加器ACC的最高位,其位地址是E7H;PSW.0是位編號,代表PSW的最低位,其位地址是D0H,位定義名為P,編程時三者都可使用。SFR符號名稱MSB位地址與位名稱LSB字節(jié)地址D7D6D5D4D3D2D1D0P0:P0口P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.080H87H86H85H84H83H82H81H80HSP:堆棧指針
81HDPL:數(shù)據(jù)指針低字節(jié)
82HDPH:數(shù)據(jù)指針低字節(jié)
83HPCON:電源控制SMOD∕∕∕GF1GF0PDIDL87HTCON:定時/計數(shù)器控制TF1TR1TF0TR0IE1IT1IE0IT088H8FH8EH8DH8CH8BH8AH89H88HTMOD:定時/計數(shù)器方式控制GATEM1M0GATEM1M089HTL0:定時/計數(shù)器0低字節(jié)
8AHTL1:定時/計數(shù)器1低字節(jié)
8BHTH0:定時/計數(shù)器0高字節(jié)
8CHTH1:定時/計數(shù)器1高字節(jié)
8DH1.2.3SFR(特殊功能寄存器)SFR符號名稱MSB位地址與位名稱LSB字節(jié)地址D7D6D5D4D3D2D1D0P1:P1口P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.090H97H96H95H94H93H92H91H90HSCON:串口控制SM0SM1SM2RENTB8RB8TIRI98H9FH9EH9DH9CH9BH9AH99H98HSBUF:串口數(shù)據(jù)緩沖器
99HP2:口P2P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0A0HA7HA6HA5HA4HA3HA2HA1HA0HIE:中斷允許控制器EA∕ET2ESET1EX1ET0EX0A8HAFHAEHADHACHABHAAHA9HA8HP3:P3口P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0B0HB7HB6HB5HB4HB3HB2HB1HB0HIP:中斷優(yōu)先級控制∕∕PT2PSPT1PX1PT0PX0B8H∕∕BDHBCHBBHBAHB9HB8HPSW:程序狀態(tài)字CyACF0RS1RS0OVF1PD0HD7HD6HD5HD4HD3HD2HD1HD0HACC:累加器ACC.7ACC.6ACC.5ACC.4ACC.3ACC.2ACC.1ACC.0E0HE7HE6HE5HE4HE3HE2HE1HE0HB:寄存器B.7B.6B.5B.4B.3B.2B.1B.0F0HF7HF6HF5HF4HF3HF2HF1HF0HMCS-51單片機內(nèi)部寄存器的地址并不是連續(xù)編排的,而是中間留有一部分空余的地址未使用。這主要是為了確??晌粚ぶ返腟FR的字節(jié)地址與其最低位地址保持一致,如P0口的字節(jié)地址為80H,其最低位P0.0的地址也是80H。這樣,位地址的編排就規(guī)律了很多,也便于人們查找和記憶。1.2.3SFR(特殊功能寄存器)主要的SFR介紹(1)累加器ACC(Accumulator):助記符(意義:幫助記憶的符號)為A,是一個最為常用的SFR。許多指令的操作數(shù)都取自它,許多運算的結(jié)果也存放在其中。(2)B寄存器(BRegister):在乘除法指令中使,也可作為一般寄存器使用。(3)PSW:8位的標志寄存器,用來存放指令執(zhí)行后的有關(guān)狀態(tài),其各位定義如下表所示。RS1RS0工作寄存器的組號R0~R7地址00000H~07H01108H~0FH10210H~17H11318H~1FHPSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0CACF0RS1RS0OV-PRS1和RS0:工作寄存器組選擇位。如下表所示,它們用于設(shè)定當(dāng)前使用的工作寄存器的組號。復(fù)位后RS1和RS0初始化為0,即選擇的是0組,這時R0~R7的地址分別為1.2.3SFR(特殊功能寄存器)(4)堆棧指針(SP,StackPointer)堆棧是在片內(nèi)數(shù)據(jù)存儲器RAM中開辟的一片特殊數(shù)據(jù)存儲區(qū)。系統(tǒng)復(fù)位后,SP的初始值為07H,使得堆棧存放數(shù)據(jù)的地址由08H開始。由于08H~1FH單元分屬于工作寄存器區(qū)的組1~組3。若程序設(shè)計中這些組全要用到,則要把SP的值設(shè)置為1FH或更大的值。(5)數(shù)據(jù)指針(DPTR,DataPointer)。DPTR是一個16位的SFR,由兩個8位寄存器DPH(高8位)和DPL(低8位)組成。它既可作為一個16位寄存器DPTR來處理,又可作為兩個獨立的8位寄存器DPH和DPL來處理。DPTR主要用來存放16位地址。SFR數(shù)量較多,但他們總是和一些功能部件有關(guān)。各功能部件對應(yīng)的SFR如下:①CPU:ACC、B、PSW。②存儲器:SP、DPTR。③I/O口:P0、P1、P2、P3。④中斷系統(tǒng):IP、IE。⑤定時/計數(shù)器:TMOD、TCON、TH0、TL0、TH1、TL1。⑥串口:SCON、SBUF。⑦電源:PCON。1.3單片機的引腳及其功能8051單片機最常見的封裝是標準型DIP(雙列直插)40腳。凡封裝相同的51系列單片機,其引腳定義和功能均與8051基本兼容,使用時絕大部分器件可以互換。圖(a)、(b)所示分別為標準型DIP40腳封裝的邏輯功能圖與實際引腳排列圖。MCS-51單片機引腳的功能描述如表1-7所示。引腳分為端口線、電源線和控制線三類。1.3.1引腳功能1.3.1引腳功能1.電源線GND:接地引腳。VCC:正電源引腳,接+5V電源。2.I/O口線單片機共有4組I/O口,分別為P0~P3,每組有8個端口,因此,單片機共有32個I/O口,每個I/O口都可以單獨控制,其具體功能如表1-6所示。不同組的I/O口的用法稍有不同。P1口只可以作為普通I/O口;P0口既可以作為普通I/O口,又可以作為低8位地址線和數(shù)據(jù)線;P2口既可以作為普通I/O口,又可以作為高8位地址線;P3口身兼兩種功能,既可以作為普通I/O口,又具有外部中斷、外部脈沖計數(shù)、串口功能。1.3.1引腳功能3.控制線(1)RST/Vpd引腳。RST/Vpd引腳是復(fù)位信號/備用電源線引腳。當(dāng)8051單片機通電時,在RST引腳上出現(xiàn)24個時鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。(2)ALE/PROG引腳。ALE/PROG引腳是地址鎖存允許/編程引腳。當(dāng)訪問外部程序存儲器時,ALE引腳的輸出用于鎖存地址的低位字節(jié),以便P0口實現(xiàn)地址/數(shù)據(jù)復(fù)用。當(dāng)不訪問外部程序存儲器時,ALE引腳將輸出一個1/6時鐘頻率的正脈沖信號。其第二功能是對EPROM型芯片進行編程和校驗時,此引腳傳送52ms寬的負脈沖選通信號,PC的16位地址數(shù)據(jù)將出現(xiàn)在P0和P2口上,外部程序存儲器把指令碼放到P0口上,由CPU讀入并執(zhí)行。(3)EA/VPP引腳。是允許訪問片外程序存儲器/編程電源引腳。對于片內(nèi)無程序存儲器的MCS-51單片機(如8031),引腳必須接地;對于片內(nèi)有程序存儲器的MCS-51單片機(如8051),引腳必須接高電平。其第二功能是片內(nèi)EPROM編程/校驗時的電源線,在編程時,VPP引腳需要加上21V的編程電壓。(4)PSEN引腳。在執(zhí)行訪問片外ROM的指令MOVC時,8051單片機自動在PSEN引腳產(chǎn)生一個負脈沖,用于對片外ROM的選通。在其他情況下,該引腳均為高電平封鎖狀態(tài)。1.3.2時鐘和復(fù)位1.時鐘單片機作為一個微型計算機,由數(shù)字電路組成,其內(nèi)部各個模塊通過總線連接,必須有時鐘脈沖才能工作。單片機執(zhí)行指令的過程可分為取指令、分析指令和執(zhí)行指令3步,每步又由許多微操作組成,這些微操作必須在一個統(tǒng)一時鐘控制下才能被正確地順序執(zhí)行。(1)時鐘方式。單片機內(nèi)部有振蕩電路,XTAL1引腳為片內(nèi)振蕩電路的輸入端,XTAL2引腳為片內(nèi)振蕩電路的輸出端。8051單片機的時鐘有兩種方式,一種是片內(nèi)時鐘振蕩方式(內(nèi)部時鐘方式),但需要在XTAL1和XTAL2引腳外接石英晶體(頻率為3.5~12MHz)與振蕩電容,振蕩電容的容量一般取10~30pF,典型值為30pF,如圖(a)所示;另外一種是外部時鐘方式,即將XTAL1引腳接地,外部時鐘信號從XTAL2引腳輸入,如圖(b)所示。1.3.2時鐘和復(fù)位(2)單片機內(nèi)部的時間基準。振蕩周期:為單片機提供時鐘信號的振蕩源的周期,也稱為時鐘周期或節(jié)拍(用P)表示。狀態(tài)周期:單片機執(zhí)行指令時從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài)所需的時間。一個狀態(tài)周期由兩個時鐘周期組成,又稱為由兩個節(jié)拍組成,每個節(jié)拍需要一個時鐘周期。即一個狀態(tài)周期有兩個節(jié)拍,前半周期相應(yīng)的節(jié)拍定義為P1,后半周期對應(yīng)的節(jié)拍定義為P2。單片機就是按照這樣的節(jié)拍有節(jié)奏地完成取指令、分析指令、執(zhí)行指令等一系列工作的。機器周期:單片機完成一項基本操作所需的時間。單片機在每個機器周期內(nèi)完成一項基本操作,如取指令、讀或?qū)憯?shù)據(jù)等。1個機器周期包括12個時鐘周期,分為6個狀態(tài),即S1~S6。每個狀態(tài)周期完成一項微操作,直至指令執(zhí)行完成。指令周期:CPU執(zhí)行一條指令所需的時間(一般用機器周期表示)。單片機有單機器、雙機器周期和四機器周期指令。四機器周期指令只有乘法和除法兩條指令,其余均為單機器周期或雙機器周期指令。1.3.2時鐘和復(fù)位各個周期時間的計算:當(dāng)單片機外接晶振為12MHz時,即fosc=12MHz,則各個周期的計數(shù)如下:振蕩周期:Tosc=1/fosc=1/12μs狀態(tài)周期:Ts=2×Tosc=1/6μs機器周期:T=12×Tosc=1μs對應(yīng)的單周期指令、雙周期指令和四周期指令的指令周期分別為1μs、2μs、4μs。1.3.2時鐘和復(fù)位
2.復(fù)位復(fù)位是令單片機初始化的操作,其主要功能是初始化單片機的工作狀態(tài)。單片機在啟動時需要復(fù)位。例如,把PC的值初始化為0000H,即(PC)=0000H。這樣,單片機在復(fù)位后就從程序存儲器ROM的0000H單元開始執(zhí)行程序。另外,當(dāng)程序運行出錯或操作錯誤而使系統(tǒng)處于死鎖狀態(tài)時,也需要復(fù)位使單片機重新開始工作。除PC初始化外,復(fù)位操作還對其他屬于片內(nèi)數(shù)據(jù)存儲器RAM的SFR塊中的SFR有影響,如表所示。寄存器復(fù)位時的內(nèi)容寄存器復(fù)位時的內(nèi)容ACC00HTL000HB00HTH000HPSW00HTL100HSP07HTH100HDPTR0000HSCON00HP0~P3FFHSBUF不定IP×××00000BIE0××00000BTMOD00HPCON0×××0000BTCON00H——1.3.2時鐘和復(fù)位3.控制線(1)復(fù)位條件。由于RST引腳是復(fù)位信號的輸入端所以要實現(xiàn)復(fù)位操作,必須使RST引腳上至少保持2個機器周期的高電平,并從高電平變?yōu)榈碗娖?,完成?fù)位。(2)復(fù)位電路。復(fù)位方式有上電自動復(fù)位、按鍵復(fù)位等,如圖所示。上電自動復(fù)位電路是通過外部復(fù)位電容充電來實現(xiàn)的。上電瞬間,RST引腳的電位與VCC相同,隨著充電電流的減小,此引腳電位將逐漸下降,如圖(a)所示。按鍵復(fù)位是通過按鍵使復(fù)位引腳經(jīng)電阻R(200Ω左右)與Vcc電源接通來實現(xiàn)的,如圖(b)所示。在按下復(fù)位按鍵時,使RST引腳為高電平;當(dāng)復(fù)位按鍵被松開后,RST引腳逐漸降為低電平,復(fù)位結(jié)束。(a)(b)1.4本章小結(jié)本章主要介紹了單片機的發(fā)展歷史及其內(nèi)部組成和工作原理,以及存儲器的結(jié)構(gòu)與單片機外部引腳即時鐘和復(fù)位電路。本章的重點是單片機存儲器的結(jié)構(gòu),包含程序存儲器和數(shù)據(jù)存儲器,而數(shù)據(jù)存儲器又是本章的難點,特別是各個數(shù)據(jù)存儲區(qū)的地址分布范圍,以及它們的功能。此外,理解單片機的各個時鐘周期的定義、區(qū)別與聯(lián)系對于學(xué)習(xí)單片機的工作過程,了解其工作原理也很重要。1.5本章習(xí)題1.什么是單片機?它的主要特點有哪些?2.單片機有哪幾個發(fā)展階段?3.MCS-51系列單片機在片內(nèi)集成了哪些主要邏輯部件?各個邏輯部件的主要功能是什么?4.MCS-51系列單片機的引腳中有多少個I/O?它們與單片機對外的地址總線和數(shù)據(jù)總線之間有什么關(guān)系?其地址總線和數(shù)據(jù)總線各有多少位?對外可尋址的地址空間有多大?5.8051單片機的控制總線信號有哪些?各有何作用?6.8051單片機有多少個SFR?SFR中的哪些寄存器可位尋址?7.8051單片機的P0~P3口在結(jié)構(gòu)上有何不同?在使用上有何特點?8.8051片內(nèi)數(shù)據(jù)存儲器RAM有多少字節(jié)?存儲空間地址范圍為多少?9.8051片內(nèi)RAM低128單元劃分為哪3個主要部分?各部分的主要功能是什么?10.開機復(fù)位后,CPU使用的是哪組工作寄存器?它們的地址是什么?CPU如何確定和改變當(dāng)前工作寄存器組?11.MCS-51單片機的時鐘周期,機器周期,指令周期是如何定義的?當(dāng)主頻為12MHz時,一個機器周期是多長時間?執(zhí)行一條最長的指令需要多長時間?12.8051單片機復(fù)位后,各寄存器的初始狀態(tài)如何?復(fù)位方法有幾種?問答題部分單片機開發(fā)語言及工具的使用第2章單片機開發(fā)人員首要面臨的選擇是采用什么編程語言及工具進行開發(fā)。就開發(fā)語言而言,主要有兩種類型:匯編語言和高級語言。目前,匯編語言由于編程復(fù)雜,難以掌握,維護起來非常困難,已經(jīng)很少使用,更多的是采用高級語言來編程。目前,針對單片機開發(fā),使用最廣泛的高級語言就是C語言,使用本書應(yīng)具備C語言編程基礎(chǔ)知識。本章介紹單片機C51語言的使用方法,同時對編程開發(fā)工具軟件Keil和單片機運行仿真軟件Proteus的使用方法進行介紹。引言目錄單片機C51語言與標準C語言的區(qū)別1Keil軟件4C51程序?qū)嵗?本章小結(jié)5Proteus軟件3本章習(xí)題6行業(yè)PPT模板/hangye/2.1單片機C51語言與標準C語言的區(qū)別2.1單片機C51語言與標準C語言的區(qū)別單片機C51語言是8051單片機應(yīng)用開發(fā)中最常使用的程序設(shè)計語言,它在標準C語言的基礎(chǔ)上,針對8051內(nèi)核硬件的特點進行了擴展,能直接對8051單片機硬件進行操作,既有高級語言易讀、開發(fā)效率高的優(yōu)點,又有低級語言執(zhí)行效率高的優(yōu)點,已然成為最適合51單片機應(yīng)用開發(fā)的實用高級語言。C51語言在語法規(guī)范、程序結(jié)構(gòu)與設(shè)計方法上都與標準C語言基本相同,但在庫函數(shù)、數(shù)據(jù)類型、變量存儲模式等方面與標準C語言存在一些差別。2.1單片機C51語言與標準C語言的區(qū)別(1)庫函數(shù)有差異。標準C語言的庫函數(shù)是按通用微型計算機來定義的,C51語言的有些庫函數(shù)是按照8051單片機的特點來定義的。C51有豐富的可直接調(diào)用的庫函數(shù),靈活使用庫函數(shù)可使程序代碼簡單、結(jié)構(gòu)清晰,并且易于調(diào)試和維護。每個庫函數(shù)都在相應(yīng)的頭文件中給出了函數(shù)原型聲明,用戶如果需要使用庫函數(shù),就必須在源程序的開始處用預(yù)處理命令“#include”將有關(guān)的頭文件包含進來。(2)數(shù)據(jù)類型有區(qū)別。針對8051單片機的特點,C51語言在標準C語言的基礎(chǔ)上增加了4種數(shù)據(jù)類型,它們是bit、sfr、sfr16和sbit。(3)變量存儲模式不一樣。標準C語言最初是為通用計算機設(shè)計的,在通用計算機中,只有一個程序和數(shù)據(jù)統(tǒng)一尋址的內(nèi)存空間,而C51語言中的變量存儲模式與8051單片機的各種存儲器緊密相關(guān)。(4)數(shù)據(jù)存儲類型不同。8051單片機的存儲區(qū)可分為內(nèi)部數(shù)據(jù)存儲區(qū)、外部數(shù)據(jù)存儲區(qū)和程序存儲區(qū)。(5)標準C語言沒有處理單片機中斷的定義,而C51語言中有專門的中斷函數(shù)。2.1單片機C51語言與標準C語言的區(qū)別任何程序設(shè)計都離不開對于數(shù)據(jù)的處理,一個程序如果沒有數(shù)據(jù),它就無法工作。數(shù)據(jù)在計算機內(nèi)存中的存放情況由數(shù)據(jù)結(jié)構(gòu)決定,C語言的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型出現(xiàn)的,數(shù)據(jù)類型可分為基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型,復(fù)雜數(shù)據(jù)類型由基本數(shù)據(jù)類型構(gòu)造而成。C語言中的基本數(shù)據(jù)類型有char、int、short、long、float和double。對于C51編譯器,short與int相同,double與float相同。1.char(字符類型)char有signedchar和unsignedchar之分,默認為signedchar。char類型數(shù)據(jù)的長度均為1B,用于存放一個單字節(jié)數(shù)據(jù)。對于signedchar類型數(shù)據(jù),其字節(jié)中的最高位表示該數(shù)據(jù)的符號,“0”表示正數(shù),“1”表示負數(shù)(負數(shù)用補碼表示),所能表示的數(shù)值范圍是?128~127。unsignedchar類型數(shù)據(jù)是無符號字符數(shù)據(jù),其字節(jié)中的所有位均用來表示數(shù)據(jù)的數(shù)值,所能表示的數(shù)值范圍是0~255。2.1單片機C51語言與標準C語言的區(qū)別2.int(整型)int有signedint和unsignedint之分,默認為signedint。int類型數(shù)據(jù)的長度均為2B,用于存放一個雙字節(jié)數(shù)據(jù)。signedint類型數(shù)據(jù)是有符號整數(shù),字節(jié)中的最高位表示數(shù)據(jù)的符號,“0”表示正數(shù),“1”表示負數(shù),所能表示的數(shù)值范圍是?32768~32767。unsignedint類型數(shù)據(jù)是無符號整型,所能表示的數(shù)值范圍是0~65535。3.long(長整型)long有signedlong和unsignedlong之分,默認為signed。long類型數(shù)據(jù)的長度均為4B。signedlong類型數(shù)據(jù)是有符號的長整數(shù),字節(jié)中的最高位表示數(shù)據(jù)的符號,“0”表示正數(shù),“1”表示負數(shù),所能表示的數(shù)值范圍是?2147483648~2147483647。unsignedlong類型數(shù)據(jù)是無符號整數(shù),所示表示的數(shù)值范圍是0~4294967295。4.float(浮點型)float類型數(shù)據(jù)占4B,共32位,包含1位符號位、8位階碼(指數(shù)部分),以及23位尾數(shù)。它是符合IEEE754標準的單精度浮點型數(shù)據(jù),在十進制形式中有7位有效數(shù)字。2.1單片機C51語言與標準C語言的區(qū)別5.*(指針型)指針型數(shù)據(jù)不同于以上4種基本數(shù)據(jù)類型,它本身是一個變量,但在這個變量中存放的不是普通的數(shù)據(jù),而是指向另一個數(shù)據(jù)的地址。指針變量也要占據(jù)一定的內(nèi)存單元,在C51編譯器中,指針變量的長度一般為1~3B。指針變量也具有類型,其表示方法是在指針符號“*”的前面冠以數(shù)據(jù)類型符號。6.bit(位標量)bit是C51編譯器的一種擴充數(shù)據(jù)類型,利用它可定義一個位標量,但不能定義位指針,也不能定義數(shù)組。7.sfr(特殊功能寄存器)sfr也是C51編譯器的一種擴充數(shù)據(jù)類型,利用它可以訪問8051單片機的所有內(nèi)部SFR。sfr類型數(shù)據(jù)占用一個內(nèi)存單元,其取值范圍是0~255。2.1單片機C51語言與標準C語言的區(qū)別8.sfr16(16位特殊功能寄存器)sfr16類型數(shù)據(jù)占用兩個內(nèi)存單元,取值范圍是0~65535。9.sbit(特殊功能寄存器中可尋址位)sbit也是C51編譯器的一種擴充數(shù)據(jù)類型,利用它可以訪問8051單片機內(nèi)部數(shù)據(jù)存儲器RAM的SFR中的可尋址位。2.1單片機C51語言與標準C語言的區(qū)別下表列出了C51編譯器能夠識別的數(shù)據(jù)類型。2.1單片機C51語言與標準C語言的區(qū)別在C語言程序的表達式或變量賦值運算中,有時會出現(xiàn)運算對象的數(shù)據(jù)類型不一致的情況。C語言允許任何標準數(shù)據(jù)類型之間的隱式轉(zhuǎn)換。隱式轉(zhuǎn)換按以下優(yōu)先級別自動進行:bit→char→int→long→floatsigned→unsigned其中,箭頭方向僅表示數(shù)據(jù)類型級別的高低(轉(zhuǎn)換時由低向高進行),而不表示數(shù)據(jù)轉(zhuǎn)換時的順序。變量是一種在程序執(zhí)行過程中不斷變化的量。但是在使用一個變量之前,必須先對該變量進行定義,指出它的數(shù)據(jù)類型和存儲模式,以便編譯系統(tǒng)為它分配相應(yīng)的存儲單元。在C51編譯器中,對變量進行定義的格式如下:[存儲類型]數(shù)據(jù)類型[存儲器類型]變量名表;其中,“存儲類型”和“存儲器類型”是可選項。變量的存儲類型有4種:自動(auto)、外部(extern)、靜態(tài)(static)和寄存器(register)。在定義一個變量時,如果省略存儲類型選項,則該變量將為自動變量。2.1單片機C51語言與標準C語言的區(qū)別在定義一個變量時,除了需要說明其數(shù)據(jù)類型,C51編譯器還允許說明變量的存儲器類型。對于每個變量,C51編譯器可以準確地賦予其存儲器類型,從而可使之能夠在單片機系統(tǒng)內(nèi)準確地定位。下表列出了C51編譯器能夠識別的存儲器類型。2.1單片機C51語言與標準C語言的區(qū)別定義變量時如果省略了“存儲器類型”選項,則按編譯模式Small、Compact或Large所規(guī)定的默認存儲器類型確定變量的存儲區(qū)域。C51編譯器的3種儲存模式(默認的存儲器類型)對變量的影響如下。(1)Small:變量被定義在8051單片機的內(nèi)部RAM中,因此對這種變量的訪問速度最快。另外,所有的對象(包括堆棧)都必須嵌入內(nèi)部數(shù)據(jù)存儲器,而堆棧長度是很重要的,實際的堆棧長度取決于不同函數(shù)的嵌套深度。(2)Compact:所有變量被定義在分頁尋址的片外RAM中,每頁片外RAM的長度為256B。對變量的訪問是通過寄存器間接尋址(MOVX@Ri)進行的,變量的低8位地址由R0或R1確定,變量的高8位地址由P2口確定。采用Compact編譯模式與定義變量時指定pdata存儲器類型具有相同的效果。(3)Large:變量被定義在片RAM中(最大可達64KB),使用數(shù)據(jù)指針來間接訪問變量。這種訪問數(shù)據(jù)的方法的效率最低,尤其在對2個或多個字節(jié)的變量進行操作時,將增加程序的代碼長度。采用Large編譯模式與定義變量時指定xdata存儲器類型具有相同的效果。2.2C51程序?qū)嵗?.2.1應(yīng)用程序框架C51語言是一種結(jié)構(gòu)化程序設(shè)計語言,其程序?qū)懛ㄅc標準C語言類似,程序主體由若干函數(shù)(Function)組成,其主體內(nèi)容須以大括號{}來包含。對于一個完整的程序,無論它有幾個函數(shù),其中必定有一個名為main()的函數(shù),程序總是從它開始執(zhí)行的。在單片機的開發(fā)中,開發(fā)人員必須認真考慮應(yīng)用程序架構(gòu),應(yīng)盡可能地采用結(jié)構(gòu)化的程序設(shè)計方法,這樣可使整個應(yīng)用系統(tǒng)程序結(jié)構(gòu)清晰,易于調(diào)試和維護。程序架構(gòu)對于系統(tǒng)整體的穩(wěn)定性和可靠性是非常重要的,合適的程序架構(gòu)便于開發(fā)。常用的應(yīng)用程序架構(gòu)有3種,即順序執(zhí)行法、時間片輪詢法和操作系統(tǒng)。(1)順序執(zhí)行法比較簡單,通常在對實時性和并行性要求不太高的情況下使用,程序按從上往下的執(zhí)行順序來編寫即可,不需要考慮具體架構(gòu),其代碼結(jié)構(gòu)如下:2.2.1應(yīng)用程序框架2.2.1應(yīng)用程序框架(2)時間片輪詢法介于順序執(zhí)行法和操作系統(tǒng)之間,通常與操作系統(tǒng)一起出現(xiàn),即多數(shù)時候在操作系統(tǒng)中應(yīng)用此方法,本書在第5章中將具體介紹和使用此法。時間片輪詢法主要是利用定時器來實現(xiàn)的,定時器可以多處復(fù)用,用來實現(xiàn)不同的定時。定時器產(chǎn)生一個特定的定時周期,給每個需要執(zhí)行的任務(wù)設(shè)置好執(zhí)行周期,然后定時器按周期進行計時,一旦到了不同的執(zhí)行周期,就執(zhí)行相應(yīng)的任務(wù)。(3)單片機中采用的操作系統(tǒng)是嵌入式操作系統(tǒng),負責(zé)嵌入式系統(tǒng)的全部軟/硬件資源的分配、任務(wù)調(diào)度,控制、協(xié)調(diào)并發(fā)活動,主要分為全能操作系統(tǒng)(RichOS)和實時操作系統(tǒng)(Real-TimeOperatingSystem,RTOS)兩類。RichOS是運行功能非常齊全的操作系統(tǒng),RTOS是運行功能緊湊、具有很強的實時性的操作系統(tǒng)。RTOS的有效使用可以極大地提高系統(tǒng)性能,并簡化開發(fā)難度,減少開發(fā)人員的工作量,從根本上清除編程的障礙。對于8051單片機,因為其內(nèi)部資源較少,而RTOS會占用較多資源,所以不適合采用。通常情況下,8051單片機多采用順序執(zhí)行法和時間片輪詢法兩種程序架構(gòu)。2.2.2一個簡單的單片機程序接下來看一個利用8051單片機控制單個LED閃爍的程序。程序按照項目開發(fā)的格式規(guī)范來編寫,在程序的開頭做好程序名稱、程序功能、入口參數(shù)及返回值等的說明,在程序體中對關(guān)鍵的語句添加注釋說明。這是一個標準的格式規(guī)范,使用和維護起來都比較方便,建議程序都參照本格式來編寫。2.2.2一個簡單的單片機程序2.2.2一個簡單的單片機程序該程序采用的是順序執(zhí)行法的程序架構(gòu),實現(xiàn)了單片機對單個LED閃爍的控制。2.3Proteus軟件Proteus是英國LabCenterElectronics公司開發(fā)的EDA軟件。它運行于Windows操作系統(tǒng)上,能夠?qū)崿F(xiàn)從原理圖設(shè)計、電路仿真到PCB設(shè)計的一站式作業(yè),真正實現(xiàn)了電路仿真軟件、PCB設(shè)計軟件和虛擬模型仿真軟件的三合一。Proteus的軟件仿真相比于其他軟件最大的優(yōu)勢在于它能仿真大量的單片機芯片(如MCS-51系列、PIC系列等),以及單片機外圍電路(如鍵盤、LED、LCD等)。它主要由ISIS和ARES兩部分構(gòu)成。?ISIS——智能原理圖輸入系統(tǒng),系統(tǒng)設(shè)計與仿真的基本平臺。?ARES——高級PCB布線編輯軟件。引言2.3.1Proteus8軟件界面及功能1.Proteus8軟件界面雙擊桌面上的Proteus8Professional圖標或選擇屏幕左下方的“開始”→“所有程序”→“Proteus8Professional”→“Proteus8Professional”選項,進入Proteus工作主頁面,如圖2-1所示。圖2-1Proteus工作主頁面2.3.1Proteus8軟件界面及功能進入Proteus工作主頁面后,單擊“開始設(shè)計”面板中的“打開示例工程”按鈕,打開一個示例工程,如圖2-2所示。圖2-2打開示例工程2.3.1Proteus8軟件界面及功能進入ProteusISIS工作界面,如圖2-3所示。ProteusISIS工作界面是一種標準的Windows界面,包括標題欄、菜單欄、標準工具欄、繪圖工具欄、對象選擇按鈕、預(yù)覽對象方位控制按鈕、仿真進程控制按鈕、預(yù)覽窗口、對象選擇窗口、狀態(tài)欄、圖形編輯窗口。圖2-3ProteusISIS工作界面2.3.1Proteus8軟件界面及功能2.Proteus軟件功能簡介Proteus軟件功能強大,融合了Multisim、Protel的功能,能夠?qū)崿F(xiàn)從原理布圖、代碼調(diào)試到單片機與外圍電路混合協(xié)同仿真和PCB設(shè)計的整個設(shè)計過程,能夠完成模擬電子、數(shù)字電子、單片機及嵌入式的虛擬仿真。它的主要功能特點如下。(1)智能原理布圖。(2)基于SPICE模型實現(xiàn)數(shù)字/模擬電路的混合仿真。(3)支持各種主流單片機仿真,如8051、8086、MSP430、AVR、PIC、ARM。(4)支持通用外設(shè)模型,如字符LCD模塊、圖形LCD模塊、LED點陣、LED七段顯示模塊、鍵盤/按鍵、直流/步進/伺服電機、RS-232虛擬終端、電子溫度計等,其COMPIM(COM口物理接口模型)還可以使仿真電路通過計算機串口與外部電路實現(xiàn)雙向異步串行通信。2.3.1Proteus8軟件界面及功能2.Proteus軟件功能簡介Proteus軟件功能強大,融合了Multisim、Protel的功能,能夠?qū)崿F(xiàn)從原理布圖、代碼調(diào)試到單片機與外圍電路混合協(xié)同仿真和PCB設(shè)計的整個設(shè)計過程,能夠完成模擬電子、數(shù)字電子、單片機及嵌入式的虛擬仿真。它的主要功能特點如下。(5)支持UART/USART/EUSARTs仿真、中斷仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真。(6)支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil、MPLAB(PIC系列單片機的C語言開發(fā)軟件)等。(7)擁有豐富的虛擬儀器,操作面板逼真,如示波器、邏輯分析儀、信號發(fā)生器、直流電壓/電流表、交流電壓/電流表、數(shù)字圖案發(fā)生器、頻率計/計數(shù)器、邏輯探頭、虛擬終端、SPI調(diào)試器、I2C調(diào)試器等,能對電路原理圖的關(guān)鍵點進行虛擬測試2.3.2單片機最小系統(tǒng)仿真圖的繪制1.新建工程文件單擊“新建”圖標或在“開始設(shè)計”面板中單擊“新建工程”按鈕,彈出“新建工程向?qū)?開始”對話框,如圖2-4所示。圖2-4“新建工程向?qū)?開始”對話框2.3.2單片機最小系統(tǒng)仿真圖的繪制1.新建工程文件在圖2-4中選擇合適的保存路徑與名稱(注意擴展名是否為.pdsprj),單擊“下一步”按鈕,進入原理圖創(chuàng)建對話框,如圖2-5所示。圖2-5原理圖創(chuàng)建對話框2.3.2單片機最小系統(tǒng)仿真圖的繪制1.新建工程文件在圖2-5中選擇合適的原理圖設(shè)計模板(通常選擇“DEFAULT”模板),單擊“下一步”按鈕,進入PCB布版設(shè)計創(chuàng)建對話框,如圖2-6所示。圖2-6PCB布版設(shè)計創(chuàng)建對話框2.3.2單片機最小系統(tǒng)仿真圖的繪制1.新建工程文件在圖2-6中選擇合適的PCB設(shè)計模板,如果只繪制原理圖并仿真,就可以選擇“不創(chuàng)建PCB布板設(shè)計”單選按鈕(默認設(shè)置)。單擊“下一步”按鈕,進入固件創(chuàng)建對話框,如圖2-7所示。圖2-7固件創(chuàng)建對話框2.3.2單片機最小系統(tǒng)仿真圖的繪制1.新建工程文件在圖2-7中,若選擇“創(chuàng)建固件項目”單選按鈕,則可用ProteusVSMStudio來編寫程序代碼。本書選擇用Keil軟件來編寫程序代碼,故此處選擇“設(shè)有固件項目”單選按鈕。單擊“下一步”按鈕,進入工程創(chuàng)建總結(jié)對話框,如圖2-8所示。圖2-8工程創(chuàng)建總結(jié)對話框2.3.2單片機最小系統(tǒng)仿真圖的繪制1.新建工程文件在工程創(chuàng)建總結(jié)對話框中可以看到之前設(shè)置的詳細信息,確認無誤后單擊“完成”按鈕即可創(chuàng)建工程,進入新建的ISIS工作界面,如圖2-9所示。圖2-9新建的ISIS工作界面2.3.2單片機最小系統(tǒng)仿真圖的繪制2.繪制仿真圖工程創(chuàng)建后,開始繪制單片機最小系統(tǒng)仿真圖,如圖2-10所示。該電路包含單片機AT89C52,由晶振X1和電容C1、C2構(gòu)成的單片機時鐘電路,以及由電阻R1、電容C3和按鍵開關(guān)S1構(gòu)成的復(fù)位電路。圖2-10單片機最小系統(tǒng)仿真圖2.3.2單片機最小系統(tǒng)仿真圖的繪制2.繪制仿真圖(1)將需要用到的元器件加載到對象選擇窗口中。單擊對象選擇按鈕后,彈出“PickDevices”對話框,在“Category”列表框中找到“MircoprocessorIcs”選項,單擊它,在對話框的右側(cè)可以看到大量常見的各種型號的單片機。例如,要尋找單片機AT89C52,可以使用鼠標滾動查找,找到后,雙擊它。這樣,在左側(cè)的對象選擇窗口中就有AT89C52了。如果知道元器件的名稱或型號,則可以在“Keywords”文本框中輸入AT89C52,系統(tǒng)在對象庫中進行搜索,并將搜索結(jié)果顯示在“Showinglocalresults”列表框中,如圖2-11所示。在“Showinglocalresults”列表框中,雙擊“AT89C52”一欄即可將AT89C52加載到對象選擇窗口內(nèi)。2.3.2單片機最小系統(tǒng)仿真圖的繪制圖2-11加載AT89C522.3.2單片機最小系統(tǒng)仿真圖的繪制2.繪制仿真圖(1)將需要用到的元器件加載到對象選擇窗口中。同樣,在“Keywords”文本框中輸入“CRYSTAL”,在“Showinglocalresults”“列表框中雙擊“CRYSTAL”一欄即將晶振加載到對象選擇窗口內(nèi),如圖2-12所示。經(jīng)過前面的操作,已經(jīng)將AT89C52、晶振加載到了對象選擇窗口內(nèi),現(xiàn)在還缺少CAP(電容)、CAPPOL(極性電容)、RES(電阻)、BUTTON(輕觸開關(guān)),接下來只要依次在“Keywords”文本框中輸入“CAP”、“CAPPOL”、“RES”和“BUTTON”,并在“Showinglocalresults”列表框中把需要用到的元器件加載到對象選擇窗口內(nèi)即可。在對象選擇器窗口內(nèi),單擊“AT89C52”對象,可以在預(yù)覽窗口中看到AT89C52的實物圖,且繪圖工具欄中的元器件按鈕處于選中狀態(tài)。同樣,單擊“CRYSTAL”和“BUTTON”對象,也能看到對應(yīng)的實物圖,相應(yīng)的按鈕也處于選中狀態(tài),如圖2-13所示。2.3.2單片機最小系統(tǒng)仿真圖的繪制圖2-12加載晶振2.3.2單片機最小系統(tǒng)仿真圖的繪制圖2-13在預(yù)覽窗口中可以看到實物圖2.3.2單片機最小系統(tǒng)仿真圖的繪制2.繪制仿真圖(2)將元器件放置到圖形編輯窗口中。在對象選擇窗口內(nèi),選中“AT89C52”對象,如果元器件的方向不符合要求,則可使用預(yù)覽對象方向控制按鈕進行操作。例如,用按鈕對元器件進行順時針旋轉(zhuǎn),用按鈕對元器件進行逆時針旋轉(zhuǎn),用按鈕對元器件進行左右反轉(zhuǎn),用按鈕對元器件進行上下反轉(zhuǎn)。元器件的方向符合要求后,將鼠標指針置于圖形編輯窗口中元器件需要放置的位置,單擊此位置,出現(xiàn)紫紅色的元器件輪廓符號(此時還可對元器件的放置位置進行調(diào)整)。再次單擊,元器件被完全放置(放置元器件后,如果還需要調(diào)整其方向,則可單擊需要調(diào)整的元器件,并單擊鼠標右鍵,利用右鍵菜單進行調(diào)整)。同理,將晶振、電容、電阻、輕觸開關(guān)放置到圖形編輯窗口中,如圖2-14所示2.3.2單片機最小系統(tǒng)仿真圖的繪制圖2-14放置元器件后的圖形編輯窗口2.3.2單片機最小系統(tǒng)仿真圖的繪制2.繪制仿真圖(2)將元器件放置到圖形編輯窗口中。在圖2-14中,元器件已編號,參數(shù)也已修改。修改的方法是:在圖形編輯窗口中,雙擊元器件,在彈出的“編輯元件”對話框中進行修改?,F(xiàn)在以電阻為例進行說明,如圖2-15所示。把“元件位號”文本框中的值改為R1,把“Resistance”文本框中的值改為10k。修改好后單擊“確定”按鈕,這時編輯窗口就有了一個編號為R1,阻值為10kΩ的電阻。只需重復(fù)以上步驟就可編輯其他元器的參數(shù)。圖2-15修改元件參數(shù)2.3.2單片機最小系統(tǒng)仿真圖的繪制2.繪制仿真圖(3)元器件與元器件的電氣連接。Proteus具有自動連線路功能(WireAutoRouter),當(dāng)將鼠標指針移動至連接點時,鼠標指針處出現(xiàn)一個紅色框,如圖2-16所示。此時單擊,移動鼠標指針至晶振的其中一個引腳,出現(xiàn)紅色框時再次單擊,完成連線,如圖2-16所示。同理,可以完成其他連線。圖2-16電氣連接2.3.2單片機最小系統(tǒng)仿真圖的繪制2.繪制仿真圖(4)放置電源端子和接地端子。單擊繪圖工具欄中的按鈕,使之處于選中狀態(tài)。選中“POWER”對象,放置一個電源端子;選中“GROUND”對象,放置一個接地端子。放置好后完成連線,如圖2-10所示。至此,單片機最小系統(tǒng)仿真圖便繪制完成,接下來就需要編寫程序并下載到單片機中驗證電路的功能是否正常了。2.4
Keil軟件要使用匯編語言或C語言,需要使用編譯器,以便把寫好的程序編譯為機器碼,只有這樣才能把HEX可執(zhí)行文件寫入單片機。Keil是眾多單片機應(yīng)用開發(fā)軟件中最優(yōu)秀的軟件之一,針對不同類型單片機(MCU),Keil推出了四大IDE:KeilMDK-Arm、KeilC51、KeilC251和KeilC166。其中,KeilC51針對的是51系列單片機,它支持眾多不同公司的MCS-51架構(gòu)的芯片,集編輯、編譯、仿真等于一體,界面友好,易學(xué)易用,在調(diào)試程序、軟件仿真方面也有很強大的功能;KeilMDK-Arm是針對Cortex和Arm設(shè)備的開發(fā)環(huán)境,用來開發(fā)ARM和STM32系列單片機,如果再安裝KeilC51,就可以用來開發(fā)8051單片機了。具體安裝過程可參考官網(wǎng)上的資料。引言2.4.1Keil軟件界面及功能雙擊桌面上的KeiluVision5圖標或選擇屏幕左下方的“開始”→“所有程序”→“KeiluVision5”選項,進入Keil工作界面,如圖2-17所示。圖2-17Keil工作界面2.4.1Keil軟件界面及功能Keil工作界面也是一種標準的Windows界面,主要包括菜單欄、工具欄、工程窗口、編輯窗口、消息窗口和狀態(tài)欄。Keil工作界面在編輯狀態(tài)與調(diào)試狀態(tài)下存在一定的差異,主要體現(xiàn)在工具欄上。在編輯狀態(tài)下,工具欄包含文件工具欄(FileToolbar)和編譯工具欄(BuildToolbar);在調(diào)試狀態(tài)下,工具欄包含文件工具欄(FileToolbar)和調(diào)試工具欄(DebugToolbar)。KeilC51的主要功能特點如下。? 行業(yè)標準的KeilC編譯器、宏匯編器、調(diào)試器和實時內(nèi)核支持所有的8051衍生產(chǎn)品。? μVision5IDE集成開發(fā)環(huán)境、調(diào)試器和仿真環(huán)境。? 提供豐富的庫函數(shù)。? μVision調(diào)試器可精確模擬8051的片上外設(shè),包括I2C、CAN、UART、SPI、中斷、I/O口、A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器和PWM模塊。2.4.2單個LED控制程序設(shè)計本節(jié)以控制單個LED閃爍為例來演示如何通過Keil新建工程、添加源程序文件、編譯等。1.新建工程先建立一個空文件夾,把工程文件放到里面,以避免與其他文件混合。如圖2-18所示,這里新建了一個名為Project的文件夾。圖2-18新建Project文件夾2.4.2單個LED控制程序設(shè)計1.新建工程啟動KeiluVision5,出現(xiàn)啟動畫面,如圖2-19所示。圖2-19啟動界面2.4.2單個LED控制程序設(shè)計1.新建工程進入Keil工作界面后,選擇“project”→“NewuVisionProject…”選項,新建一個工程,如圖2-20所示。圖2-20新建工程2.4.2單個LED控制程序設(shè)計1.新建工程在彈出的對話框中,將工程放在剛才建立的Project文件夾下,給這個工程命名后保存,不需要填后綴名,默認的工程后綴合為.uvporj,如圖2-21所示。圖2-21保存工程2.4.2單個LED控制程序設(shè)計1.新建工程單擊“保存”按鈕后會彈出另一個對話框,在CPU類型列表框中找到并選中Atmel下的AT89C51或AT89C52,如圖2-22所示。圖2-22選擇芯片2.4.2單個LED控制程序設(shè)計1.新建工程單擊“OK”按鈕,彈出一個提示框,如圖
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海市浦東區(qū)2025屆中考沖刺卷生物試題含解析
- 二零二五版原創(chuàng)漫畫改編聘用合同3篇
- 2025年度柴油零售合同(社區(qū)加油站合作)4篇
- 2025版物流運輸合同擔(dān)保及貨物保險范本4篇
- 二零二五年電子商務(wù)合伙人股份合作合同3篇
- 2025年度綠色能源廠房租賃服務(wù)合同4篇
- 二零二五版股份代持合同解除協(xié)議書6篇
- 二零二五年度貨物存放與動態(tài)庫存管理服務(wù)協(xié)議3篇
- 2025年度廠區(qū)配電系統(tǒng)電氣火災(zāi)預(yù)防合同4篇
- 2025年智能電網(wǎng)專用箱式變壓器采購合同示范文本6篇
- 2025年度版權(quán)授權(quán)協(xié)議:游戲角色形象設(shè)計與授權(quán)使用3篇
- 2024年08月云南省農(nóng)村信用社秋季校園招考750名工作人員筆試歷年參考題庫附帶答案詳解
- 防詐騙安全知識培訓(xùn)課件
- 心肺復(fù)蘇課件2024
- 2024年股東股權(quán)繼承轉(zhuǎn)讓協(xié)議3篇
- 2024-2025學(xué)年江蘇省南京市高二上冊期末數(shù)學(xué)檢測試卷(含解析)
- 四川省名校2025屆高三第二次模擬考試英語試卷含解析
- 《城鎮(zhèn)燃氣領(lǐng)域重大隱患判定指導(dǎo)手冊》專題培訓(xùn)
- 湖南財政經(jīng)濟學(xué)院專升本管理學(xué)真題
- 考研有機化學(xué)重點
- 全國身份證前六位、區(qū)號、郵編-編碼大全
評論
0/150
提交評論