華東交通大學(xué) 單片機(jī)C51_第1頁
華東交通大學(xué) 單片機(jī)C51_第2頁
華東交通大學(xué) 單片機(jī)C51_第3頁
華東交通大學(xué) 單片機(jī)C51_第4頁
華東交通大學(xué) 單片機(jī)C51_第5頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、嚴(yán)謹(jǐn) 規(guī)范 求真 鑄魂單片機(jī)教案淮安信息職業(yè)技術(shù)學(xué)院第一講單片機(jī)的概述一什么是單片機(jī)?所謂單片機(jī)就是將計算機(jī)的CPU、RAM、ROM、定時器/計數(shù)器和各種I/O口(如并行口、串行口等)集成在一片芯片上而制成的大規(guī)模集成電路。形成芯片級的計算機(jī)。因此單片機(jī)早期的含義稱為單片微型計算機(jī),簡稱為單片機(jī)(Single Chip Microcomputer)。CPU:是計算機(jī)的核心,叫做中央處理單元(Center Process Unit)。所有的數(shù)學(xué)運(yùn)算和邏輯控制都由它完成。RAM:隨機(jī)存取存儲器(Random Access Memory),存放運(yùn)算過程中的數(shù)據(jù)。ROM:只讀存儲器(Read Only

2、 Memory)。定時器/計數(shù)器:計算機(jī)內(nèi)部重要部件。I/O:輸入/輸出口(Input/Output),包括并行口、串行口等。單片機(jī)從其誕生就得到廣泛應(yīng)用,人們?yōu)樵鰪?qiáng)其應(yīng)用功能,將一些專用電路(A/D、D/A、比較器等)集成到單片機(jī)內(nèi)部,使它的應(yīng)用更方便,功能更強(qiáng),現(xiàn)在單片機(jī)的含義本質(zhì)是微控制器(Microcontroller),但習(xí)慣上仍然稱為單片機(jī)。二單片機(jī)的發(fā)展概況1第一代單片機(jī) 19761978 Intel公司的MCS-48系列 Zilog公司的Z8系列 Motorola公司的6801系列8位單片機(jī),屬于Single Chip Microcomputer的范圍。2第二代單片機(jī) 1978

3、 Intel公司的MCS-51系列 其他公司等。這時的單片機(jī)功能已非常完善,確立了單片機(jī)的控制功能,超出了Single Chip Microcomputer的范圍,屬于Microcontroller。3第三代單片機(jī) 1982全面發(fā)展單片機(jī)的控制功能,不斷完善高檔8位單片機(jī),改善其結(jié)構(gòu),以滿足不同客戶的要求。另外還產(chǎn)生了16單片機(jī)和專用單片機(jī)。MCS-96系列。4單片機(jī)的未來仍將以8位單片機(jī)為主流。8位單片機(jī)價格低廉,并能滿足絕大部分應(yīng)用場合。我們學(xué)習(xí)單片機(jī)也以MCS-51系列,現(xiàn)在市面上的許多單片機(jī)也都和MCS-51兼容。三單片機(jī)的特點(diǎn)1 小巧靈活,成本低,易于產(chǎn)品化。2 面向控制,能針對性解

4、決從簡單到復(fù)雜的各類控制任務(wù),因而能獲得最佳性能價格比。3 抗干擾能力強(qiáng),能在惡劣的環(huán)境下可靠工作。四單片機(jī)的應(yīng)用1 工業(yè)方面:電機(jī)控制、過程控制、智能傳感器等2 儀器儀表方面:智能儀器、醫(yī)療器械等3 民用方面:電子玩具、家電產(chǎn)品、游戲機(jī)等4 軍事方面:導(dǎo)彈控制、智能武器裝置等5 其它五單片機(jī)課程的學(xué)習(xí)方法單片機(jī)是一門應(yīng)用性很強(qiáng)的課程,并且它的應(yīng)用涉及硬件和軟件,因此學(xué)習(xí)過程中有不同與其它課程的方法。1 加強(qiáng)單片機(jī)應(yīng)用的訓(xùn)練多做實(shí)驗(yàn),探索單片機(jī)應(yīng)用的新領(lǐng)域2 應(yīng)用時要注意硬件和軟件相結(jié)合一般情況下盡可能減少硬件電路,提高系統(tǒng)可靠性。3 在老師指導(dǎo)下循序漸進(jìn)大膽創(chuàng)新,主動提出課題用單片機(jī)去解決六

5、、單片機(jī)的應(yīng)用環(huán)節(jié)硬件軟件集成塊編程環(huán)境程序編制仿真文件編程器1、 設(shè)計硬件電路2、 編寫程序3、 編程4、 運(yùn)行第二講 微型計算機(jī)基礎(chǔ)知識課前復(fù)習(xí):1、 單片機(jī)的概念2、 單片機(jī)的應(yīng)用環(huán)節(jié)新課內(nèi)容:一、計算機(jī)中數(shù)的表示計算機(jī)只識別和處理數(shù)字信息,數(shù)字是以二進(jìn)制數(shù)表示的;它易于物理實(shí)現(xiàn),同時,資料存儲、傳送和處理簡單可靠;運(yùn)算規(guī)則簡單,使邏輯電路的設(shè)計、分析、綜合、方便,使計算器具有邏輯性。(一)數(shù)制及數(shù)制之間的轉(zhuǎn)換1、各種進(jìn)位計數(shù)及其表示方法數(shù)字符號:0、1、2、9 數(shù)碼。數(shù)碼的個數(shù)基數(shù)。進(jìn)位規(guī)則:逢十進(jìn)一例如,十進(jìn)制數(shù),10個數(shù)碼;采用“逢十進(jìn)一”30681 = 3104+0103+610

