單片機(jī)原理與應(yīng)用金龍國電子教案_第1頁
單片機(jī)原理與應(yīng)用金龍國電子教案_第2頁
單片機(jī)原理與應(yīng)用金龍國電子教案_第3頁
單片機(jī)原理與應(yīng)用金龍國電子教案_第4頁
單片機(jī)原理與應(yīng)用金龍國電子教案_第5頁
已閱讀5頁,還剩132頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、21世紀(jì)高職高專規(guī)劃教材單片機(jī)原理與應(yīng)用電子教案制作:金龍國陳萌中國水利水電單片機(jī)原理及應(yīng)用第1章單片機(jī)概述第2章MCS-51系列單片機(jī)結(jié)構(gòu)第3章MSC-51指令系統(tǒng)第4章MCS-51匯編語言程序設(shè)計(jì)第5章MCS-51定時(shí)/計(jì)數(shù)器和中斷系統(tǒng)第6章 存儲(chǔ)器與存儲(chǔ)器擴(kuò)展第7章單片機(jī)接術(shù)第8章串行口通信技術(shù)第9章MCS-51單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)第1章單片機(jī)概述n 本章主要介紹單片機(jī)的發(fā)展,基本的結(jié)構(gòu)和特點(diǎn),單片機(jī)的應(yīng)用模式和領(lǐng)域,單片機(jī)的供應(yīng)狀態(tài)等。n 單片微型計(jì)算機(jī)就是將CPU、RAM、ROM、定時(shí)/計(jì)數(shù)器和多種接口都集成到一塊集成電路芯片上的微型計(jì)算機(jī)。因此,一塊芯片就構(gòu)成了一臺(tái)計(jì)算機(jī)。它已成為工

2、業(yè)控制領(lǐng)域、智能儀器儀表、尖端、日常生活中最廣泛使用的計(jì)算機(jī)。11單片機(jī)的發(fā)展歷史我們可以把單片機(jī)的發(fā)展歷史劃分為四階段:第一階段(19761978年):低性能單片機(jī)的探索階段。以Intel公司的MCS-48為代表,采用了單片結(jié)構(gòu),即在一塊芯片內(nèi)含有8位CPU、定時(shí)/計(jì)數(shù)器、并行I/O口、RAM和ROM等。主要用于工業(yè)領(lǐng)域。第二階段(19781982年):高性能單片機(jī)階段,這一類單片機(jī)帶有串行I/O口,8位數(shù)據(jù)線、16位地址線可以尋址的范圍達(dá)到64K字節(jié)、控制總線、較豐富的指令系統(tǒng)等。這類單片機(jī)的應(yīng)用 范圍較廣,并在不斷的改進(jìn)和發(fā)展。第三階段(19821990年):16位單片機(jī)階段。16位單片

3、機(jī)除CPU 為16位外,片內(nèi)RAM和ROM容量進(jìn)一步增大,實(shí)時(shí)處理能力更強(qiáng),體現(xiàn)了微控制器的特征。例如Intel公司的MCS-96主振頻率為12M,片內(nèi)RAM為232字節(jié),ROM為8K字節(jié),中斷處理能力為8 級(jí),片內(nèi)帶有10位A/D轉(zhuǎn)換器和高速輸入/輸出部件等。第四階段(1990年):微控制器的全面發(fā)展階段,各公司的產(chǎn)品在盡量兼容的同時(shí),向高速、強(qiáng)運(yùn)算能力、尋址范圍大以及小 型廉價(jià)方面發(fā)展。12單片機(jī)的軟硬件系統(tǒng)1.2.1單片機(jī)的硬件系統(tǒng)硬件系統(tǒng)是指構(gòu)成微機(jī)系統(tǒng)的實(shí)體和裝置,通常由運(yùn)算器、控制器、存儲(chǔ)器、輸入接口電路和輸入設(shè)備、輸出接口電路和輸出設(shè)備等組成。其中,運(yùn)算器和控制器一般做在一個(gè)集成

4、芯片 上,統(tǒng)稱中央處理單元(CentralProcessingUnit), 簡稱CPU,是微機(jī)的核心部件。CPU配上存放程 序和數(shù)據(jù)的存儲(chǔ)器、輸入/輸出(Input/Output,簡 稱I/O)接口電路以及外部設(shè)備即構(gòu)成微機(jī)的硬件系統(tǒng)。圖1-1微型計(jì)算機(jī)硬件系統(tǒng)組成示意圖CP U運(yùn) 算 器控 制 器硬件系統(tǒng)存 儲(chǔ) 器輸出設(shè)備輸出接口電路輸入接口電路輸入設(shè)備下面把組成計(jì)算機(jī)的5個(gè)基本部件作簡單說明。1) 運(yùn)算器運(yùn)算器是計(jì)算機(jī)的運(yùn)算部件,用于實(shí)現(xiàn)算術(shù)和邏輯運(yùn)算。計(jì)算機(jī)的數(shù)據(jù)運(yùn)算和處理都在這里進(jìn)行。2) 控制器控制器是計(jì)算機(jī)的指揮控制部件,它控制計(jì)算機(jī)各部分自動(dòng)、協(xié)調(diào)地工作。運(yùn)算器和控制器是計(jì)算機(jī)的

