教學課件:《單片機原理及接口技術》1_第1頁
教學課件:《單片機原理及接口技術》1_第2頁
教學課件:《單片機原理及接口技術》1_第3頁
教學課件:《單片機原理及接口技術》1_第4頁
教學課件:《單片機原理及接口技術》1_第5頁
已閱讀5頁,還剩265頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第一節(jié) 微型計算機概述第一臺電子計算機:發(fā)展方向巨型機微型機智能機計算機網(wǎng)產(chǎn)于1946年,名叫ENIAC,面積167m第一章 微型計算機基礎時間 代 字長(位) 代表產(chǎn)品19711973 一 4、8 Intel4004 Intel8008 19741978 二 8 Intel8080 Zilog Z-80 motorola M6800 Apple 6502 Intel MCS-48 Zilog Z8 (8bit) 19781981 三 16 Zilog Z8000 Intel8086/8088 80186/80286 Motorola M68000 Intel MCS-51(8bit) 198

2、11992 四 32 Intel80386、80486 HP公司hp32、HP9000 Z80000、M68020 Intel MCS-96(16bit)1992 五 64 Pentium-100、Power PC601一、微型機發(fā)展: 注:1、紅色的為單片機 3、所用元件:電子管-晶體管-大規(guī)模集成電路-超大規(guī)模。2、所謂“代”:功能增強 速度提高 體積縮小一、 幾個概念I/O接口 MALUCU計算步驟,原始數(shù)據(jù)結果計算機組成及工作過程將計算步驟、原始數(shù)據(jù)通過輸入接口存入內(nèi)存M,需運算時送入運算器ALU,運算結果存入M,需輸出時由輸出接口輸出。第二節(jié) 微型計算機組成原理3. MCS(Micr

3、o Computer Systerm) 1. CPU(Central Processing Unit)2. MC(Micro Computer) =ALU(Arithmetic Logic Unit)+CU(Control Unit)又叫 MP(Micro Processer)=CPU+M(Main Memory)+ I/O接口(Input/Output Interface)+BUS(總線)=MC+I/OD(device)+E(電源)+Program5.軟件(程序) 4.硬件6.單板機7.單片機8. MCS=軟件+硬件 系統(tǒng)軟件用戶程序應用軟件數(shù)據(jù)庫計算機、外部設備、電源十進制-D,可省略二進

4、制-B十六進制-H第二節(jié) 微型機中常用的數(shù)制與碼制一、 微型機中常用的數(shù)制(1)整數(shù):反復除以2,每次所得余數(shù) 排列起來.38=_B382192922242101101001100201二、不同數(shù)制間轉換1. “十” “二”(2) 小數(shù): 反復乘以2,每次進位(整數(shù))排列起來 0.6875 21.37500.37520.7501.500.51.00.6875=_B0.101122101011010101111.101B=_H8D3E6.CH=_B通過二進制2. “二” “十” 3. “二” “十六”56AF.A1000110100111110.11004. “十” “十六”直接法23+21+2

5、0+2-1+2-31011.101B=-用于表示字母、符號碼制BCDASCII8421BCD2421BCD余3碼三、微型機中常用的編碼1. 8421BCD(十進制數(shù)的二進制編碼) 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 0100 9 1001 10 00010000378D=_BCD0011 0111 10002. ASCII碼-美國標準信息交換碼表:P290 注: (1) 會查表(2) b7常用于奇偶校驗F=_ B1000110 11000110第三節(jié) 微型計算機運算基礎一、 機器數(shù)與真值 +78 二、 原碼、反碼、

6、補碼1.原碼(True Form) 0- 正 1-負機器數(shù)真值 01001110Bb7- 符號b60: 大小+1100101B其余7位b6-b0直接表示數(shù)值大小最高位b7表示符號. x1=+10101Bx2=-10101B真值X1原碼=_B=_HX2=原碼_B=_H000101011510010101952.反碼(ones complement) 正數(shù)的反碼與原碼相同,即:符號位為0,數(shù)值位照寫。 負數(shù)的反碼:符號位為1,數(shù)值位按位求反。3.補碼(twocomplement) 正數(shù)的補碼與原碼相同。 負數(shù)的補碼:符號位為1,數(shù)值位按位求反再加1。如 x=1010111B, x原=_ B, x補

7、=_ B1010100111010111例1 求-33d補= _ HDF例2 求+42的原、反、補碼 +42原=_B=_H+42反= B=_H+42補=_B=_H -42原=_H-42反=_H-42補=_H42D=_B101010001010102AAAD6D5100001B00101010001010102A2A注: (1) 如何求16位數(shù)補碼?(2) 8位補碼表示的數(shù)的范圍: -128+127(3) 如果已知某數(shù)X的補碼,來求X. 只要對這個補碼再求一次補即可.如: X補=10101001B X=-1010111B三、 補碼的運算 用補碼表示的二進制數(shù),在進行加、減運算時, 符號位與數(shù)值位

8、一起參加運算,所得數(shù)是運算 結果的補碼。例1 99-58=? 99D=1100011B 58D=111010B例2 58-99=? 11000110+ 100111011.0110001101100011110001101.00101001=+0101001B001110101001110111010111B=-0101001B=-41例3 -58-99=?兩負數(shù)相加結果是正,溢出=25+23+20=41 溢出的判別(雙高位判別法) 設D7的進位為CS, 有進位CS=1,否CS=0 D7、D6間進位為CP, CP=1, CP=0 補碼的運算中,當CS=CP時, 不會有溢出 CSCP時 有溢出.

