《片機(jī)系統(tǒng)設(shè)計(jì)》PPT課件
《《片機(jī)系統(tǒng)設(shè)計(jì)》PPT課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《《片機(jī)系統(tǒng)設(shè)計(jì)》PPT課件(330頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、1,單片機(jī)系統(tǒng)設(shè)計(jì)技術(shù),主講教師:栗 華 ,山東大學(xué)信息科學(xué)與工程學(xué)院,大學(xué)生電子設(shè)計(jì)競(jìng)賽培訓(xùn),2,單片機(jī)系統(tǒng)設(shè)計(jì)的重要性:,在工業(yè)測(cè)、控領(lǐng)域中,單片機(jī)作為智能測(cè)控系統(tǒng)的“大腦”,占據(jù)了核心位置的地位。在電子設(shè)計(jì)競(jìng)賽中,往往設(shè)計(jì)的對(duì)象也都是智能測(cè)控系統(tǒng),自然,單片機(jī)系統(tǒng)的設(shè)計(jì)也就具有成了系統(tǒng)設(shè)計(jì)中一個(gè)至關(guān)重要的組成部分。,3,在前期單片機(jī)原理與應(yīng)用課程的基礎(chǔ)上,擴(kuò)展介紹利用單片機(jī)這一智能單元來(lái)設(shè)計(jì)一個(gè)智能電子系統(tǒng)時(shí)所需要的各種接口知識(shí)、單元知識(shí)、和系統(tǒng)實(shí)現(xiàn)時(shí)所需要的各種系統(tǒng)知識(shí) ,使大家不僅學(xué)習(xí)并理解單片機(jī),更要學(xué)會(huì)如何使用單片機(jī)來(lái)構(gòu)建我們自己的應(yīng)用系統(tǒng),讓單片機(jī)按照我們的意圖來(lái)為我們服務(wù)。從
2、而,為大家參加電子設(shè)計(jì)大賽,在規(guī)定的時(shí)間內(nèi)完成智能電子系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)儲(chǔ)備足夠的經(jīng)驗(yàn)知識(shí)和應(yīng)用技能 ,最終能夠在電子設(shè)計(jì)大賽中取得良好的成績(jī),為以后的職業(yè)生涯也能夠奠定良好的基礎(chǔ)。,培訓(xùn)目的:,4,(1 )單片機(jī)基本知識(shí)的回顧,重點(diǎn)是回顧單片機(jī)的內(nèi)部組成結(jié)構(gòu)、特點(diǎn)以及在應(yīng)用單片機(jī)的這些內(nèi)部構(gòu)件時(shí)應(yīng)該注意的問(wèn)題。 (2 )單片機(jī)有關(guān)接口設(shè)計(jì)方法及常用接口芯片介紹,從系統(tǒng)設(shè)計(jì)的角度出發(fā),以功能實(shí)現(xiàn)為依據(jù),分類介紹一些常用的接口設(shè)計(jì)方法。 (3 )單片機(jī)系統(tǒng)設(shè)計(jì)有關(guān)技術(shù),從系統(tǒng)實(shí)現(xiàn)的角度,介紹系統(tǒng)設(shè)計(jì)時(shí)應(yīng)該考慮的一些問(wèn)題,為了使系統(tǒng)能夠長(zhǎng)期可靠地運(yùn)行應(yīng)該采取哪些技術(shù)。,培訓(xùn)的內(nèi)容:,5,第一章
3、單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)基礎(chǔ),一、綜述 1、單片機(jī)系統(tǒng)設(shè)計(jì)的內(nèi)容 智能 應(yīng)用系統(tǒng)的設(shè)計(jì)一般包括單片機(jī)系統(tǒng)設(shè)計(jì)、接口設(shè)計(jì)和多種類型的輔助電路(如:模擬信號(hào)調(diào)理電路、功率驅(qū)動(dòng)電路、電源電路等)設(shè)計(jì)內(nèi)容。而單片機(jī)系統(tǒng)設(shè)計(jì)往往是其中最主要、最復(fù)雜的設(shè)計(jì)部分。,6,2、單片機(jī)的定義與特點(diǎn) 單片機(jī)全稱為單片微型計(jì)算機(jī)(Single Chip Microcomputer),又稱微控制論器(Micro-Controller Unit)或嵌入式控制器(Embedded Controller)。它是將傳統(tǒng)計(jì)算機(jī)的各種基本組成部件(如:CPU、ROM、RAM、并行I/O口、串行I/O口、定時(shí)計(jì)數(shù)器、中斷控制、
4、系統(tǒng)時(shí)鐘和系統(tǒng)總線控制等)微型化并集成到一塊芯片上的微型計(jì)算機(jī)。 單片機(jī)有體積小、集成度高、功能強(qiáng)、功耗低、性能價(jià)格比高、易于實(shí)現(xiàn)各種智能系統(tǒng)。,7,3、單片機(jī)的種類 按總線寬度分成4位單片機(jī)、8位單片機(jī)、16位單片機(jī)、32位單片機(jī)。 (1)4位單片機(jī):主要用于各種小型智能電子設(shè)備如:計(jì)算器、遙控器、玩具控制、電子鐘、簡(jiǎn)單游戲機(jī)、游戲桿等。目前主要集中在日本的一些廠家如:OKI的MSM64164C、MSM64481、NEC的75006x系列、EPSON的SMC62系列等。 (2)8位單片機(jī):用于各種中等智能電子設(shè)備,產(chǎn)品種類最多、功能較強(qiáng)、性價(jià)比最高、應(yīng)用最廣泛。8位單片機(jī)分成兩大類
5、:一類是MCS-51系列及其兼容機(jī),另一類是非MCS-51系列。,8,(a)MCS51系列單片機(jī):特點(diǎn)是結(jié)構(gòu)簡(jiǎn)單、內(nèi)部資源比較豐富,易學(xué)易用、資料齊全、應(yīng)用廣泛,是一種傳統(tǒng)的單片機(jī)。 有: Intel的8031、8051、8751,ATMEL的89C5x系列和89S5x等,WINBOND的W77E5x、W78E5x,PHILIPS的P87LPC7x、P89C5x、P87C5x,ST公司的uPSD系列等。 (b)非MCS51系列單片機(jī):和MCS-51不兼容,有各自的特點(diǎn),如: ATMEL公司的AVR單片機(jī)(常用的是:Atmega32、Atmega64、Atmega128等,特點(diǎn)是:芯片上擁有F
6、lash存儲(chǔ)器,一般不用外部擴(kuò)展程序存儲(chǔ)器. 片內(nèi)有EEPROM也方便了數(shù)據(jù)的保存。采用增強(qiáng)的RISC結(jié)構(gòu),使其具有高速處理能力,在一個(gè)時(shí)鐘周期內(nèi)可執(zhí)行復(fù)雜的指令,每MHz可實(shí)現(xiàn)1MIPS的處理能力. 另外還有一些豐富的外部接口如A/D、PWM、SPI等)。,9, Motorola單片機(jī): 從M6800開始,開發(fā)了廣泛的品種,4位,8位,16位32位的單片機(jī), 8位機(jī)M6805,M68HC05系列,8位增強(qiáng)型M68HC11,M68HC12 , 16位機(jī)M68HC16, 32位機(jī)M683XX. Motorola單片機(jī)的特點(diǎn)之一是在同樣的速度下所用的時(shí)鐘頻率較Intel類單片機(jī)低得多,因而使得高頻
7、噪聲低,抗干擾能力強(qiáng),更適合于工控領(lǐng)域及惡劣的環(huán)境 . Motorola單片機(jī)在家電、汽車電子和通信產(chǎn)品領(lǐng)域應(yīng)用較廣。,10, MicroChip單片機(jī): MicroChip單片機(jī)的主要產(chǎn)品是PIC 16C系列和17C系列8位單片機(jī),CPU采用RISC結(jié)構(gòu),分別僅有33,35,58條指令,采用Harvard雙總線結(jié)構(gòu),運(yùn)行速度快,低工作電壓,低功耗,較大的輸入輸出直接驅(qū)動(dòng)能力,價(jià)格低,小體積. 適用于用量大,檔次低,價(jià)格敏感的產(chǎn)品.在自動(dòng)化設(shè)備,智能儀器儀表, 工業(yè)控制等領(lǐng)域,PIC系列單片機(jī)占據(jù)了主導(dǎo)地位. (3)16位單片機(jī):總線寬度為16位,CPU執(zhí)行速度和效率都比8位單片機(jī)都有很大提高
8、。目前以Intel的MCS-96/196系列、TI公司的MSP430系列、Motorola公司的68HC11為主。主要用于工業(yè)控制、智能儀器儀表、便攜式電子設(shè)備、智能IC卡讀寫系統(tǒng)等領(lǐng)域。,11,(4)32位單片機(jī):32位單片機(jī)是單片機(jī)市場(chǎng)的發(fā)展趨勢(shì),其特點(diǎn)是資源和接口更豐富、內(nèi)部采用RISC架構(gòu)和哈佛總線結(jié)構(gòu),CPU處理速度和處理能力更強(qiáng)、支持基于操作系統(tǒng)的開發(fā),因此能夠?qū)崿F(xiàn)更加復(fù)雜的處理任務(wù)、人機(jī)界面也更靈活。ATMEL、MOTOROLA、SAMSUNG、HITACH等廠家都有32位單片機(jī)產(chǎn)品,這些產(chǎn)品一般以ARM嵌入式處理器內(nèi)核為基礎(chǔ)(ARM公司自己并不生產(chǎn)嵌入式處理器,而是研究和發(fā)展嵌
9、入式處理器的內(nèi)核知識(shí)產(chǎn)權(quán)核,即IP核,然后將IP核的生產(chǎn)和使用許可協(xié)議賣給各IC生產(chǎn)廠家),所以32位單片機(jī)一般都是指ARM系統(tǒng)。,12,二、MCS-51單片機(jī)的內(nèi)部資源,13,ATMEL 51單片機(jī)選型指南,14,1、程序存儲(chǔ)器配置,三、單片機(jī)的存儲(chǔ)器配置,(一)程序存儲(chǔ)器,15,2、與程序存儲(chǔ)器配置有關(guān)的偽指令:,偽指令:指的是匯編程序用的一些控制信息的指令,它們只能被匯編程序所識(shí)別,不是單片機(jī)的CPU可執(zhí)行的指令。,偽指令主要用來(lái)指定程序位置,定義一個(gè)數(shù)據(jù)塊,為中間運(yùn)算結(jié)果保留一部分存儲(chǔ)空間,或者定義一些變量的別名以及表示程序的結(jié)束等。,定位偽指令ORG 格式: 標(biāo)號(hào): ORG m
10、 m是一個(gè)16位二進(jìn)制數(shù),代表地址。 功能:它放在一段程序或數(shù)據(jù)塊的前面,說(shuō)明緊跟其后的程序段或數(shù)據(jù)塊的起始地址就是指令中的16位地址。,16,例如: ORG 0000H AJMP MAIN ORG 0003H AJMP INT0_S ORG 000BH AJMP T0_S ORG 0013H AJMP INT1_S ORG 001BH AJMP T1_S ORG 0023H AJMP SI_S ORG 0100H ;Main program MAIN: MOV P1,#0FEH AJ
11、MP $ INT0_S: RETI,17,3、與常數(shù)表格定義有關(guān)的偽指令:,功能:在程序存儲(chǔ)器從標(biāo)號(hào)開始的連續(xù)單元開始定義一些字節(jié)數(shù)據(jù)單元,用來(lái)存放指令中指出的這些常數(shù)和字符。 例如: ORG 2000H TAB1: DB 30H , 8AH , 7FH , 73 DB 5 , A , BCD,30H,8AH,7FH,49H,35H,41H,42H,43H,44H,2000H,2001H,2002H,2003H,2004H,2005H,2006H,2007H,2008H,(1)定義字節(jié)偽指令DB(Define Byte) 格式:標(biāo)號(hào): DB X1,X2, ,
12、Xn Xi:?jiǎn)巫止?jié)二進(jìn)制、十進(jìn)制、十六進(jìn)制數(shù),或以 括起來(lái)的字符串,數(shù)據(jù)符號(hào)。,18,(2)、定義字偽指令DW(Define Word) 格式:標(biāo)號(hào): DW Y1,Y2,Yn Yn:雙字節(jié)二進(jìn)制、十進(jìn)制、十六進(jìn)制數(shù)。 功能:同DB,不同的是為16位數(shù)據(jù)。執(zhí)行匯編時(shí),機(jī)器會(huì)自動(dòng)按高8位先存入,低8位后存入的格式排列。,例如: ORG 1500H TAB2: DW 1234H , 80H,12H,34H,00H,80H,1500H,1501H,1502H,1503H,19,1、數(shù)據(jù)存儲(chǔ)器配置,(二)數(shù)據(jù)存儲(chǔ)器,20,2、內(nèi)部存儲(chǔ)器的分布,21,(1)工作寄存器區(qū),,,,,00H,20H,
13、2FH,7FH,1FH,30H,80H,FFH,52子系列才有 的RAM區(qū),普通RAM區(qū),位尋址區(qū),工作寄存器區(qū),,,,,,,,,R0,R2,R1,R3,R4,R5,R6,R7,07H,02H,01H,00H,06H,04H,05H,03H,,,,08H,1FH,工作寄存器區(qū)3,工作寄存器區(qū)2,工作寄存器區(qū)1,,,,工作寄存器區(qū)0,0FH,10H,17H,18H,22,片內(nèi)RAM前32個(gè)單元(00H1FH)是工作寄存器區(qū) (由PSW中的RS1,RS0決定),,,,,,,,CY,AC,F0,RS0,OV,P,,RS1,PSW.7,PSW.0,,,PSW.4 PSW.3,例如: SETB PSW.
14、3 ; (PSW.3) 1 CLR PSW.4 ; (PSW.4) 0 其功能是將PSW中的RS0置為1, RS1清0,選擇當(dāng)前工作寄存器區(qū)為1區(qū) 。,23,,,,,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有 的RAM區(qū),普通RAM區(qū),位尋址區(qū),工作寄存器區(qū),27H,22H,21H,20H,26H,24H,25H,23H,28H,,,2FH,單元地址,07 06 05 04 03 02 01 00,,,,,,,,0F 0E 0D 0C 0B 0A 09 08,,,,,,,,17 16 15 14 13 12 11 10,,,,,,,,1F 1E
15、1D 1C 1B 1A 19 18,,,,,,,,27 26 25 24 23 22 21 20,,,,,,,,2F 2E 2D 2C 2B 2A 29 28,,,,,,,,37 36 35 34 33 32 31 30,,,,,,,,3F 3E 3D 3C 3B 3A 39 38,,,,,,,,47 46 45 44 43 42 41 40,,,,,,,,,,7F 7E 7D 7C 7B 7A 79 78,,,,,,,,位地址,,總共128個(gè)可按位尋址的位,片內(nèi)RAM中有128個(gè)可按位尋址的位。 位地址:00H7FH 分布在:20H2FH單元,(2)位尋址區(qū),24,位操作又稱布爾操作,它是
16、以位為單位進(jìn)行的各種操作。 MCS-51單片機(jī)內(nèi)部設(shè)置了一個(gè)位處理器(布爾處理機(jī)),它有自己的累加器C(PSW中的進(jìn)位標(biāo)志位CY),自己的存儲(chǔ)器(即:內(nèi)部RAM中的20H2FH共128個(gè)位,以及特殊功能寄存器中的可以進(jìn)行位尋址的各個(gè)位),同樣,也有相應(yīng)的位操作指令集,共17條,用來(lái)完成位傳送,位運(yùn)算和基于位的轉(zhuǎn)移。 位操作指令中的位地址有4 種表示形式,以下表示的都是PSW中的位5 :,直接地址方式(如,0D5H);,點(diǎn)操作符方式(如,0D0H.5、PSW.5等);,位名稱方式(如,F(xiàn)0,RS0,RS1);,偽指令定義方式。,25,格式: 位地址別名 BIT 位地址 功能:使程序中的所出現(xiàn)
17、的位地址別名均表示BIT后面的位地址。一般放置在程序開始的位置。,例如: LEFT BIT P1.0 RIGHT BIT P1.1 ORG 0100H SETB LEFT ;左轉(zhuǎn) LCALL WAIT30S ;等待30秒 CLR LEFT SETB RIGHT;右轉(zhuǎn),位地址賦值偽指令BIT,26,(3)普通RAM區(qū),,,,,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有 的RAM區(qū),普通RAM區(qū),位尋址區(qū),工作寄存器區(qū),27,堆棧: 在片內(nèi)RAM中,常常要指定一個(gè)專門的區(qū)域來(lái)存放某些特別的數(shù)據(jù),它遵循順序
18、存取和后進(jìn)先出(LIFO/FILO)的原則,這個(gè)RAM區(qū)叫堆棧。,功用: 1)子程序調(diào)用和中斷服務(wù)時(shí)CPU自動(dòng)將當(dāng)前PC 值壓棧保存,返回時(shí)自動(dòng)將PC值彈棧。 2)保護(hù)現(xiàn)場(chǎng)/恢復(fù)現(xiàn)場(chǎng) 3)數(shù)據(jù)傳輸,28,,,,,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有 的RAM區(qū),普通RAM區(qū),位尋址區(qū),工作寄存器區(qū),SP棧頂,,,,,,下一個(gè)進(jìn)棧的數(shù)據(jù)將存在此,,數(shù)據(jù)進(jìn)棧,已經(jīng)進(jìn)棧的數(shù)據(jù)存放在此,,,,,,,初始 SP,,,復(fù)位后 SP=07H,數(shù)據(jù)進(jìn)棧時(shí):首先SP自動(dòng)增 1 ,放進(jìn)數(shù)據(jù), SP仍指著棧頂,堆棧區(qū)由特殊功能寄存器堆棧指針SP管理 堆棧區(qū)可以安排在 RA
19、M區(qū)任意位置,一般不安排在工作寄存器區(qū)和可按位尋址的RAM區(qū),通常放在RAM區(qū)的靠后的位置。 89C51的堆棧一般設(shè)在30H7FH的范圍內(nèi)。,入棧,29,從堆棧取出數(shù)據(jù)時(shí):取出的數(shù)據(jù)是最近放進(jìn)去的一個(gè)數(shù)據(jù),也就是當(dāng)前棧頂?shù)臄?shù)據(jù)。然后SP再自動(dòng)減1,仍指著棧頂,,,,,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有 的RAM區(qū),普通RAM區(qū),位尋址區(qū),工作寄存器區(qū),SP棧頂,,,,,,當(dāng)前要出棧的數(shù)據(jù),,數(shù)據(jù)出棧,SP-1指向下一個(gè)將要出棧的數(shù)據(jù),,,,,,初始 SP,,,出棧,30,特殊功能寄存器(SFR) ,又稱專用寄存器。它專用于控制、管理單片機(jī)內(nèi)部算術(shù)邏輯
20、部件、并行I/O口鎖存器、串行口數(shù)據(jù)緩沖器、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)等功能模塊的工作,SFR的地址空間為80HFFH。 MCS-51有18個(gè)專用寄存器,其中3個(gè)為雙字節(jié)寄存器,共占21個(gè)字節(jié)。MCS-52有21個(gè)專用寄存器,其中5個(gè)為雙字節(jié)寄存器,共占26個(gè)字節(jié)。SFR中共有12個(gè)專用寄存器可以位尋址,他們的字節(jié)地址可以被8整除,共有93個(gè)可尋址位。,(4)特殊功能寄存器區(qū),31,注意: 除A、B,DPTR 外,其他SFR只能采用直接尋址方式。如:MOV A,P0。對(duì)于內(nèi)部RAM具有高128字節(jié)即:80HFFH的MCS-52單片機(jī)而言,這些RAM與SFR地址重迭,只能用寄存器間接尋址訪問(wèn),而
21、不能用直接尋址方式訪問(wèn)。,32,33,四、CPU時(shí)序及有關(guān)概念,一條指令可以分解為若干基本的微操作,而這些微操作所對(duì)應(yīng)的脈沖信號(hào),在時(shí)間上有嚴(yán)格的先后次序,這些次序就是計(jì)算機(jī)的時(shí)序。時(shí)序是非常重要的概念,它指明單片機(jī)內(nèi)部以及內(nèi)部與外部互相聯(lián)系所遵循的規(guī)律。 震蕩周期: 指為單片機(jī)提供定時(shí)信號(hào)的振蕩源的周期。 時(shí)鐘周期: 又稱狀態(tài)周期或S周期,因?yàn)闀r(shí)鐘發(fā)生器就是上述的2分頻觸發(fā)器,所以它是振蕩周期的兩倍,,34,, 機(jī)器周期:一個(gè)機(jī)器周期由6個(gè)狀態(tài)(12個(gè)振蕩脈沖)組成,即6個(gè)時(shí)鐘貯存器期,12個(gè)振蕩周期。 指令周期: 指執(zhí)行一條指令所占用的全部時(shí)間,一個(gè)指令周期通常含有14個(gè)機(jī)器周期。,3
22、5,單片機(jī)各種周期的相互關(guān)系,若外接晶振為12MHZ,MCS-51單片機(jī)的四個(gè)周期的具體值為: 振蕩周期=1/12s; 時(shí)鐘周期=1/6s; 機(jī)器周期=1s; 指令周期=14s;,36,五、單片機(jī)的存儲(chǔ)器訪問(wèn),(一)尋址方式,尋址方式:指令中的操作數(shù)給出參與運(yùn)算的數(shù)和數(shù)的地址,確定操作數(shù)地址的方式為尋址方式。尋址方式的多少是計(jì)算機(jī)功能強(qiáng)弱的重要標(biāo)志。 MCS-51指令尋址方式主要有7種: (1)寄存器尋址 (2)立即尋址 (3) 寄存器間接尋址 (4)直接尋址 (5)基址寄存器變址寄存器間接尋址 (6)相對(duì)尋址 (7)位尋址,37,1、寄存器尋址,指令
23、直接給出該寄存器名稱,該寄存器的內(nèi)容就是操作數(shù),這種尋址方式就是寄存器尋址。采用寄存器尋址可以獲得較高的傳送和運(yùn)算速度。,寄存器尋址方式尋址范圍: (1)內(nèi)部RAM中的32個(gè)工作寄存器R0R7; (2)A、B、CY(或C)、DPTR;,例如: MOV A,R0 ;(A)(R0) MOV DPTR , #1234H,38,2、立即尋址,操作數(shù)以常數(shù)的形式出現(xiàn),直接跟在操作碼后面,以指令字節(jié)的形式存放在ROM中,由于不需再去寄存器或存儲(chǔ)器中去取數(shù),可以從指令機(jī)器碼中立即得到,因此,這種尋址方式為立即尋址。 立即數(shù)前面冠以“#”號(hào)表示這是一個(gè)數(shù),而不是地址。立即數(shù)可以是8位,也可以是16位。如:
24、 MOVA,#0FH MOV P1,#00000111B MOV R3,#18 立即數(shù)主要用來(lái)給寄存器或存儲(chǔ)器賦初值,并且只能用于源操作數(shù),而不能用作目的操作數(shù)。,39,3、直接尋址,在指令直接給出操作數(shù)所在的存儲(chǔ)單元的地址的尋址方式稱為直接尋址。,直接尋址的尋址范圍: (1)內(nèi)部數(shù)據(jù)存儲(chǔ)器的低128字節(jié),00H7FH;如:MOV A,40H;(A) (40H) (2)特殊功能寄存器,注意除A、B,DPTR 外,其他SFR只能采用直接尋址方式。如:MOV A,P0。,40,4、間接尋址,指令中指出某一個(gè)寄存器的內(nèi)容作為操作數(shù)的地址的尋址方法叫做寄存器間接尋址。寄存器間接尋址以符
25、號(hào)“”指明。,其尋址范圍: (1)以R0,R1為地址指針,尋址內(nèi)部RAM 007FH 和外RAM的低256B;如:MOV A,R0 (2)以DPTR,或R0、R1(須用P2指定高8位地址)為地址指針,尋址外部RAM空間和擴(kuò)展I/O口。 如:MOVX A,R0 ;訪問(wèn)外部RAM 00HFFH MOVX DPTR,A ;訪問(wèn)外部RAM 0000HFFFFH,41,5、變址尋址,以基址寄存器(PC、 DPTR)和變址寄存器(A)的內(nèi)容作無(wú)符號(hào)數(shù)相加,形成16位地址,該地址就是操作數(shù)所在的地址,這種尋址方式就是變址尋址。變址尋址常用來(lái)訪問(wèn)程序存儲(chǔ)器,完成查詢表格功能
26、。兩種形式: MOVC A,A+PC ;(A)((A)+(PC)) MOVCA,A+DPTR ;(A)((A)+(DPTR)),例: MOVC A,A+DPTR,42,6、相對(duì)尋址,指令中給定地址的相對(duì)偏移量rel,以PC當(dāng)前值為基地址,加上rel所得結(jié)果為操作數(shù)實(shí)際地址的尋址方式為相對(duì)尋址。用于程序存儲(chǔ)器訪問(wèn),常出現(xiàn)在相對(duì)轉(zhuǎn)移指令中。 當(dāng)前PC值=PC源地址+轉(zhuǎn)移指令字節(jié)數(shù) 目的地址=當(dāng)前PC值+rel。 rel:有符號(hào)數(shù),單字節(jié)補(bǔ)碼,-128+127。負(fù)數(shù)表示向上轉(zhuǎn)移,正數(shù)表示向下轉(zhuǎn)移。 例如:JZ 08H,表示累加器A 為零時(shí),從源地址(設(shè)為:2050H) 向下轉(zhuǎn)移10個(gè)
27、字節(jié)。,43,7、位尋址,MCS-51中具有一些可以直接尋址的位,并且可以對(duì)這些位進(jìn)行操作,指令中直接給出位的地址的尋址方式為位尋址。位尋址空間是:內(nèi)部RAM中的20H2FH共16個(gè)字節(jié)128個(gè)位和SFR中的93個(gè)位。 例如: SETB PSW.3 ; (PSW.3) 1 其功能是將PSW中的RS0置為1。指令代碼為:D2H D3H,其中的第2個(gè)字節(jié)D3H就是PSW.3的位地址。,44,(二)程序存儲(chǔ)器訪問(wèn)的有關(guān)指令--ROM查表指令,(1) DPTR內(nèi)容為基址,程序存儲(chǔ)器除存放程序外,還可存放一些常數(shù),這些常數(shù)的數(shù) 據(jù)結(jié)構(gòu)一般稱為表格。查表指令就是把存放在程序存儲(chǔ)器(ROM)中的表格
28、數(shù)據(jù)讀出,傳送到累加器A 的指令。查表指令采用變址尋址方式,共有2條指令,這兩條指令都是單字節(jié)雙周期指令。,MOVC A,A+DPTR ;A ((A)+(DPTR)),45,(2) PC 內(nèi)容為基址,MOVC A,A+PC ;A ((A)+(PC)),取出該單字節(jié)指令后PC的內(nèi)容增1,以增1后的當(dāng)前值去執(zhí)行16位無(wú)符號(hào)數(shù)加法,將獲得的基址與變址之和作為16位的程序存儲(chǔ)器地址。然后將該地址單元的內(nèi)容傳送到累加器A。指令執(zhí)行后PC的內(nèi)容不變。,優(yōu)點(diǎn): 不改變PC的狀態(tài),根據(jù)A的內(nèi)容取表格常數(shù)。 缺點(diǎn):(a)表格只能存放在查表指令以下的256個(gè)單元內(nèi)。,(b)當(dāng)表格首地址與本指令間有其他指令時(shí),須用
29、調(diào)整偏移量,調(diào)整量為下一條指令的起始地址到表格首址之間的字節(jié)數(shù)。,46,補(bǔ)充:?jiǎn)纹瑱C(jī)非線性運(yùn)算快速實(shí)現(xiàn)的基本方法,(1)查表法,查表是非線性運(yùn)算和非數(shù)值計(jì)算數(shù)據(jù)處理中常用的方法之一。利用查表可以免去復(fù)雜的計(jì)算,節(jié)省時(shí)間,具有靈活性強(qiáng)、運(yùn)行速度高及實(shí)時(shí)性好的特點(diǎn)。表分為有無(wú)序表和有序表;一維表、二維表、三維表及多維表等。常用的表格一般是線性表,這種表中的數(shù)據(jù)元素具有線性一維關(guān)系。查表就是根據(jù)變量x,在表格中查找函數(shù)值y,使得y = f(x)。換句話說(shuō),查表就是根據(jù)輸入值來(lái)確定表的地址,然后從該地址中找出相應(yīng)的函數(shù)值。 采用這種方法首先要根據(jù)自變量的變化范圍和精度要求制作一個(gè)表格,把有關(guān)數(shù)據(jù)固化
30、在程序存儲(chǔ)器中,一旦表格內(nèi)容確定之后就不能再改變。然后編寫查表程序,通過(guò)輸入值來(lái)尋找表格中的相應(yīng)值。這樣就使運(yùn)算量變的較少,甚至完全不用進(jìn)行運(yùn)算,就可獲得滿足精度要求的輸出。因此在數(shù)字信號(hào)處理中,特別是在智能化測(cè)試儀表和數(shù)字發(fā)動(dòng)機(jī)控制應(yīng)用中,查表法是經(jīng)常使用的一種操作。,47,(2)查表法舉例,【例3.5 】累加器A中存有壓縮的BCD碼,將其轉(zhuǎn)化為八段顯示碼,并將結(jié)果送至P1口(送高位)和P2口(送低位)。如A中數(shù)據(jù)為48H,則P1口連接的數(shù)碼管顯示4,P2口連接的數(shù)碼管顯示8(假設(shè)所使用的數(shù)碼管都是共陽(yáng)極數(shù)碼管)。,分析:這是一個(gè)典型的查表程序。所顯示數(shù)字與所輸出的二進(jìn)制數(shù)(顯示碼)之間的關(guān)
31、系為:,48,參考程序?yàn)椋? ORG 0000h SJMP START ORG 0030H START: MOV R0,A ;備份BCD數(shù) ANL A,#0FH ;取低位 MOV DPTR,#TABLE MOVC A,A+DPTR ;取低位顯示碼 MOV P2,A ;從P2口輸出顯示碼 MOV A,R0 ;恢復(fù)BCD數(shù) ANL A,#0F0H ;取高位 SWAP A MOVC A,A+DPTR ;取高位顯示碼 MOV P1,A ;從P1口輸出顯示碼 SJMP $ TABLE: DB 3FH,06H,5BH,4FH,66H DB
32、 6DH,7DH,07H,7FH,6FH END,49,(2)插值法,在智能儀表和數(shù)字發(fā)動(dòng)機(jī)控制應(yīng)用中,表格插值是經(jīng)常要做的一種操作,對(duì)一些計(jì)算精度要求不高但運(yùn)行速度要求較高的場(chǎng)合,應(yīng)避開復(fù)雜的計(jì)算,盡量采用通用性強(qiáng)、實(shí)時(shí)性好的分段線性插值法或二次拋物線插值法來(lái)逼近真實(shí)函數(shù)值。,50,分段線性插值法:,假設(shè):已知函數(shù)Y= f(X)的曲線如右圖 所示。按一定要求將X軸分為x0、x1、 xi、xi+1、 xn,則對(duì)應(yīng)的函數(shù)輸出為y0、y1、 yi、yi+1、 yn,它們都是已知的。把曲線上兩兩相臨的分段點(diǎn)用直線連接起來(lái),如圖中虛線所示,當(dāng)n取得足夠大時(shí),這些虛線可以近似的代替原曲線,這就是一般
33、分段線性插值法的原理。顯然,對(duì)于落在(xi,xi+1)區(qū)間內(nèi)的輸入x,有相應(yīng)的輸出近似值:,Y =yi + (x-xi) =yi + ki(x-xi),51,因此,可將n點(diǎn)輸入輸出對(duì)照值儲(chǔ)存在程序存儲(chǔ)器內(nèi),當(dāng)輸入量x落在第i段內(nèi)時(shí),可通過(guò)三個(gè)步驟算出相應(yīng)的輸出值, 第一步:查表,在區(qū)間xi,xi+1上找到點(diǎn)x的位置,計(jì)算x-xi ; 第二步:計(jì)算ki; 第三步:求得結(jié)果y= yi+ ki(x- xi)。 顯然,采用線性插值逼近法時(shí),只要分段數(shù)n取得足夠大,就可以獲得要求的精度。一般的,只要分段點(diǎn)取得合理,分段數(shù)愈多,則逼近精度愈高,但同時(shí)所要求的計(jì)算機(jī)內(nèi)存容量也將增加。
34、 因此,應(yīng)該根據(jù)精度要求和函數(shù)曲線的斜率及曲率大小來(lái)決定分段點(diǎn)的選取。只要給定了允許誤差和函數(shù)的理論計(jì)算公式,就可以求得合理的分段點(diǎn),使得既滿足精度要求又盡可能地減少分段數(shù)目。,52,線性插值節(jié)點(diǎn)選取的一般方法,采用分段線性插值近似算法時(shí),首先要考慮如何選取插值節(jié)點(diǎn)的問(wèn)題。解決這一問(wèn)題的出發(fā)點(diǎn)是:在滿足精度要求的前提下,使插值節(jié)點(diǎn)數(shù)目減至最少,從而使表格存儲(chǔ)器的容量減少,節(jié)省硬件資源,同時(shí)使插值搜索過(guò)程加快。,(a)固定步長(zhǎng)選取法 固定步長(zhǎng)選取法就是沿X軸等距離地選取插值節(jié)點(diǎn),又稱為等距選取法。采用固定步長(zhǎng)的插值節(jié)點(diǎn)時(shí),可以減少表格的長(zhǎng)度,僅存儲(chǔ)xmin、xmax、n值以及縱坐標(biāo)上各節(jié)點(diǎn)的函
35、數(shù)yi值。 該方法的主耍缺點(diǎn)是,當(dāng)被逼近函數(shù)的曲率或斜率變化較大時(shí),為了使曲率或斜率較大的區(qū)域不超差,插值間距需取得較小。因而插值節(jié)點(diǎn)數(shù)將大大增加,使表格變長(zhǎng),運(yùn)行也變長(zhǎng)。所以,固定步長(zhǎng)插值法適用于非線性程度不大的函數(shù)。,53,(b)非固定步長(zhǎng)選取法 非固定步長(zhǎng)選取法根據(jù)函數(shù)曲線形狀的變化而修正插值間距的大小,又稱為非等距選取法。對(duì)于非線性程度較大的函數(shù),插值節(jié)點(diǎn)數(shù)可以大大減少,但是在表格中,需要對(duì)每個(gè)節(jié)點(diǎn)存放三個(gè)常教xi 、yi 和ki ,顯然,表格的長(zhǎng)度較長(zhǎng),占用的存儲(chǔ)單元較多。當(dāng)然也可以在表格中只存儲(chǔ)xi 、yi這兩個(gè)常數(shù),然后在插值過(guò)程中再去計(jì)算ki值,但這樣作增加了運(yùn)算量,使運(yùn)行速
36、度減慢,這在某些應(yīng)用場(chǎng)合是不允許的。,54,55,(三)外部數(shù)據(jù)存儲(chǔ)器訪問(wèn)的有關(guān)指令,MCS-51單片機(jī)CPU對(duì)片外擴(kuò)展的數(shù)據(jù)存儲(chǔ)器RAM或I/O接口進(jìn)行數(shù)據(jù)傳送的指令。采用寄存器間接尋址,通過(guò)累加器A來(lái)完成。 片外數(shù)據(jù)的傳送是通過(guò)P0口和P2口配合來(lái)完成的,其中P2口輸出高8位地址,P0口分時(shí)輸出低8位地址和數(shù)據(jù)。這類數(shù)據(jù)傳送指令共有4條指令,其中2條讀指令,2條寫指令,這4條指令都是單字節(jié)雙周期指令。,56,(四)堆棧操作指令,棧頂?shù)奈恢茫ǖ刂罚┯蓷V羔楽P指示(即SP的內(nèi)容是棧頂?shù)牡刂罚?。?0C51中,堆棧的生長(zhǎng)方向是向上的(地址增大)。系統(tǒng)復(fù)位時(shí),SP的內(nèi)容為07H。通常用戶應(yīng)在系
37、統(tǒng)初始化時(shí)對(duì)SP重新設(shè)置(SP的值越小,堆棧的深度越深) 。 堆棧操作有進(jìn)棧和出棧操作,即壓入和彈出數(shù)據(jù)。常用于現(xiàn)場(chǎng)保護(hù)和恢復(fù)。這類指令共有2條,這2條指令都是雙字節(jié)雙周期指令。,57,六、MCS-51單片機(jī)的匯編指令簡(jiǎn)介,(一)指令分類,1、按指令字節(jié)數(shù)分類,MCS-51指令含有的操作碼和操作數(shù)都有相應(yīng)的二進(jìn)制代碼,根據(jù)指令包含的字節(jié)數(shù)的多少不同,單片機(jī)指令系統(tǒng)(共111條指令)分成單字節(jié)指令(49條) 、雙字節(jié)指令(45條)和三字節(jié)指令(17條) 。,2、按指令的執(zhí)行時(shí)間分類,單片機(jī)指令系統(tǒng)(共111條指令)根據(jù)指令執(zhí)行的時(shí)間長(zhǎng)短分類,可以分成: (1) 單周期指令(64條)
38、 (2) 雙周期指令(45條) (3) 四周期指令(只有乘除2條)。,58,3、按指令的功能分類,單片機(jī)指令系統(tǒng)(共111條指令)根據(jù)指令所完成的功能分類,可以分成: (1) 數(shù)據(jù)傳送類指令(28條) (2) 算術(shù)運(yùn)算類指令(24條) (3) 邏輯運(yùn)算及移位類指令(25條) (4) 控制轉(zhuǎn)移類指令(17條) (5) 位操作(布爾操作)類指令(17條),59,(二)指令簡(jiǎn)介,1、數(shù)據(jù)傳送類指令,數(shù)據(jù)傳送類指令一般不影響程序狀態(tài)字PSW寄存器。只有在往累加器A中傳送數(shù)時(shí)有可能影響PSW的奇偶位P,其它位不受影響。當(dāng)然,往PSW寄存器里面?zhèn)魉蛿?shù)據(jù)肯定影響PS
39、W。 傳送類指令可以分成兩大類。一是采用MOV操作符,稱為一般傳送指令;二是采用非MOV操作符,稱為特殊傳送指令。,60,61,,MCS-51單片機(jī)一般數(shù)據(jù)傳送指令數(shù)據(jù)傳遞關(guān)系圖,62,立即數(shù)可以為累加器A、寄存器Rn和DPTR、直接尋址或間接尋址的RAM賦初值,只能作為源操作數(shù),不能作為目的操作數(shù)。 累加器A可以和寄存器Rn、直接尋址或間接尋址的RAM之間相互賦值,既可以作為源操作數(shù),也可以作為目的操作數(shù)。 直接尋址的RAM可以和累加器A、寄存器Rn、直接尋址或間接尋址的RAM之間相互賦值,既可以作為源操作數(shù),也可以作為目的操作數(shù)。 間接尋址的RAM可以和累加器A、直接尋址的RAM之間相互
40、賦值,既可以作為源操作數(shù),也可以作為目的操作數(shù)。但不能和寄存器Rn與間接尋址的RAM之間相互賦值。 寄存器Rn可以和累加器A、直接尋址的RAM之間相互賦值,既可以作為源操作數(shù),也可以作為目的操作數(shù)。但不能和寄存器Rn與間接尋址的RAM之間相互賦值。,63,特殊數(shù)據(jù)傳送指令,64,2、算術(shù)運(yùn)算類指令,包括、、、、加1、減1、十進(jìn)制調(diào)整指令,共有24條。,65,66,算術(shù)運(yùn)算類指令一般影響PSW中的CY、AC、OV、P 標(biāo)志位。進(jìn)位(借位)標(biāo)志CY為無(wú)符號(hào)整數(shù)的多字節(jié)加法、減法、移位等操作提供了方便;溢出標(biāo)志OV可方便的控制補(bǔ)碼運(yùn)算;輔助進(jìn)位標(biāo)志AC用于BCD碼運(yùn)算。,67,加減 1 指令僅 IN
41、C A、 DEC A 影響P標(biāo)志(即使有進(jìn)位或借位,CY也不變)。其余指令都不影響標(biāo)志位的狀態(tài)。,DA A指令的功能是對(duì)累加器A中剛進(jìn)行的兩個(gè)BCD碼的加法的結(jié)果進(jìn)行十進(jìn)制調(diào)整(加6修正) ,只影響CY位。該指令的使用條件:,(1)只能緊跟在加法指令(ADD/ADDC)后進(jìn)行 (2)兩個(gè)加數(shù)必須已經(jīng)是BCD碼 (3)只能對(duì)累加器A中結(jié)果進(jìn)行調(diào)整,68,DIV AB指令的功能是將累加器A中的無(wú)符號(hào)8位二進(jìn)制數(shù)除以寄存器B中的無(wú)符號(hào)8位二進(jìn)制數(shù) ,商的整數(shù)部分存放在累加器A中,余數(shù)部分存放在寄存器B中。當(dāng)除數(shù)為0時(shí),則結(jié)果的A和B的內(nèi)容不定,且溢出標(biāo)志位(OV)=1。而標(biāo)志CY總是被清0。,MUL
42、 AB指令的功能是將累加器A與寄存器B中的無(wú)符號(hào)8位二進(jìn)制數(shù)相乘 ,乘積的低8位留在累加器A中,高8位存放在寄存器B中。當(dāng)乘積大于FFH時(shí),溢出標(biāo)志位(OV)=1。而標(biāo)志CY總是被清0。,69,3、邏輯運(yùn)算和循環(huán)移位類指令,70,71,邏輯“與”指令常常用于屏蔽字節(jié)中的某些位。若清除某位,則用“0”與該位進(jìn)行邏輯“與”,若保留某位,則用“1”與該位進(jìn)行邏輯“與”。,邏輯“或”指令常常用于使字節(jié)中的某些位置“1”。若置“1”某位,則用“1”與該位進(jìn)行邏輯“或”,若保留某位,則用“0”與該位進(jìn)行邏輯“或”。,邏輯“異或”指令常用于使字節(jié)中的某些位取反。若用“1”與某位進(jìn)行邏輯“異或”則該位取反 ,
43、若保留某位,則用“0”與該位進(jìn)行邏輯“異或”。還可以利用異或指令對(duì)某個(gè)單元進(jìn)行自身異或,以實(shí)現(xiàn)清零操作。,邏輯運(yùn)算指令(共18條)可以完成與、或、異或、清0和取反操作,當(dāng)以累加器A為目的操作數(shù)時(shí),對(duì)P標(biāo)志有影響。,72,A7,A0,,,,,,,,A7,A0,,,,,,,,CY,,,RR A,RRC A,A7,A0,,,,,,,,A7,A0,,,,,,,,CY,,,RL A,RLC A,右移:,左移:,使累加器A的各位逐位左移1位相當(dāng)于原內(nèi)容乘2;使累加器A的各位逐位右移1位相當(dāng)于原內(nèi)容除2;預(yù)先清零CY,采用帶進(jìn)位位的左移和右移,能夠保留乘除產(chǎn)生的進(jìn)位和余數(shù) 。,73,4、控制轉(zhuǎn)移類指令,控制
44、程序的轉(zhuǎn)移要利用轉(zhuǎn)移指令。MCS-51的轉(zhuǎn)移指令(共17條)分無(wú)條件轉(zhuǎn)移、條件轉(zhuǎn)移及子程序調(diào)用與返回等。利用這些控制轉(zhuǎn)移類指令可以方便地實(shí)現(xiàn)程序的向前、向后跳轉(zhuǎn),并根據(jù)條件分支運(yùn)行、循環(huán)運(yùn)行、調(diào)用子程序等。,74,75,AJMP指令的轉(zhuǎn)移范圍為AJMP下面一條指令的存儲(chǔ)地址相同的2KB區(qū)間內(nèi),可以向前也可以向后,指令的執(zhí)行不影響PSW的狀態(tài)標(biāo)志位。,SJMP rel ,rel 是一個(gè)帶符號(hào)的偏移字節(jié)數(shù)(2的補(bǔ)碼),取值范圍為 128 127 (00H7FH對(duì)應(yīng)表示0 127,80HFFH對(duì)應(yīng)表示1281)。負(fù)數(shù)表示反向轉(zhuǎn)移,正數(shù)表示正向轉(zhuǎn)移。,JMP A+DPTR指令具有散轉(zhuǎn)功能,可以代替許多
45、判別跳轉(zhuǎn)指令。其轉(zhuǎn)移地址由數(shù)據(jù)指針DPTR的16位數(shù)作為基址和累加器A的8位數(shù)作為相對(duì)偏移量進(jìn)行無(wú)符號(hào)數(shù)相加形成,并將相加結(jié)果直接裝入PC。該指令執(zhí)行時(shí)對(duì)標(biāo)志位無(wú)影響。 該指令常用于多分支轉(zhuǎn)移。,76,散轉(zhuǎn)程序舉例:,【例3.21】 根據(jù)R0的值轉(zhuǎn)向7個(gè)分支程序。 R0=60,轉(zhuǎn)向SUB6;,分析:,程序流程如下圖所示。,77,參考程序如下: ORG 2000H MOVDPTR,#TAB;取轉(zhuǎn)移指令表首地址 MOV A,R0 ;取數(shù) MOV B,#10 DIV AB ;A10,商在A中 CLR C RLC A ;A2A JMP A+DPTR ;PC A+DPTR TAB:
46、 AJMP SUB0 ;轉(zhuǎn)移指令表 AJMP SUB1 AJMP SUB2 AJMP SUB6,78,RET指令的功能是從堆棧中彈出由調(diào)用指令壓入堆棧保護(hù)的斷點(diǎn)地址,并送入指令計(jì)數(shù)器PC,從而結(jié)束子程序的執(zhí)行。程序返回到斷點(diǎn)處繼續(xù)執(zhí)行。,RETI指令是專用于中斷服務(wù)程序返回的指令,除正確返回中斷斷點(diǎn)處執(zhí)行主程序以外,并有清除內(nèi)部相應(yīng)的中斷狀態(tài)寄存器(以保證正確的中斷邏輯)與中斷優(yōu)先,開放低級(jí)中斷的功能。,79,5、位操作類指令,80,【例3.18】利用位邏輯指令,模擬下圖3.11所示的邏輯電路功能。,位操作程序舉例:,,實(shí)現(xiàn)該功能的程序如下: PR2: MOV C,P
47、1.1 ;(CY) (P1.1) ORL C, P1.2 ;(CY) (P1.1)V (P1.2) ,得出A點(diǎn)邏輯狀態(tài) ANL C, P1.0 ;(CY) (P1.0)A點(diǎn)狀態(tài) CPL C ; 取反,得出B點(diǎn)邏輯狀態(tài) MOV F0, C ;F0內(nèi)暫存B點(diǎn)狀態(tài) MOV C,P1.3 ;(CY) (P1.3) ANL C, P1.4 ;(CY) (P1.3)(P1.4) CPL C ; 取反,得出C點(diǎn)邏輯狀態(tài) ORL C, F0 ;B點(diǎn)狀態(tài)與C點(diǎn)狀態(tài)進(jìn)行邏輯或 MOV P1.5, C ;運(yùn)算結(jié)果送入P1.5 RET,81,七、MCS-51單片機(jī)的輔助
48、電路,單片機(jī)的復(fù)位狀態(tài),82,上電復(fù)位電路和開關(guān)復(fù)位組合電路,83,單片機(jī)的時(shí)鐘電路 內(nèi)部時(shí)鐘方式 、外接時(shí)鐘方式,84,八、MCS-51單片機(jī)的最小系統(tǒng),85,8051/8751最小應(yīng)用系統(tǒng)的特點(diǎn)是: (1)全部I/O口線均可作為并行口供用戶使用。 (2)內(nèi)部存儲(chǔ)器容量有限(只有128B的RAM和4KB地址 空間)。 (3)應(yīng)用系統(tǒng)開發(fā)具有特殊性。因?yàn)镻0和P2口在開發(fā)系統(tǒng) 時(shí)作為數(shù)據(jù)、地址總線,而在應(yīng)用系統(tǒng)中如果作為普 通I/O口,調(diào)試時(shí)不方便硬件調(diào)試,只能用模擬的方法 調(diào)試。,86,第二章 中斷、定時(shí)計(jì)數(shù)器、串行接口,87,一、定時(shí),MCS-51有幾個(gè)定時(shí)
49、器/計(jì)數(shù)器? MCS-51有2個(gè)定時(shí)器/計(jì)數(shù)器T0和T1 在單片微機(jī)控制系統(tǒng)中為什么要使用它們? 在單片微機(jī)控制系統(tǒng)中,常要求一些外部實(shí)時(shí)時(shí)鐘,以實(shí)現(xiàn)定時(shí)或延時(shí);也常要求有一些外部計(jì)數(shù)器,以實(shí)現(xiàn)對(duì)外部事件進(jìn)行計(jì)數(shù)。 T0/T1是幾位的計(jì)數(shù)器/定時(shí)器? T0/T1是16位的計(jì)數(shù)器/定時(shí)器,通過(guò)編程的方式可以用來(lái)設(shè)定為定時(shí)器或者為計(jì)數(shù)器。,(一)、MCS-51定時(shí)器/計(jì)數(shù)器,88,計(jì)數(shù)器/定時(shí)器本質(zhì)區(qū)別是什么? 計(jì)數(shù)器/定時(shí)器的基本核心是一個(gè)加1計(jì)數(shù)器 加1計(jì)數(shù)器的脈沖有兩個(gè)來(lái)源: 外部脈沖源; 內(nèi)部的時(shí)鐘振蕩器。 * 定時(shí)器 對(duì)內(nèi)部的時(shí)鐘振蕩器標(biāo)準(zhǔn)脈沖計(jì)數(shù) * 計(jì)數(shù)器
50、對(duì)外部脈沖計(jì)數(shù),89,,與計(jì)數(shù)器/定時(shí)器相關(guān)的特殊功能寄存器有哪幾個(gè)? 工作方式控制寄存器,,90,,GATE:門控位的作用:,當(dāng)GATE=0時(shí),定時(shí)計(jì)數(shù)器的啟動(dòng)不受外部中斷信號(hào)的影響,只要用軟件使TR0(或TR1)置1就能啟動(dòng)定時(shí)器T0(或T1)。 當(dāng)GATE=1時(shí),由外中斷引腳信號(hào)控制或門的輸出,此時(shí)控制與門的開啟由外中斷引腳 INT0 (P3.2)或INT1 (P3.3)信號(hào)和TR0共同控制。當(dāng)TR0=1時(shí),外中斷引腳信號(hào)引腳INT0(P3.2) 或INT1(P3.3)的高電平啟動(dòng)計(jì)數(shù),外中斷引腳信號(hào)引腳的低電平停止計(jì)數(shù)。這種方式常用來(lái)測(cè)量外中斷引腳上正脈沖的寬度。,91,定時(shí)器控制寄存
51、器 用于用于T--用于中斷控制 溢出中斷標(biāo)志:溢出自動(dòng)置,硬件自動(dòng)清或 供軟件查詢和清 定時(shí)器運(yùn)行控制位,由軟件置或清 用于中斷控制,92,、、、功能 : 寄存計(jì)數(shù)初值,均可以通過(guò)軟件賦值,系統(tǒng)復(fù)位時(shí),均為 討論,當(dāng)工作于方式時(shí),是的高位,是的低位,組成的位計(jì)數(shù)器,加到后,再加便溢出,置為“” 當(dāng)工作于方式時(shí),是的高位,是的低位,組成的位計(jì)數(shù)器,加到后,再加便溢出,置為“”; 當(dāng)工作于方式時(shí),是的計(jì)數(shù)初值寄存器,是的位計(jì)數(shù)器,組成的位計(jì)數(shù)器,加到后,再加便溢出,置為“”,同時(shí)將中的計(jì)數(shù)初值裝入,于是又在的新值基礎(chǔ)上計(jì)數(shù),周而復(fù)始。(自動(dòng)裝入常
52、數(shù)),93,當(dāng)工作于方式時(shí),只使用于定時(shí)器,把分成兩個(gè)獨(dú)立的位定時(shí)器計(jì)數(shù)器,位定時(shí)器,位定時(shí)器計(jì)數(shù)器,94,定時(shí)器工作方式的選擇 定時(shí)器有4種工作方式,選擇哪一種,首先要看這幾種工作方式所允許的最大時(shí)間間隔。 當(dāng)時(shí)鐘為6MHz時(shí),一個(gè)機(jī)器周期為2s由于定時(shí)器是對(duì)機(jī)器周期計(jì)數(shù)的,所以: 8位定時(shí)器最大定時(shí)間隔 =282S=512s 13位定時(shí)器最大定時(shí)間隔 =2132S=16.384ms 16位定時(shí)器最大定時(shí)間隔 =2162S=131.07ms,95,定時(shí)器定時(shí)常數(shù)的選擇,定時(shí)器定時(shí)時(shí)長(zhǎng)與裝入TL0、TH0或TL1、TH1的常數(shù)有關(guān),定時(shí)常數(shù)TC的計(jì)算公式為: 其中
53、,f為單片機(jī)應(yīng)用系統(tǒng)的晶體頻率;X與系統(tǒng)采用的定時(shí)方式有關(guān),方式0、1、2、3的X分別是13、16、8、8。 例:當(dāng) =6MHz,采用方式1,求定時(shí)10ms的定時(shí)常數(shù)。T=10ms=10,000us,X=16,根據(jù)方式公式可以得到: TC=216-10000*f/12=60536=0EC78H,即: TL0=78H,TH0=ECH,,,96,我們可以將定時(shí)器/計(jì)數(shù)器的編程要點(diǎn)概括如下: 確定方式控制字 MOV TMOD,#DATA 予置時(shí)或計(jì)數(shù)初值 MOV THX,#DATAH MOV TLX,#DATAL 啟動(dòng)定時(shí)/計(jì)數(shù)器工作 SETB TRx 查詢
54、 WAIT:JBC TFX NEXT SJMP WAIT 允許定時(shí)/計(jì)數(shù)中斷,相應(yīng)命令為: SETB EA SETB ETx 重新裝入定時(shí)/計(jì)數(shù)初值 NEXT : MOV THX,#DATAH MOV TLX,#DATAL,定時(shí)器/計(jì)數(shù)器的編程要點(diǎn),97,(二)、實(shí)時(shí)時(shí)鐘及其軟硬件實(shí)現(xiàn)方法,單片機(jī)的實(shí)時(shí)時(shí)鐘通常由兩種方法實(shí)現(xiàn): (1)通過(guò)內(nèi)部的定時(shí)/計(jì)數(shù)器,結(jié)合軟件的方式實(shí)現(xiàn),這種方式一般適合于定時(shí)時(shí)間精度要求不高的場(chǎng)合。 (2)通過(guò)采用時(shí)鐘芯片,比較典型的有:Motorola公司的MC1
55、46818,Dallas公司的DS12887和DS1302和Philips公司的PCF8563、PCF8583。早期的時(shí)鐘芯片一般采用并行接口的方式:如MC146818 ,現(xiàn)在流行的則是采用SPI、I2C總線等接口的串行芯片,如DS1302 和PCF8563 。這種實(shí)現(xiàn)方式精度較高,還能節(jié)省大量的單片機(jī)CPU指令周期,所以廣泛被人們使用。,98,1、DS1302芯片簡(jiǎn)介,實(shí)時(shí)時(shí)鐘DS1302芯片內(nèi)部除了有時(shí)鐘管理外,還有31B的RAM,使用SPI串行接口僅需用到三個(gè)口線( RES 復(fù)位、 I/O 數(shù)據(jù)線和SCLK)與單片機(jī)進(jìn)行通信??梢蕴峁┟搿⒎?、時(shí)、日、月、年的信息,每月和閏年的天數(shù)還可以自
56、動(dòng)進(jìn)行調(diào)整,可以選擇12小時(shí)或24小時(shí)工作方式。DS1302 工作時(shí)功耗很低,保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí)功率小于1mW。 DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。,99,DS1302外部引腳結(jié)構(gòu)如下圖所示:,DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc10.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。 RST是復(fù)位/片選線當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS130
57、2進(jìn)行操作。如果在傳送過(guò)程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。 I/O為串行數(shù)據(jù)輸入輸出端(雙向)。SCLK始終是輸入端。,100,2、DS1302芯片與單片機(jī)的連接,3、DS1302芯片的控制字節(jié),DS1302的控制字如下圖所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行
58、讀操作,控制字節(jié)總是從最低位開始輸出。,101,4、DS1302芯片的數(shù)據(jù)輸入輸出(I/O),在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。,102,5、DS1302芯片的內(nèi)部寄存器,DS1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見(jiàn)下表:,103,104,二、串行口,MCS-51有一個(gè)可編程的全雙工串行通信接口,可作為通用異步接收/發(fā)送器UART,也可作為同步
59、移位寄存器。它的幀格式有8位、10位和11位,可以設(shè)置為固定波特率和可變波特率,給使用者帶來(lái)很大的靈活性。,105,一、MCS-51串行口的結(jié)構(gòu),106,MCS-51單片機(jī)的串行口主要由2個(gè)物理上獨(dú)立的串行數(shù)據(jù)緩沖器SBUF、輸入移位寄存器和控制器等組成。還有2個(gè)SFR寄存器SCON和PCON,用于串行口的初始化編程。,SCON 是一個(gè)特殊功能寄存器,用以設(shè)定串行口的工作方式,控制數(shù)據(jù)的接收和發(fā)送,并標(biāo)示串行口的工作狀態(tài)等。該寄存器的字節(jié)地址為98H,可位尋址,其位格式為:,SM0、SM1:串行口工作方式控制位,兩位對(duì)應(yīng)四種工作方式,如下表所示(fosc是晶振頻率):,107, SM2,多機(jī)通
60、信控制位,主要用于方式2和方式3。當(dāng)接收機(jī)的SM2=1時(shí)可以利用收到的RB8來(lái)控制是否激活RI(RB80時(shí)不激活RI,收到的信息丟棄;RB81時(shí)收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI,進(jìn)而在中斷服務(wù)中將數(shù)據(jù)從SBUF讀走)。當(dāng)SM2=0時(shí),不論收到的RB8為0和1,均可以使收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI(即此時(shí)RB8不具有控制RI激活的功能)。通過(guò)控制SM2,可以實(shí)現(xiàn)多機(jī)通信。,在方式0時(shí),SM2必須是0。在方式1時(shí),若SM2=1,則只有接收到有效停止位時(shí),RI才置1。,REN,允許串行接收位。由軟件置REN=1,則啟動(dòng)串行口接收數(shù)據(jù);若軟件置REN=0,則禁止接收。,108,TB8,在方式2
61、或方式3中,是發(fā)送數(shù)據(jù)的第九位,可以用軟件規(guī)定其作用??梢杂米鲾?shù)據(jù)的奇偶校驗(yàn)位,或在多機(jī)通信中,作為地址幀/數(shù)據(jù)幀的標(biāo)志位。 在方式0和方式1中,該位未用。,RB8,在方式2或方式3中,是接收到數(shù)據(jù)的第九位,作為奇偶校驗(yàn)位或地址幀/數(shù)據(jù)幀的標(biāo)志位。在方式1時(shí),若SM2=0,則RB8是接收到的停止位。,TI,發(fā)送中斷標(biāo)志位。在方式0時(shí),當(dāng)串行發(fā)送第8位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行發(fā)送停止位的開始時(shí),由內(nèi)部硬件使TI置1,向CPU發(fā)中斷申請(qǐng)。在中斷服務(wù)程序中,必須用軟件將其清0,取消此中斷申請(qǐng)。,RI,接收中斷標(biāo)志位。在方式0時(shí),當(dāng)串行接收第8位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行接收停止位的中間時(shí)
62、,由內(nèi)部硬件使RI置1,向CPU發(fā)中斷申請(qǐng)。也必須在中斷服務(wù)程序中,用軟件將其清0,取消此中斷申請(qǐng)。,,109,PCON主要是為CHMOS型單片機(jī)的電源控制而設(shè)置的專用寄存器,該寄存器中只有一位SMOD與串行口工作有關(guān),它的位格式為:,,,,,,,,,SMOD GF1 GF0 PD 1DL,PCON (97H),D7 D6 D5 D4 D3 D2 D1 D0, SMOD:波特率倍增位。串行口工作在方式1、方式2、方式3時(shí),若SMOD=1,則波特率提高一倍;若SMOD=0,則波特率不提高一倍。單片機(jī)復(fù)位時(shí),SMOD=0。,110,一、方式0,方
63、式0時(shí),串行口為同步移位寄存器的輸入輸出方式。主要用于擴(kuò)展并行輸入或輸出口。數(shù)據(jù)由RXD(P3.0)引腳輸入或輸出,同步移位脈沖由TXD(P3.1)引腳輸出。發(fā)送和接收均為8位數(shù)據(jù),低位在先,高位在后。波特率固定為fosc/12。,1、方式0輸出,111,發(fā)送:當(dāng)一個(gè)數(shù)據(jù)寫入SBUF后,串行數(shù)據(jù)將由RxD逐位移出;TxD輸出移位時(shí)鐘,頻率=fosc1/12; 每送出8位數(shù)據(jù) TI就自動(dòng)置1; 再次發(fā)送前需要用軟件清零 TI。,112,2、方式0 輸入,113,接收:串行數(shù)據(jù)由RxD逐位移入SBUF中; TxD輸出移位時(shí)鐘,頻率=fosc1/12; 每接收 8位數(shù)據(jù)RI就自動(dòng)置1; 再次接收
64、前需要用軟件清零 RI。,114,例:利用串行口工作方式0擴(kuò)展出8位并行I/O口,驅(qū)動(dòng)共陽(yáng)LED數(shù)碼管顯示09。,,,,,,,,,,,,,,,AB,CLK,h g f e d c b a,CLR,,,,,,,,+5V,VCC,TxD,RxD,51單片機(jī),,,,,,,,,,74LS164,,共陽(yáng)LED數(shù)碼管,,,,,115,二、方式1,方式1是8位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖所示。其中1位起始位,8位數(shù)據(jù)位,1位停止位。 8位UART(1+8+1位)波特率可變。,116,波特率可變 用定時(shí)器T1作波特率發(fā)生器: 公式:波特率 =(2SMOD
65、/32)T1的溢出率,, 溢出率:T1溢出的頻繁程度 即:T1溢出一次所需時(shí)間的倒數(shù)。, 初值 X = 2n -,2SMOD fosc 32 波特率 12,,, 波特率 =,2SMOD fosc 32 12(2n - X),其中:X 是定時(shí)器初值,,117,, 例已知晶振頻率=6MHz,SMOD=0,要求用T1工作于方式2來(lái)產(chǎn)生波特率1200,求出T1的初值:,,初值 X = 28 -,20 6106 32 1200 12,,= 256 - = 256 - 13.02,6106 460800,, 243 = 0F3H,118,T1作波特率發(fā)生器時(shí)初始化包括: 選定時(shí)器工作方式2(TMOD選
66、8位自動(dòng)重裝); 將計(jì)算(或查表)出的初值X賦給TH1,TL1; 啟動(dòng)T1 (SETB TR1); 對(duì)T1不要開中斷 !!,串行口的初始化包括: 對(duì)SCON選工作方式 對(duì)PCON設(shè)波特率加倍位“SMOD”(缺省值=0) 如果是接收數(shù)據(jù),仍要先置“1”REN位,119,1、方式1輸出,串行口以方式1發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)位由TXD端輸出,發(fā)送一幀信息為10位,其中1位起始位,8位數(shù)據(jù)位(先低位后高位),1位停止位。 CPU執(zhí)行1條寫入發(fā)送緩沖器的指令后,就會(huì)啟動(dòng)發(fā)送器發(fā)送,當(dāng)發(fā)送完數(shù)據(jù)后,就置中斷標(biāo)志TI為1。,120,2、方式1輸入,用軟件置REN為1時(shí),接收器以所選擇波特率的16倍速率采樣RXD引腳電平,檢測(cè)到RXD引腳輸入電平發(fā)生負(fù)跳變時(shí),則說(shuō)明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。接收過(guò)程中,數(shù)據(jù)從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時(shí),控制電路進(jìn)行最后一次移位。當(dāng)RI=0,且SM2=0(或接收到的停止位為1)時(shí),將接收到的9位數(shù)據(jù)的前8位數(shù)據(jù)裝入接收SBUF,第9位(停止位)進(jìn)入RB8,并置RI=1,向CPU請(qǐng)求中斷。,121,三、方式2
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案