5、核心部分,常把它們合在一起稱之為中央處理器,簡稱CPU。n 3) 存儲(chǔ)器存儲(chǔ)器是計(jì)算機(jī)的記憶部件,用于存放程序和數(shù)據(jù)。存儲(chǔ)器又分為內(nèi)存儲(chǔ)器和外存儲(chǔ)器。實(shí)訓(xùn)中使 用的EPROM2764便是存貯器。n 4) 輸入設(shè)備輸入設(shè)備用于將程序和數(shù)據(jù)輸入到計(jì)算機(jī)中,如鍵盤等。n 5) 輸出設(shè)備輸出設(shè)備用于把計(jì)算機(jī)數(shù)據(jù)計(jì)算或加工的結(jié)果, 以用戶需要的形式顯示或打印出來,如顯示器、打 印機(jī)等。通常把外存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備合在一起稱之為計(jì)算機(jī)的外部設(shè)備,簡稱“外設(shè)”。單片微型計(jì)算機(jī)是指集成在一個(gè)芯片上的微型計(jì)算機(jī),也就是把組成微型計(jì)算機(jī)的各種功能部件,包括CPU(CentralProcessingUnit)

6、、RAM(RandomAccess隨機(jī)存取存只儲(chǔ)讀器存Memory)、器 ROM(Read-only儲(chǔ)Memory)、基本輸入/輸出(Input/Output)接口電路、定時(shí)器/計(jì)數(shù)器等部件都制作在一塊集成芯片上,構(gòu)成一個(gè)完整的微型計(jì)算機(jī),從而實(shí)現(xiàn)微型計(jì)算機(jī)的基本功能。單片機(jī)內(nèi)部結(jié)構(gòu)示意圖如圖1-2所示。TINT并行I/O接口P0 P3TXDRXD圖1-2單片機(jī)內(nèi)部結(jié)構(gòu)示意圖存儲(chǔ)器C P U并行I/O 接口中斷系統(tǒng)定時(shí)器 / 計(jì)數(shù)器1.2.2單片機(jī)的軟件系統(tǒng)軟件系統(tǒng)是微機(jī)系統(tǒng)所使用的各種程序的總稱。人們通過它對(duì)整機(jī)進(jìn)行控制并與微機(jī)系統(tǒng)進(jìn)行信息交換,使微機(jī)按照人的意圖完成預(yù)定的任務(wù)。軟件系統(tǒng)與硬

7、件系統(tǒng)共同構(gòu)成完整的微機(jī)系統(tǒng),兩者輔相成,缺一不可。微型計(jì)算機(jī)系統(tǒng)組成示意圖如圖所示。微型計(jì)算機(jī)系統(tǒng)微型計(jì)算機(jī)系統(tǒng)組成示意圖軟件系統(tǒng)CP U運(yùn) 算 器控 制 器硬件系統(tǒng)存 儲(chǔ) 器輸出設(shè)備輸出接口電路輸入接口電路輸入設(shè)備1.3MCS-51系列單片機(jī)盡管各類單片機(jī)很多,但無論是從世界范圍或是從全國范圍來看,使用最為廣泛的應(yīng)屬M(fèi)CS-51單片機(jī)。MCS-51單片機(jī)系列共有十幾種芯片, 如表1-1所示。表1-1MCS-51系列單片機(jī)分類表片內(nèi)ROM形式I/O特性子系列片內(nèi)ROM容量片內(nèi)RAM容量尋址范圍中斷源ROMEPROM無計(jì)數(shù)器并行口串行口8031805187514 KB128 B264 KB21

8、6481551子系列80C3180C5187C514 KB128 B264 KB21648158032805287528 KB256 B264 KB316481652子系統(tǒng)80C3280C5287C528 KB256 B264 KB31648161.3.1 51子系列和52子系列MCS-51系列又分為51和52兩個(gè)子系列,并以芯片型號(hào)的最末位數(shù)字作為標(biāo)志。其中,51 子系列是基本型,而52子系列則屬增強(qiáng)型。52 子系列功能增強(qiáng)的具體方面,從表1-1所列內(nèi)容中可以看出:(1) 片內(nèi)ROM從4 KB增加到8 KB。(2) 片內(nèi)RAM從128 B增加到256 B。(3) 定時(shí)/計(jì)數(shù)器從2個(gè)增加到3個(gè)

9、。(4) 中斷源從5個(gè)增加到6個(gè)。1.3.2 單片機(jī)芯片半導(dǎo)體工藝MCS-51系列單片機(jī)采用兩種半導(dǎo)體工藝生產(chǎn)。一種是HMOS工藝,即高速度、高密度、短溝道MOS工藝。另外一種是CHMOS工藝,即互補(bǔ)金屬氧化物的HMOS工藝。表1.1中,芯片型號(hào)中帶有字母“C”的,為CHMOS芯片,其余均為一般的HMOS芯片。CHMOS是CMOS和HMOS的結(jié)合,除保持了HMOS 高速度和高密度的特點(diǎn)之外, 還具有CMOS低功耗的特點(diǎn)。在便攜式、手提式或野外作業(yè)儀器設(shè)備上,低功耗是非常有意義的,因此, 在這些產(chǎn)品中必須使用CHMOS的單片機(jī)芯片。1.3.3 片內(nèi)ROM存儲(chǔ)器配置形式MCS-51單片機(jī)片內(nèi)程序存