6、2+8101+1100例如,二進(jìn)制數(shù),2個數(shù)碼,采用“逢二進(jìn)一”(11010100)2 = 127+126+025+124+023+122+021+020總之,N進(jìn)制數(shù),N個數(shù)碼,“逢N進(jìn)一”二進(jìn)制數(shù)與十六進(jìn)制數(shù)的相互轉(zhuǎn)換a)二進(jìn)制轉(zhuǎn)換十六進(jìn)制:規(guī)律是:以小數(shù)點(diǎn)為界限,分別往前往后每四位二進(jìn)制數(shù)一組進(jìn)行分組,(整數(shù)部分不夠的位直接在高位補(bǔ)0,小數(shù)部分不夠的位在往其低位補(bǔ)0),之后把每一組轉(zhuǎn)換成對應(yīng)得到十六進(jìn)制數(shù)碼即可。b)十六進(jìn)制轉(zhuǎn)換二進(jìn)制: 規(guī)律是:上述轉(zhuǎn)換的“逆”,即把每位十六進(jìn)制數(shù)碼都轉(zhuǎn)換成對應(yīng)四位二進(jìn)制數(shù),按照十六進(jìn)制數(shù)正常的順序排列即可。c)十進(jìn)制轉(zhuǎn)換十六進(jìn)制: 方法:可以先轉(zhuǎn)換成二

7、進(jìn)制數(shù),在轉(zhuǎn)換成十六進(jìn)制數(shù)(較簡單些)。(二) 有符號數(shù)表示方法1、 機(jī)器數(shù)與真值機(jī)器只認(rèn)識二進(jìn)制數(shù):0、1。這是因?yàn)?,電路狀態(tài)常有兩個,如通、斷;高電平、低電平;可用0、1表示。這種0、1、0、11在機(jī)器中的表現(xiàn)形式機(jī)器數(shù)。一般為8位。 無符號數(shù):00000000B、11111111B即00H FFH機(jī)器數(shù)有:帶符號數(shù):+1010110B、-1101001 真值符號位和數(shù)值位:計算機(jī)中通常都是用最高位來表示一個數(shù)的符號。并且分別用“0”和“1”表示正和負(fù)。有符號數(shù)有三種表示方法。原碼、反碼和補(bǔ)碼。a)、原碼(Primary Code)正數(shù)的原碼與原來的數(shù)相同。負(fù)數(shù)的原碼符號位“置1”,數(shù)值位

8、不變。舉例(略:+5、-5、+0、-0)原碼數(shù)的范圍:-127+127b)、反碼(Diminished Radix Complement)正數(shù)的反碼與原來的數(shù)相同。負(fù)數(shù)的反碼符號位“置1”,數(shù)值位按位取反得到。舉例(略:+5、-5、+0、-0)反碼數(shù)的范圍:-127+127c)、補(bǔ)碼(Complementary Code)正數(shù)的補(bǔ)碼與原來的數(shù)相同。負(fù)數(shù)的補(bǔ)碼由它的絕對值求反加1后得到,符號位“置1”。舉例(略:+5、-5、0)數(shù)的范圍:-128+127(三)8421BCD碼(Binary Coded Decimal Code)由于人們習(xí)慣上用十進(jìn)制數(shù)通過計算機(jī)輸入輸出數(shù)據(jù),而計算機(jī)需要用二進(jìn)制

9、進(jìn)行分析計算,因此需要計算機(jī)將十進(jìn)制轉(zhuǎn)換成二進(jìn)制,影響計算機(jī)的工作速度。用二進(jìn)制數(shù)對每位十進(jìn)制數(shù)進(jìn)行編碼稱為BCD碼,或叫二十進(jìn)制數(shù)。用標(biāo)識符 BCD表示1、 BCD碼與十進(jìn)制數(shù)的轉(zhuǎn)換BCD碼與二進(jìn)制不能直接轉(zhuǎn)換,一般先轉(zhuǎn)換成十進(jìn)制,再轉(zhuǎn)成二進(jìn)制。0100 0011B=67D=0110 0111BCD注意:不能將BCD碼看成是二進(jìn)制數(shù)。小結(jié) 1、 原碼、反碼、補(bǔ)碼的求法2、 數(shù)制之間的轉(zhuǎn)換原則第三講AT89S51單片機(jī)內(nèi)部結(jié)構(gòu)及引腳功能存儲空間配置及功能(交通燈演示)課前復(fù)習(xí):3、 數(shù)制之間的相互轉(zhuǎn)換4、 原碼、反碼、補(bǔ)碼的求法新課內(nèi)容:一 AT89S51單片機(jī)內(nèi)部結(jié)構(gòu)(如圖)內(nèi)部BUS內(nèi)中斷

10、振蕩器OSC程序存儲器4KB ROM數(shù)據(jù)存儲器128B RAM216位定時器/計數(shù)器80C51CPU可編程串行口外中斷8位并行口看門狗1 一個個8位的CPU2 一個片內(nèi)振蕩器及時鐘電路3 4KB Flash ROM(不同型號內(nèi)容不同,看書P4)4 128B 內(nèi)部RAM5 可尋址64KB的外部ROM和外部RAM的控制電路6 兩個16位定時器/計數(shù)器(Timer/Counter)7 26個特殊功能寄存器(SpecialFunction Register)8 4個8位并行(Parallel)I/O口9 一個串行口(Series)10 5個中斷源(Interrupt)11 內(nèi)部硬件看門狗電路12 一個

