單片機(jī)原理與應(yīng)用:單片機(jī)入門_第1頁
單片機(jī)原理與應(yīng)用:單片機(jī)入門_第2頁
單片機(jī)原理與應(yīng)用:單片機(jī)入門_第3頁
單片機(jī)原理與應(yīng)用:單片機(jī)入門_第4頁
單片機(jī)原理與應(yīng)用:單片機(jī)入門_第5頁
已閱讀5頁,還剩80頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

單片機(jī)原理與應(yīng)用單片機(jī)的了解計(jì)算機(jī):通用計(jì)算機(jī)和嵌入式計(jì)算機(jī)通用計(jì)算機(jī)回顧嵌入式系統(tǒng)概論(應(yīng)用更廣)特征:創(chuàng)新、機(jī)遇

穩(wěn)定、共同發(fā)展

軟硬件面向特定應(yīng)用、關(guān)注成本可靠性實(shí)時(shí)性嵌入式系統(tǒng)的核心部件通用計(jì)算機(jī)-看得見的計(jì)算機(jī)如:PC機(jī)、服務(wù)器、大型計(jì)算機(jī)等。顯示器主機(jī)鼠標(biāo)鍵盤硬件諸如主機(jī)、顯示器、鍵盤、鼠標(biāo)等看得見部件軟件應(yīng)用程序可按用戶需要隨時(shí)改變,即重新編制。通用計(jì)算機(jī)-看得見的計(jì)算機(jī)嵌入式系統(tǒng)定義看不見的計(jì)算機(jī),一般不能被用戶編程,它有一些專用的I/O設(shè)備,對(duì)用戶的接口是應(yīng)用專用的。Anembeddedsystemisacomputersystemcontainedwithinsomelargerdeviceorproductwiththeintentpurposeofprovidingmonitoringandcontrolservicestothatdevice.Embeddedsystem:anydevicethatincludesaprogrammablecomputerbutisnotitselfageneral-purposecomputer.

包含有計(jì)算機(jī),但又不是通用計(jì)算機(jī)的計(jì)算機(jī)應(yīng)用系統(tǒng)。嵌入式系統(tǒng)定義IEEE:“Deviceusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants”.國內(nèi)定義:嵌入式系統(tǒng)是以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)定義嵌入式系統(tǒng)是將先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)和電子技術(shù)與各個(gè)行業(yè)的具體應(yīng)用相結(jié)合后的產(chǎn)物。中國微機(jī)學(xué)會(huì)的定義:嵌入式系統(tǒng)是以嵌入式應(yīng)用為目的的計(jì)算機(jī)系統(tǒng),可以分為片級(jí)、板級(jí)、系統(tǒng)級(jí)。芯片級(jí)嵌入-含程序或算法的處理器模塊級(jí)嵌入-系統(tǒng)中的某個(gè)核心模塊板系統(tǒng)級(jí)嵌入-主計(jì)算機(jī)系統(tǒng)通用計(jì)算機(jī)與嵌入式系統(tǒng)對(duì)比特征通用計(jì)算機(jī)嵌入式系統(tǒng)形式和類型看得見的計(jì)算機(jī)。按其體系結(jié)構(gòu)、運(yùn)算速度和結(jié)構(gòu)規(guī)模等因素分為大、中、小型機(jī)和微機(jī)??床灰姷挠?jì)算機(jī)。形式多樣,應(yīng)用領(lǐng)域廣泛,按應(yīng)用來分。組成通用處理器、標(biāo)準(zhǔn)總線和外設(shè)。軟件和硬件相對(duì)獨(dú)立。面向應(yīng)用的嵌入式微處理器,總線和外部接口多集成在處理器內(nèi)部。軟件與硬件是緊密集成在一起的。開發(fā)方式開發(fā)平臺(tái)和運(yùn)行平臺(tái)都是通用計(jì)算機(jī)采用交叉開發(fā)方式,開發(fā)平臺(tái)一般是通用計(jì)算機(jī),運(yùn)行平臺(tái)是嵌入式系統(tǒng)。二次開發(fā)性應(yīng)用程序可重新編制一般不能再編程我們來看看單片機(jī)單片機(jī)概念單片機(jī)的分類當(dāng)前單片機(jī)發(fā)展

計(jì)算機(jī)由運(yùn)算器、控制器、存儲(chǔ)器和輸入輸出接口四個(gè)基本部分組成。PC機(jī)將運(yùn)算器和控制器集成為一個(gè)超大規(guī)模集成電路芯片,稱為CPU。將組成計(jì)算機(jī)的四個(gè)基本部分集成在一塊芯片上,并加入中斷控制器、定時(shí)/計(jì)數(shù)器、串行I/O接口等功能器件,就構(gòu)成了單片微型計(jì)算機(jī),又稱單片機(jī)。

單片機(jī)的開發(fā)目的是將計(jì)算機(jī)的應(yīng)用推廣到智能儀表、數(shù)據(jù)采集、自動(dòng)測(cè)試、工業(yè)自動(dòng)化領(lǐng)域中,讓非計(jì)算機(jī)專業(yè)的工程技術(shù)人員能容易地掌握計(jì)算機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)、組裝和調(diào)試。與通用計(jì)算機(jī)如PC機(jī)相比,單片機(jī)結(jié)構(gòu)簡單,只要外加一些擴(kuò)展電路及必要的通道接口,就可以構(gòu)成各種計(jì)算機(jī)應(yīng)用系統(tǒng)。在國內(nèi),主流產(chǎn)品是Intel公司的MCS-51系列單片機(jī)。