9、本章基本要求 :掌握MCS-51的組成、工作原理及引腳的含義教學重點難點:重點 MCS-51單片機的內(nèi)部結構及工作原理難點 MCS-51單片機內(nèi)部RAM區(qū)的劃分及Ri的應用。 第二章 MCS-51單片機 結構和時序第一節(jié) MCS-51單片機內(nèi)部結構 對圖2-1按這個定義對號入座MC=CPU+ M+ I/OP一、MCS-51單片機的基本組成如圖 2-1時鐘電路ROMRAM定時/計數(shù)器CPU并行接口串行接口中斷系統(tǒng) P0 P1 P2 P3TXD RXDINT0 INT1T0 T1圖2-1 8051基本組成框圖 1.中央處理器(CPU)2.內(nèi)部存儲器(RAM、ROM)3.定時/計數(shù)器(T/C)4.并

10、行I/O接口(P0、P1、P2、P3)5.串行口(S0)6.中斷控制系統(tǒng)(5個中斷源)7.時鐘電路RAM-Random Access MemoryROM-Read Only Memory圖2-1概括如下:二、中央處理單元 CPU(圖2-2所示) 三部分組成:定時控制部件-定時控制邏輯、指令寄存器(IR)、 振蕩器(OSCOSCillator)。算術邏輯部件-ALU(運算器)專用寄存器組1. PC(Program Counter)-程序計數(shù)器,16位2000H用于存放程序存儲器地址,比如右圖中的2000H。運算器有8位和1位兩個,1位運算器又叫布爾處理器。布爾處理器是CPU的重要組成部分,圖中沒

11、有畫出,是一個獨立的位處理器。 圖2-2 8051內(nèi)部結構圖P0驅動器P0鎖存器程序地址寄存器緩沖器PC增1PCDPTR指令寄存器指令譯碼器定時控制RAM地址寄存器128RAM4EPROMROMB暫存器1暫存器2ACCSPPSW中斷、串行口、定時器P2驅動器P3驅動器P1驅動器P3鎖存器P1鎖存器P2鎖存器/PSENALE/EARSTP2.0-P2.7P0.0-P0.7P3.0-P3.7P1.0-P1.7注:相互之間用內(nèi)部總線連接M前振蕩器OSC2. A(Accumulator)-累加器,8位 運算前常提供一個操作數(shù),之后存放結果3. B(General Purpose Register)-數(shù)

12、據(jù)通用寄存器,8位 乘除法時存放乘數(shù)或除數(shù)4. PSW(Program Status Word)-程序狀態(tài)字, 8位ACRS1OVCyF0RS0PPSW.7=Cy(Carry)PSW.6=ACPSW.5=F0(Flag zero)PSW.2=OV(Overflow)PSW.0=P(Parity)RS1 RS0 0 0 0區(qū) 0 1 1區(qū) 1 0 2區(qū) 1 1 3區(qū)PSW.4,PSW.3=RS1,RS0-進位標志。CY=1:有。-輔助進位標志(半進位標志)。AC=1:有-用戶標志。-溢出標志。OV=1:有-奇偶標志。P=1:A中1的個數(shù)為奇數(shù)個。DPTR=2000H即:DPH=20H,DPL=0

13、0H5. DPTR(Data Pointer)-數(shù)據(jù)指針DPTR亦可拆成兩個8位使用-DPH、DPL2000H6 堆棧及堆棧指針54H53H52H51H50H22H33H22H33HSP堆棧指針SP(Stack Pointer)-始終指向棧頂堆棧性質(zhì):入棧出棧先進后出FILO54H53H52H51H50H22H33H隊列FIFO MCS-51存儲器M分:又分內(nèi)和外MCS-51存儲器分成了四類: 內(nèi)部程序存儲器 內(nèi)部數(shù)據(jù)存儲器 外部程序存儲器 外部數(shù)據(jù)存儲器三、存儲器結構RAM 和 ROM數(shù)據(jù)存儲器: 內(nèi)、外無聯(lián)系,外部根據(jù)需要擴充, 內(nèi)部已固定分配程序存儲器:內(nèi)、外之和不超過64K; 內(nèi)部如有

14、,編排小地址。0FFFH1000HSFR數(shù)據(jù)緩沖區(qū)位尋址區(qū)工作寄存器(03組)外部RAMFFFFH0000H00HFFH外部ROM片內(nèi)ROMEA=1片外ROMEA=00000HFFFFH圖2-5 8051存儲器配置圖程序存儲器片內(nèi)數(shù)據(jù)存儲器片外數(shù)據(jù)存儲器2. 片內(nèi)RAM存儲器8位地址: 00H-FFH分以下四個區(qū):注:1. 片內(nèi)ROM存儲器8031:無,8051:4KROM,8751:4KEPROM8032:無,8052:8KROM,8752:8KEPROM寄存器區(qū) 位尋址區(qū) 數(shù)據(jù)緩沖區(qū)特殊功能寄存器區(qū)其地址范圍如圖2-6所示。08H18H10Hbank0bank1bank2bank300H2