10、儲(chǔ)器有三種配置形式,即掩膜ROM、EPROM和無ROM。這三種配置形式對(duì)應(yīng)三種不同的單片機(jī)芯片, 它們各有特點(diǎn),也各有其適用場合,在使用時(shí)應(yīng)根據(jù)需要進(jìn)行選擇。一般情況下,片內(nèi)帶掩膜型ROM適用于定型大批量應(yīng)用產(chǎn)品的生產(chǎn);片內(nèi)帶EPROM適合于研制產(chǎn)品樣機(jī); 外接EPROM的方式適用于研制新產(chǎn)品。最近, Intel公司又推出片內(nèi)帶EEPROM型的單片機(jī), 可以在線寫入程序。第2章MCS-51單片機(jī)結(jié)構(gòu)本章主要介紹MCS-51系列的8051的基本結(jié)構(gòu)、工作原理、存儲(chǔ)器結(jié)構(gòu)、P0、P1、P2、P3四個(gè)I/O口的基本工作原理和操作特點(diǎn)。單片機(jī)的各種工作方式、單片機(jī)的時(shí)序等。2.1 MCS-51單片機(jī)的

11、內(nèi)部組成及信號(hào)引腳2.1.1 8051單片機(jī)的基本組成MCS-51單片機(jī)的典型芯片是8031、8051、8751。8051內(nèi)部有4KB ROM,8751內(nèi)部有4KBEPROM,8031內(nèi)部無ROM;除此之外,三者的內(nèi)部結(jié)構(gòu)及引腳完全相同。因此,以8051為例, 說明本系列單片機(jī)的內(nèi)部組成及信號(hào)引腳。8051單片機(jī)的基本組成請(qǐng)參見圖2-1。下面介紹各部分的基本情況。圖2-1 MCS-51 單片機(jī)結(jié)構(gòu)框圖1) 中央處理器(CPU)中央處理器是單片機(jī)的核心,完成運(yùn)算和控制功能。MCS-51的CPU能處理8位二進(jìn)制數(shù)或代碼。2) 內(nèi)部數(shù)據(jù)存儲(chǔ)器(內(nèi)部RAM)8051芯片有256個(gè)RAM單元,但其中后1

12、28單元被專用寄存器占用,能作為寄存器供用戶使用的只是前128單元,用于存放可讀寫的數(shù)據(jù)。因此通常所說的內(nèi)部數(shù)據(jù)存儲(chǔ)器就是指前128單元,簡稱內(nèi)部RAM。3) 內(nèi)部程序存儲(chǔ)器(內(nèi)部ROM)8051共有4KB掩膜ROM,用于存放程序、原始數(shù)據(jù)或表格,因此,稱之為程序存儲(chǔ)器, 簡稱內(nèi)部ROM。4) 定時(shí)/計(jì)數(shù)器8051共有兩個(gè)16位的定時(shí)/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)功能,并以其定時(shí)或計(jì)數(shù)結(jié)果對(duì)計(jì)算機(jī)進(jìn)行控制。5) 并行I/O口MCS-51 共有4 個(gè)8 位的I/O口( P0、P1、P2、P3),以實(shí)現(xiàn)數(shù)據(jù)的并行輸入/輸出。6) 串行口MCS-51單片機(jī)有一個(gè)全雙工的串行口,以實(shí)現(xiàn)單片機(jī)和其它設(shè)備之間

13、的串行數(shù)據(jù)傳送。該串行口功能較強(qiáng),既可作為全雙工異步通信收發(fā)器使用,也可作為同步移位器使用。7) 中斷控制系統(tǒng)MCS-51單片機(jī)的中斷功能較強(qiáng),以滿足控制應(yīng)用的需要。8051共有5個(gè)中斷源,即外中斷兩個(gè),定時(shí)/計(jì)數(shù)中斷兩個(gè),串行中斷一個(gè)。全部中斷分為高級(jí)和低級(jí)共兩個(gè)優(yōu)先級(jí)別。8) 時(shí)鐘電路MCS-51芯片的內(nèi)部有時(shí)鐘電路,但石英晶體和微調(diào)電容需外接。時(shí)鐘電路為單片機(jī)產(chǎn)生時(shí)鐘脈沖序列。系統(tǒng)允許的晶振頻率一般為6 MHz和12 MHz。2.1.2 MCS-51的信號(hào)引腳MCS-51是標(biāo)準(zhǔn)的40引腳雙列直插式集成電路芯片,引腳排列請(qǐng)參見圖2-2。1) 信號(hào)引腳介紹P0.0 P0.7: P0口8位雙向

14、口線。P1.0 P1.7 :P1口8位雙向口線。P2.0 P2.7 :P2口8位雙向口線。P3.0 P3.7 :P3口8位雙向口線。圖2-2 MCS-51引腳圖8031805187511P1.0VCCP1.1P0.0P1.2P0.1P1.3P0.2P1.4P0.3P1.5P0.4P1.6P0.5P1.7P0.6RST/VPD P0.7RXD P3.0EA/VPPTXD P3.1ALE/PROGINT0 P3.2PSENINT1 P3.3P2.7T0 P3.4P2.6T1 P3.5P2.5WR P3.6P2.4RD P3.7P2.3XTAL2P2.2XTAL1P2.1VSSP2.04023933

15、8437536635734833932103111301229132814271526162517241823192220212) 信號(hào)引腳介紹表2-1 P3口的第二功能表2.28051的內(nèi)部存儲(chǔ)器內(nèi)部數(shù)據(jù)存儲(chǔ)器低128單元2.2.1圖2- 3 片內(nèi)RAM的配置表 2-2片內(nèi)RAM位尋址區(qū)的位地址字節(jié)地址位地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20HD7D6D5D4D3D2D1D07FH7EH7DH7CH7BH7AH79H78H77H76H75H74H73H72H71H70H6FH6EH6DH6CH6BH6AH69H68H67H66H65

