云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 单片机原理与应用(第三章)及实验报告

单片机原理与应用(第三章)及实验报告

  • 62 次阅读
  • 3 次下载
  • 2025/7/1 16:00:10

单片机原理与应用(二)

第三章 单片机的指令系统及程序设计

单片机的应用可归纳为是对单片机的内、外存储器进行“存取”的操作,而“输入输出”的操作是对P0、P1、P2、P3这四个与芯片外部引脚相连的专用存储器的“存取”。

“存取”操作是在存储器之间进行的,可以直接用存储器的地址,如18、35H 也可以用专用的或自定义的变量名,如 A,R1, P3, Addr1,X1,ON。 3.1 MCS-51单片机指令系统概述

共有111条指令。

指令长度:单字节有49条,双字节有45条,三字节有17条。

执行时间:单周期指令有57条,双周期指令有52条,四周期指令有2条。 有7种寻址方式,42种助记符,33种功能。 指令可分为三大类:

1.数据传送指令:MOV、MOVC、MOVX

2.运算指令: ADDC、SUBB、RLC、ANL、SETB、CLR

3.转移控制指令:LJMP、JB、JNB、JZ、CJNE、DJNZ、LCALL、RET 指令格式:

标号: 功能助记符 [(目标操作数),(源操作数)] ;注释

例 START: MOV R1,#25H ; 常数25H送给寄存器R1

MOV A,45H ; 地址45H单元中的内容送给寄存器A

功能助记符也叫操作码。

3.2 MCS-51单片机指令系统的寻址方式

⑴ 立即(常数)寻址:MOV A,#18 ; 等价于C语言的A=18 表示为:A?18

MOV A,#3CH ; 等价于C语言的A=0X3C A?3CH MOV DPTR,#25D8H

⑵ 直接寻址: MOV A,18 ; 等价于C语言的A=数组名[18] A?(18)

MOV A,5BH ; 等价于C语言的A=数组名[5BH] A?(5BH) MOV DPH,62H ANL 40H,#50H LJMP 1234H

⑶ 寄存器寻址: MOV A,R1 ; 等价于C语言的A=R1 A?R1

MOV 27H,SP

⑷ 寄存器间接寻址:MOV A,@R1 ; 等价于C语言的A=数组名[R1] A?(R1)

MOVX A,@R1

MOVX A,@DPTR ; 等价于C语言的A=数组名[DPTR] A?(DPTR)

MOV @R0,#56H ; 等价于C语言的数组名[R0]=0X56 (R0)?56H

⑸ 相对(PC)寻址: SJMP 0E4H ; 等价于C语言的 goto 标号;

JZ -115 ; 等价于C语言的 if (A==0) goto 标号;

⑹ 变址寻址:MOVC A,@A+DPTR ; 等价于C语言的A=数组名[A+DPTR] A?(A+DPTR)

MOVC A,@A+PC

⑺ 位寻址: MOV C,25H C?(25H) MOV 25H,C (25H)?C SETB P1.0 P1.0?1 CLR P2.5 P2.5?0

SETB 37H (37H)?1 应表示为:(26H).7?1 更确切。 因为: MOV 37H, #1 也表示为:(37H)?1 3.3 MCS-51单片机指令系统的使用要点 3.3.1 会影响标志位的指令

PSW中的 C:进位 AC:半进位 OV:溢出 P:奇偶 例:(-104)+(-117)= (10011000) + (10001011) 补码运算

执行 MOV A, #98H 10011000 ADD A, #8BH +10001011 之后 A=23H=35, C=1, AC=1, OV=1, P=1 100100011 关于溢出:指令进行算术运算时,是以补码进行的。

值的范围:-128~+127,当运算的结果超出此范围时,OV=1 。

例:(-5)+(-6)= (11111011) + (11111010)

执行 MOV A, #0FBH 11111011

ADD A, #0FAH +11111010 之后 A=F5H= -11, C=1, AC=1, OV=0, P=0 111110101

3.3.2 伪指令:提供汇编的控制信息。

1. ORG 16位地址 ;指明下一条的地址 例1: ORG 100H ;指明下一条指令的地址是100H LJMP Main1 ;这条指令从程序存储器地址的100H开始存放

2. [标号:] DB 单字节数据项表 ;针对程序存储器 例2: ORG 2000H

MA:DB 68H,0F5H,128 ;MA≡2000H,(2000H)=68H,(2001H)=128 若执行指令 MOV DPTR,#MA ;等价于 MOV DPTR,#2000H CLR A ; A?0

MOVC A,@A+DPTR ;A?(A+DPTR)=(0+2000H)=68H

3. [标号:] DW 双字节数据项表 ; 例3: ORG 0F00H

MA: DW 68F5H,0234H

4. 名字 EQU 表达式 ;给表达式的值或字符串取名 这里的“名字”等同于高级语言中的变量名。 高级语言中注重“变量”,而汇编语言注重“地址”。 例4:ABC EQU 58H ; ABC≡58H

DianHuo EQU P1.4 ; DianHuo≡P1.4

指令 MOV A,ABC ; 等价于 MOV A,58H ;A?(58H) 指令 MOV A,#ABC ; 等价于 MOV A,#58H ;A?58H 指令 SETB DianHuo ; 等价于 SETB P1.4

5. 名字 DATA 直接字节地址 ;给内存RAM单元取名 6. 名字 WDATA 直接字节地址 ;给外存RAM单元取名 7. 名字 BIT 位地址 ;给可寻址的位单元取名 例5: DianHuo EQU P1.4 ; DianHuo≡P1.4 (或 DianHuo BIT P1.4 ; DianHuo≡P1.4 ) 指令 SETB DianHuo ; 等价于 SETB P1.4 BIT、DATA、WDATA是EQU的特例。