MCS-51系列單片機(jī)有多種型號(hào)的產(chǎn)品:

普通型(51子系列)8051、8031、8751、89C51、89S51等。增強(qiáng)型(52子系列)8032、8052、8752、89C52、89S52等。它們的結(jié)構(gòu)基本相同,其主要差別反映在存儲(chǔ)器的配置上。8031片內(nèi)沒有程序存儲(chǔ)器8051內(nèi)部設(shè)有4KB的掩模ROM程序存儲(chǔ)器8751是將8051片內(nèi)的ROM換成EPROM89C51則換成4KB的閃速EEPROM89S51結(jié)構(gòu)同89C51,4KB的閃速EEPROM可在線編程增強(qiáng)型的存儲(chǔ)容量為普通型的一倍本課以

8XX51

代表這一系列的單片機(jī)。如何來了解自己所要用到的單片機(jī)以8051為例來進(jìn)行C51單片機(jī)的入門如何學(xué)習(xí)P0.0~P0.7P0驅(qū)動(dòng)器P2驅(qū)動(dòng)器P2.0~P2.7P0鎖存器P2鎖存器暫存1RAMRAM地址寄存器EPROMROMACC暫存2寄存器BALUSP中斷、串行口及定時(shí)器模塊PSW定時(shí)及控制指令寄存器程序地址寄存器DPTRPCPC加1緩沖器P1鎖存器P3鎖存器P1驅(qū)動(dòng)器P3驅(qū)動(dòng)器P1.0~P1.7P3.0~P3.7振蕩器VccVssPSENALEEARSTXTAL1XTAL2圖1-1MCS-51總體結(jié)構(gòu)框圖

8051單片機(jī)的內(nèi)部總體結(jié)構(gòu)框圖如圖1-1所示。其基本特性如下:

8位CPU,片內(nèi)振蕩器。 4K字節(jié)ROM,128字節(jié)RAM; 21個(gè)特殊功能寄存器。 32根I/O線; 可尋址各64K的外部數(shù)據(jù)、程序存貯器空間; 2個(gè)16位的定時(shí)器/計(jì)數(shù)器; 中斷結(jié)構(gòu):五個(gè)中斷源,兩個(gè)優(yōu)先級(jí); 一個(gè)全雙工串行口; 有位尋址功能,適于布爾處理的位處理機(jī)。1.1.2CPU

CPU是單片機(jī)的核心部件。它由運(yùn)算器和控制器等部件組成。

1.運(yùn)算器運(yùn)算器的功能是進(jìn)行算術(shù)運(yùn)算:加、減、乘、除、加1、減1、比較BCD碼十進(jìn)制調(diào)整等邏輯運(yùn)算:與、或、異或、求反、循環(huán)等邏輯操作位操作:內(nèi)部有布爾處理器,它以進(jìn)位標(biāo)志位C為位累加器,用來處理位操作??蓪?duì)位置“1”、對(duì)位清零、位判斷等。操作結(jié)果的狀態(tài)信息送至狀態(tài)寄存PSW。2.程序計(jì)數(shù)器PC

程序計(jì)數(shù)器PC是16位的寄存器,用來存放即將要執(zhí)行的指令地址,可對(duì)64KB程序存儲(chǔ)器直接尋址。執(zhí)行指令時(shí),PC內(nèi)容的低8位經(jīng)P0口輸出,高8位經(jīng)P2口輸出。

3.指令寄存器

指令寄存器中存放指令代碼。CPU執(zhí)行指令時(shí),由程序存儲(chǔ)器中讀取的指令代碼送入指令存儲(chǔ)器,經(jīng)指令譯碼器譯碼后由定時(shí)與控制電路發(fā)出相應(yīng)的控制信號(hào),完成指令功能。

1.2存儲(chǔ)器空間MCS-51存儲(chǔ)器結(jié)構(gòu)程序存儲(chǔ)器外部數(shù)據(jù)存儲(chǔ)器內(nèi)部數(shù)據(jù)存儲(chǔ)器普林斯頓結(jié)構(gòu)和哈佛結(jié)構(gòu)MCS-51的儲(chǔ)存器結(jié)構(gòu)與常見的微型計(jì)算機(jī)的配置方法不同,它將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開,各有自己的尋址方式、控制信號(hào)和功能。

程序存儲(chǔ)器用來存放程序和始終要保留的常數(shù)。