15、0H1FH30H2FH80H7FHFFH特殊功能寄存器區(qū)數(shù)據(jù)緩沖區(qū)位尋址區(qū)寄存器區(qū)圖2-6 8051內(nèi)部數(shù)據(jù)存儲器配置圖1 寄存器區(qū)(00H1FH) 2 位尋址區(qū)(20H2FH) 3 數(shù)據(jù)緩沖區(qū)(30H-7FH) 堆棧區(qū)、數(shù)據(jù)單元R0、R1、R7,PSW.4、PSW.3決定哪一組表2-3(20H.5)的位地址?20H2FH32個單元4組=8個單元/組8bit*16個單元=128位4 特殊功能寄存器SFR(Special Function Register)區(qū) 21個特殊功能寄存器有些可位尋址,圖2-7 。80HFFH,共128個單元,只開發(fā)了其中21個單元,表2-4四、 I/O端口(并行) 4

16、個:P0P3 P0和P2口通常用作地址、數(shù)據(jù)總線 P2 P0 AB :* * DB: *0011101020H P3口有第二功能(CB):P3.0-RXD 串行輸入通道P3.1-TXD 串行輸入通道P3.2-/INT0 外部中斷0P3.3-/INT1 外部中斷1P3.4-T0 定時/計數(shù)器0外部輸入P3.5-T1 定時/計數(shù)器1外部輸入P3.6-/WR 外部數(shù)據(jù)存儲器寫選通P3.7-/RD 外部數(shù)據(jù)存儲器讀選通五、 定時/計數(shù)器(2個): T0、 T1六、串行口 (1個):S0 第二節(jié) 8051單片機引腳功能Vss: 接地, Vcc: 電源線XTAL1, XTAL2: 接外部晶體的二個引腳圖2

17、-10所示,8051共40管腳,去掉 4個P口(4*8=32根),剩8根,如下:圖2-17XTAL1XTAL2RST/Vpd: Vpd-RAM備用電源。Vcc掉電時用 RST-復位ALE-地址鎖存允許低8位地址ALE/PROG: PROG-編程脈沖 EA/Vpp: Vpp-編程電源, 21V(EPROM芯片)EA-區(qū)別CPU訪問內(nèi)、外程序存儲器. PSEN:外部程序存儲器讀選通。(類似于/RD)第三節(jié) MCS-51單片機時序1、指令周期2、機器周期(M-machine周期)一個指令周期由1、2、4個M周期組成。3、狀態(tài)周期(S-status周期)1M=6S4、T周期(節(jié)拍P、主頻、晶振)1S=

18、2T(P1、P2)MCS51的主頻= 6MHZ或12MHZ1M=1/6MHZ*12=2sS1P1 P2S2P1 P2S3P1 P2S4P1 P2S5P1 P2S6P1 P2S1P1 P2時鐘讀操作碼讀操作碼(無效) S1 S2 S3 S4 S5 S6 讀第二字節(jié) S1 S2 S3 S4 S5 S6 (a)單字節(jié)單周期(b)雙字節(jié)單周期 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 讀操作碼讀操作碼(無效)(c)單字節(jié)雙周期圖 2-141M周期讀操作碼第三章MCS-51單片機指令系統(tǒng) 基本要求: 熟記MCS-51的主要指令及簡單程序的編程方法。 難點及處理: MCS-5

19、1的111條指令比較枯燥 ,需要記憶,可多讀一些例題并動手編一編。 第一節(jié) 指令及其表示方式一、指令的基本概念指令讓計算機做某操作所發(fā)命令指令系統(tǒng)一臺計算機所有指令的集合。MCS-51單片機共111條指令,分為五大類二、指令格式 1. 匯編語言指令格式: 標號字母打頭的字母、數(shù)字、下劃線串;一般不超過8個; 不與指令助記符相同;可有可無。操作碼必不可少,不可更改.操作數(shù)可有、可無,可一可二,可是寄存器、地址、數(shù)據(jù) 可用十、二、十六、BCD、ASCII表示。注釋可有、可無,分號打頭, 可用漢字、英文及簡單的符號表示。標號: 操作碼 操作數(shù) ;注釋;B00HLOOP: MOV B, #00H2.機

20、器語言格式:單字節(jié):雙字節(jié):NOP;空操作操作碼操作碼操作數(shù)INC 00H;00H單元內(nèi)容加1三字節(jié):操作碼操作數(shù)操作數(shù)MOV DPTR,#2233HMOV 20H,#30H;30H送20H單元每條指令字節(jié)數(shù)可從附表中查出, 操作碼可從附錄中查出。單字節(jié)、 雙字節(jié)、 三字節(jié)指令76H05H 00H75H 20H 30H90H 22H 33H第二節(jié) 尋址方式 ( 后移)建議學完本章后再來學本節(jié)#立即數(shù)標志#data8、#data168位、16位立即數(shù) 間接尋址符號幾個符號說明AACCDirect8位片內(nèi)RAM地址addr11、addr1611位、16位地址Rel8位,補碼-128+127Bit8

21、位片內(nèi)RAM位地址Rn工作寄存器 n=0,7Ri可間接尋址的工作寄存器 i=0、1傳送類指令分: 內(nèi)部傳送 外部傳送 堆棧操作 數(shù)據(jù)交換將源操作數(shù)所指定的內(nèi)容傳送至目的操作數(shù)指定的單元去,源字節(jié)內(nèi)容保持不變.一、內(nèi)部數(shù)據(jù)傳送指令格式: MOV , 功能第三節(jié) 數(shù)據(jù)傳送指令1 以累加器A為 目的操作數(shù) MOV A, #data MOV A, direct MOV A, Rn MOV A, Ri2 以direct為目的操作數(shù) MOV direct, A MOV direct, #data MOV direct1 , direct2 MOV direct, Rn MOV direct , RiMOV