11、SPI串行接口,用于芯片的在系統(tǒng)編程這些我們稱為單片機(jī)的資源(Souce),單片機(jī)的應(yīng)用就是怎么充分合理地利用這些資源,來解決實(shí)際中的問題。二AT89S51單片機(jī)的CPUMCS-51的CPU包括兩部分:運(yùn)算部件和控制器。1、運(yùn)算部件運(yùn)算部件組成:包括算術(shù)邏輯部件ALU、布爾處理器、累加器A、寄存器B、暫存器以及程序狀態(tài)字寄存器PSW等。運(yùn)算部件功能:是實(shí)現(xiàn)數(shù)據(jù)的算術(shù)邏輯運(yùn)算、位變量處理和數(shù)據(jù)的傳送操作。ALU的功能:可以對8位變量進(jìn)行邏輯“與”、“或”、“異或”、循環(huán)、求補(bǔ)和清零等基本操作,還可以進(jìn)行加、減、乘、除等基本運(yùn)算。還可對位(BIT)變量進(jìn)行布爾處理,如置位、清零以及邏輯“與”、“或

12、” 等操作。累加器A: 是一個8位的累加器(也可以寫為ACC),絕大部分運(yùn)算和操作都同A有關(guān)。寄存器B: 是專為執(zhí)行乘法和除法操作而設(shè)置的,一般情況下也可以作為暫存器使用。2控制器(Controler)控制器是單片機(jī)的神經(jīng)中樞,以振蕩器的頻率位基準(zhǔn),產(chǎn)生CPU時序,對指令(Command)進(jìn)行譯碼,然后發(fā)出各種控制信號,實(shí)現(xiàn)各種操作。二 AT89S51單片機(jī)的引腳及其功能P2.0P2口P2.7P0口VSSP3口RSTP1口P0.7 EAVCC P0.040 39 32 31 28 21 AT89S51 1 8 9 10 17 18 19 201電源(1)VCC (40)芯片電源,接+5V;(4

13、.55.5)(2)VSS (20)電源地。2時鐘引腳XTAL1(18)、XTAL2(19)外接晶體振蕩或外接脈沖。(P42)3控制線RST(9)復(fù)位引腳。(Reset),高電平有效。EA片內(nèi)外ROM選擇EA=1,選擇片內(nèi)ROM;EA=0,選擇片外ROM。注意:控制信號線寫法上的差別。有“非”表示低電平起作用,反之是高電平起作用。4I/O口線 P0口:8位雙向I/O口。在訪問外部存儲器時,P0口可用于分時傳送低8位地址總線和8位數(shù)據(jù)總線。能驅(qū)動8個LSTTL門。 P1口:8位準(zhǔn)雙向I/O口(“準(zhǔn)雙向”是指該口內(nèi)部有固定的上拉電阻)。能驅(qū)動4個LSTTL門。 P2口:8位準(zhǔn)雙向I/O口。在訪問外部

14、存儲器時,P2口可用于高8位地址總線。能驅(qū)動4個LSTTL門。 P3口:8位準(zhǔn)雙向I/O口。能驅(qū)動4個LSTTL門。P3口還有第二功能。 三、AT89S51單片機(jī)的存儲器結(jié)構(gòu) (如圖1所示)MCS-51單片機(jī)的組織結(jié)構(gòu)可以分為三個不同的存儲空間,分別是:(1) 64KB的程序存儲器(ROM),包括片內(nèi)和片外;(2) 64KB的外部數(shù)據(jù)存儲器(外RAM);(3) 內(nèi)部數(shù)據(jù)存儲器(內(nèi)RAM)。這三種不同的存儲器在物理結(jié)構(gòu)上是相互獨(dú)立的,它們有各自的尋址系統(tǒng)、控制信號,CPU是通過不同的指令來訪問或操作這些存儲器。0000H0FFFH0000H0FFFH1000HFFFFH外部ROM(60KB)內(nèi)部

15、ROM(4KB)EA=1外部ROM(4KB)EA=080H7FHFFH00HFFFFH0000HSFR(26)內(nèi)部RAM(128)外部RAM(64KB)三種存儲空間的編址有重疊,CPU是怎么處理的?它是分別通過不同的指令來實(shí)現(xiàn)對它們操作。用MOVC指令訪問ROM空間,用MOV指令訪問內(nèi)部RAM,用MOVX指令訪問外部RAM。1.程序存儲器(ROM)程序存儲器用于存放程序和表格常數(shù),程序的存放是從0000H單元開始存放。在ROM的開始一段區(qū)間(0003H0023H)被用于存放中斷的入口地址,因此,編制的主程序應(yīng)存放在它的后面。至于這段空間的用法我們學(xué)習(xí)中斷的時候再詳細(xì)研究。程序上是通過在0000

16、H單元開始的地方設(shè)置跳轉(zhuǎn)指令,跳過該區(qū)域。2. 外部數(shù)據(jù)存儲器(略)第四講 AT89S51單片機(jī)內(nèi)部數(shù)據(jù)存儲器一. 內(nèi)部數(shù)據(jù)存儲器AT89S51內(nèi)部數(shù)據(jù)存儲器共128個字節(jié),字節(jié)地址是00H7FH,它又分為三部分:工作寄存器區(qū),位尋址區(qū)和數(shù)據(jù)緩沖區(qū)。堆棧、數(shù)據(jù)緩沖區(qū)(30H7FH)位尋址區(qū)(202FH)工作寄存器3區(qū)(18H1FH)工作寄存器2區(qū)(10H17H)工作寄存器1區(qū)(08H1FH)工作寄存器0區(qū)(00H07H)1 工作寄存器區(qū)00H1FH共32個單元,分為4組,每次只有一組處于當(dāng)前工作狀態(tài),通過改變狀態(tài)寄存器PSW中RS1,RS0的設(shè)置來改變當(dāng)前使用的工作寄存器。指令系統(tǒng)中有專用于工