數(shù)據(jù)存儲(chǔ)器存放程序運(yùn)行中所需要的常數(shù)和變量。51單片機(jī)存儲(chǔ)器編程時(shí)候的考慮MCS-51存儲(chǔ)器結(jié)構(gòu)MCS-51系列單片機(jī)的8031、8032沒有片內(nèi)程序存儲(chǔ)器;8051、8052分別有4k、8k片內(nèi)ROM;8751、8752則分別有4k、8k片內(nèi)EPROM。因此,對(duì)于8031和8032,必須要擴(kuò)展片外程序存儲(chǔ)器;對(duì)其余芯片,只有在片內(nèi)程序存儲(chǔ)器容量不足時(shí),才擴(kuò)展外部程序存儲(chǔ)器。8031、8051和8751有128字節(jié)的用戶RAM單元和128字節(jié)的特殊功能寄存器區(qū)。當(dāng)片內(nèi)RAM單元不夠用時(shí),可以擴(kuò)展外部數(shù)據(jù)存儲(chǔ)器。MCS-51的存儲(chǔ)器空間分為4個(gè)部分:內(nèi)部程序存儲(chǔ)器、外部程序存儲(chǔ)器、內(nèi)部數(shù)據(jù)存儲(chǔ)器和外部數(shù)據(jù)存儲(chǔ)器。MCS-51的存儲(chǔ)器結(jié)構(gòu)如圖:外部(EA=0)0000外部內(nèi)部(EA=1)0FFF0FFF0000FFFF1000專用寄存器內(nèi)部RAMFF807F00FFFF0000程序存儲(chǔ)器內(nèi)部數(shù)據(jù)存儲(chǔ)器外部數(shù)據(jù)存儲(chǔ)器

圖1-3MCS-51存儲(chǔ)器的配置圖程序存儲(chǔ)器空間MCS-51的程序存儲(chǔ)器空間在物理結(jié)構(gòu)上分為兩個(gè)區(qū)域:片內(nèi)程序存儲(chǔ)器區(qū)和片外程序存儲(chǔ)器區(qū)。但在邏輯結(jié)構(gòu)上,只有一個(gè)程序存儲(chǔ)器區(qū)(片內(nèi)、片外程序存儲(chǔ)器統(tǒng)一編址,都使用程序計(jì)數(shù)器PC進(jìn)行尋址)。程序存儲(chǔ)器的地址從0000H~FFFFH,共64k。8031和8032沒有片內(nèi)ROM,其外部程序存儲(chǔ)器必須從0000H開始編址。其它型號(hào)單片機(jī)有內(nèi)部ROM,對(duì)8051和8751,其內(nèi)部ROM有4k,地址為0000H~0FFFH;外部程序存儲(chǔ)器地址可以從1000H開始,也可以從0000H開始。若從0000H開始編址,內(nèi)部程序存儲(chǔ)器與外部程序存儲(chǔ)器有部分單元重合,對(duì)這部分重合的存儲(chǔ)單元的選擇,依賴于單片機(jī)一根引腳(EA)的定義。想一想:若EA接地,則MOVCAX[0432H]指令是從那個(gè)地方取數(shù)據(jù)當(dāng)EA引腳接Vcc時(shí),8051和8751的PC值小于0FFFH時(shí),CPU從內(nèi)部ROM中取指令,當(dāng)PC的值大于4k時(shí),CPU自動(dòng)轉(zhuǎn)到外部ROM單元取指。外部程序存儲(chǔ)器地址值低于4k的單元等于不存在。當(dāng)EA引腳接GND時(shí),單片機(jī)CPU直接到外部程序存儲(chǔ)器取指,8051和8751的內(nèi)部程序存儲(chǔ)器被屏蔽掉。外部程序存儲(chǔ)器的地址必須從0000H開始編址。8031和8032沒有內(nèi)部程序存儲(chǔ)器,因而,其EA引腳必須接GND。MCS-51用16位地址指針寄存器PC管理外部數(shù)據(jù)存儲(chǔ)器空間。(P2高8位、P0低8位)訪問程序存儲(chǔ)器使用MOVC指令*程序存儲(chǔ)器中的幾個(gè)特殊地址的使用:地址用途

0000H復(fù)位操作后的程序入口

0003H外部中斷0服務(wù)程序入口

000BH定時(shí)器0中斷服務(wù)程序入口

0013H外部中斷1服務(wù)程序入口

001BH定時(shí)器1中斷服務(wù)程序入口

0023H串行口中斷服務(wù)程序入口由于兩入口地址之間的存儲(chǔ)空間有限,因此在編程時(shí),通常在這些入口地址開始的兩三個(gè)地址單元中,放入一條轉(zhuǎn)移類指令,已使相應(yīng)的程序轉(zhuǎn)到指定的程序存儲(chǔ)器區(qū)域中執(zhí)行。外部數(shù)據(jù)存儲(chǔ)器空間MCS-51的內(nèi)部數(shù)據(jù)存儲(chǔ)器與外部數(shù)據(jù)存儲(chǔ)器空間在物理和邏輯結(jié)構(gòu)上都是獨(dú)立的。MCS-51用16位地址指針寄存器DPTR管理外部數(shù)據(jù)存儲(chǔ)器空間。(P2高8位、P0低8位)MCS-51使用不同的指令操作內(nèi)部和外部數(shù)據(jù)存儲(chǔ)器。外部數(shù)據(jù)存儲(chǔ)器地址有16位,其最大容量為64k字節(jié)。使用MOVX