22、 A, #33HMOV A,#4050HMOV A,60HMOV A,R0MOV A,R0MOV 20H, AMOV 20H,#10HMOV 20H,10HMOV 7FH, R7MOV 00H, R13 以Rn為目的操作數(shù) MOV Rn, A MOV Rn, #data MOV Rn, direct4 以Ri為目的操作數(shù) MOV Ri, A MOV Ri, #data MOV Ri, direct注:(1)MOV后,源內(nèi)容不變。(2)Ri尋址范圍0127因此,上例中30H如換成80H就錯了例:MOV R0, A該類指令之前要給R0送一地址MOV R0, #30HMOV R0, #80H5 MO

23、V DPTR, #data16例1.下列指令是否正確. MOV A,00H MOV B,#0F0H MOV R4,#0AAH MOV R4,#0AAH MOV 80H, #80H MOV P0, #80H MOV R2, 77H MOV 0C3H, #00H MOV R9, #7FH MOV R0, R1 MOV #30H,80H MOV DPH,#30H MOV DPL,#20H例2.將數(shù)3AH送內(nèi)部 RAM20H單元, 試編程MOV 20H, # 3AH或MOV R1,#20HMOV R1, #3AH4,7,8,9,10,11,行錯MOV 0F0H, #0F0HMOV DPTR, #302

24、0H MOV A, 30H MOV 30H, 20H MOV 20H, A例3 將30H與20H內(nèi)容互換例4 分別將(1)00H單元 (2)30H單元 (3)80H單元置全“1”,分別編程。 (1)MOV 00H,#0FFH或(1)MOV R0,#00H MOV R0, #0FFH或(1)MOV PSW, #00H MOV R0, #0FFH(2)MOV 30H, #0FFH或(2) MOV R0, #30H MOV R0, #0FFH(3) MOV 80H, #0FFH例5 設(70H)=60H,(60H)=30H,P1口為 輸入口,其值為7BH, 下列程序后:MOV R0,#70HMOV

25、A,R0MOV R1,AMOV A,R1MOV R0, P1MOV 60H,#40H(70H)= H,(60H)= H,A= H,R0= H,R1= H7B40307060例6 將內(nèi)部RAM 30H開始的20 個數(shù)送至50H開始的區(qū)域去。 MOV R7,#14H MOV R0,#30H MOV R1,#50HLOOP:MOV A,R0 MOV R1, A INC R0 INC R1 DJNZ R7,LOOP RET編程三步驟:1、初始化2、數(shù)據(jù)處理3、修改地址指針,控制程序是否結束。二、外部數(shù)據(jù)傳送指令1 外部RAM與A的傳送 MOVX A,DPTR MOVX A, Ri MOVX DPTR,

26、 A MOVX Ri, A 例7 將內(nèi)部RAM30H的內(nèi)容傳送到 外部RAM3000H單元。 MOV A,30H MOV DPTR,#3000H MOVX DPTR, A例8 將外部RAM 30H內(nèi)容傳送 到外部RAM 2000H單元 MOV R0,#30H MOV DPTR, #3000HMOVX A,DPTRMOV DPTR, #2000HMOVX DPTR,A 或MOV P2, #30HMOV R0,#00H MOVX A,R0 MOV DPTR,#2000H MOVX DPTR, AMOVX A,R0MOV DPTR,#2000HMOVX DPTR, A例9 將外部RAM 3000H內(nèi)

27、容傳送 到外部RAM 2000H單元 2 ROM與A的傳送MOVC MOVC A,A+PC MOVC A, A+DPTR 例10 已知數(shù)0-9的平方表如下 8000H:0 8001H:1 8002H:4 8009H:81 試根據(jù)A的內(nèi)容查其平方值。 MOV DPTR, #8000H MOVC A,A+DPTR RET8000H DB 00H,01H,04H,09H,10H, 19H,24H,31H,40H,51H三、數(shù)據(jù)交換指令 1 字節(jié)交換 XCH A, Rn XCH A, Ri XCH A, direct 2 半字節(jié)交換XCHD A, RiSWAP A例11 將內(nèi)部RAM單元30H的低 4

28、位與高4位互換,并保持 A的內(nèi)容不變。MOV 30H, #29HXCH A, 30HSWAP AXCH A, 30H四、堆棧操作指令 入棧:PUSH direct ;sp sp+1 (sp) (direct)出棧:POP direct ;(direct) (sp) ,sp sp-1例13 已知SP=39H, DPTR=0123H PUSH DPL PUSH DPH 后 SP=-H , (3AH)=-H, (3BH)=-H例12 設SP=30H,內(nèi)部RAM中 (50H)=ABH,要求將此 數(shù)壓入堆棧,然后再彈到 A中。 3B2301如:PUSH 30H如:POP BMOV SP,#30HPUSH

29、 50HPOP ACC例14 SP=32H, 30H、31H、32H內(nèi)容分別為20H、23、01 POP DPH DPH=_H POP DPL DPL=_H POP SP 后 SP=_H(2) PUSH ACC PUSH PSW POP PSW POP ACC(1) PUSH P0 PUSH P2 POP P0 POP P201231F例15 堆棧的兩個典型應用:將P0與P2內(nèi)容互換子程序中用于保護現(xiàn)場、恢復現(xiàn)場2 帶進位加法 ADDC A, #data ADDC A, direct ADDC A, Rn ADDC A, Ri 第四節(jié) 算術運算指令一、加法指令1 加法 ADD A, #data