16、H64H63H62H61H60H5FH5EH5DH5CH5BH5AH59H58H57H56H55H54H53H52H51H50H4FH4EH4DH4CH4BH4AH49H48H47H46H45H44H43H42H41H40H3FH3EH3DH3CH3BH3AH39H38H37H36H35H34H33H32H31H30H2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H1FH1EH1DH1CH1BH1AH19H18H17H16H15H14H13H12H11H10H0FH0EH0DH0CH0BH0AH09H08H07H06H05H04H03H02H01

17、H00H2.2.2內(nèi)部數(shù)據(jù)存儲(chǔ)器高128單元表 2-3MCS-51專用寄存器一覽表位地址符號(hào)單元地址名稱符號(hào)地址E0HACC.7ACC.0E7HE0H* ACC累加器F0HB.7B.0F7HF0H* B乘法寄存器D0HPSW.7PSW.0D7HD0H* PSW程序狀態(tài)字81HSP堆棧指針82HDPL數(shù)據(jù)存儲(chǔ)器指針(低8位)83HDPH數(shù)據(jù)存儲(chǔ)器指針(高8位)A8HIE.7IE.0AFHA8H* IE中斷允許控制器B8HIP.7IP.0BFHB8H* IP中斷優(yōu)先控制器80HP0.7P0.087H80H* P0通道090HP1.7P1.097H90H* P1通道1A0HP2.7P2.0A7HA0

18、H* P2通道2B0HP3.7P3.0B7HB0H* P3通道387HPCON電源控制及波特率選擇98HSCON.7SCON.09FH98H* SCON串行口控制99HSBUF串行數(shù)據(jù)緩沖器88HTCON.7TCON.08FH88H* TCON定時(shí)控制89HTMOD定時(shí)器方式選擇8AHTL0定時(shí)器0低8位8BHTL1定時(shí)器1低8位8CHTH0定時(shí)器0高8位8DHTH1定時(shí)器1高8位并行輸入/輸出口電路結(jié)構(gòu)2.3P0口2.3.1VCC地址/數(shù)據(jù)控制讀鎖存器T1內(nèi)部總線P0.nDQP0.n鎖存器寫鎖存器T2QMUX讀引腳圖 2-5 P0口的口線邏輯電路圖2.3.2P1口VCC讀鎖存器內(nèi)部上拉電阻內(nèi)

19、部總線QDP1.nP1.n鎖存器寫鎖存器QT讀引腳圖 2-6 P1口的口線邏輯電路圖2.3.3P2口VCC控制地址讀鎖存器內(nèi)部上拉電阻內(nèi)部總線P2.nQDMUXP2.n鎖存器寫鎖存器TQ讀引腳圖 2-7P2口的口線邏輯電路圖2.3.4P3口VCC第二輸出功能讀鎖存器內(nèi)部上拉電阻內(nèi)部總線P3.nQDP3.n鎖存器寫鎖存器TQ讀引腳第二輸入功能圖 2-8 P3口的口線邏輯電路圖24MCS-51單片機(jī)的時(shí)序2.4.1時(shí)鐘電路與時(shí)序基本定時(shí)時(shí)序關(guān)系S機(jī)器周期1 取指令、譯碼機(jī)器周期2 取操作數(shù)、執(zhí)行指令周期1.時(shí)鐘信號(hào)的產(chǎn)生VCC8051XTAL1XTAL2外部振蕩器RXTAL2TTLXTAL1VSS

20、C1C2(a) 內(nèi)部振蕩器方式(b) 8051外時(shí)鐘源接法圖2-9 時(shí)鐘振蕩電路和圖2-10外部時(shí)鐘源接法(1)節(jié)拍與狀態(tài)(2)機(jī)器周期(3)指令周期4. MCS-51指令時(shí)序時(shí)鐘ALE讀操作碼讀操作碼(無效)讀下一指令(a) 1字節(jié)1周期指令S1S2S3S4S5S6讀操作碼讀第二字節(jié)讀下一指令(b) 2字節(jié)1周期指令S1S2S3S4S5S6讀操作碼讀操作碼(無效)讀下一指令(c) 1字節(jié)2周期指令S1S2S3S4S5S6S1S2S3S4S5S6圖 2-11 MCS-51的取指/執(zhí)行時(shí)序2.4.2單片機(jī)的復(fù)位電路1復(fù)位操作專用寄存器復(fù)位值PC0000HACC00HB00HPSW00HSP07H

21、DPTR0000HP0P3FFHIPXXX00000BIE0XX00000BTMOD00HTCON00HTH000HTL000HTH100HTL100HSCON00HSBUF不定PCON(CHMOS)0XXX0000B2復(fù)位信號(hào)及其產(chǎn)生RST/VPD密特觸發(fā)器VCCVSS圖 2-12 復(fù)位電路邏輯圖RAMD2D1斯復(fù)位電路3復(fù)位方式8051RESET8051RESET8051VCCVCCVCCVCCVCCVCCCC122FC22FC2 22FR1 20022FRST/VPDRST/VPDRST/VPDR2R1RR21k1k1k1kVSSVSSVSS(a) 上電復(fù)位(b) 按鍵脈沖復(fù)位(c) 按