17、作寄存器的操作,讀寫速度比一般內(nèi)RAM要快,另外還具有間接尋址功能,使用很方便。2 位尋址區(qū)20H2FH共16個單元為位尋址區(qū),每個單元也就是一個字節(jié)8位,共計128位,每位對應(yīng)一個地址,位地址的范圍為00H7FH。位尋址區(qū)的主要用途是存放各種標(biāo)志位信息和位數(shù)據(jù)。3 數(shù)據(jù)緩沖區(qū)(Buffer)內(nèi)RAM中30H7FH為數(shù)據(jù)緩沖區(qū),用于存放各種數(shù)據(jù)和中間結(jié)果。在這里我們先來熟悉一下編程環(huán)境,以后我們編的程序都可以在這個環(huán)境下來仿真運(yùn)行了,仿真軟件用的是偉福軟件,界面如下:(1)進(jìn)入wave編程環(huán)境,熟悉常用指令操作如:文件的建立、保存和打開注意1;在編程序之前首先在D盤建立一個自己的文件夾D:/w

18、ang注意2:在保存文件時,要注意文件的擴(kuò)展名一定為.asm并且主文件名不能超過8個字符 (2)編寫程序打開或建立文件后就可以編寫或修改文件。()匯編或編譯(a)編制好的文件是源文件,要把匯編語言編寫的程序轉(zhuǎn)換成機(jī)器碼,才能裝到芯片內(nèi)部。(b)匯編用鼠標(biāo)點(diǎn)擊 菜單項(xiàng)目編譯(F9) 即可,如果程序正確,編譯通過,有一對話框提示。如有錯誤,會提示錯誤的信息,把錯誤修改后再編譯,直到通過。(c)在wave環(huán)境中仿真自己編寫的程序(d)編譯自動產(chǎn)生十六進(jìn)制文件在wave編程環(huán)境中的內(nèi)部RAM結(jié)構(gòu)如上圖,其中第1,2兩行地址為00H1FH為工作寄存器區(qū),第3行20H2FH為位尋址區(qū),第4行到第8行為數(shù)據(jù)

19、緩沖區(qū)地址為30H-7FH。二.特殊功能寄存器SFRSFR也屬于內(nèi)部存儲器,由于它是專用的,人們通常講的內(nèi)部RAM只指前面的128個,而不包括SFR。共計21個,它們離散的分布在80HFFH內(nèi)。參看P36頁的表。對特殊功能寄存器應(yīng)注意以下幾個問題:1 那些SFR是可以位尋址的?字節(jié)地址的末位為0或8。2 可位尋址的SFR的幾種操作方式?字節(jié)操作或位操作3 不可位尋址的SFR的操作方式。只能字節(jié)操作4 80HFFH中剩余單元,用戶不能使用。5 程序狀態(tài)寄存器PSW位編號PSW.7PSW.6PSW5PSW.4PSW.3PSW.2PSW.1PSW.0位地址D7HD6HD5HD4HD3HD2HD1HD

20、0H位定義名CYACF0RS1RS0OVPRS1、RS0=000區(qū)(00H07H)RS1、RS0=011區(qū)(08H0FH)RS1、RS0=102區(qū)(10H17H)RS1、RS0=113區(qū)(18H1FH)CY 與OV的區(qū)別:CY為無符號數(shù)運(yùn)算時的進(jìn)位或借位標(biāo)志,OV為有符號數(shù)運(yùn)算時的溢出標(biāo)志。6 堆棧指針SP(略)。一、 程序計數(shù)器PCPC不屬于特殊功能寄存器,它在物理結(jié)構(gòu)上是獨(dú)立的。它是一個16位的地址寄存器,用于指出程序的地址,因此也叫地址指針。CPU每從ROM中讀出一個字節(jié),自動執(zhí)行(PC)+1 PC。當(dāng)執(zhí)行轉(zhuǎn)移指令時,PC會根據(jù)該指令修改下一次讀ROM的新地址。(以跳過中斷入口區(qū)為例,略

21、)小結(jié):1、 內(nèi)部128RAM的分區(qū)及其作用2、 如何區(qū)分位地址和字節(jié)地址第五講MCS-51的指令格式與常用符號課前復(fù)習(xí):1、 內(nèi)部128RAM的分區(qū)及其作用2、 如何區(qū)分位地址和字節(jié)地址新課內(nèi)容: 一、 AT89S51單片機(jī)的指令格式標(biāo)號: 操作碼 (目的操作數(shù)),(源操作數(shù)) ;注釋 標(biāo)號:指令地址的符號表達(dá)形式。一般用英文字母和數(shù)字組成,但是必須以字母開頭。系統(tǒng)的保留字不能作標(biāo)號。例如:Acc、PSW,B等等標(biāo)號必須用冒號“ :”與操作碼分隔 標(biāo)號是可以選擇的 操作碼:表示指令的操作功能。 操作碼是表示指令功能的助記符, 它代表了指令的操作功能。例如:MOV 數(shù)據(jù)傳送指令的操作碼 ADD

22、 加法運(yùn)算指令的操作碼 操作碼是指令的必需部分, 是指令的核心,不可缺少。 操作數(shù):參加操作的數(shù)據(jù)或數(shù)據(jù)地址操作數(shù)可分為目的操作數(shù)和源操作數(shù)。操作數(shù)可用二進(jìn)制數(shù)、十進(jìn)制數(shù)或十六進(jìn)制數(shù)表示。操作數(shù)的個數(shù)可以是03個。第1個操作數(shù)與操作碼之間用空格分隔,操作數(shù)與操作數(shù)之間用逗號“,”隔開。 注釋:指令功能說明。 注釋是可以選擇的,是為便于閱讀,對指令功能作的說明和注解。 注釋必須以“;”開始。二、指令中部分常用的符號Ri:工作寄存器R0和工作寄存器R1,i=0或1Rn:工作寄存器R0R7,n=07Ri:寄存器R0和R1間接尋址8位的存儲單元。Direct:8位直接地址,內(nèi)部RAM的地址或SFR的地