指令訪問內(nèi)部數(shù)據(jù)存儲(chǔ)器MCS-51的內(nèi)部數(shù)據(jù)存儲(chǔ)器是使用最頻繁的部件之一。8051有256字節(jié)的內(nèi)部數(shù)據(jù)存儲(chǔ)器,分為低128字節(jié)和高128字節(jié)兩部分。低128字節(jié)是供用戶使用存儲(chǔ)可讀寫數(shù)據(jù)的,高128字節(jié)由系統(tǒng)用于存放系統(tǒng)和內(nèi)部功能部件的狀態(tài)、工作方式等數(shù)據(jù)的。稱為特殊功能寄存器區(qū)。用戶不能隨意使用。低128字節(jié)用戶數(shù)據(jù)區(qū)按用途分為三個(gè)區(qū)域:工作寄存器區(qū)(00H~1FH)32個(gè)單元,分成4組,每組8個(gè)單元。各組都以R0~R7作單元編號(hào)。這4組寄存器稱為工作寄存器。工作寄存器的功能類似于微機(jī)系統(tǒng)的通用寄存器。由于各組工作寄存器使用相同的地址編號(hào),因此在任意時(shí)刻,CPU只能使用其中的一組寄存器,并把正在使用的那組寄存器稱為當(dāng)前寄存器組。由程序狀態(tài)寄存器PSW中的RS1、RS0位的狀態(tài)組和確定當(dāng)前工作寄存器組。(默認(rèn)是0組)

RS1RS0寄存器組000組(0~7)011組(8~0FH)102組(10H~17H)113組(18H~1FH)

大多數(shù)可位尋址的位如PSW中的工作寄存器組標(biāo)志位RS1、RS0等,在編寫程序時(shí)可以直接使用它們對(duì)指定的位進(jìn)行操作。

特殊功能寄存器中可位尋址的位都有專門的定義和用途。當(dāng)PSW=45H時(shí),當(dāng)前工作寄存器的地址是————?D7D6D5D4D3D2D1D0CYACF0RS1RS0OV-P可位尋址區(qū)(20H~2FH)這組RAM單元共16個(gè)字節(jié),既可以按字節(jié)操作又可以對(duì)單元中的每一位進(jìn)行位操作。16個(gè)字節(jié)共128位,位地址為00H~7FH。MCS-51的布爾處理器的位存儲(chǔ)空間就是指這個(gè)位尋址區(qū)。在單片機(jī)程序設(shè)計(jì)中,特別是工業(yè)自動(dòng)化應(yīng)用系統(tǒng),位狀態(tài)變量的使用非常多,開辟出可位尋址的存儲(chǔ)空間對(duì)編程者是非常方便的。用戶RAM區(qū)(30H~7FH)

在這個(gè)區(qū)間,存放程序需用的堆棧,存放用戶的變量,按字節(jié)存取。

特殊功能寄存器

MCS-51單片機(jī)共有21個(gè)字節(jié)的特殊功能寄存器用英文縮寫SFR(SpecialFuctionRegister)表示。1.用途:A累加器、狀態(tài)標(biāo)志寄存器單片機(jī)內(nèi)部各部件專用的控制、狀態(tài)寄存器并行口、串行口影射寄存器2.地址空間:8051系列單片機(jī)有21個(gè)特殊功能寄存器,在80H到FFH共128個(gè)字節(jié)區(qū)間中分散分布,有自己的名稱、符號(hào)和地址單元。地址為X0H和X8H是可位尋址的寄存器,表1-2中用“*”表示。特殊功能寄存器的位尋址特殊功能寄存器中,單元地址能被8整除的寄存器是可以位尋址的。8051定義了11個(gè)。 大多數(shù)可位尋址的位如PSW中的工作寄存器組標(biāo)志位RS1、RS0等,在編寫程序時(shí)可以直接使用它們對(duì)指定的位進(jìn)行操作。

特殊功能寄存器中可位尋址的位都有專門的定義和用途。 與低128字節(jié)用戶RAM區(qū)中的128個(gè)可位尋址的位一起構(gòu)成了MCS-51的全部位空間。D7D6D5D4D3D2D1D0CYACF0RS1RS0OV-P表1-2中還標(biāo)注了各SFR的名稱、字節(jié)地址、可尋址位的位地址和位名稱。

21個(gè)特殊功能寄存器的名稱及主要功能介紹如下,詳細(xì)的用法見后面各節(jié)的內(nèi)容。

A—累加器,自帶有全零標(biāo)志Z,A=0則Z=1;A≠0則Z=0。該標(biāo)志常用于程序分支轉(zhuǎn)移的判斷條件。

B—寄存器,常用于乘除法運(yùn)算(見第2章)。

PSW—程序狀態(tài)字。主要起著標(biāo)志寄存器的作用,其8位定義見表1-3。

其中

CY:進(jìn)/借位標(biāo)志反映最高位的進(jìn)位借位情況,加法為進(jìn)位、減法為借位。

CY=1,有進(jìn)/借位;CY=0,無進(jìn)/借位。

AC:輔助進(jìn)/借位標(biāo)志反映高半字節(jié)與低半字節(jié)之間的進(jìn)/借位,

AC=1有進(jìn)/借位;AC=0無進(jìn)/借位。

FO:用戶標(biāo)志位??捎捎脩粼O(shè)定其含義。

RS1,RS0:工作寄存器組選擇位。

D7

D6

D5

D4

D3

D2

D1

D0

CY

AC

F0RS1RS0OV

P位地址位名稱

OV:溢出標(biāo)志反映補(bǔ)碼運(yùn)算的運(yùn)算結(jié)果有無溢出有溢出OV=1,無溢出OV=0。

-:無效位。