22、鍵電平復(fù)位圖 2-13 各種復(fù)位電路第3章MSC-51指令系統(tǒng)31MCS-51指令系統(tǒng)概述3.1.1指令格式匯編語言格式為:標(biāo)號(hào):操作碼助記符目的操作數(shù),源操作數(shù);注釋其中,標(biāo)號(hào)是該語句的符號(hào)地址,可根據(jù)需要而設(shè)置。當(dāng)匯編程序?qū)R編語言源程序進(jìn)行匯編時(shí),再以該指令所在的地址值來代替標(biāo)號(hào)。在編程的過程中,適當(dāng)?shù)氖褂脴?biāo)號(hào),使程序便于查詢、修改以及轉(zhuǎn)移指令的編程。標(biāo)號(hào)通常用于轉(zhuǎn)移指令所需的轉(zhuǎn)移地址。標(biāo)號(hào)一般由16個(gè)字符組成,但第一個(gè)字符必須是字母,其余的可以是字母也可以是其他符號(hào)或數(shù)字。標(biāo)號(hào)和操作碼之間用冒號(hào)“:”分開。功能助記符又稱為操作碼。操作碼和操作數(shù)(源操作數(shù)和目的操作數(shù))是指令的核心部分。

23、操作碼使用MCS-51系列單片機(jī)所規(guī)定的助記符來表示,其功能在于告訴單片機(jī)的CPU做何種操作。操作數(shù)分為目的操作數(shù)和源操作數(shù),采用符號(hào)(如寄存器、標(biāo)號(hào)等)或者常量(如立即數(shù)、地址值等)表示。操作碼和目的操作數(shù)之間用空格分隔,而目的操作數(shù)和源操作數(shù)之間用逗號(hào)“,”隔開。在某些指令中可以沒有操作數(shù)。注釋是對(duì)指令的功能或作用的說明,但是注釋不是一個(gè)指令的必要組成部分,可有可無。注釋的主要作用是對(duì)程序段或者某條指令在整個(gè)程序中的作用進(jìn)行解釋和說明,以幫助閱讀、理解和使用源程序。有無注釋對(duì)源程序并無影響,但是如果使用注釋的話,注釋部分一定要用分號(hào)“;”隔開。3.1.2尋址方式1. 寄存器尋址2. 直接尋

24、址3. 寄存器間接尋址4. 立即尋址5. 位尋址6. 變址尋址7. 相對(duì)尋址MSC-51單片機(jī)的指令系統(tǒng)按照指令的功能,可以把MSC-51的111條指令分成五類:l l l l l數(shù)據(jù)傳送類指令(29條) 算術(shù)運(yùn)算類指令(24條) 邏輯操作類指令(24條) 控制轉(zhuǎn)移類指令(17條) 位操作類指令 (17條)第4章MCS-51匯編語言程序設(shè)計(jì)入口入口入口否條件滿足?是否條件滿足?是出口出口出口(a) 順序結(jié)構(gòu)(b) 分支結(jié)構(gòu)(c) 循環(huán)結(jié)構(gòu)基本程序結(jié)構(gòu)P3過程B過程AP2P1過程4.1匯編語言及匯編語言程序設(shè)計(jì)機(jī)器語言(MachineLanguage)是指直接用機(jī)器碼編寫程序、能夠?yàn)橛?jì)算機(jī)直接執(zhí)

25、行的機(jī)器級(jí)語言。機(jī)器碼是一串由二進(jìn)制代碼“0”和“1”組成的二進(jìn)制數(shù)據(jù),其執(zhí)行速度快,但是可讀性極差。機(jī)器語言一般只在簡單的開發(fā)裝置中使用,程序的設(shè)計(jì)、輸入、修改和調(diào)試都很麻煩。匯編語言(AssemblyLanguage)是指用指令助記符代替機(jī)器碼的編程語言。匯編語言程序結(jié)構(gòu)簡單,執(zhí)行速度快,程序易優(yōu)化,編譯后占用存儲(chǔ)空間小,是單片機(jī)應(yīng)用系統(tǒng)開發(fā)中最常用的程序設(shè)計(jì)語言。匯編語言的缺點(diǎn)是可讀性比較差,只有熟悉單片機(jī)的指令系統(tǒng),并具有一定的程序設(shè)計(jì)經(jīng)驗(yàn),才能研制出功能復(fù)雜的應(yīng)用程序。高級(jí)語言(High-LevelLanguage)是在匯編語言的基礎(chǔ)上用自然語言的語句來編寫程序,例如PL/M-51、

26、Franklin C51、MBASIC 51等,程序可讀性強(qiáng),通用性好, 適用于不熟悉單片機(jī)指令系統(tǒng)的的用戶。高級(jí)語言編寫程序的缺點(diǎn)是實(shí)時(shí)性不高,結(jié)構(gòu)不緊湊,編譯后占用存儲(chǔ)空間比較大,這一點(diǎn)在存儲(chǔ)器有限的單片機(jī)應(yīng)用系統(tǒng)中沒有優(yōu)勢(shì)。4.1.3簡單程序設(shè)計(jì)簡單程序也就是順序程序,是最簡單、最基本的程序結(jié)構(gòu),其特點(diǎn)是按指令的排列順序一條條地執(zhí)行,直到全部指令執(zhí)行完畢為止。不管多么復(fù)雜的程序,總是由若干順序程序段所組成的?!纠?.1】雙字節(jié)二進(jìn)制數(shù)求補(bǔ)。本程序?qū)3(高)、R2(低)中的二進(jìn)制定點(diǎn)數(shù)取反加1,便得到其補(bǔ)碼,程序流程圖如圖4- 1所示。圖4- 1 雙字節(jié)二進(jìn)制數(shù)求補(bǔ)程序流程圖程序如下:B