23、址。#data8:8位的立即數(shù)。數(shù)的范圍為0255。Bit:位地址。片內(nèi)RAM和SFR中的可尋址位。#data16:16位立即數(shù)addr16:16位目的地址,用于LJMP和LCALL指令。addr11:11位目的地址,用于AJMP和ACALL指令。rel:帶符號的8位偏移地址,用于SJMP和轉(zhuǎn)移指令。addr16、addr11、rel三個符號在具體的指令中都表現(xiàn)為標(biāo)號的形式。DPTR:數(shù)據(jù)指針,特殊功能寄存器。DPTR是DPH、DPL的組合,DPTR存放的是16位數(shù)據(jù),其中的高8位就是DPH中的內(nèi)容,低8位就是DPL中的內(nèi)容。三、內(nèi)部RAM間的數(shù)據(jù)傳送和位操作 操作碼: MOV (即Move的

24、縮寫)1 以累加器A為目的字節(jié)的傳送指令。MOV A,Rn ;MOVA,direct;MOVA,Ri;MOVA,#data;2 以Rn為目的字節(jié)的傳送指令MOVRn,A;MOVRn,direct;MOVRn,#data;3 以直接地址為目的字節(jié)的傳送指令MOVdirect,A;MOVdirect,Rn ;MOVdirect,#data;MOVdirect1,direct2;MOVdirect,Ri;4 以寄存器間接地址為目的字節(jié)的傳送指令MOVRi,A;MOVRi,direct ;(direct :直接的)MOVRi,#data; 講解例題#datadirectACCRiRn第六講 對內(nèi)部RA

25、M的操作指令課前復(fù)習(xí):1、 AT89S51的指令格式、常用符號新課內(nèi)容: 1、清零與取反指令CLR A ;對累加器清零CPL A ;將累加器中的內(nèi)容按位取反注意:清零和取反指令只能對A操作如果要對內(nèi)部RAM的某個單元清零,只能用MOV 30H,#0 2、位操作指令1)、位傳送指令MOVC,bit;C即PSW中的CyMOVbit,C;bit為可尋址位2)、位修正指令CLRC;CLRbit;清零CPLC;CPLbit取反;SETBC; SETBbit;置13)bit 的形式 bit可以是位編號、位地址、位定義名三種形式中的任何一種三、例題設(shè)內(nèi)部RAM中各單元的內(nèi)容均為FFH,執(zhí)行下列程序后,寫出單

26、元內(nèi)容發(fā)生變化的單元,并寫出具體內(nèi)容。SETB RS0CLR RS1MOV R1,#55HCLR RS0MOV R1, #0AAHMOV A, #40HMOV R0,#30HMOV R0, AMOV R1, AMOV R1, #20HMOV 20H, #0 SETB 07HCPL 08HCLR 70HMOV 60H., #1如果(60H)=把這段程序輸入到偉福仿真軟件中,可以得到如下的仿真結(jié)果(60H)=01H(00H)=30H(01H)=40H(09H)=55H(20H)=80H(21H)=01H(30H)=40H(40H)=20H注意:輸入到wave中的程序必須是完整的程序結(jié)構(gòu)??偨Y(jié):如何

27、區(qū)別bit 和 direct?1、 一般在MOV后面,指的是direct,除了指令中含有C時,則指bit2、 在SETB CLR CPL后都指bit3、 CLR A , CPL A 這兩條指令是對8位數(shù)據(jù)的操作第七講I/O口結(jié)構(gòu)原理與操作課前復(fù)習(xí):2、 AT89S51的指令格式、常用符號3、 對內(nèi)部RAM的數(shù)據(jù)傳送指令新課內(nèi)容: 1 P0口結(jié)構(gòu)及工作原理V2內(nèi)部總線寫鎖存器讀鎖存器讀引腳D QP0.X鎖存器CLK QAB MUX&P0.X引腳地址/數(shù)據(jù)控制VCCV1P0口有兩種功能,一個是作為通用的I/O口;另一個是作為地址/數(shù)據(jù)總線(Bus),用于擴(kuò)展外部的ROM和RAM,我們以后再研究。(

28、1)P0口用作輸出口:控制線上信號為0,電子開關(guān)與B接通。同時與門輸出為0,V1截止。(2) 由于V1截止,輸出級處于開漏狀態(tài),用作輸出口時,需外接上拉電阻。如果沒有上拉電阻,在輸出高電平時,V1、V2都截止,輸出引腳懸空,不能輸出高電平。(3) 用作輸入口時,也就是要把引腳上的信號讀進(jìn)來。我們看一下,假設(shè)V2導(dǎo)通,這時不管外電路施加什么電平,都被V2短路,讀進(jìn)來的始終是低電平。因此要想把它作為輸入口,必須保證V2截止,要使V2截止,需先向該端口寫入“1”,這點(diǎn)要特別注意。(4) P0口的每一位可任意作為輸入或輸出。既可以用數(shù)據(jù)傳送指令來整體操作,也可用位操作指令一位一位地操作。(5) 帶負(fù)載

29、能力:8個LSTTL電平(0.36毫安/20微安)。(6) 操作舉例(略)。2 P1口結(jié)構(gòu)V內(nèi)部總線寫鎖存器讀鎖存器讀引腳D QP1.X鎖存器CLK QP1.X引腳VCCR(1) 作為輸出口時,不需外接上拉電阻。(2) 作為輸入口時也要先向該端口鎖存器寫入“1”,然后再讀。(3) 每位也可分別用作輸入或輸出。(4) 帶負(fù)載能力:4個LSTTL門電路。3P2口結(jié)構(gòu)(同P1口)4P3口結(jié)構(gòu)(同P1口)5.I/O口的操作可以用I/O口去控制發(fā)光二極管,使其亮滅,或者控制繼電器使其吸合,在WAVE環(huán)境下,編寫一小段程序,通過在線編程,把程序下載到單片機(jī)中,去控制發(fā)光二極管,給學(xué)生演示,使學(xué)生更加直觀的

