单片机第三章PPT教学课件
合集下载
单片机第三章课件
(五)汇编语言程序设计步骤和基本程序结构 1.汇编语言程序设计步骤 . 分析问题 确定算法 设计程序流程图 标准的流程图符号见下图: 标准的流程图符号见下图:
流线 端点 符号 处理 符号
程序执行顺 序流向线 程序的开始和 结束符号 表示处理功 能
判断 符号 连接 符号
表示判断功能
用 来 实 现 流 程 图 之 间 的连接
ORG 0000H MOV DPTR,# ASCTAB MOV A, R0 ANL A,# 0FH MOVC A,@A+DPTR ;A中为表格中数据的序号,DPTR中放表头地址 中为表格中数据的序号, 中为表格中数据的序号 中放表头地址 MOV R0, A SJMP $ ASCTAB:DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H DB 41H,42H,43H,44H,45H,46H END
【 例3-1】 】 地址 指令代码 0000H 022000 0023H 02XXXX 2000H 2003H 2006H 2009H 758920 758DF3 758BF3 D28E 源程序 ORG 0000H LJMP MAIN ;上电转向主程序 ORG 0023H ;串行口中断入口地址 LJMP SERVE1 ;转中断服务程序 ORG 2000H ;主程序 MAIN:MOV TMOD,#20H ;设T1作方式 作方式2 : , 作方式 MOV TH1,#0F3H ;赋计数初值 , MOV TL1,# ,#0F3H ,# SETB TR1 启动T1 ;启动
三、分支结构程序设计 在程序设计中,经常需要计算机对某情况进行判断, 在程序设计中,经常需要计算机对某情况进行判断,然后根 据判断的结果选择程序执行的流向,这就是分支程序。 据判断的结果选择程序执行的流向,这就是分支程序。 在汇编语言程序中, 在汇编语言程序中,通常利用条件转移指令形成不同的程序 分支。 分支。 1.单分支程序 . 单元中存有一个带符号数, 【例3-7】 在片内 】 在片内RAM 30H单元中存有一个带符号数,试 单元中存有一个带符号数 判断该数的正负性,若为正数, 位清0;若为负数, 判断该数的正负性,若为正数,将6EH位清 ;若为负数, 位清 将6EH位置 。 位置1。 位置
(单片机完整课件PPT)第三章
寻址范围包括:
(1)内部RAM中的位寻址区。位有两种表示方法,例如, 40H;另一种是单元地址加上位,例如,(28H).0,指 的是28H单元中的最低位。它们是等价的。 (2)特殊功能寄存器中的可寻址位
可寻址位在指令中有如下4种的表示方法:
a. 直接使用位地址。例如PSW.5的位地址为0D5H。
b. 位名称的表示方法。例如:PSW.5是 F0 标志位,可使 用F0表示该位。 c.单元地址加位数的表示方法。例如 :(0D0H).5。 d.特殊功能寄存器符号加位数的表示方法。例如:PSW.5。
课堂练习:
指出下列指令中划线的操作数的寻址方式: Mov r0,#60h Mov a,30h Mov a, @r0 Movc a, @a+dptr Cjne a,#00h,one Cpl c Mov c,30h
如: MOV
A,Rn
;(Rn)→A,n=0~7
表示把寄存器Rn的内容传送给累加器A
寻址范围:ACC,B,DPTR,PSW,R0~R7,C
三、存储器寻址 寻址空间:64K 外RAM、64K ROM、128B 内RAM
1.直接寻址方式
操作数直接以单元地址的形式给出: MOV A,40H 寻址范围:内部RAM的256个单元 2.寄存器间接寻址方式 寄存器中存放的是操作数的地址 在寄存器的名称前面加前缀标志“@” 如: MOV A,@Ri ;i=0或1
单片机原理与应用技术
厦门理工学院电子与电气工程系 陈志英
第3章 单片机汇编语言编程技术
机器语言:是计算机可以识别和直接执行的语言,它是由一 组二进制代码组成。 汇编语言:是用助记符代替机器语言的操作码,用16进制 数代替二进制代码。 高级语言:是采用类似自然语言并与具体计算机类型基本无
单片机PPT第三章 (1)
单片机技术及应用
DELAY:MOV R0,#20 ; 1周期 D1: MOV R1,#20 ;1周期 DJNZ R1, $ ;2周期 DJNZ R0,D1 ;2周期 RET
单片机技术及应用
5. 调用指令
1) 绝对调用指令
• ACALL addr11 • 这条指令无条件地调用入口地址指定的子程序。指令 执行时PC加2,获得下一条指令的地址,并把这16位 地址压入堆栈,栈指针加2。然后把指令中的a10~a0
单片机技术及应用
3.2.6 位寻址
• 位寻址方式是指将要访问的数据是一个单独的位。
下面介绍几个例子表示几种规定位的方法。
• SETB 8EH
SETB ET1
;对位地址8EH置位
;置预先定义了的位地址ET1(定时器
T1允许位)
SETB 0A8H.3 ;置A8H 单元的位3
单片机技术及应用
单片机技术及应用
• 注: (70H)表示地址70H里的内容
单片机技术及应用
• 3.2.2 立即数寻址
• 立即数寻址方式是指令操作码后面字节的内容就是
操作数本身。汇编指令中,在一个数的前面冠以“#”
符号作前缀,就表示该数为立即数寻址。
例如:机器码 助 记 符 注释
74 5F
MOV A,#5FH
;5FH→A
• 该指令功能是将立即数5FH送入累加器A。
伪指令 并不算可执行程序的一部分,所 以不会被汇编器汇编,也不生成执行代码, 但却告知汇编器一些信息。如常用的伪指
令ORG告诉汇编器程序的起始地址、伪指
令END表明汇编程序的结束。
18
单片机技术及应用
1. ORG(Origin,起点) • ORG伪指令总是出现在每段源程序或数据块的开 始,它指明此语句后面的程序或数据块的起始地
单片机课件第3章(1)PPT课件
精选PPT课件
3
华中科技大学文华学院
第3章 51系列单片机汇编语言程序设计
3.1 概述 3.2 程序设计基本方法 3.3 子程序设计 3.4 典型程序设计举例
精选PPT课件
4
华中科技大学文华学院
彩灯循环设计
概述
精选PPT课件
5
华中科技大学文华学院
概述
ORG 0000H MAIN: MOV P1, #80H ;D7发光
MOV P1, #40H ;D6发光
MOV P1, #20H ;D5发光
MOV P1, #10H ;D4发光
MOV P1, #08H ;D3发光
MOV P1, #04H ;D2发光
MOV P1, #02H ;D1发光
MOV P1, #01H ;D0发光
SJMP MAIN
;循环
精选PPT课件
6
华中科技大学文华学院
〔例1〕 设变量X存放在外部RAM的2000H,与内部 RAM 30H单元的其准数Y比较,函数F存放在内部 RAM的40H单元。试编程实现下列函数关系:
1 (X>Y) F= 0 (X=Y)
-1 (X<Y)
精选PPT课件
11
华中科技大学文华学院
方法一: (1)流程图
开始 A←X A←X-Y A=0
程序设计基本方法
精选PPT课件
2
华中科技大学文华学院
2.设RAM 40H单元的内容为80H,80H单元内容为47H, P1口的输入状态为0FFH,试判断下列程序执行结 果。 MOV R0,#40H MOV A,@R0 MOV R1,A MOV B,@R1 MOV @R1,P1 MOV P2,P1
3.试编写1234H-0FA3H的程序段,将结果高8位存入51H, 低8位存入50H单元。
4单片机技术基础第三章PPT课件
二、寻址方式的种类: 三、寻址空间及符号注释:
14.08.2020
9
二、寻址方式的种类:
1、寄存器寻址 2、直接寻址 3、立即数寻址 4、寄存器间接寻址 5、变址寻址 6、相对寻址 7、位寻址
14.08.2020
10
1、寄存器寻址
寄存器寻址:由指令指出寄存器组R0~R7
中的某一个或其他寄存器(A,B,DPTR等)的内 容作为操作数。
分为机器语言、汇编语言和高级语言。
机器语言:用二进制编码表示每条指令,是计算机
能直接识别和执行的语言。
汇编语言:是用助记符、符号和数字等来表示指令
的程序设计语言。它与机器语言指令是一一对应的
如:MOV A,#0AH
74 0AH
14.08.2020
5
§3.1.2 指令格式
89C51汇编语言指令格式:
第三章 指令系统
3.1 汇编语言 3.2 寻址方式 3.3 89C51指令系统
14.08.2020
1
整体概况
+ 概况1
您的内容打在这里,或者通过复制您的文本后。
概况2
+ 您的内容打在这里,或者通过复制您的文本后。
概况3
+ 您的内容打在这里,或者通过复制您的文本后。
学习目的与要求:
▼熟悉机器语言、汇编语言机器区别
14.08.2020
12
表3-1 低3位操作码与寄存器Rn的对应关系
低3位rrr 000 001 010 011 100 101 110 111 寄存器Rn R0 R1 R2 R3 R4 R5 R6 R7
14.08.2020
13
2、直接寻址
直接寻址方式:在指令中给出的是操作数所在片内
14.08.2020
9
二、寻址方式的种类:
1、寄存器寻址 2、直接寻址 3、立即数寻址 4、寄存器间接寻址 5、变址寻址 6、相对寻址 7、位寻址
14.08.2020
10
1、寄存器寻址
寄存器寻址:由指令指出寄存器组R0~R7
中的某一个或其他寄存器(A,B,DPTR等)的内 容作为操作数。
分为机器语言、汇编语言和高级语言。
机器语言:用二进制编码表示每条指令,是计算机
能直接识别和执行的语言。
汇编语言:是用助记符、符号和数字等来表示指令
的程序设计语言。它与机器语言指令是一一对应的
如:MOV A,#0AH
74 0AH
14.08.2020
5
§3.1.2 指令格式
89C51汇编语言指令格式:
第三章 指令系统
3.1 汇编语言 3.2 寻址方式 3.3 89C51指令系统
14.08.2020
1
整体概况
+ 概况1
您的内容打在这里,或者通过复制您的文本后。
概况2
+ 您的内容打在这里,或者通过复制您的文本后。
概况3
+ 您的内容打在这里,或者通过复制您的文本后。
学习目的与要求:
▼熟悉机器语言、汇编语言机器区别
14.08.2020
12
表3-1 低3位操作码与寄存器Rn的对应关系
低3位rrr 000 001 010 011 100 101 110 111 寄存器Rn R0 R1 R2 R3 R4 R5 R6 R7
14.08.2020
13
2、直接寻址
直接寻址方式:在指令中给出的是操作数所在片内
第3章单片机课件
压栈时,堆栈指针先加1,然后压入数据; 出栈时,数据先弹出,然后堆栈指针减1。
例3.9 设(A)=30H,(B)=31H, 执行以下各条指令后,堆 栈指针及堆栈内容变化。 MOV PUSH PUSH POP POP SP, #3FH A B A; B;
;(SP)=3FH ;(SP)=40H(40H)=30H ;(SP)=41H(41H)=31H ;(SP)=40H(A)=31H ;(SP)=3FH(B)=30H
2).以Rn为目的字节的传送指令
• MOV • MOV • MOV Rn,A Rn,direct Rn,#data
; n=0~7
3).以直接地址为目的字节的传送指令
• • • • • MOV MOV MOV MOV MOV dcrect, dcrect, dcrect1, dcrect, dcrect, A Rn ; n=0~7 direct2 @Ri ;i=0,1 #data
SUBB SUBB SUBB SUBB A, #data A, direct A, @Ri A, Rn
例3.12 设(A)=0C9H,(R2)=54H,Cy=1 执行指令:SUBB A,R2 结果:(A)=74H Cy=0 AC=0 OV=1 P=0
例3.13 将(31H)、(30H)和 (41H)、(40H)中两个双字节 无符号数相加,结果送51H、50H。 • • • • • • MOV A,30H ADD A,40H MOV 50H,A MOV A,31H ADDC A,41H MOV 51H,A
3.3 算术运算指令
共有24条。 主要完成加、减、乘、除四则运算 以及增量、减量和十 进制调整操作。 大多数的算术运算指令都对 PSW 的标志位有影 响。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020/12/10
3
4.完成以下的数据传送过程。 (1)R1的内容传送到R0。 (2)片外RAM 20H单元的内容送R0。 (3)片外RAM 20H单元的内容送片内RAM 20H (4)片外RAM 1000H单元的内容送片内RAM 20H (5)片外RAM 20H单元的内容送R0。 (6)片外RAM 2000H单元的内容送片内RAM 20H (7)片外RAM 20H单元的内容送片外RAM 20H
2020/12/10
4
(1)R1的内容传送到R0 ;
MOV A,
R1
MOV R0, A
(2)片外RAM 20H单元内容送R0 ;
MOV DPTR, #0020H
MOVX A,
@
MOV R0, A
(3)片外 RAM 20H单元的内容送片内RAM 20H单元;
MOV DPTR, #0020H
MOVX A, @DPTR
LOOP:MOV A,@R1
MOVX @DPTR,A
INC R1
INC DPTR
DJNZ R7,LOOP
SJMP $
2020/12/10 END
7
6.设有100个有符号数,连续存放在片外RAM以2200H为首 地址的存储区中,试片成统计其中正数|、负数、零的个数。
ORG 0000H
LJMP MAIN
2020/12/10
12
2020/12/10
2
3.在8051的片内RAM中,已知(20H)=30H, (30H)=40H,(40H)=50H,(50H)=55H。
分析下面各条指令,说明源操作数的寻址方式, 分析按顺序执行各条指令后的结果。
MOV A,40H MOV R0,A MOV P1,#0F0H MOV @R0,20H MOV 50H,R0 MOV A,@R0 MOV P2,P1
ORG 0030H
MAIN:
MOV R2,#100
MOV R3,#00H
MOV R4,#00H
MOV R5,#00H
MOV DPTR,#2000H
LOOP:
MOVX A,@DPTR
CJNE A,#00H,NET1
INC R3
INC DPTR
DJNZ R2,LOOP
SJMP NET3
NET1: JC NET2
MOV R0, A
(6)ROM 2000H 单元的内容送片内RAM 20H单元;
MOV A, #00H
MOV DPTR, #2000H
MOVC A, @A+DPTR
MOV 20H, A
(7)ROM 2000H单元的内容送片外RAM 20H单元。
MOV A, #00H
MOV DPTR, #2000H
MOVC A, @A+DPTR
MOV 20H, A
(4)片外RAM 1000H单元的内容送片内 RAM 20H 单元;
MOV DPTR, #1000H
MOVX A,
@DPTR
MOV 20H, A
2020/12/10
5
(5)ROM 2000H单元的内容送R0单元;
MOV A, #00H
MOV DPTR, #2000H
MOVC A, @A+DPTR
2020/12/10
1
2.设堆栈指针(SP)=60H,片内RAM中的(30H) =24H,(31H)=10H。执行下列程序段后,61H, 62H,30H,31H,DPTR及SP中的内容将有何变 化?
结果为: (61H)=24H (62H)=10H (30H)=00H (31H)=0FFH DPTR=2410H SP=60H
③ 其余情况,
黄灯亮。
2020/12/10
9
解:程序如下
SGNL:ANL P1,#11100011B;红绿黄灯灭
ORL P1,#00000011B;置P1.0、P1.1输入态, P1.5~P1.7状态不变
SL0: JNB P1.0,SL1 ;P1.0=0,S0未按下,转判S1
JNB P1.1,RED ;P1.0=1,S0按下;且P1.1=0,S1未按下,转红灯亮
MOV DPTR, #0020H
MOVX @DPTR, A
2020/12/10
6
5.编程将片内RAM的40H~60H单元中内容送到片外 RAM以3000H开始的单元中。
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN: MOV R7,#20H
MOV R1,#40H
MOV DPTR,#3000H
INC R4
INC DPTR DJNZ R2,LOOP
SJMP NET3 NET2: INC R5
INC DPTR DJNZ R2,LOOP NET3: SJMP $
END
2020/12/10
8
7.已知电路如图4-5所示,要求实现:
① S0单独按下,
红灯亮,其余灯 灭;
② S1单独按下,
绿灯亮,其余灯 灭;
1.设片内RAM中的(40H)=50H,写出执行下列程 序段后寄存器A和R0,以及片内RAM中50H和51H 单元的内容为何值?
MOV A,40H MOV R0,A MOV A,#00 MOV @R0,A MOV A,#30H MOV 51H,A MOV 52H,#70H
结果为:(A)=30H (R0)=50H (50H)=00H (51H)=30H
;转循环
RED: SETB P1.2
;红灯亮
CLR P1.3
;绿灯灭
CLR P1.4
;黄灯灭
SJMP SL0
;转循环
2020/12/10
10
8. 内部RAM 20H单元开始存有8个数,试找出其 中最大的数,送入MAX单元。
解:程序如下:
2020/12/10
11
PPT教学课件
谢谢观看
Thank You For Watching
YELW:SETB P1.4
;黄灯亮
CLR P1.2
;红灯灭
CLR P1.3
;绿灯灭
SJMP SL0
;转循环
SL1: JNB P1.1,YELW ;P1.0=0,S0未按下;P1.1=0,S1未按下,转黄灯亮
GREN:SETB P1.3
;绿灯亮
CLR P1.2
;红灯灭
CLR P1.4
;黄灯灭
SJMP SL0