P:奇偶標(biāo)志運(yùn)算結(jié)果有奇?zhèn)€“1”,P=1;運(yùn)算結(jié)果有偶個(gè)“1”,P=0。影響標(biāo)志位的指令及其影響方式見第2章。SP—堆棧指針。8XX51單片機(jī)的堆棧設(shè)在片內(nèi)RAM,對(duì)堆棧的操作包括壓入(PUSH)和彈出(POP)兩種方式,并且遵循后進(jìn)先出的原則,但在堆棧生成的方向上,與8086正好相反8XX51單片機(jī)的堆棧操作遵循先加后壓,先彈后減的順序,按字節(jié)進(jìn)行操作。

DPTR——數(shù)據(jù)指針寄存器用來存放16位地址值,以便用間接尋址或變址尋址片外存儲(chǔ)器。DPTR可分成DPL和DPH兩個(gè)8位寄存器分別使用。P0P1P2P3——I/O端口寄存器是四個(gè)并行I/O端口映射入SFR中的寄存器。通過對(duì)該寄存器的讀/寫,可實(shí)現(xiàn)從相應(yīng)I/O端口的輸入/輸出。例如:指令MOVP1,A實(shí)現(xiàn)了把A累加器中的內(nèi)容從P1端口輸出的操作。指令MOVA,P3實(shí)現(xiàn)了把P3端口線上的信息輸入到A中的操作。此外還有如下寄存器,它們將在后面章節(jié)介紹:IP——中斷優(yōu)先級(jí)控制寄存器。IE——中斷允許控制寄存器。TMOD——定時(shí)器/計(jì)數(shù)器方式控制寄存器。TCON——定時(shí)器/計(jì)數(shù)器控制寄存器。TH0,TL0——定時(shí)器/計(jì)數(shù)器0。TH1,TH1——定時(shí)器/計(jì)數(shù)器1。SCON——串行端口控制寄存器。SBUF——串行數(shù)據(jù)緩沖器。

PCON——電源控制寄存器。8051單片機(jī)的引腳

8051系列單片機(jī)是40引腳雙列直插封裝芯片。(方形封裝)12345678910111213141516171819204039383736353433323130292827262524232221P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RESETP3.0/RxDP3.1/TxDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDXTAL2XTAL1GNDVccP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EAALEPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0圖1-128031,8051,8751芯片管腳圖

8051芯片引腳按功能分成如下幾組:I/O引腳:

P0、P1、P2和P3四組I/O口引線。MCS-51系列單片機(jī)有四組8位并行I/O口,記作P0、P1、P2和P3。每組I/O口內(nèi)部都有8位數(shù)據(jù)輸入緩沖器、8位數(shù)據(jù)輸出鎖存器及數(shù)據(jù)輸出驅(qū)動(dòng)等電路。四組并行I/O端口即可以按字節(jié)操作,又可以按位操作。當(dāng)系統(tǒng)沒有擴(kuò)展外部器件時(shí),I/O端口用作雙向輸入輸出口;當(dāng)系統(tǒng)作外部擴(kuò)展時(shí),使用P0、P2口作系統(tǒng)地址和數(shù)據(jù)總線、P3口有第二功能,與MCS-51的內(nèi)部功能器件配合使用。P0口:地址(低8位)/數(shù)據(jù)時(shí)分復(fù)用口

普通I/O口

P1口:普通I/O口P2口:地址(高8位)普通I/O口P3口是一個(gè)雙功能I/O口普通I/O口第二功能口

P3口的每一位都具有第二功能。P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0RDWRT1T0INT1INT0TxDRxD

P3口的第二功能大多與其內(nèi)部功能部件有關(guān),RD、WR是外部數(shù)據(jù)存儲(chǔ)器的寫、讀控制信號(hào)。

在應(yīng)用時(shí),端口常用來進(jìn)行系統(tǒng)的擴(kuò)展。例如實(shí)現(xiàn)單片機(jī)和存儲(chǔ)器及輸入/輸出接口的連接,也可以直接利用端口進(jìn)行單片機(jī)和外設(shè)間的信息傳送。這時(shí)候要注意端口的負(fù)載能力。例如:要驅(qū)動(dòng)LED燈89C51端口輸出電流達(dá)到20mA,就可以直接驅(qū)動(dòng)LED顯示。而8051就要外接提升電阻(上拉電阻)8XX51單片機(jī)擴(kuò)展程序存儲(chǔ)器2732的電路圖見圖

控制信號(hào):

(1)ALE:地址鎖存允許。以時(shí)鐘振蕩頻率1/6的固定頻率激發(fā)ALE。 (2)PSEN:程序存貯器輸出允許。從內(nèi)部程序存貯器讀取指令時(shí),不激發(fā)PSEN。(3)EA:片內(nèi)、片外程序存器選擇。對(duì)8051、8751,EA接Vcc時(shí),低4k程序取自片內(nèi)ROM;EA接GND時(shí),低4k程序取自片外ROM。對(duì)8031,EA必須接GND。1.4時(shí)鐘電路與復(fù)位電路

內(nèi)部振蕩方式:在引腳XTAL1和XTAL2外接晶體振蕩器(簡稱晶振)如圖1-3所示。XTAL1XTAL2GND8XX51C01C02圖1-3內(nèi)部振蕩方式1.4.1時(shí)鐘電路