30、了解I/O口的應(yīng)用和操作.小結(jié):1、P0口用作輸出口時,需外接上拉電阻。而P1P3口不要接上拉電阻2、P0P3口作為輸入口使用,都要先向該端口鎖存器寫入“1”,3、P0P3口每位也可分別用作輸入或輸出。4、對口的操作,對字節(jié)操作用數(shù)據(jù)傳送指令,對位操作用位操作指令。5、帶負(fù)載能力P0口帶8個LSTTL門電路,而P1P3口能帶4個LSTTL門電路第八講MCS-51單片機(jī)最小應(yīng)用系統(tǒng) -以AT89S51為例課前復(fù)習(xí):1、清零、取反指令的功能4、 P0P3口作為一般的輸入輸出口使用的注意事項(xiàng)新課內(nèi)容: 一、 最小硬件系統(tǒng)1、最小硬件系統(tǒng)的組成所謂最小硬件系統(tǒng)是指單片機(jī)能工作所必須具備的硬件條件,它包

31、括四個部分:1)電源芯片接上5V電源,即40腳接5V電源的正,20腳接地。2)時鐘電路18、19腳接晶體振蕩器和電容構(gòu)成時鐘電路,如圖所示。3)程序存儲器選擇EA89C51片內(nèi)有EEPROM,EA接“正”。4)復(fù)位電路8.2KRSTVCC+5V+5V+5V40 31 AT89C511 9 181920EA10F6MHz20P為保證單片機(jī)正常工作,必須有復(fù)位電路,電路復(fù)位后程序從頭開始運(yùn)行。要使電路復(fù)位,只要在復(fù)位引腳上加兩個機(jī)器周期以上的高電平。2、 介紹幾個概念時鐘周期:系統(tǒng)晶振頻率的倒數(shù)狀態(tài)周期:2倍的時鐘周期機(jī)器周期:12倍的時鐘周期指令周期:指CPU執(zhí)行一條指令占用的時間指令字節(jié):指令

32、占用存儲空間的長度3、MCS-51復(fù)位的條件及復(fù)位后狀態(tài)復(fù)位條件:在9引腳上加兩個機(jī)器周期以上的高電平復(fù)位后狀態(tài)復(fù)位后PC值為0000,程序從頭運(yùn)行大部分的SFR被置為0P0P3口被置為FFHSP被置為07H4、如何檢查最小硬件系統(tǒng)有無+5V電源31引腳是否為+5V9引腳正常工作應(yīng)為低電平時鐘引腳電壓用數(shù)字表測量 18、19引腳電壓約為1.7V2.9V之間用模擬表測量 18引腳電壓約為1.7V2.9V之間 19引腳電壓只有零點(diǎn)幾伏二、 最小軟件系統(tǒng)匯編:把匯編程序翻譯成目標(biāo)程序(機(jī)器語言)的過程叫匯編。分類:手動匯編和機(jī)器匯編MOV A,#30H 對應(yīng)的機(jī)器語言為 74H30H偽指令:在匯編過

33、程中起控制作用,但自身不產(chǎn)生機(jī)器碼,不屬于MCS-51指令系統(tǒng),而僅僅是為匯編服務(wù)的指令。1、 ORG(起始偽指令)(Origination)格式:ORG 16位地址功能:規(guī)定它下面的程序的起始地址。也就是在匯編時將它下面的程序翻譯成機(jī)器碼時,這些機(jī)器碼在程序存儲器中存放的起始地址為ORG指令指定的16位地址。注意:一個程序中可以有多個ORG偽指令ORG后面的16位地址順序是從小到大的順序 兩條ORG指令之間存放的指令不能超過他們之間的地址范圍2、 END(結(jié)束偽指令)格式:END功能:是匯編語言程序結(jié)束標(biāo)志。在END之后的指令,匯編程序不再翻譯,因此,一個源程序只有一個END指令而且必須有一

34、個,并且放在源程序的最后。注意:END必須放在程序的最后在程序中只能有一個有效的END3、無條件轉(zhuǎn)移指令LJMP addr16 ;長轉(zhuǎn)移指令,可轉(zhuǎn)移到64KB空間內(nèi)的任意位置。AJMP addr11 ;短轉(zhuǎn)移指令,轉(zhuǎn)移范圍是與PC值同一2KB,可以向前或向后,超出程序匯編時將出錯。(最好不用)SJMP rel ;相對轉(zhuǎn)移指令,轉(zhuǎn)移范圍是PC前后-128B+127B,也不能超出范圍。SJMP $ = H:SJMP H4.程序的一般結(jié)構(gòu):ORG 0000HLJMP SETUP ;中斷入地址 ;ORG 0030HSETUP: ;初始化 MAIN: ;主程序 LJMP MAIN ;子程序和中斷服務(wù)程序

35、 END單片機(jī)系統(tǒng)運(yùn)行都必須加電源,我們把這個過程稱為上電過程,上電后要保證它按預(yù)想的要求運(yùn)行,在硬件和軟件上必須滿足一定的條件,硬件要有上電復(fù)位電路,電路復(fù)位后從0000H單元運(yùn)行,以后程序順序執(zhí)行,由于程序存儲器空間的0003H0023H單元是中斷入口地址,必須避開,因此,就要在0000H單元開始的空間存放跳轉(zhuǎn)指令,來避開中斷入口地址區(qū)。上面的程序的前三句就可達(dá)到目的,接著的語句是一無條件轉(zhuǎn)移指令,在此無限循環(huán),最后一條END結(jié)束。第九講I/O口的簡單應(yīng)用循環(huán)彩燈課前復(fù)習(xí):1、I/O作為一般的輸入輸出口時,有何要求?2、發(fā)光二極管工作參數(shù)新課內(nèi)容: 一、循環(huán)彩燈硬件電路在最小硬件系統(tǒng)基礎(chǔ)上