30、 ADD A, direct ADD A, Rn ADD A, Ri 注:該類指令影響CY、AC、P、OV標志例16 設內(nèi)部RAM 30H(低位)、31H和40H、41分別存放一 16位數(shù),試將其相加,結果存入50H、51H單元。 MOV A,30H ADD A,40H MOV 50H,A MOV A,31H ADDC A,41H MOV 51H,A3 加1指令 INC A INC Rn INC direct INC Ri INC DPTR 例17 編程將存放在31H33H中的數(shù)相加,其和放入30H單元 (設和不超過8位)。MOV R0,#31HMOV A, R0INC R0ADD A, R0

31、INC R0ADD A, R0MOV 30H, A MOV R0, #31H MOV R7, #03H MOV A, #00HLOOP:ADD A, R0 INC R0 DJNZ R7, LOOP MOV 30H, A設(31H)=38H,(32H)=2BH,( 33H)=8EH,PSW=90H程序執(zhí)行后, A=? PSW=(CY AC F0 RS1 RS0 OV - P)=?F1H51H 01100011(38H+2BH) 10001110 11110001例18設R0=7EH, (7EH)=FFH, (7FH)=40H 執(zhí)行下列程序后: INC R0 INC R0 INC R0 R0=_H

32、, (7EH)=_H, (7FH)=_H7F0041二、減法指令 1 帶借位的減法SUBB A,#data SUBB A, direct SUBB A, RnSUBB A, Ri 7BH-20H=?2 減1指令 DEC A DEC Rn DEC direct DEC Ri MOV A, #7BHSUBB A, #20HCLR C ;將CY清0例19 試編寫計算1234H-0FE7H的程序,將差存入40H開始的單元。程序執(zhí)行后, CY=_,AC=_, P=_,OV=_。CLR CMOV A,#34HSUBB A,#0E7HMOV 40H,AMOV A,#12HSUBB A,#0FHMOV 41H

33、,A0110三、BCD調(diào)整指令 DA A例:39+47=?39BCD=0011 100147BCD=0100 0111 1000 000080應該=86調(diào)整規(guī)則:1、若A的低4位大于9或AC=1,則低4位加6。2、若A的高4位大于9或CY=1,則高4位加6如:已知A和B的值為十 進制數(shù),求其和。 ADD A,B DA A注:DA A只調(diào)整組合型、加法 如遇減法,則稍加處理。0011 10010000 00110000 100139BCD組合型39BCD非組合型2 除法指令:DIV AB (3) A、B為8位無符號數(shù)。 如果B不等于0,則OV標志為1,否則OV為0.注: (1) 該指令執(zhí)行時,使

34、CY請O四、乘除運算指令 1 乘法指令 MUL AB ;BA A*B (2) 乘積的低8位在A中,高8位在B中注: (1) A、B為無符號數(shù) (2) 商在A中,余數(shù)在B中(3) 該指令使CY、OV清0。 如除數(shù)為0,則A為不定值,OV=1一、對A的操作 CLR A;A清0 CPL A;A取反 第五節(jié) 邏輯運算指令移位指令RL A RLC A RR ARRC A AD7 D0RL AAD7 D0CYRLC A注:A的內(nèi)容左移一次等于乘以2; 右移一次等于除以2例20 指令組RLC AJC NEXT 的作用是?例21 編程將A的內(nèi)容乘以10?;騇OV B,#0AHMUL ABRL AMOV B,A

35、RL ARL AADD A,B如果A中為負數(shù),則程序轉NEXT。ANL A, #dataANL A,directANL A, RnANL A, RiANL direct, AANL direct, #data二、邏輯運算ORL A, #dataORL A,directORL A, RnORL A, RiORL direct, AORL direct, #dataXRL A, #dataXRL A,directXRL A, RnXRL A, RiXRL direct, AXRL direct, #data注:常用該類指令對數(shù)據(jù)加工處理如使A高4位清0,低4位不變:使A按位求反:使內(nèi)部RAM30H

36、單元低4位置1,高4位不變:ANL A, #0FHORL 30H,#0FHXRL A,#0FFH例22 設外外部數(shù)據(jù)存儲器(3000H)=B5H,編程 使其符號位 變反、D0位置1、D1和D2位清0 MOV DPTR, #3000H MOV A, DPTR XRL A, #80HORL A, #01HANL A, #0F9HMOVX DPTR, A例23 設-32原=10100000B=A0H, 試編程求-32補。 MOV A, #0A0HANL A, #7FHCPL AINC AXRL A, #7FH例24 已知A=8AH,R1=73H,試編程將A的高4位與 R1的低4位合并成一個字節(jié)放在R

37、0中。ANL A,#0F0HMOV R0,AMOV A,R1ANL A,#0FHORL A,R0MOV R0,A例25 已知數(shù)字6和7的ASCII碼(00110110B和00110111B) 分別存于40H和41H單元,將其轉換相應的BCD數(shù) (0110B和0111B)以壓縮形式存于40H單元中,試 編程。 ANL 40H,#0FH MOV A, 41H ANL A, #0FH SWAP A ORL 40H,A 第六節(jié) 控制轉移和位操作指令 一、控制轉移 LJMP addr16 ; PC PC+3 PC addr16 AJMP addr11 ; PC PC+2 PC 010 addr11 PC