8. [标号:] END ;

9. [标号:] DS 表达式 ;空出若干个存储单元

3.3.3 指令系统的分类:共111条,可分为五大类。 1. 数据传送指令:不影响C、AC、OV ,影响P。 1). 内部数据存储器RAM的传输指令

汇编指令 机器指令

⑴ MOV A,R5 11101r r r

MOV A,65H 11100101 01100101 MOV A,#65H 11100100 01100101

MOV A,@R1 1110011 i ⑵ MOV R6,A (书上有错)

MOV R3,82H 10101r r r 10000010 MOV R0,#7DH 01111r r r 01111101 ⑶ MOV 15H,A ; (15H)?A MOV 38H,R5 ; (38H)?R5 MOV 6EH,@R1 ; (6EH)?(R1) MOV 53H,#8EH ; (53H)?8EH

例: K3 EQU 38H ; 请注意格式的对齐

MOV K3,R5 ; (K3)?R5 MOV 0E3H,2AH

⑷ MOV @R0,A MOV @R1,75H MOV @R0,#3BH

⑸ MOV DPTR,#15A3H ; DPTR?15A3H

⑹ PUSH 67H ; SP?SP+1 , (SP)?(67H) POP PSW ; PSW?(SP), SP?SP-1 ⑺ XCH A,R3 ; 字节交换 A←→R3 XCH A,27H ; A←→(27H) XCH A,@R1 ; A←→(R1)

⑻ XCHD A,@R0 ; 字节的低4位交换,高4位不变 SWAP A ; A的高4位和低4位交换 2). 累加器A与外部数据存储器RAM的传送指令 MOVX A,@DPTR ; A?(DPTR) MOVX @DPTR,A

MOVX A,@R1 ;A?(P2R1) MOVX @R0,A ;(P2R0) ?A 3). 查表指令(对程序存储器ROM) MOVC A,@A+PC

MOVC A,@A+DPTR ; A?(DPTR+A)

例:①对内部RAM:MOV A,@R0 ; R0的内容为表格中存放数据的地址。

②对外部RAM:MOVX A,@R0 ; P2,R0 为存放数据的地址

MOVX A,@DPTR ;

③对程序ROM:MOVC A,@A+DPTR ;一般A=0,DPTR作为增量。 表中取出的值与指定的值(如字符‘B’)比较、判别: CJNE A, ‘B’, L1

或 CJNE A,#42H,L1 ; 若 A≠42H 则转移到L1执行。 2. 算术操作指令

1). 加法指令 :⑴、⑵、⑷会影响C、AC、OV 、P。 ⑴ 不带进位的加法运算

ADD A,R3 ; A?A+R3 ⑵ 带进位的加法运算

ADDC A,R3 ; A?A+R3+C ⑶ 增量指令 INC A

INC R4 ; R4?R4+1

INC @R1 ; (R1)?(R1)+1 ⑷ 十进制调整指令

DA A ; 当A的高四位(低四位)的C=1(AC=1)或者大于9,则进行加6调整。 例: MOV A,#59H

ADD A,#69H ; A?59H+69H=C2H, C=0, AC=1 必须保证两个操作数均为BCD码 DA A ; A?C2H+66H=28H,C=1 2). 减法指令 :⑴会影响C、AC、OV 、P。 ⑴ 带借位减法指令 SUBB A,R5

SUBB A,63H ; A?A-(63H)-C SUBB A,@ R1 SUBB A,#4AH ⑵ 减1指令 DEC A DEC R3 DEC @R1 DEC 57H 3). 乘法指令

MUL AB ; A?A×B 结果的高8位在B, 低8位在A。 4). 除法指令

DIV AB ; A?A/B 结果的商在A, 余数在B。 3. 逻辑运算指令

1). 单操作数逻辑运算指令 ⑴ 累加器清零 CLR A

其余的寄存器或存储单元的清零,只能用 MOV R3,#00H ⑵ 累加器取反 CPL A ⑶ 累加器左移 RL A

RLC A ; 带进位C ⑷ 累加器右移 RR A

RRC A ; 带进位C

2). 双操作数逻辑运算指令:注意操作数没有 ANL 35H,R2的形式。 ⑴ 逻辑与

ANL 35H,A ; (35H)?(35H)∧A ⑵ 逻辑或

ORL A,@R1 ; A?A∨(R1)

⑶ 逻辑异或 若 MOV 6BH,#0C5H 11000101 XRL 6BH,#59H ;(6BH)?(6BH) + 59H=9CH + 01011001 主要用在判断两个字节内容是否相等。 10011100 相等时的结果为0。 4. 控制转移指令

1). 无条件转移

⑴ AJMP 11位地址 ;(PC)?PC的高5位后接11位地址 PC的高5位 地址段(2KB) 00000bbb XX 0000~07FF 00001bbb XX 0800~0FFF

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

单片机原理与应用(二) 第三章 单片机的指令系统及程序设计 单片机的应用可归纳为是对单片机的内、外存储器进行“存取”的操作,而“输入输出”的操作是对P0、P1、P2、P3这四个与芯片外部引脚相连的专用存储器的“存取”。 “存取”操作是在存储器之间进行的,可以直接用存储器的地址,如18、35H 也可以用专用的或自定义的变量名,如 A,R1, P3, Addr1,X1,ON。 3.1 MCS-51单片机指令系统概述 共有111条指令。 指令长度:单字节有49条,双字节有45条,三字节有17条。 执行时间:单周期指令有57条,双周期指令有52条,四周期指令有2条。 有7种寻址方式,42种助记符,33种功能。 指令可分为三大类: 1.数据传送指令:MOV、MOVC、MOVX

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com