36、,用P1口作輸出,用低電平驅(qū)動LED發(fā)光管,LED發(fā)光條件是:電壓1.8V左右,電流810mA。為滿足要求,電路中串接限流電阻,經(jīng)計算取360。電路如圖所示。360+5V8.2KRSTVCC+5V+5V+5V40 31 AT89S511 8 9 181920EA10F6MHz20P二、軟件設(shè)計軟件設(shè)計是在最小軟件系統(tǒng)基礎(chǔ)上,根據(jù)所要求的顯示方式,用位操作指令CLR P1.X/SETB P1.X,對某位口操作,也可用數(shù)據(jù)傳送指令MOV P1,#DATA,對多位口同時操作。如:設(shè)計一個由8個小燈構(gòu)成的循環(huán)彩燈,要求8個小燈依次亮滅,然后重復(fù)循環(huán)程序?yàn)椋篛RG 0000HLJMP SETUPORG

37、0030HSETUP: CLR P1.0MOV R2, #80HDEL1: MOV R7,#0FFHDEL2:DJNZ R7,DEL2DJNZ R2,DEL1SETB P1.0CLR P1.1SETB P1.1MOV R2, #80HDEL1: MOV R7,#0FFHDEL2:DJNZ R7,DEL2DJNZ R2,DEL1CLR P1.2SETB P1.2CLR P1.3SETB P1.3 SETB P1.7LJMP SETUPENDDELAY: MOV R2,#80HDEL1: MOV R3,#0FFHDEL2: DJNZ R3,DEL2 DJNZ R2,DEL1 RET三、引出指令1、

38、NOP 空操作指令2、循環(huán)轉(zhuǎn)移指令DJNZ Rn,rel ;先執(zhí)行Rn Rn-1,然后判斷,若Rn=0,則程序順序執(zhí)行,否則就轉(zhuǎn)移,轉(zhuǎn)移到rel處,轉(zhuǎn)移范圍為-128B+127B。DJNZ direct,rel ;同上面類似。3、 用和返回指令LCALL addr16 ;長調(diào)用指令,調(diào)用子程序,子程序可在64KB空間內(nèi)任意位置,同LJMP指令。ACALL addr11 ;斷調(diào)用指令,調(diào)用子程序,同LJMP指令。RET ;調(diào)用返回指令,子程序結(jié)束后,執(zhí)行該指令程序?qū)⒎祷氐秸{(diào)用子程序處繼續(xù)向下執(zhí)行。上面的程序也可寫成:ORG 0000HLJMP SETUPORG 0030HSETUP:CLR P1

39、.0 LCALL DELAYSETB P1.0CLR P1.1LCALL DELAYSETB P1.1CLR P1.2SETB P1.2CLR P1.3SETB P1.3 SETB P1.7LJMP SETUPDELAY:MOV R2,#80HDEL1: MOV R3,#0FFHDEL2: DJNZ R3,DEL2 DJNZ R2,DEL1 RETEND注意:書寫子程序時的注意事項(xiàng)1、 書寫子程序一定要有名稱(標(biāo)號)2、 書寫子程序 一定要有RET返回指令3、 參數(shù)的傳遞4、子程序和主程序間的關(guān)系如下圖所示:子程序2斷點(diǎn)主程序子程序1斷點(diǎn)主程序子程序我們到上面的一段程序輸入到wave仿真環(huán)境中

40、,然后通過在線編程,把程序下載到單片機(jī)中,看實(shí)驗(yàn)箱上的小燈是否按照編寫的程序亮滅的,也可以先通過軟件仿真結(jié)果,也能判斷正確與否,執(zhí)行上面的程序我們可以看出來有P1口控制的8個小燈當(dāng)中,低四個先亮,亮一段時間后再滅掉,接著高個小燈再亮,亮一會,再滅,重復(fù)循環(huán)。思考題:在循環(huán)彩燈硬件電路的基礎(chǔ)上,設(shè)計一個循環(huán)彩燈程序,使小燈依次點(diǎn)亮后熄滅,再從頭開始,重復(fù)8次。第十講程序設(shè)計舉例課前復(fù)習(xí):1、循環(huán)轉(zhuǎn)移指令的功能2、子程序書寫的注意事項(xiàng)新課內(nèi)容: 一、程序:指令的有序集合 要求:1、實(shí)現(xiàn)預(yù)定的功能2、所占用的空間字節(jié)最少3、程序執(zhí)行的時間最短二、程序設(shè)計的方法 1、分析問題、確定算法2、畫程序流程圖

41、3、設(shè)計源程序 三、程序設(shè)計的方法1、順序程序設(shè)計順序程序是指按順序依次執(zhí)行的程序,把完成一系列操作的指令按操作的順序組成指令序列。這樣的程序很簡單也稱簡單程序或直線程序。如上講循環(huán)彩燈的第一個程序就是順序程序。2、循環(huán)程序設(shè)計循環(huán)程序一般包括以下幾部分:1)循環(huán)初值在進(jìn)入循環(huán)之前,要對循環(huán)中需要使用的寄存器或存儲器賦予規(guī)定的初值,主要是循環(huán)次數(shù)。2)循環(huán)體循環(huán)程序中要反復(fù)執(zhí)行的部分,是循環(huán)結(jié)構(gòu)中的主要部分。3)循環(huán)修改每執(zhí)行一次循環(huán),就要對有關(guān)參數(shù)修改,為進(jìn)入下一次循環(huán)做準(zhǔn)備。4)循環(huán)控制在程序中根據(jù)循環(huán)計數(shù)器的值或其他條件,控制循環(huán)是否應(yīng)該結(jié)束。它有兩種結(jié)構(gòu)形式:例、將015共16個立即數(shù)