27、INPL:MOVA,R2CPL ADD MOV MOVCPLA A,#01H R2,A A,R3A;低位字節(jié)補(bǔ)碼送R2ADDC A,#00H;高位加進(jìn)位位;高位字節(jié)補(bǔ)碼送R3MOVRETR3,A4.1.4分支程序設(shè)計(jì)在一個(gè)實(shí)際的應(yīng)用程序中,程序不可能始終都是直線執(zhí)行的。要用計(jì)算機(jī)解決某個(gè)實(shí)際問題,往往要求計(jì)算機(jī)能夠做出一些判斷,并根據(jù)不同的判斷結(jié)果做出不同的處理, 即產(chǎn)生不同的分支結(jié)構(gòu)。分支結(jié)構(gòu)程序可根據(jù)程序要求無條件或有條件地改變程序執(zhí)行的順序,選擇新的程序流向。編寫分支結(jié)構(gòu)程序主要在于正確使用轉(zhuǎn)移指令,即無條件轉(zhuǎn)移和條件轉(zhuǎn)移指令?!纠?.2】設(shè)變量X存在VAR單元之中,函數(shù)值y存放在FUN

28、C中,按以下的表達(dá)式給變量y賦值:程序流程圖如圖4- 2所示。圖4- 2 分支程序流程圖程序如下:VAREQU30H31HFUNC EQUSTART:MOVA,VARJZ JNB MOV SJMPPOSI:COMP ACC.7,POSI A,#0FFHCOMPMOVA,#01HFUNC,ACOMP:MOV4.1.5循環(huán)結(jié)構(gòu)程序在程序設(shè)計(jì)過程中,常常遇到反復(fù)執(zhí)行某一段程序的情況,這種情況下采用循環(huán)程序結(jié)構(gòu),構(gòu),可以縮短程序代碼的長度,提高程序的質(zhì)量和運(yùn)行效率。循環(huán)的這四個(gè)部分有兩種情況,如圖4- 3所示。圖4- 3 循環(huán)結(jié)構(gòu)程序流程圖循環(huán)結(jié)構(gòu)程序一般包括以下幾個(gè)部分:(1)置初值。置初值是設(shè)置用

29、于循環(huán)過程工作單元的初始值,例如設(shè)置循環(huán)次數(shù)計(jì)數(shù)器、地址指針初值、存放變量的單元的初值。(2) 循環(huán)體。重復(fù)執(zhí)行的程序段。(3) 循環(huán)修改。在單片機(jī)中,一般用一個(gè)工作寄存器Rn作為計(jì)數(shù)器,并給這個(gè)計(jì)數(shù)器賦初值作為循環(huán)的次數(shù),運(yùn)行程序時(shí),每循環(huán)一次,則對(duì)該計(jì)數(shù)器進(jìn)行修改。(4)循環(huán)控制。判斷循環(huán)控制變量(保存循環(huán)次數(shù)的變量)是否滿足終止值的條件,如果滿足則結(jié)束循環(huán),順序執(zhí)行循環(huán)短一些的程序;如果不滿足,則繼續(xù)重復(fù)執(zhí)行循環(huán)的工作部分,直到達(dá)到循環(huán)結(jié)束條件(死循環(huán)除外)?!纠?.3】求1、2、3N之和(N256)。這是一個(gè)簡單的重復(fù)相加的問題。設(shè)R2為加數(shù)指針, R5為循環(huán)次數(shù)計(jì)數(shù)器,R6為加數(shù)總和

30、的高位字節(jié)寄存器, N保存在內(nèi)部RAM的23H當(dāng)中,加數(shù)總和的高位字節(jié)和低位字節(jié)分別存入23H和24H中。程序流程圖如圖4- 4所示。圖4- 4 例4.3程序流程圖程序如下:ORG MOV CLR MOV MOV0100H R5,23H A R6,#00H R4,#01H;R5N;A清零;R6清零;R4賦值;求和;CY=0即總和小于256,則轉(zhuǎn)移;總和高位加工;修改指針;未完,重復(fù)加;保存總和的高位;保存總和的低位LOOP:ADD A,R4JNC INCNEXT R6R4 R5,LOOP 23H,R624H,ANEXT:INCDJNZ MOV MOV END【例4 . 4 】延時(shí)10 ms 子

31、程序( 設(shè)晶振的頻率為6MHz)。在知道系統(tǒng)的晶振頻率之后,延時(shí)時(shí)間主要與兩個(gè)因素有關(guān):一是內(nèi)循環(huán)中指令的執(zhí)行時(shí)間;二是外循環(huán)時(shí)間常數(shù)(內(nèi)循環(huán)的循環(huán)次數(shù))的設(shè)置。在本例中, 已知晶振頻率為6 MHz, 則可得一個(gè)機(jī)器周期為0.5s,執(zhí)行一條DJNZRn,rel的指令的時(shí)間為兩個(gè)機(jī)器周期即1s,10ms的延時(shí)子程序設(shè)計(jì)如下:DELAY: DELAY0: DELAY1:MOV R5,#100MOV DJNZ DJNZ RETR4,#100 R4,DELAY1 R5,DELAY0第5章MCS-51定時(shí)/計(jì)數(shù)器和中斷系統(tǒng)51MCS-51定時(shí)/計(jì)數(shù)器5.1.18051單片機(jī)定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)與工作原理定