單片機(jī)的時(shí)鐘信號(hào)用來提供單片機(jī)內(nèi)各種微操作時(shí)間基準(zhǔn),8XX51單片機(jī)的時(shí)鐘信號(hào)通常有兩種電路形式:內(nèi)部振蕩方式和外部振蕩方式。電容器C01、C02起穩(wěn)定振蕩頻率、快速起振的作用。電容值一般為5~30PF。由于單片機(jī)內(nèi)部有一個(gè)高增益運(yùn)算放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生振蕩時(shí)鐘脈沖。8XX51

外部振蕩方式是把已有的時(shí)鐘信號(hào)引入單片機(jī)。這種方式適宜用于使單片機(jī)的時(shí)鐘與外部信號(hào)保持一致。外部振蕩方式如圖1-4所示。

對(duì)HMOS的單片機(jī)(8031、8031AH等)外部時(shí)鐘信號(hào)由XTAL2引入,對(duì)于CHMOS的單片機(jī)(8XCXX),外部時(shí)鐘由XTAL1引入。外部時(shí)鐘XTAL1XTAL2GND8XX51懸空外部時(shí)鐘XTAL1XTAL2GND懸空CHMOSHMOS圖1-4外部振蕩方式8XX518051的時(shí)鐘可以由兩種方式產(chǎn)生,一種是內(nèi)部方式,另一種是外部時(shí)鐘方式。XTAL1為芯片內(nèi)部振蕩電路(單級(jí)反相放大器)輸入端,XTAL2為芯片內(nèi)部振蕩電路輸出端。若采用內(nèi)部方式,則利用芯片內(nèi)反相器和電阻組成的振蕩電路,在XTAL1,XTAL2引腳上外接定時(shí)元件,如晶振和電容組成的并聯(lián)諧振回路,則在內(nèi)部可產(chǎn)生與外加晶體同頻率的振蕩時(shí)鐘。CPU時(shí)序單片機(jī)內(nèi)部振蕩器或使用的外部振蕩器產(chǎn)生的振蕩信號(hào)用fosc表示,稱為振蕩頻率。是CPU時(shí)序的基礎(chǔ)。fosc時(shí)序定時(shí)單位:從小到大依次為:振蕩周期、狀態(tài)周期、機(jī)器周期、指令周期。振蕩周期(時(shí)鐘周期) 振蕩頻率fosc的一個(gè)周期稱為振蕩周期。狀態(tài)周期 振蕩頻率二分頻后提供給片內(nèi)CPU的時(shí)鐘周期。機(jī)器周期 一個(gè)機(jī)器周期包含6個(gè)狀態(tài)。因此一個(gè)機(jī)器周期包含12個(gè)振蕩周期。當(dāng)fosc為12MHz時(shí),一個(gè)機(jī)器周期為1μs,當(dāng)fosc為6MHz時(shí),一個(gè)機(jī)器周期為2μs。指令周期 執(zhí)行一條指令需要的時(shí)間。MCS-51的指令周期分別是一、二、四個(gè)機(jī)器周期。4種時(shí)序單位中,振蕩周期和機(jī)器周期是單片機(jī)內(nèi)計(jì)算其他時(shí)間值(例如,波特率、定時(shí)器的定時(shí)時(shí)間等)的基本時(shí)序單位。例:單片機(jī)外接晶振頻率12MHZ時(shí)的各種時(shí)序單位:振蕩周期=1/fosc=1/12MHZ=0.0833us

狀態(tài)周期=2/fosc=2/12MHZ=0.167us

機(jī)器周期=12/fosc=12/12MHZ=1us

指令周期=(1~4)機(jī)器周期=1~4us(6)RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),在此端線持續(xù)給出兩個(gè)機(jī)器周期的高電平可以完成復(fù)位。關(guān)于復(fù)位電路 復(fù)位信號(hào)是系統(tǒng)內(nèi)部初始化所需的,當(dāng)系統(tǒng)加電開始工作時(shí),或工作過程中出現(xiàn)故障無法正常工作時(shí),都需要復(fù)位信號(hào)使系統(tǒng)能重新開始工作。因此,系統(tǒng)需要上電復(fù)位、手動(dòng)復(fù)位和遇故障自動(dòng)復(fù)位電路。當(dāng)MCS-51系列單片機(jī)的復(fù)位引腳RST出現(xiàn)5ms以上的高電平時(shí),單片機(jī)就完成了復(fù)位操作。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。復(fù)位后,51系列單片機(jī)的變化:P24幾個(gè)主要特殊功能寄存器復(fù)位狀態(tài)歸納如下:

PC=0000H,程序計(jì)數(shù)器為零表明單片機(jī)復(fù)位后程序從0000H地址單元開始執(zhí)行。

A=00H表明累加器已被清零。

PSW=00H表明選寄存器0組為工作寄存器組。

SP=07H表明堆棧指針指向片內(nèi)RAM07H單元,根據(jù)堆棧操作的先加后壓法則,第一個(gè)被壓入的數(shù)據(jù)被寫入08H單元中。P0-P3=FFH其余清空上電復(fù)位電路

