《2022年单片机期末总结最完整版 .pdf》由会员分享,可在线阅读,更多相关《2022年单片机期末总结最完整版 .pdf(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机期末总结最完整版单片机期末复习总结1.MCS-51 单片机芯片包含哪些主要功能?8051 单片机是个完整的单片微型计算机。芯片内部包括下列主要功能部件:1)8 位 CPU;2)4KB的片内程序存储器ROM 。可寻址 64KB 程序存储器和64KB 外部数据存储器;3)128B 内部 RAM;4)21 个 SFR ;5)4 个 8 位并行 I/O 口(共 32 位 I/O 线) ;6)一个全双工的异步串行口;7)两个 16 位定时器 /计数器; 0 8)5 个中断源,两个中断优先级;9)内部时钟发生器。2.MCS-51 单片机的 4 个 I/O 口在使用上各有什么功能?1)P0 口: 8
2、位双向三态端口,外接上拉电阻时可作为通用I/O 口线,也可在总线外扩时用作数据总线及低8 位地址总线。2)P1 口:8 位准双向 I/O 端口,作为通用I/O 口。3)P2 口:8 位准双向I/O 端口,可作为通用I/O 口,也可在总线外扩时用作高8位地址总线。4)P3 口: 8 位准双向I/O 端口,可作为通用I/O 口,除此之外,每个端口还有第二功能。实际应用中常使用P3 口的第二功能。P3 的第二功能:引脚第二功能第二功能信号名称P3.0 RXD 串行输入P3.1 TXD 串行输出P3.2 INT0 外部中断0 请求输入端, 低电平有效P3.3 INT1 外部中断1 请求输入端, 低电平
3、有效P3.4 T0 定时 /计数器 0 的计数脉冲输入端P3.5 T1 定时 /计数器 1 的计数脉冲输入端P3.6 WR 外部 RAM 写选通信号输入端,低电平有效P3.7 RD 外部 RAM 写选通信号输出端,低电平有效【注】:P0 口必须接上拉电阻;I/O 口准双向: MCS-51 单片机 I/O 口做输入之前要先输出1.这种输入之前要先输出1 的 I/O 口线叫做准双向I/O 口,以区别真正的输入,输出的双向I/O 口。3. MCS-51单片机的存储器分为哪几个空间?是描述各空间作用?8051 存储器包括程序存储器和数据存储器,从逻辑结构上看,可以分为三个不同的空间:1) 64KB 片
4、内片外统一编址的程序存储器地址空间,地址范围:0000HFFFFH,对于 8051单片机,其中地址0000H0FFFH 范围为 4KB 的片内 ROM 地址空间, 1000H FFFFH 为片精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 40 页 - - - - - - - - - - 单片机期末总结最完整版外 ROM 地址空间;2)256B 的内部数据存储器地址空间,地址范围为00HFFH ,对于 8051 单片机, 内部 RAM分为两部分, 其中地址范围00H 7FH (共 128B单元
5、) 为内部静态RAM 的地址空间, 80HFFH为特殊功能寄存器的地址空间,21 个特殊功能寄存器离散地分布在这个区域;对于 8052 系列单片机还有地址范围为80HFFH 的高 128B 的静态 RAM。3)64KB 的外部数据存储器地址空间:地址范围为0000HFFFFH,包括扩展I/O 端口地址空间。4.数据存储器MCS-51 基本型单片机内部数据存储器有256B 的存储空间,地址为00HFFH; 外 部 数 据 存 储 器 的 地 址 空 间 最 大 为64KB , 编 址 为0000HFFFFH。256B 的内部存储器按功能划分为两部分:地址为00H7FH的低128B 的基本 RAM
6、 区和地址为80HFFH 的高 128B 的特殊功能寄存器(SFR )区基本 RAM 区分为工作寄存器区,位寻址区,用户RAM 区工作寄存区(00H1FH):共分为4组,每组由8 个工作寄存器,编号R0R7 位寻址区 (20H2FH):16 个单元,既可以作为普通RAM 单元使用,有可以对单元中的每一位进行位操作。用户 RAM 区(30H7FH):用于存放随机数据及运算的中间结果。程序状态字寄存器(PSW) : RS1,RS0(PSW.4,PSW.3):工作寄存器组选择控制位。可用软件对它们置1 或清 0,以 选择 当前 工作 寄精品资料 - - - 欢迎下载 - - - - - - - -
7、- - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 40 页 - - - - - - - - - - 单片机期末总结最完整版存器的组号。堆栈指针寄存器SP: 堆栈只允许在其一端进行数据插入和数据删除操作的线性表。PUSH,数据写入堆栈称为插入运算(入栈);POP, 从堆栈中读出数据称为删除运算(出栈) 。堆栈的特点:后进先出LIFO(Last-In Firt-Out)。堆栈有两种类型:向上生长型,向下生长型。进栈操作:先SP加 1,后写入数据出栈操作:先读出数据,后SP减 1 MCS-51 单片机复位后,SP的初值自动设为07H; 5.什么是振荡周期,时钟周期
8、,机器周期和指令周期?如何计算机器周期的确切时间?1) 振荡周期是指为单片机提供脉冲信号的振荡源的周期,是单片机最基本的时间单位。通常由外接晶振与内部电路来提供振荡脉冲信号,其频率记为OSCf,此频率的倒数即是振荡周期。2) 振荡脉冲经过二分频后就是单片机的时钟信号,时钟信号的周期称为时钟周期,又定义为状态,用S表示。时钟周期是振荡周期的二倍。3)机器周期是指令执行过程中完成某一个基本操作所需的时间。一个机器周期等于12 个振荡周期。 即OSCMfT12。4)指令周期是指执行一条指令所需要的时间,根据指令不同, 可包含 1、2、4 个机器周期。常用符号说明:寻址方式:(1)立即寻址。操作数直接
9、在指令中给出,它可以是二进制、十进制、十六进制数,也可精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 40 页 - - - - - - - - - - 单片机期末总结最完整版以是带单引号的字符,通常把这种操作数称为立即数,它的寻址范围就是指令本身所在的程序存储单元。例:MOV A,#25H;MOV DPTR,#1234H; (2)直接寻址。在指令中直接给出存放操作数的内存单元的地址。寻址范围为:内部RAM低 128 字节单元,特殊功能寄存器。例:MOV A,25H; (3) 寄存器寻址。 指令
10、中给出的是操作数所在的寄存器。寻址范围为:4 组工作寄存器 (R0 R7) ,部分特殊功能寄存器,如A、B、DPTR。例: MOV A,R7; (4)寄存器间接寻址。 存放操作数的内存单元的地址放在寄存器中,指令只给出寄存器 (包括 Ri 和 DPTR) ,寄存器名称前加“ ”前缀标志。寻址范围:地址范围从00 FFH的全部内部 RAM 单元,包括堆栈区,但不包括特殊功能寄存器,以及地址范围从0000 FFFFH的全部片外RAM。例:MOV A,R7; (5)变址寻址。将基址寄存器与变址寄存器的内容相加,结果作为操作数的地址。变址寻址主要用于查表操作。寻址范围:64KB 的程序存储空间。例:M
11、OVC A,A+DPTR; (6)相对寻址。指令中给出的操作数是程序相对转移的偏移量。偏移量是一个带符号的单字节数,范围为-128 +127 。例:SJMP 50H; (7)位寻址。操作数是位地址。寻址范围:内部RAM 位寻址区共128 位(位地址: 00 7FH) ,11 个特殊功能寄存器中的可寻址位(对于8051,有 83 位) 。MCS-51 单片机指令系统I.数据传送类 (29 条) 1.普通传送指令MOV:内部 ROM;MOVC: 外部 ROM;MOVX: 程序存储器。1)片内数据存储器传送指令(16 条 ) (1)以 A 为目的操作数指令(4 条) MOV A,#data; MOV
12、 A,direct; MOV A,Rn; MOV A,Ri; (2)以 Rn 为目的操作数的指令(3 条) MOV Rn,#data; MOV Rn,direct; MOV Rn,A; (3)以直接地址为目的操作数的指令(5 条) MOV direct,#data; MOV direct,direct; MOV direct,A; MOV direct,Rn; MOV direct,Ri; (4)以寄存器间接寻址为目的操作数的指令(3 条) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 40
13、 页 - - - - - - - - - - 单片机期末总结最完整版MOV Ri,#data; MOV Ri,direct; MOV Ri,A; (5)16 位书库传送指令(1 条) MOV DPTR,#data16; 2)片外数据存储器传送指令(4 条)(1)使用 DPTR 进行间接寻址MOVX A , DPTR ;A(DPTR) )MOVX DPTR , A ; (DPTR)A(2)使用 Ri 进行间接寻址MOVX A , Ri ;A(Ri) )MOVX Ri ,A ; (Ri) A 例 3.6 要求把外部RAM 60H 单元中的数据8BH 传送到内部RAM 50H 中,试编程。解法 1:
14、MOV R0 , #60H ; (R0)=60H MOVX A , R0 ; (A)=8BH MOV 50H , A ; (50H)=8BH 解法 2:MOV DPTR , #0060H ; (DPTR)=0060H MOVX A , DPTR ; (A)=8BH MOV 50H , A ; (50H)=8BH 3)程序存储器传送指令(2 条)MOVC A , A+DPTR ;A(A)+ (DPTR) )MOVC A , A+PC ;A( ( A)+(PC) )例 3.7已知程序存储器中以TAB 为起点地址的空间存放着09 的 ASCII 码, 累加器 A 中存放着一个09 之间的 BCD 码
15、数据。要求用查表的方法获得A 中数据的ASCII码。解法 1: MOV DPTR , #TAB MOVC A , A+DPTR RET TAB: DB 30H,31H, 32H,33H,34H,35H,36H,37H,38H ,39H 解法 2: INC A MOVC A , A+PC RET TAB: DB 30H,31H, 32H,33H,34H,35H,36H,37H,38H ,39H 2.数据交换指令(5 条)(1)整字节交换指令源操作数与累加器A 进行 8 位数据交换,共有3 条指令:XCH A , Rn ; (A)( Rn)XCH A , direct ; (A)( direct
16、)XCH A , Ri ; (A)( (Ri) )(2)半字节交换指令源操作数与累加器A 进行低 4 位的半字节数据交换,只有 1 条指令:XCHD A , Ri ; (A)30 ( (Ri) )30 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 40 页 - - - - - - - - - - 单片机期末总结最完整版(3)累加器高低半字节交换指令累加器 A 的高低半个字节进行数据交换,只有1 条指令:SWAP A ; (A)30 ( A)74 3.堆栈操作指令PUSH direct; -S
17、P+1,SP (direct)POP direct; -direct (SP),SP (SP-1) II.算术运算类指令1. 加法指令1)不带进位的加法指令ADD A , #data ;A( A)+data ADD A , direct ;A( A)+ (direct )ADD A , Rn ;A( A)+(Rn)ADD A , Ri ;A( A)+( (Ri) )加法运算的结果会影响程序状态字寄存器PSW,其中包括: 如果运算结果的最高位第7 位有进位,进位标志CY置“ 1”,反之, CY 清“ 0”; 如果运算结果的第3 位有进位,辅助进位标志AC 置“ 1”,反之, AC 清“ 0”;
18、如果运算结果的第6 位有进位而第7 位没有进位或者第7 位有进位而第6 位没有进位,则溢出标志OV 置“ 1”(即 OV=C7 C6) ,反之, OV 清“ 0”; 奇偶标志 P随累加器A 中 1 的个数的奇偶性而变化。例 3.10已知( A)=97H , (R0)=89H ,执行指令: ADD A , R0 解:1001 0111 + 1000 1001 10010 0000运算结果:(A)=20H ,CY=1 ,AC=1 ,OV=1 ,P=1。若 97H 和 89H 是两个无符号数,则结果是正确的;反之,若 97H 和 89H 是两个带符号数(即负数),则由于有溢出而表明相加结果是错误的,
19、因为两个负数相加结果不可能是正数。2)带进位的加法指令ADDC A , #data ;A( A)+data+ (CY)ADDC A , direct ;A( A)+ (direct )+ (CY)ADDC A , Rn ;A( A)+(Rn)+(CY)ADDC A , Ri ;A( A)+( (Ri) )+ (CY)例 3.11已知当前( CY)=1, (A)=97H , (R0)=89H ,执行指令: ADDC A , R0 解:1001 0111 1000 1001 + 1 10010 0001运算结果:(A)=21H ,CY=1,AC=1 ,OV=1 ,P=0。3)加 1 指令INC A
20、 ; A (A)+1 INC Rn ; Rn ( Rn)+1 INC direct ; direct(direct )+1 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 40 页 - - - - - - - - - - 单片机期末总结最完整版INC Ri ;( Ri)( ( Ri) )+1 INC DPTR ; DPTR(DPTR) +1 加 1 指令的操作不影响程序状态字PSW 的状态,只有“INC A”指令可以影响奇偶标志位 P 例 3.13已知:(A)=0FFH, ( R3)=0FH
21、, (30H)=0F0H , ( R0)=40H , (40H )=00H , (DPTR)=1234H ,执行如下指令:INC A INC R3 INC 30H INC R0 INC DPTR 其结果为:(A)=00H , (R3)=10H , (30H)=0F1H , (R0)=40H , (40H)=01H ,(DPTR)=1235H ,PSW 中仅 P 改变。2.减法指令1)带借位的减法指令SUBB A , #data ;A( A) data( CY)SUBB A , direct ;A( A)( direct )( CY)SUBB A , Rn ;A( A)( Rn)( CY)SUB
22、B A , Ri ;A( A)(Ri) )( CY)减法运算的结果会影响程序状态字寄存器PSW,其中包括: 如果运算结果的最高位第7 位有借位,则进位标志CY置“ 1”,反之, CY 清“ 0”; 如果运算结果的第3 位有借位,则辅助进位标志AC 置“ 1”,反之, AC 清“ 0”; 如果运算结果的第6 位有借位而第7 位没有借位或者第7 位有借位而第6 位没有借位,则溢出标志OV 置“ 1”(即 OV=C7 C6) ,反之, OV 清“ 0”; 奇偶标志 P随累加器 A 中 1 的个数的奇偶性而变化。例 3.14已知( A)=0C9H, (R2)=54H , (CY)=1 。执行指令: S
23、UBB A , R2 解:1100 1001 0101 0100 1 0111 0100 运算结果:(A)=74H ,CY=0,AC=0 ,OV=1 , P=0。若 C9H 和 54H 是两个无符号数,则结果74H 是正确的;反之,若为两个带符号数,则由于有溢出而表明结果是错误的,因为负数减正数其差不可能是正数。2)减 1 指令组4 条减 1 指令:DEC A ; A (A) 1 DEC Rn ; Rn ( Rn) 1 DEC direct ; direct(direct ) 1 DEC Ri ;(Ri)(Ri) ) 1 减 1 操作不影响PSW 的状态 ,只有 DEC A 影响奇偶标志位P
24、只有数据指针DPTR 加 1 指令,而没有DPTR 减 1 指令,如果要在程序设计中进行DPTR-1 运算,只有通过编程完成精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 40 页 - - - - - - - - - - 单片机期末总结最完整版例 3.3.15假如(A)=0FH, ( R7)=19H , (30H)=00H , (R1)=40H , (40H)=0FFH,执行指令:DEC A DEC R7 DEC 30H DEC R1 结果: (A)=0EH, (R7)=18H , (30H)
25、=0FFH, (R1)=40H , (40H)=0FEH。PSW中仅 P 改变3.乘法指令MUL AB 16 位乘积的低位字节放在A 中,高位字节放在B 中乘法运算影响PSW 的状态:进位标志CY总是被清“ 0”,溢出标志位状态与乘积有关例 3.3.16已知( A)=80H (即十进制数128) , (B)=40H (即十进制数64) ,执行指令: MUL AB 执行结果:乘积为2000H(十进制数为8192), (A)=00H , (B)=20H ,CY=0,OV=1 4.除法指令DIV AB 被除数: A 除数: B 指令执行后,商存于A 中,余数存于B 中除法运算影响PSW 的状态:进位
26、标志位CY 总是被清“ 0”,溢出标志位 OV 状态则反映除数情况例 3.17 已知( A)=80H (即十进制数128) , (B) =40H (即十进制数64) ,执行指令: DIV AB 执行结果:商为02H, 余数为 00H, (A)=02H , ( B)=00H ,CY=0 ,OV=0 。5.十进制调整指令:用于对BCD 码十进制数加法运算的结果进行修正。DA A 十进制调整的修正方法:(1) 累加器低4 位大于 9 或辅助进位位 (AC)=1,则进行低 4 位加 6 修正A (A)+06H(2)累加器高4 位大于 9 或进位标志位 (CY)=1,则进行高4 位加 6 修正A (A)
27、+60H(3)累加器高4 位为 9、低 4 位大于 9,则进行高4 位和低 4 位分别加6 修正A (A)+66H例 3.18 试编写程序,实现93+59 的加法运算,并分析执行过程。解:加法运算程序为:MOV A , #93H ADD A , #59H DA A 程序执行的过程分析:1001 0011 + 0101 1001 1110 1100 0110 0110 ;加 66H 调整精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 40 页 - - - - - - - - - - 单片机期末总
28、结最完整版1 0101 0010 最终结果为1 0101 0010 (152)是正确的BCD 码。III.逻辑运算及移位类指令(24 条)1.逻辑与运算指令组ANL A , #data ; A (A)data ANL A , direct ; A (A)( direct )ANL A , Rn ; A (A)( Rn)ANL A , Ri ; A (A)(Ri) )ANL direct , #data ; direct(direct )data ANL direct , A ; direct(direct )( A)例 3.19 已知( A)=86H ,试分析下面指令执行的结果:(1)ANL
29、A , #0FFH;(2)ANL A , #0F0H; (3)ANL A , #0FH; (4)ANL A , #1AH; 解: (1)A=86H ;(2)A=80H ;(3)A=06H ;(4)A=02H 。由上例可知,逻辑与指令可用于将指定位清0,方法:将要清零的位与0 相与,把要保留的位与 1 相与。2.逻辑或运算指令组ORL A , #data ; A (A)data ORL A , direct ; A (A)( direct )ORL A , Rn ; A (A)( Rn)ORL A , Ri ; A( A)( (Ri) )ORL direct , #data ; direct (
30、direct )data ORL direct , A ; direct(direct )( A)例 3.20 已知( A)=86H ,试分析下面指令执行的结果:(1)ORL A , #0FFH;(2)ORL A , #0F0H; (3)ORL A , #0FH; (4)ORL A , #1AH; 解: (1)A=0FFH;(2)A=0F6H ;(3)A=8FH ;(4)A=9EH 。由上例可知,逻辑或指令可用于将指定位置1,方法是将要置1 的位与 1 相或,把要保留的位与 0 相或3.逻辑异或运算指令组XRL A , #data ; A (A) data XRL A , direct ; A
31、 (A) (direct )XRL A , Rn ; A ( A) (Rn)XRL A , Ri ; A (A) ( ( Ri) )精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 40 页 - - - - - - - - - - 单片机期末总结最完整版XRL direct , #data ; direct(direct )data XRL direct , A ; direct(direct ) (A)例 3.3.20 已知( A)=86H ,试分析下面指令执行的结果:(1)XRL A , #
32、0FFH;(2)XRL A , #0F0H; (3)XRL A , #0FH; (4)XRL A , #1AH; 解: (1)A=79H ;(2)A=76H ;(3)A=89H ;(4)A=9CH 。4.累加器清“ 0”和取反指令组累加器清“ 0”指令 CLR A ; A 0累加器取反指令:CPL A; A (A)5.移位指令组(1)累加器循环左移RL A; (2)累加器循环右移RR A; (3)带进位循环左移RLC A; (4)带进位循环右移RRC A; 例 3.3.23 若累加器 A 中的内容为1000 1011B ,CY=0 ,则执行 RLC A 指令后累加器A 中的内容为 0001 0
33、110 ,CY=1 .控制转移类指令1.无条件转移指令组:不规则条件的程序转移称为无条件转移(1)长转移指令LJMP addr16; PC addr16 转移范围: 64KB (2)绝对转移指令AJMP addr11;PC ( PC)+2,PC100 addr11指令功能:构造程序转移目的地址,实现程序转移以指令提供的11 位地址去替换PC 的低 11 位内容, 形成新的 PC 值,即转移的目的地址.注意: PC 是下一条指令的PC 值,是本条指令地址加2 以后的 PC 值例 3.25 程序存储器1000H 地址单元有绝对转移指令:1000H AJMP 0750H 分析该指令的执行情况。解:指
34、令 AJMP 0750H 执行前,(PC)=1000H ,取出该指令后PC当前值为1002H ,指令执行的过程是将指令中的11 位地址 111 0101 0000B 送入 PC 的低 11 位,得新的 PC 值为 0001 0111 0101 0000B=1750H,所以指令AJMP 0750H 执行的结果就是转移到1750H处执行程序。(3)短转移指令: SJMP rel 目的地址 PC(PC) 2rel 例 3.26 在 1000H 地址上有指令1000H SJMP 30H 则目的地址为1000H+02H+30H=1032H程序向前转移如果指令为1000H SJMP 0E7H rel=0E
35、7H ,是负数19H 的补码,目的地址 =1000H+02H-19H=0FE9H。程序向后转移。单片机程序设计时,通常用到一条SJMP 指令:SJMP $ 或HERE:SJMP HERE以$代表 PC 的当前值精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 40 页 - - - - - - - - - - 单片机期末总结最完整版(4)变址寻址转移指令JMP A+DPTR ;PC (A)+(DPTR)目的地址( A)( DPTR)例 3.28 设累加器A 中存放着待处理命令的编号(0n ; n
36、85),程序存储器中存放着标号为 PGTAB 的转移表, 则执行以下程序, 将根据 A 内命令编号转向相应的命令处理程序。PG: MOV B , #3 MUL AB ; A ( A)*3 MOV DPTR , #PGTB ; DPTR转移表首址JMP A+DPTR PGTB: LJMP PG0 ; 转向命令0 处理入口LJMP PG1 ; 转向命令1 处理入口LJMP PGn ; 转向命令n 处理入口2.条件转移指令组:程序的转移时有条件的(1).累加器判零转移指令JZ rel ; 若( A)=0,则 PC ( PC)+2+rel 。若( A) 0,则 PC ( PC)+2 JNZ rel ;
37、 若( A) 0,则PC ( PC) +2+rel 。若( A)=0 ,则 PC ( PC)+2 例 3.29 编写程序将内部RAM 以 30H 为起始地址的数据传送到50H 为起始地址的内部RAM 区域,遇0 终止。解:MOV R0 , #30H MOV R1 , #50H LOOP: MOV A , R0 JZ LOOP1 MOV R1 , A INC R0 INC R1 SJMP LOOP LOOP1: SJMP $ (2) 数值比较转移指令:将两个操作数进行比较,比较结构作为条件来控制程序转移CJNE A , #data , rel ; (A) data 则转移CJNE A , dir
38、ect , rel ; (A)( direct )则转移CJNE Rn , #data ,rel ; (Rn) data 则转移CJNE Ri , #data , rel ; ( (Ri) ) data 则转移(3)减一非零转移指令DJNZ Rn , rel ; Rn ( Rn)-1 ; 若( Rn) 0,则 PC ( PC)+2+rel ; 若( Rn) 0,则 PC ( PC)+2 DJNZ direct , rel ; Rn ( Rn)-1 ; 若( direct ) 0,则 PC ( PC)+3+rel ; 若( direct ) 0,则 PC ( PC)+3 例 3.29 编写程序将
39、内部RAM 以 30H 为起始地址的10 个单元的数据传送到50H 为起始地址的内部RAM 区域,如果遇0 终止。解:MOV R0 , #30H 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 40 页 - - - - - - - - - - 单片机期末总结最完整版MOV R1 , #50H MOV R7 , #32 LOOP: MOV A , R0 JZ LOOP1 MOV R1 , A INC R0 INC R1 DJNZ R7 , LOOP LOOP1: SJMP $ For 循环:
40、MOV R6,# 200 LOOP: NOP; DJNZ R6,LOOP 3. 子程序调用与返回指令:调用指令在主程序中使用,返回指令应该是子程序的最后一条指令。执行完这条指令之后,程序返回主程序断点处继续执行(1)长调用指令LCALL addr16 ; PC (PC)+3 ; SP ( SP ) +1, (SP )( PC)70; SP ( SP ) +1, (SP )( PC)158; PC addr16(2)绝对调用指令ACALL addr11 ; PC ( PC)+2 ; SP ( SP) +1, ( SP)( PC)7 0 ; SP ( SP) +1, ( SP)( PC)158 ;
41、 PC100addr11(3)子程序返回指令RET ;PC158 ( (SP ) ) ,SP ( SP) -1 ; PC70 ( (SP) ) ,SP ( SP)-1 (4)终端返回指令RETI ;PC158 ( (SP) ) ,SP ( SP)-1 ;PC70 (SP) ) ,SP ( SP)-1 例 3.33 从片外数据存储器1000H 单元开始有10 个 09 之间的数,请求出相应数的平方并存入片内RAM 50H 开始的存储单元,试编程实现。解:主程序编程:MAIN: MOV DPTR , #1000H MOV R0 , #50H MOV R7 , #10 ;循环 10 次LOOP: M
42、OVX A , DPTR ACALL QPF ;调用求平方的子程序MOV R0 , A INC R0 INC DPTR DJNZ R7 , LOOP SJMP $ 子程序编程:QPF: MOV B , A MUL AB RET 4.空操作指令NOP ; PC ( PC)+1 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 40 页 - - - - - - - - - - 单片机期末总结最完整版控制 CPU 不作任何操作,只消耗一个机器周期的时间单字节指令,因此执行后PC 加 1,时间延续一个
43、机器周期.位操作类指令(17 条)1.位传送指令MOV C , bit ; CY (bit)MOV bit , C ; bit(CY)例 3.34 例如将 30H 位的内容传送到40H 位,试编程。MOV 10H , C ;暂存 CY 内容MOV C , 30H ;30H 位送 CY MOV 40H , C ;CY送 40H MOV C , 10H ;恢复 CY 内容2.位置位与清零指令SETB C ;CY 1SETB bit ;bit 1CLR C ;CY 0CLR bit ;bit 03.位运算指令组ANL C , bit ;CY ( CY)( bit )ANL C , /bit ;CY
44、( CY)()ORL C , bit ;CY ( CY)( bit)ORL C , /bit ;CY ( CY)()CPL C ;CY ()CPL bit ;bit ()例 3.35 设 D、E、F代表位地址,试编程将位D、E的内容相异或,并把结果送到F中。解:位 D、E、F 的关系为,EDEDEDF编制程序如下:MOV C , D ANL C , /E ; CY MOV F , C MOV C , /D ANL C , E ; CY ORL C , F ; MOV F , C ; 异或结果送F位4.位控制转移指令组(1)以 C 状态为条件的位转移指令JC rel ; 若(CY)=1,则 PC
45、 ( PC) +2+rel ; 若(CY)=0,则 PC ( PC)+2 JNC rel ; 若(CY)=0,则 PC ( PC)+2+rel ; 若(CY)=1,则 PC ( PC)+2 (2)以位地址内容为条件的转移指令JB bit , rel ;若( bit )=1,则 PC ( PC)+3+rel ;若( bit )=0,则 PC ( PC)+3 JNB bit , rel ;若( bit )=0,则 PC ( PC)+3+rel 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 40
46、 页 - - - - - - - - - - 单片机期末总结最完整版; 若( bit)=1 ,则 PC ( PC)+3 JBC bit , rel ;若( bit )=1,则 PC ( PC)+3+rel , ; ( bit ) 0 ;若( bit )=0,则 PC ( PC)+3 流水灯,汇编KEY BIT P2.3 ORG 00H LJMP MAIN ORG 1000H MAIN:MOV C,KEY JC CON1 /*若 C=1,跳转到 CON1*/ MOV DPTR,#TAB1 MOV R2,#8 SJMP CON2 CON1:MOV DPTR,#TAB2 MOV R2,#16 CON
47、2:LCALL DISPLAY SJMP MAIN DISPLAY:MOV A,R2 MOV R6,A MOV A,#0 LOOP: MOV 20H,A MOVC A,A+DPTR MOV P1,A LCALL DELAY MOV A,20H INC A DJNZ R6,LOOP RET DELAY:MOV R3,#200 D1:MOV R4,#200 D2:NOP DJNZ R4,D2 DJNZ R3,D1 RET ORG 2000H TAB1:DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH TAB2:DB 7FH,0FFH,0BFH,0FFH,0DFH,
48、0FFH,0EFH,0FFH,0F7H,0FFH,0FBH,0FFH,0FDH,0FFH,0FEH,0FFH C51 的数据类型:Char:单字节,可以存放一个字符。Int:整数,对大多数单片机开发软件而言是双字节大小float :单精度浮点数。double :双精度浮点数。单片机特有的数据类型精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 40 页 - - - - - - - - - - 单片机期末总结最完整版bit 位变量,值为0 或 1 sbit 声明可位寻址空间的一个位sfr 特殊功
49、能寄存器,8 位sfr16 特殊功能寄存器,16 位C51 的存储模式:Small 模式,所有缺省变量参数均装入内部RAM。优点是速度快,缺点在于空间有限,仅适用于小规模程序设计。Compact 模式,所有缺省变量均位于外部RAM 区的一页( 256 个字节),具体哪一页可由P2 口指定(在STARTUP.A51 文件中说明,也可用pdata 指定) 。优点是可用空间较Small 宽裕,速度比 Small 慢但比 Large 要快。Large 模式,所有缺省变量可放在多达64KB 的外部 RAM 区。优点在于空间大,可存变量多,缺点是速度较前两种模式要慢。第六章什么是中断? MCS-51 有几
50、个中断源?中断请求如何提出?单片机如何进行中断的响应?数据类型位宽字 节数数值范围Bit 1 01 Char 8 1 -128+127 unsigned char 8 1 0255 Short 16 2 -32768+32767 unsigned short 16 2 065535 Int 16 2 -32768+32767 unsigned int 16 2 065535 Long 32 4 -2147483648+2147483647 unsigned long 32 4 04294967295 Float 32 4 1.175494E-383.402823E+38 (6 位数字)Doub