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