利用電容充電過程在電阻上產(chǎn)生持續(xù)一定時(shí)間的高電平,得到復(fù)位信號(hào)。上電加手動(dòng)復(fù)位電路(電平)專用自動(dòng)復(fù)位電路外接微機(jī)監(jiān)控電路WDT(看門狗)原理介紹DS1232PB:接一接地開關(guān),手動(dòng)復(fù)位TOL:電源電平監(jiān)測(cè)門限選擇接地為5%,接VCC為10%TD:WDT定時(shí)器超時(shí)周期設(shè)置接地、接VCC、懸空ST:WDT定時(shí)器復(fù)位信號(hào)輸入在指定時(shí)間里沒有輸入,WDT就向8051發(fā)復(fù)位信號(hào)使用:ST接一I/0,軟件發(fā)一脈沖RSTRSTGNDVCC電源線:Vcc和GND(Vss)。C51程序設(shè)計(jì)

C51定義的任何數(shù)據(jù)類型必須以一定的存儲(chǔ)類型定位在8051的某一存儲(chǔ)區(qū)中。(C51在定義變量時(shí),需說明它們的存儲(chǔ)類型,將它們定位在不同的存儲(chǔ)區(qū)中。)說明的一般格式:

<數(shù)據(jù)類型><存儲(chǔ)類型>變量名

電信1.C51數(shù)據(jù)的數(shù)據(jù)類型數(shù)據(jù)類型:char、unsignedchar、int、bit

bit:一般位數(shù)據(jù)類型,只占用一個(gè)存儲(chǔ)單元特殊功能寄存器使用的sfr、sbit、sfr16表4-1數(shù)據(jù)類型的注意事項(xiàng)。大小signed和unsignedbit和sbit

2. 8051存儲(chǔ)器結(jié)構(gòu)8051系列單片機(jī)在地址上有三個(gè)存儲(chǔ)空間:(1)程序存儲(chǔ)器空間(ROM)(2)片內(nèi)數(shù)據(jù)存儲(chǔ)器空間(片內(nèi)RAM)(3)片外數(shù)據(jù)存儲(chǔ)器空間(片外RAM) 程序存儲(chǔ)器空間是只讀的。只能存放固定不變的數(shù)據(jù),如:參數(shù)表格,LED顯示的字符編碼數(shù)據(jù)等。(常量)C51對(duì)單片機(jī)的不同存儲(chǔ)區(qū)域定義了不同的存儲(chǔ)類型,它們的關(guān)系如下:

存儲(chǔ)類型對(duì)應(yīng)的存儲(chǔ)區(qū)域databdataidataxdataCode直接尋址片內(nèi)RAM(128字節(jié))可位尋址的片內(nèi)RAM(16字節(jié)),允許位與字節(jié)混合訪問間接尋址片內(nèi)RAM,可訪問全部片內(nèi)RAM(256字節(jié))

片外RAM(64K)程序存儲(chǔ)區(qū)(64K)例:#defineucharunsignedchar/*定義符號(hào)常量uchar*/uchardataa1;/*字符變量a1定位在8051的片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)中*/bitbdatalock;/*位變量lock在片內(nèi)RAM

可位尋址區(qū)*/ucharxdatas[]={3,4,7,2,12,8};/*無符號(hào)字符數(shù)組s定位在片外RAM*/ucharcodetable[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/*無符號(hào)字符數(shù)組table定位在片外ROM*/

課本4.3.3例子

當(dāng)沒有指定存儲(chǔ)類型時(shí),編譯器會(huì)根據(jù)存儲(chǔ)器模式自動(dòng)選擇默認(rèn)的存儲(chǔ)類型(缺省的存儲(chǔ)空間)。C51編譯器的存儲(chǔ)模式一般為小模式。

存儲(chǔ)器模式

描述SMALL參數(shù)及局部變量放入可直接尋址的內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)(128Byte,默認(rèn)存儲(chǔ)器類型是DATA)COMPACT參數(shù)及局部變量放入分頁外部數(shù)據(jù)存儲(chǔ)區(qū)(最大256Byte,默認(rèn)存儲(chǔ)類型是PDATA)LARGE參數(shù)及局部變量直接放入外部數(shù)據(jù)存儲(chǔ)器(最大64KB,默認(rèn)存儲(chǔ)器類型為XDATA)3.8051特殊功能寄存器及其C51定義 8051單片機(jī)片內(nèi)有21個(gè)特殊功能寄存器(SFR),它們分布在片內(nèi)RAM的高128字節(jié)中,特殊功能寄存器中還有11個(gè)可位尋址的寄存器。 在C51中,特殊功能寄存器是通過關(guān)鍵字sfr來定義,而其中可位尋址的位則用sbit來定義。這種定義方法與標(biāo)準(zhǔn)C不兼容,只適用于C51。sfrTMOD=0x89;/*定義定時(shí)/計(jì)數(shù)器方式控制寄存器TMOD(地址為89H)*/sfrP1=0x90;/*定義I/O口P1(其地址為90H)*/sfrPSW=0xD0;/*定義程序狀態(tài)字寄存器PSW(地址為D0H)*/PSW是可位尋址的SFR,其中各位的定義用sbit。如:sbitCY=0xD7;/*定義位CY

其位地址為D7H)*/sbitAC=0xD0^6;/*定義位AC(其位地址為D6H)*/sbitRS0=PSW^3;/*定義位RS0(其位地址為D3H)*/注意:sfr和sbit只能在函數(shù)外使用,一般放在程序的開頭。