38、 1115不變 SJMP rel ; PC PC+2 PC PC+rel JMP A+DPTR; PC DPTR+A LJMP 0F0F0H3000H:AJMP 30F0H6080H:AJMP 6900H是錯指令等價于 0100H:LJMP 0123H0100H:SJMP 21H多分支轉移指令 PC=0100H+2+21H=0123H0100H:SJMP 81H向上轉, 即目標地址小于0100H1 無條件轉移注:SJMP rel 指令為2字節(jié)指令,80 rel如: 1000H : SJMP LOOP1 LOOP1為1054H52LOOP:SJMP LOOP即:SJMP $80 FE80rel=

39、1054H-1000H-2=52Hrel為8位有符號數(shù)-相對偏移量向上移(小地址): rel=FE-(源、目的地址差的絕對值)向下移(大地址): rel=(源、目的地址差的絕對值)-22 條件轉移指令(1)JZ rel JNZ rel(2)CJNE A, direct, rel CJNE A, #data , rel CJNE Ri, #data, rel CJNE Rn, #data, rel(3)DJNZ direct, rel DJNZ Rn , rel例26 將內(nèi)部RAM31H開始的 10個無符號數(shù)相加結果存入 30H單元,設和不超過8位。 MOV R7,#09H MOV R0,#31

40、H MOV A,R0LOOP:INC R0 ADD A,R0 DJNZ R7,LOOP MOV 30H,A SJMP $ MOV DPTR, #5500H MOV R0, #40H LOOP:MOVX A, DPTR MOV R0, A INC DPTR INC R0 CJNE R0,#50H, LOOP SJMP $例27 將外部RAM5500H開始內(nèi)容送至內(nèi)部RAM 40H4FH3 子程序調(diào)用及返回 LCALL addr16 ;PC PC+3 SP SP+1 (SP) PC07 SP SP+1 (SP) PC815 PC addr015 ACALL addr11 ;PC PC+2 SP S

41、P+1 (SP) PC07 SP SP+1 (SP) PC815 PC 010 addr11 PC1115不變 RET ;PC 8 15 (SP) SP SP-1 PC 07 (SP) SP SP-1 RETI ;中斷返回2000H: LCALL 1000HSP33H32H31H4 空操作指令NOP20H03H二、 位操作指令4 位條件轉移 JC rel JNC rel JB bit, rel JNB bit, rel JBC bit, rel注:3、5條區(qū)別 3 位邏輯運算: ANL C, bit ANL C, /bit ORL C, bit ORL C, /bit CPL C CPL bi

42、t 2 位控制: CLR C CLR bit SETB C SETB bitMOV C,20HMOV C,PSW.5SETB 0A0HSETB P2.0ANL C, /80HJC 70HJNB 99H, 99H1 位傳送: MOV C,bit MOV bit, CC又叫位累加器例28 按圖示編程D7 D0D7 D031H30HMOV A,31HMOV C,ACC.7MOV A,30HRLC AMOV 30H,AMOV A,31HRLC AMOV 31H,A例29 內(nèi)部RAM 40H單元中有ASCII碼(b7=0),編程,給該數(shù)的最 高位加上奇校驗,送回原單元. 例30 編程序實現(xiàn)以下邏輯操作

43、如果P1.1=1,ACC.0=1且OV=0則將CY置1 MOV A, 40H JB P, K SETB ACC.7 k: MOV 40H, AMOV C, P1.1ANL C, ACC.0ANL C, /OV+P1.7P2.0P2.1P2.7P2.3例31 編程: 根據(jù)下列邏輯電路圖求P1.7。MOV C, P2.1ORL C, /P2.0CPL CMOV F0, CMOV C, P2.7ANL C, P2.3ORL C, F0MOV P1.7, C例32 判斷A與30H單元的內(nèi)容,若A=(30H),轉向LOOP1; 若A(30H),轉向LOOP2;否則,轉向LOOP3。 CJNE A,30H

44、,NEXT SJMP LOOP1NEXT:JNC LOOOP2 JC LOOP3 (本章)第二節(jié) 尋址方式 一、立即尋址MOV A, #06H二、直接尋址 MOV A, 06H三、寄存器尋址INC R0注:下列兩條指令等價,寫法不同 尋址方式不同MOV A,B;寄存器尋址方式MOV A,0F0H;直接尋址方式寄存器包括:Rn、A、B、DPTR、CY 四、寄存器間接尋址INC R0五、變址尋址(帶A+PC、A+DPTR)MOVC A, A+DPTR六、相對尋址SJMP 54H七、位尋址MOV C, 20HMOV C, ACC.7尋址方式-指令中得到操作數(shù)的方式第二章 第三節(jié) MCS51單片機時序

45、1、指令周期執(zhí)行一條指令所需時間2、機器周期(M周期-machine )一個指令周期由1、2、4個M周期組成。3、狀態(tài)周期(S周期-status )1M=6S4、T周期(節(jié)拍P、主頻、晶振)1S=2T(P1、P2)MCS51的主頻= 6MHZ或12MHZ1M=1/6MHZ*12=2s每條指令的M周期數(shù)可查 附表MCS-51指令的取指/執(zhí)行時序 如圖2-14所示,按照MCS-51單片機的規(guī)定:一個機器周期分為6個狀態(tài)周期,一個狀態(tài)周期含兩個振蕩周期,即一個機器周期=12個振蕩周期。在每個機器周期中,ALE信號兩次有效,一次在S1P2和S2P1期間,一次在S4 P2 和S5 P1 期間。 S1P1