42、傳送到內(nèi)部RAM 30H開始的單元用順序程序設(shè)計源程序?yàn)椋篛RG 0000HLJMP SETUPOGR 0030HSETUP:MOV 30H,#0 MOV 30H,#1 MOV 30H,#2MOV 30H,#3 MOV 30H,#4MOV 30H,#5.MOV 30H,#15SJMP $ END引出指令1、加1指令I(lǐng)NC A ;(A) (A)+1 ,以下類同。INC RnINC directINC RiINC DPTR例1、設(shè)(R0)= 7FH; (7EH)= 40H 執(zhí)行:INC R0 INC R0 INC R0 后, (R0)= 7FH; (7EH)= 00H; (7FH)= 41H.2、

43、減1指令DEC A ;(A) (A)1,以下類同。DEC RnDEC RiDEC direct例5、設(shè)(R0)=7FH,在內(nèi)RAM中,(7EH)=00H,(7FH)=40H 執(zhí)行:DEC R0 DEC R0 DEC R0結(jié)果為 : (R0)= 7EH,(7EH)=0FFH,(7FH)=3FH。用循環(huán)程序設(shè)計源程序?yàn)椋篛RG 0000HLJMP SETUPOGR 0030HSETUP:MOV R7,#16 MOV R0,#30H MOV A,#0AA:MOV R0, AINC AINC R0DJNZ R7, AASJMP $END一、引出指令1循環(huán)移位指令(1)RL A ;循環(huán)左移A7 A0(2

44、)RR A ;循環(huán)右移A7 A0(3)RLC A ;帶進(jìn)位位的循環(huán)左移A7 A0Cy(4)RRC A ;帶進(jìn)位位的循環(huán)右移A7 A0Cy注意:左移相當(dāng)于乘以2右移相當(dāng)于除以2下面我們利用上面的循環(huán)移位指令設(shè)計前面講過的循環(huán)彩燈程序。ORG 0000HLJMP SETUPORG 0030HSETUP:MOV A,#0FEHMAIN:MOV P1,ALCALL DELAYRL ASJMP MAINDELAY: MOV R2,#80HDEL1: MOV R3,#0FFHDEL2: DJNZ R3,DEL2 DJNZ R2,DEL1 RET END2、比較轉(zhuǎn)移指令1 CJNE A,direct,rel

45、;(C:Compare,J:Jump,N:No,E:Equle)若A=(direct),則程序順序執(zhí)行,且Cy=0。否則程序轉(zhuǎn)移,轉(zhuǎn)移到標(biāo)號指示的地方。若A(direct),Cy=0,若A(direct),Cy=1。2 CJNE A,#data,rel3 CJNE Rn,#data,rel4 CJNE Ri,#data,rel其余三條指令功能與第一條類似。例題:設(shè)內(nèi)部RAM30H3FH單元中有一組數(shù)據(jù),編程求出數(shù)值等于55H的個數(shù),并把結(jié)果存放在50H單元中一、條件轉(zhuǎn)移指令(一)判A轉(zhuǎn)移指令1 JZ rel ;(J:Jump Z:Zero)判斷累加器A中的內(nèi)容,看其是否為0,為0就轉(zhuǎn)移,轉(zhuǎn)移到

46、標(biāo)號指示的地方。2 JNZ rel(N:No);與上面的指令功能類似,A中不為0轉(zhuǎn)移。(二)判位(bit)轉(zhuǎn)移指令1JB bit,rel;對可位尋址的位進(jìn)行判別,該位為1轉(zhuǎn)移,轉(zhuǎn)移到標(biāo)號指示的地方。2JNB bit,rel;對可位尋址的位進(jìn)行判別,該位為0轉(zhuǎn)移,轉(zhuǎn)移到標(biāo)號指示的地方。3 JBC bit,rel;對可位尋址的位進(jìn)行判別,該位為1轉(zhuǎn)移,轉(zhuǎn)移到標(biāo)號指示的地方,并且將該位清0。(三)判進(jìn)位位Cy轉(zhuǎn)移指令1JC rel;對進(jìn)位Cy進(jìn)行判別,C=1轉(zhuǎn)移,轉(zhuǎn)移到標(biāo)號指示的地方。2.JNC rel;與上條指令功能相同,C=0轉(zhuǎn)移。例題:編程求20H單元中含有1的個數(shù),并將結(jié)果存到21H單元中分

47、析問題:20H單元地址07H 06H 05H 04H 03H 02H 01H 00H 位地址ORG 0000HLJMP SETUPORG 0030HSETUP: MOV 21H,#0JNB 00H,AA1INC 21HAA2:JNB 01H,AA3INC 21H。SJMP $ END 思考題:利用循環(huán)程序?qū)崿F(xiàn)上個題目的功能。二、程序書寫的兩種形式完整格式:如上面的程序就是完整格式子程序形式:AA : MOV 21H,#0JNB 00H,AA1INC 21HAA2:JNB 01H,AA3INC 21H。 RET三、堆棧操作指令1、堆棧的概念2、堆棧的原則:“先進(jìn)后出,后進(jìn)先出”3、堆棧指針:SP 系統(tǒng)復(fù)位后,SP=07H,并且SP始終指向棧頂?shù)?、堆棧的操作指令PUSH direct ;SPSP+1,(SP)(dir

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論