實(shí)際上大部分特殊功能寄存器及其可位尋址的位的定義在reg51.h、reg52.h等相應(yīng)的頭文件中已給出,使用時(shí)只需在源文件中包含相應(yīng)的頭文件,即可使用SFR及其可尋址的位;而對(duì)于未定義的位,使用之前必須先定義。如:#include“reg51.h”sbitP10=P1^0;sbitP12=P1^2;main(){ P10=1;P12=0;PSW=0x08; /*等價(jià)的定義RS0=1; RS1=0;*/ if(OV==1)……; ┇計(jì)算機(jī)}*4.8051并行接口及其C51定義 8051的I/O接口有P0、P1、P2和P3四個(gè),除此之外8051還可以在片外擴(kuò)展硬件I/O口和其它功能芯片,它們與外部數(shù)據(jù)存儲(chǔ)器是統(tǒng)一編址的,即8051把它們當(dāng)作外部數(shù)據(jù)存儲(chǔ)器的一個(gè)單元。P0、P1、P2和P3的定義在頭文件reg51.h和reg52.h中,擴(kuò)展的外部硬件I/O口和功能接口芯片需用戶自定義。#include“absacc.h”#definePAXBYTE[0xffec]main(){PA=0x3A;/*向外部數(shù)據(jù)存儲(chǔ)器(I/O口)的地址為ffecH的單元中寫入3AH*/}244的選通信號(hào)由RD和P2.0相或產(chǎn)生,當(dāng)執(zhí)行讀該片的指令時(shí),RD和P2.0有效,打開244控制門,從而把數(shù)據(jù)通過244讀入8XX51。273的選通信號(hào)由WR和P2.0相或產(chǎn)生,通過執(zhí)行對(duì)該片的寫指令,WR和P2.0有效,使8XX51的數(shù)據(jù)往273輸出。8XX51內(nèi)部有ROM/EPROM,不用擴(kuò)展外部程序存儲(chǔ)器,所以P0口作為雙向數(shù)據(jù)線連在的數(shù)據(jù)端。273、244有相同的地址FEFFH(實(shí)際上只要保證P2.0=0,其他地址位無關(guān)緊要),然而由于使用不同的控制信號(hào)RD或WR,它們地址相同卻不會(huì)發(fā)生數(shù)據(jù)傳送沖突。

以上程序中用C中的編譯預(yù)處理命令#define將PA定義為外部I/O口,地址為0xffec,是單字節(jié)量。其中XBYTE是一個(gè)指針,指向外部數(shù)據(jù)存儲(chǔ)器的零地址單元,它是在頭文件absacc.h中定義的。P72

絕對(duì)地址訪問的用法利用絕對(duì)地址訪問的頭文件absacc.h可對(duì)不同的存貯區(qū)進(jìn)行訪問。該頭文件的函數(shù)有:

CBYTE(訪問code區(qū)字符型)DBYTE(訪問data區(qū)字符型)PBYTE(訪問pdata或I/O)XBYTE(訪問xdata或I/O)還有CWORD、DWORD、PWORD和XWORD四個(gè)函數(shù),它們的訪問區(qū)域同上,只是訪問的類型為int型。例子1、#include<absacc.h>#definecomXBYTE[0x07ff]2、XBYTE[0x0001]=0X76;XWORD[0x0000]=0x9988;

//XWORD[0x0001]=0x9988;???XWORD[0x0123]=0x9988;???3、Valu=XBYTE[0x0025];應(yīng)用的注意事項(xiàng)5.位變量及其C51定義

C51的數(shù)據(jù)類型與一般C語言的數(shù)據(jù)類型大多相同。另外為了智能儀器儀表和工業(yè)自動(dòng)化系統(tǒng)的需要,C51增加了位數(shù)據(jù)類型。 一般用標(biāo)識(shí)符bit來說明一個(gè)位變量。bit型變量占用內(nèi)部RAM的可位尋址區(qū),且只占一位存儲(chǔ)單元。1)位變量的定義位變量用關(guān)鍵字bit來定義,它的值是一個(gè)二進(jìn)制位。定義位變量時(shí)可以指定存儲(chǔ)類型,但只能是bdata。如:bitbdatelock_pt;/*將lock_pt定義為位變量*/bitdirection_bit;/*將direction_bit定義為位變量*/

2)函數(shù)可以有bit類型的參數(shù),也可以有bit類型的返回值bitfunc(bitb0,bitb1){ bita;…returna;}3)位變量使用說明不能定義位變量指針,如:bit*bit_point;不能定義位數(shù)組,如:bitbit_array[5];*sbit的妙用

對(duì)可位尋址RAM空間的字節(jié)型變量(存儲(chǔ)類型只能是bdata),可以用sbit定義位變量標(biāo)識(shí)該字節(jié)變量的某一位。使用時(shí),先說明字節(jié)變量的數(shù)據(jù)類型和存儲(chǔ)類型。intbdataa;/*整型變量a定位在片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)中的可位尋址區(qū)*/charbdatab[4];/*字符數(shù)組b定位在片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)中的可位尋址區(qū)*/然后使用sbit關(guān)鍵字定義其中可獨(dú)立尋址訪問的位變量:sbita0=a^0;/*定義a0為a的第0位*/sbita7=a^7;/*定義a7為a的第7位*/sbitb03=b[0]^3;/*定義b0

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論