32、時(shí)/計(jì)數(shù)器邏輯結(jié)構(gòu)T1T0TH1TH0微處內(nèi)部總線理工作工作器方式方式TCONTMOD圖 5-1 8051定時(shí)/計(jì)數(shù)器邏輯結(jié)構(gòu)TL0TL15.1.2定時(shí)/計(jì)數(shù)器方式寄存器和控制寄存器TMOD格式如下:表 5-1方式選擇位意義M1 M0工作方式功 能 說 明00方式013位計(jì)數(shù)器01方式116位計(jì)數(shù)器10方式2自動(dòng)再裝入8位計(jì)數(shù)器11方式3定時(shí)器0:分成兩個(gè)8位計(jì)數(shù)器定時(shí)器1:停止計(jì)數(shù)TCON的格式如下TCON8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1IT1IE0IT05.1.3定時(shí)/計(jì)數(shù)器的4種工作方式1.方式0當(dāng)M1M0兩位為00時(shí),定時(shí)/計(jì)數(shù)器被選為工作

33、方式0,其邏輯結(jié)構(gòu)如圖5-2所示。中斷C/ T = 1控制T0 端TR0GATEINT0 端+圖 5-2T0(或T1)方式0的邏輯電路結(jié)構(gòu)TF0TL0(5位)TH0(8位)12C/ T = 0振蕩器2.方式1中斷C/ T = 1控制T0 端TR0GATE+INT0 端T0(或T1)方式1的邏輯電路結(jié)構(gòu)TF0TL0(8位)TH0(8位)12C/ T = 0振蕩器3. 方式2TL0(8位)中斷C/ T = 1控制T0 端重新裝入TR0GATEINT0 端+圖 5-3 T0(或T1)方式2的邏輯電路結(jié)構(gòu)TH0(8位)TF012C/ T = 0振蕩器4.方式31/12 fosc1/12 foscC/

34、T = 0中斷C/ T = 1T0 端控制TR0GATEINT0 端+1/12 fosc中斷TR1圖 5-4T0方式3的邏輯電路結(jié)構(gòu)和T1結(jié)構(gòu)TF1TH0(8位)TF0TL0(8位)12振蕩器5.定時(shí)/計(jì)數(shù)器的初始化由于定時(shí)/計(jì)數(shù)器是可編程的,因此在定時(shí)或計(jì)數(shù)之前要用程序初始化,初始化一般有以下幾個(gè)步驟:(1) 確定工作方式對(duì)方式寄存器TMOD賦值。(2) 預(yù)置定時(shí)或計(jì)數(shù)初值,直接將初值寫入TL0、TH0或TL1、TH1中。(3) 根據(jù)需要對(duì)中斷允許寄存器有關(guān)位賦值, 以開放或禁止定時(shí)/計(jì)數(shù)器中斷。(4) 啟動(dòng)定時(shí)/計(jì)數(shù)器,使TCON中的TR1或TR0置“1”,計(jì)數(shù)器計(jì)按既定的工作方式和初值技

35、術(shù)或定時(shí)。在初始化過程中,要置入定時(shí)或計(jì)數(shù)的初值,要做一點(diǎn)計(jì)算。由于計(jì)數(shù)器是加“1”計(jì)數(shù)器,并在溢出時(shí)產(chǎn)生中斷請(qǐng)求,因此不能直接將計(jì)數(shù)初值置入計(jì)數(shù)器, 而應(yīng)送計(jì)數(shù)初值的補(bǔ)碼數(shù)。設(shè)計(jì)數(shù)器最大計(jì)數(shù)值為M,選擇不同的工作方式最大計(jì)數(shù)值不同。方式0:M=213=8192 方式1:M=216=65536 方式2:M=28=256方式3:M=28=256置入計(jì)數(shù)初值X可這樣計(jì)算:計(jì)數(shù)方式時(shí):X=M-計(jì)數(shù)值(X即為計(jì)數(shù)值的補(bǔ)碼) 定時(shí)方式時(shí):(M-X)*T=定時(shí)值,故X=M-定時(shí)值/T其中T為計(jì)數(shù)周期,是單片機(jī)時(shí)鐘的12分頻,即單片機(jī)機(jī)器周期。當(dāng)晶振為6MHz時(shí),t=2s;當(dāng)晶振12MHz時(shí), T=1s。【

36、例5.1】若單片機(jī)晶振為12MHz,要求產(chǎn)生500s的定時(shí),試計(jì)算X的初值。解:由于T=1s,產(chǎn)生500s定時(shí),則需要“+1”500次, 定時(shí)器方能產(chǎn)生溢出。采用方式0:X=213-(500*10-6/10-6)=7692=1E0CH但方式0的TL0高3位是不用的,都設(shè)為“0”,這1E0CH 應(yīng) 寫 成 : F00CH=1111000001100B實(shí)際上,我們可以看出F00CH去掉了3個(gè)不用的位后, 就是1E0CH,即將F0H裝入TH0,0CH裝入TL0。采用方式1:X=216-(500*10-6/10-6)=65536=FE0CH即將FEH裝入TH1,0CH裝入TL1?!纠?.2】用定時(shí)器1

37、,方式0實(shí)現(xiàn)1s的延時(shí)。解:因方式0采用13位計(jì)數(shù)器,其最大定時(shí)時(shí)間為: 8192*1s=8192s,因此,定時(shí)時(shí)間可選擇為8ms,再循環(huán)125次;或者定時(shí)時(shí)間選擇為5ms,再循環(huán)200次。本例我們選擇前者。定時(shí)時(shí)間選定后,再確定計(jì)數(shù)值為5000, 則定時(shí)器1的初值為X=M-計(jì)數(shù)值=8192-5000=3192=C78H=0110001111000B因13位計(jì)數(shù)器中TL1的高3位未用,應(yīng)填寫0,TH1占高8 位,所以,X的實(shí)際填寫值應(yīng)為X=0110001100011000B=6318H即TH1=63H,TL1=18H,又因采用方式0定時(shí),故TMOD=00H。1s延時(shí)子程序如下:DELAY:MO