46、 P2S2P1 P2S3P1 P2S4P1 P2S5P1 P2S6P1 P2S1P1 P2時鐘讀操作碼讀操作碼(無效) S1 S2 S3 S4 S5 S6 讀第二字節(jié) S1 S2 S3 S4 S5 S6 (a)單字節(jié)單周期(b)雙字節(jié)單周期 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 讀操作碼讀操作碼(無效)(c)單字節(jié)雙周期圖 2-14 MCS-51的取指/執(zhí)行時序1M周期讀操作碼例33 假設一臺8051單片機的時鐘頻率為12MHz,要求設 計一個軟件延時程序,延時時間為1ms。 DIMS: MOV R7,#200 1DELAY: NOP 1 NOP 1 NOP

47、1 DJNZ R7,DELAY 2 RET 21+(1+1+1+2)*200+2=1003M1M=12個T=12*1/12=1 s1003*1s1ms第四章 匯編語言程序設計基本要求:能熟練編寫各類一般難度的程序第一節(jié) 匯編語言的構成 一、匯編語言格式2.操作碼標號: 操作碼 操作數(shù) ;注釋LOOP:MOV A,30H ;A (30H)1.標號可有可無;字母打頭;字母、數(shù)字、下劃線組成;不超過8位;不與操作碼相同。必不可少;不可更改。3.操作數(shù)可有可無;可一可二;可以是數(shù)或地址;可二進制、十進制、十六進制或ASCII碼。4.注釋可有可無;可各種文字或符號。第二節(jié) 偽指令1.ORG-匯編起始標號

48、: ORG addr16如: ORG 2000H START:MOV A,#20H2.END-結束匯編標號: END3.EQU-賦值標號名稱 EQU 數(shù)或匯編符號AA EQU R1K1 EQU 40H4.DATA-數(shù)據(jù)地址賦值標號名稱 DATA 表達式表達式-數(shù)、地址, 不可是匯編符號 AA DATA R45.DB、DW、DS-定義字節(jié)、字、空間標號: DB 字節(jié)常數(shù)標號: DW 字常數(shù)標號: DS 表達式(預留空間數(shù))例1ORG 2000H HETA: DB 50H,85H,10,15 匯編以后有:(2000H)=50H (2001H)=85H (2002H)=0AH (2003H)=0FH

49、例2 分析下列程序。 ORG 2000H DS 08H DB 30H,8AH,10,B DW 54H,1F80H6.BIT-位地址符號標號名稱 BIT 位地址如: D BIT 20.700H54H(2000H)=_H (2008H)=_H(200AH)=_H (200BH)=_H(200CH)=_H (200DH)=_H不定30H0AH42H第三節(jié) 簡單程序設計 FIRST EQU 30H SECO EQU 31H THIR EQU 32H MOV A,20H MOV B,#64H DIV AB MOV FIRST,A MOV A,B MOV B,# 0AH DIV AB MOV SECO,A

50、 MOV THIR,B SJMP $ END SJMP $ 即為LL:SJMP LL 例3 將20H單元中8位無符號數(shù)轉換成3位BCD碼,并分別放到FIRST(百位)、SECO(十位)和個位THIR中。一、順序結構 FIRST DATA 30H SECOND DATA 31H ORG 0200H MOV A, 20H MOV B, #64H DIV AB MOV FIRST, A MOV A,B MOV B, #0AH DIV AB SWAP A ORL A, B MOV SECOND, A SJMP $ END 例4 已知20H單元有一個二進制數(shù),請編程把它轉換為三位BCD數(shù)送入FIRST單

51、元的低四位,十位和個位BCD數(shù)在SECOND單元中(十位在高位)。二、分支程序設計例5 以知VAR單元內(nèi)有一個自變量X,請按如下條件編程求Y,并將它存入FUNC單元的程序段。 1 當X0 Y= 0 當X=0 -1 當X20 Y= 0 20=X=10 -1 當XT0/INT1T1S0 三、MCS-51中斷的響應: 接到中斷請求信號后的反應. (一)響應條件: (1)源有請求,且該源的中斷允許位為1(開放) (2)EA=1(3)無同級或高級中斷在服務 (5)如現(xiàn)行指令為RETI或訪問IE、IP的指令,則要執(zhí)行完 該指令且再執(zhí)行完緊接著的下一條指令。 (4)現(xiàn)行指令執(zhí)行完(最后一個M的最后一個S的P

52、2)中斷過程概括成如圖5-8外部中斷請求0內(nèi)部定時器0外部中斷請求1內(nèi)部定時器1內(nèi)部 T串行口 R 中斷源標識符中斷源標識符查詢硬件高優(yōu)先級低優(yōu)先級中斷矢量中斷矢量/INT1/INT0中斷允許寄存器源允許 總允許中斷優(yōu)先級寄存器(二)響應過程 注:1、兩中斷源間相隔8個單元,子程 序存放不下時,可: ORG 0003H 0003H: AJMP.2、 復位后 PC=0000H,為執(zhí)行 你的程序MAIN,可: ORG 0000H 0000H: AJMP MAIN入口地址 /INT0:0003H T0: 000BH/INT1:0013H T1: 001BHS0: 0023H四、MCS51中斷系統(tǒng)的初

53、始化及舉例初始化2、設置優(yōu)先級3、對/INT0、/INT1說明是電平還是邊緣觸發(fā)1、開中斷例2 設外部中斷源1為邊沿 觸發(fā)方式,當其有中斷 請求時,使累加器A內(nèi)容 左移一次,并送P1口顯示, 試編其主程序和中斷服 務子程序。解: ORG 0000H AJMP MAIN ORG 0013H AJMP WBINT ORG 8000HMAIN: MOV SP,#50H MOV A, #01H SETB IT1 SETB EX1 SETB EA CLR PX1 SJMP $ ORG 8100HWBINT: CLR IE1 RLC A MOV P1, A RETI主程序CLR IT0 ;設/INT0為電