38、VR0,#200;置5ms計(jì)數(shù)循環(huán)初值;設(shè)定時(shí)器1為方式0;置定時(shí)器初值MOV MOV MOV SETBTMOD,#00H TH1,#63H TL1,#18H TR1;啟動(dòng)T1;查詢計(jì)數(shù)溢出;未到5ms繼續(xù)計(jì)數(shù);重新置定時(shí)器初值LP1: JBCTF1,LP2SJMPLP1LP2: MOVTH1,#63HMOV DJNZ RETTL1,#18H R0,LP1;未到1s繼續(xù)循環(huán);返回主程序【例5.3】用定時(shí)器1,方式1實(shí)現(xiàn)1s的延時(shí)。DELAY:MOVR0,#20;置50ms計(jì)數(shù)循環(huán)初值;設(shè)定時(shí)器1為方式1;置定時(shí)器初值MOV MOV MOV SETBTMOD,#10H TH1,#3CH TL1,

39、#0B0H TR1;啟動(dòng)T1;查詢計(jì)數(shù)溢出;未到50ms繼續(xù)計(jì)數(shù);重新置定時(shí)器初值LP1: JBCTF1,LP2SJMPLP1LP2:MOVTH1,#3CHMOV DJNZ RETTL1,#0B0H R0,LP1;未到1s繼續(xù)循環(huán);返回主程序【例5.4】用定時(shí)器1,方式2實(shí)現(xiàn)1s的延時(shí)。解:因方式2是8位計(jì)數(shù)器,其最大定時(shí)時(shí)間為:256*1s=256s,為實(shí)現(xiàn)1s的延時(shí),可選擇定時(shí)時(shí)間為250s,再循環(huán)4000次。定時(shí)時(shí)間選定后,可確定計(jì)數(shù)值為250,則定時(shí)器1的初值為:X=M-計(jì)數(shù)值=256- 250=6=6H。采用定時(shí)器1,方式2工作,因此,TMOD=20H。DELAY:MOVR7,#40

40、;置25ms計(jì)數(shù)循環(huán)初值;置250s計(jì)數(shù)循環(huán)初值;設(shè)定時(shí)器1為方式2;置定時(shí)器初值MOV MOV MOV MOV SETB LP1: SJMP LP2: MOV DJNZ RETR6,#100 TMOD,#20H TH1,#06H TL1,#06H TR1;啟動(dòng)T1;查詢計(jì)數(shù)溢出;無溢出則繼續(xù)計(jì)數(shù);未到25ms繼續(xù)循環(huán)JBC LP1 DJNZTF1,LP2R6,LP1R6,#100 R7,LP1;未到1s繼續(xù)循環(huán);返回主程序5.2MCS-51單片機(jī)的中斷系統(tǒng)TCONIEIPIT0=0PX010級(jí)中請(qǐng)求INT0 IE0EX0IT0=1PT010T0TF0ET0 IT1=0 INT1IT1=1PX

41、11IE10EX1低級(jí)中斷請(qǐng)求PT11T1TF10ET1矢量地址TXPS1TIRX0EAESRISCON優(yōu)先級(jí)源允許總允許PC中斷標(biāo)志硬件查詢圖 5-5MCS-51中斷系統(tǒng)內(nèi)部結(jié)構(gòu)示意圖自然優(yōu)先級(jí) 矢量地址高斷PC自然優(yōu)先級(jí)1、中斷源及中斷入口中斷源入口地址外部中斷00003H定時(shí)器T0中斷000BH外部中斷10013H定時(shí)器T1中斷001BH0023H串行口中斷2、外部中斷請(qǐng)求標(biāo)志1TCON中的中斷標(biāo)志2SCON的中斷標(biāo)志3、中斷允許控制4、中斷源優(yōu)先級(jí)的設(shè)定5、中斷響應(yīng)處理過程1中斷響應(yīng)的過程2中斷處理3中斷返回4外部中斷響應(yīng)時(shí)間5.2.4外部中斷源的擴(kuò)展1.用定時(shí)器作外部中斷源MCS-51單片機(jī)有兩個(gè)定時(shí)器,具有兩個(gè)內(nèi)中斷標(biāo)志和外計(jì)數(shù)引腳,如在某些應(yīng)用中不被使用,則它們定時(shí)器中斷可作為外部中斷請(qǐng)求使用。此時(shí),可將定時(shí)器設(shè)置成計(jì)數(shù)方式,計(jì)數(shù)初值可設(shè)為滿量程,則它們的計(jì)數(shù)輸入端T0(P3.4)或T1(P3.5)引腳上發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加1產(chǎn)生溢出甲斷。利用此特性,可把T0腳或T1腳作為外部中斷請(qǐng)求輸入線,而計(jì)數(shù)器的溢出中斷作為外部中斷請(qǐng)求標(biāo)志。【例5.5】將定時(shí)器0擴(kuò)展為外部中斷源n解:將定時(shí)器0設(shè)定為方式2(自動(dòng)恢復(fù)計(jì)數(shù)初值),TH0和TFO的初值均設(shè)置為FFH,允許定時(shí)器0中斷,CPU開放中斷。源程序如下:MOV

溫馨提示

  • 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)論