54、平觸發(fā)方式 SETB PX0 ;設/INT0為1級中斷SETB EX0 ;開/INT0中斷SETB EA ;開CPU中斷 中斷服務子程序:JNB ,$JB ,$RETIINT0INT0例3 利用8031的外部中斷源0( )來實現(xiàn)單步操作, 用以調(diào)試程序。 INT0例4 MCS51對中斷源的擴展+ INT1 8031P1.0 P1.1 P1.2 P1.3 ORG 0013H LJMP ITROV ITROV:PUSH PSW PUSH A ORL P1,#0FH MOV A,P1 JNB P1.0,N1 ACALL BR0 N1: JNB P1.1 N2 ACALL BR1 N2:JNB P1.

55、2, N3 ACALL BR2 N3: JNB P1.3 N4 ACALL BR3 N4: POP A POP PSW RETI圖5-10第六章 MCS-51內(nèi)部 定時/計數(shù)器基本要求:能熟練地使用內(nèi)部定時/計數(shù)器T0、T1 , 用于各種方式下的編程。第一節(jié) 定時/計數(shù)器的結構及工作原理 MCS-51內(nèi)部定時/計數(shù)器Tx(x=0,1)的結構如下: TRxC/T=0C/T=1振蕩器12 加1計數(shù)器TFx+Tx引腳GATE/INTx中斷能敘述其工作過程M1 M0 0 0 方式0 -13位 THx和TLx的低5位 0 1 方式1 -16位 THx和TLx 1 0 方式2 -8位 自動再裝入TLx 1

56、 1 方式3 -8位 拆成兩個8位定時器 (只有T0有)TL0、TH0 (2) T1的M1 M0=11時,代表關掉T1注: (1) 時常計數(shù)器共4個(TH0、TL0、TH1、TL1)高4位控制T1低4位控制T0C/T-計數(shù)/定時一、方式選擇寄存器TMOD TMOD: 89H:GATEC/TM1M0GATEC/TM1M0第二節(jié) 定時/計數(shù)器的工作方式和控制寄存器 GATE-門控信號,通常為0二、定時器控制寄存器TCON:TF1TR1TF0TR0IE0IE1IT1IT0第五章已作過介紹,這里不贅述。方式0方式1方式2方式3四種方式區(qū)別從它們的結構圖可看出。第三節(jié) 定時/計數(shù)器的工作方式THx(8)

57、 TLx(5)TFx中斷Tx引腳TRx+GATE門INTx引腳控制12振蕩器C/T=0C/T=1圖6-2 方式0結構圖 THx(8)TLx(8)TFx中斷Tx引腳TRx+GATE門INTx引腳控制圖6-3 方式1結構圖12振蕩器C/T=0C/T=1 TLx(8位)TFx中斷Tx引腳TRx+GATE門INTx引腳控制圖6-4 方式2結構圖12振蕩器C/T=0C/T=1THx(8)重裝入振蕩器121/12f1/12f TL0(8位)TF0中斷T0引腳TR0+GATE門INT0引腳控制 TH0(8位)TF1中斷1/12fTR1 圖6-5方式3結構圖一、Tx的使用(初始化編程) 1、TMOD送值 2、

58、送時間常數(shù) 3、啟動Tx 4、開放Tx中斷 5、開放CPU中斷 6、設置中斷優(yōu)先級時間常數(shù)的計算:計數(shù):定時:X-計數(shù)/定時值TC-時間常數(shù)TM-機器周期n=13、16、8、8第四節(jié) 定時/計數(shù)器編程舉例例1 設T0工作于方式0,定時5ms產(chǎn)生中斷請求;T1工作于計數(shù)方式2,計到10產(chǎn)生中斷請求,初始化編程。已知晶振12MHZ。TM=1/12*12=1sTC0=213-5*1000/1 =8192-5000=3192=110001111000B0110001111000BTH000011000 TL0TH0=63H, TL0=18HTC1=TL1=28-10=246=F6HMOV TMOD,

59、#01100000BMOV TL0, #18HMOV TH0, #63HMOV TL1, #0F6HMOV TH1, #0F6HSETB EASETB ET0SETB ET1SETB TR0SETB TR1CLR PT0SETB PT1SJMP $例2 用T0產(chǎn)生一個5KHZ的方波,由P1.0輸出,晶振為12MHZ 中斷方式。產(chǎn)生連續(xù)方波最好方式2此題定時時間:X=1/5000/2=10-4 s=100sTM=12*1/12=1sTC=256-100/1=156=9CHORG 0800HMOV TL0, #9CHMOV TH0, #9CHMOV TMOD, #02HSETB ET0SETB E

60、ASETB TR0SJMP $T0SUB:CPL P1.0 RETI ORG 0000HAJMP 0800H ORG 000BHAJMP T0SUB例3 將上題改為T1、方式1,設晶振為6MHZ 。即:T1工作 于定時方式1.定時100s,中斷方式,試編程。TM=12*1/6=2sTC=65536-100/2=FFCEHORG 0800HMOV TL1, #0CEHMOV TH1, #0FFHMOV TMOD, #10HSETB ET1SETB EASETB TR1SJMP $T0SUB:MOV TL1,0CEH MOV TH1,0FFH CPL P1.0 RETI ORG 0000HAJMP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論