授课日期 班次 授课时数 2
课题,任务三:单片机做加、减、乘、除运算教学目的,掌握 MCS-51的算术运算类指令,区分增量指令和加法指令的不同了解单片机的算术运算部件重点,MCS-51算术运算类指令难点,增量指令(减量指令)和加法指令(减法指令)的区别教具,多媒体作业,3.14 3.15
自用参考书:《单片机应用技术》耿长清主编、《单片机应用技术》刘守义主编教学过程:一、复习提问
1,MCS-51有哪些数据传送指令?
2.什么是指令的寻址方式? MCS-51采用了哪几种寻址方式?
二、新授由任务三:单片机做加、减、乘、除运算引入本次课内容
1,硬件电路与工作原理通过任务描述,明确任务要求,引导学生画出硬件电路
2,程序设计
3,相关知识
1) MCS-51的算术运算指令
2)为什么单片机内部要集成算术运算部件和算术运算指令?
3)增量指令(减量指令)与加法指令(减法指令)有什么不同?
4)算术运算应用举例
4.课堂小结课后小结:
3,2 任务三 单片机做加、减、乘、除运算
3,2,1 硬件电路与工作原理任务描述,利用单片机的算术运算指令进行将 P2,P0口的数进行加、减、
乘、除运算,并将结果送 P1口发光二极管显示
1、硬件电路
1 2 3 4
A
B
C
D
4321
D
C
B
A
T i t l e
N u m b e r R e v i s i o nS i z e
L e t t e r
D a t e,1 5 - J u l - 2 0 0 5 S h e e t o f
F i l e,C,\ D o c u m e n t s a n d S e t t i n g s \ A d m i n i s t r a t o r \ 桌面 \ M y D e s i g n,d d bD r a w n B y,
E A / V P
31
X1
19
X2
18
R E S E T
9
RD
17
WR
16
I N T 0
12
I N T 1
13
T0
14
T1
15
P 1 0
1
P 1 1
2
P 1 2
3
P 1 3
4
P 1 4
5
P 1 5
6
P 1 6
7
P 1 7
8
P 0 0
39
P 0 1
38
P 0 2
37
P 0 3
36
P 0 4
35
P 0 5
34
P 0 6
33
P 0 7
32
P 2 0
21
P 2 1
22
P 2 2
23
P 2 3
24
P 2 4
25
P 2 5
26
P 2 6
27
P 2 7
28
P S E N
29
A L E / P
30
T X D
11
R X D
10
U3
D1
D2
D3
D4
D5
D6
D7
D8
S1
S3
S4
V C C
V C C
S1
S3
S2
S4
X T A L 1 1,0 5 9 2 M
C2
3 3 P
C1
3 3 P
V C C
1
R1
2
R2
3
R3
4
R4
5
R5
6
R6
7
R7
8
R8
9
R P 1
S2
1
2
3
4
5
6
7
8
16
15
14
13
12
11
10
9
S D 1
1
2
3
4
5
6
7
8
16
15
14
13
12
11
10
9
S D 2
3,2 任务三 单片机做加、减、乘、除运算
3.2.2 控制程序
1、加法运算程序
ORG 0000H
MOV A,P0
MOV R0,P2
ADD A,R0
MOV P1,A
SJMP $
END
2、减法运算程序
ORG 0000H
MOV A,P0
MOV R0,P2
SUBB A,R0
MOV P1,A
SJMP $
END
3,2 任务三 单片机做加、减、乘、除运算
3、乘法运算程序
ORG 0000H
MOV A,P0
MOV B,P2
MUL AB
MOV P1,A
SJMP $
END
4、除法运算程序
ORG 0000H
MOV A,P0
MOV B,P2
DIV AB
MOV P1,A
SJMP $
END
3,2 任务三 单片机做加、减、乘、除运算
3.2.3 源程序的编辑、编译、下载打开“伟福”模拟仿真软件进行程序的编辑、编译。
1、正确选择单片机类型 8751或 8031
2、正确选择编译器-伟福编译器
3、选择模拟仿真功能
4、打开或新建文件进行编辑
5、编译打开,ISP下载软件”将目标文件下载到 ISP-4实验开发板上的
AT89S51单片机芯片,观察程序运行结果。
1、编译成功后打开下载软件
2、选择好单片机 89S51并测试
3、打开伟福 6000编译生成的,BIN或,HEX文件
4、选择自动写完成擦除、写、读、校验过程
5、观看运行结果
3,2 任务三 单片机做加、减、乘、除运算
3.2.4 相关知识
1、什么是算术运算指令? MCS-51单片机有哪些算术运算指令?
在单片机 CPU内部集成了算术运算部件,除能完成加、减、乘、除运算外,还能完成加 1运算、减 1运算和十进制调整运算。
MCS-51单片机算术运算指令共有 24条,算术运算主要是执行加、减、乘、
除法四则运算。另外 MCS-51指令系统中有相当一部分是进行加、减 1操作,BCD码的运算和调整,我们都归类为运算指令。虽然 MCS-51单片机的算术逻辑单元 ALU仅能对 8位无符号整数进行运算,但利用进位标志 C,
则可进行多字节无符号整数的运算。同时利用溢出标志,还可以对带符号数进行补码运算。需要指出的是,除加、减 1指令外,这类指令大多数都会对 PSW(程序状态字)有影响。这在使用中应特别注意
3,2 任务三 单片机做加、减、乘、除运算
3.2.4 相关知识
1、什么是算术运算指令? MCS-51单片机有哪些算术运算指令?
不带进位的加法指令( 4条)
这 4条指令的作用是把立即数,直接地址、工作寄存器及间接地址内容与累加器 A的内容相加,运算结果存在 A中。
ADD A,#data ;( A) +#data→ ( A) 累加器 A中的内容与立即数
#data相加,结果存在 A中
ADD A,data ;( A) +( data) → ( A) 累加器 A中的内容与直接地址单元中的内容相加,结果存在 A中
ADD A,Rn ;( A) +( Rn) → ( A) 累加器 A中的内容与工作寄存器 Rn中的内容相加,结果存在 A中
ADD A,@Ri ;( A) +(( Ri)) → ( A) 累加器 A中的内容与工作寄存器 Ri所指向地址单元中的内容相加,结果存在 A中
3,2 任务三 单片机做加、减、乘、除运算
3.2.4 相关知识
1、什么是算术运算指令? MCS-51单片机有哪些算术运算指令?
带进位的加法指令( 4条)
这 4条指令除与 [1]功能相同外,在进行加法运算时还需考虑进位问题。
ADDC A,data ;( A) +( data) +( C) → ( A) 累加器 A中的内容与直接地址单元的内容连同进位位相加,结果存在 A中
ADDC A,#data ;( A) +#data +( C) → ( A) 累加器 A中的内容与立即数连同进位位相加,结果存在 A中
ADDC A,Rn ;( A) +Rn+( C) → ( A) 累加器 A中的内容与工作寄存器 Rn中的内容、连同进位位相加,结果存在 A中
ADDC A,@Ri ;( A) +(( Ri)) +( C) → ( A) 累加器 A中的内容与工作寄存器 Ri指向地址单元中的内容、连同进位位相加,结果存在 A中
3,2 任务三 单片机做加、减、乘、除运算
3.2.4 相关知识
1、什么是算术运算指令? MCS-51单片机有哪些算术运算指令?
带借位减法指令( 4条)
这组指令包含立即数、直接地址、间接地址及工作寄存器与累加器 A连同借位位 C内容相减,结果送回累加器 A中。
这里对借位位 C的状态作出说明,在进行减法运算中,CY=1表示有借位,
CY=0则无借位。 OV=1声明带符号数相减时,从一个正数减去一个负数结果为负数,或者从一个负数中减去一个正数结果为正数的错误情况。在进行减法运算前,如果不知道借位标志位 C的状态,则应先对 CY进行清零操作。
SUBB A,data ;( A) -( data) - ( C) → ( A) 累加器 A中的内容与直接地址单元中的内容、连同借位位相减,结果存在 A中
SUBB A,#data ;( A) -#data -( C) → ( A) 累加器 A中的内容与立即数、
连同借位位相减,结果存在 A中
SUBB A,Rn ;( A) -( Rn) -( C) → ( A) 累加器 A中的内容与工作寄存器中的内容、连同借位位相减,结果存在 A中
SUBB A,@Ri ;( A) -(( Ri)) -( C) → ( A) 累加器 A中的内容与工作寄存器 Ri指向的地址单元中的内容、连同借位位相减,结果存在 A中
3,2 任务三 单片机做加、减、乘、除运算
3.2.4 相关知识
1、什么是算术运算指令? MCS-51单片机有哪些算术运算指令?
乘法指令( 1条)
这个指令的作用是把累加器 A和寄存器 B中的 8位无符号数相乘,所得到的是 16位乘积,这个结果低 8位存在累加器 A,而高 8位存在寄存器 B
中。如果 OV=1,说明乘积大于 FFH,否则 OV=0,但进位标志位 CY总是等于 0。
MUL AB ;( A) × ( B) → ( A)和( B) 累加器 A中的内容与寄存器 B中的内容相乘,结果存在 A,B中
3,2 任务三 单片机做加、减、乘、除运算
3.2.4 相关知识
1、什么是算术运算指令? MCS-51单片机有哪些算术运算指令?
除法指令( 1条)
这个指令的作用是把累加器 A的 8位无符号整数除以寄存器 B中的 8位无符号整数,所得到的商存在累加器 A,而余数存在寄存器 B中。除法运算总是使 OV和进位标志位 CY等于 0。如果 OV=1,表明寄存器 B中的内容为 00H,那么执行结果为不确定值,表示除法有溢出。
DIV AB ;( A) ÷ ( B) → ( A)和( B) 累加器 A中的内容除以寄存器 B中的内容,所得到的商存在累加器 A,而余数存在寄存器 B
中。
3,2 任务三 单片机做加、减、乘、除运算
3.2.4 相关知识
1、什么是算术运算指令? MCS-51单片机有哪些算术运算指令?
加 1指令( 5条)
这 5条指令的的功能均为原寄存器的内容加 1,结果送回原寄存器。上述提到,加 1指令不会对任何标志有影响,如果原寄存器的内容为 FFH,
执行加 1后,结果就会是 00H。这组指令共有直接、寄存器、寄存器减间址等寻址方式:
INC A ;( A) +1→ ( A) 累加器 A中的内容加 1,结果存在 A

INC data ;( data) +1→ ( data) 直接地址单元中的内容加 1,
结果送回原地址单元中
INC @Ri ;(( Ri)) +1→ (( Ri)) 寄存器的内容指向的地址单元中的内容加 1,结果送回原地址单元中
INC Rn ;( Rn) +1→ ( Rn)寄存器 Rn的内容加 1,结果送回原地址单元中
INC DPTR ;( DPTR) +1→ ( DPTR)数据指针的内容加 1,结果送回数据指针中
3,2 任务三 单片机做加、减、乘、除运算
3.2.4 相关知识
1、什么是算术运算指令? MCS-51单片机有哪些算术运算指令?
减 1指令( 4条)
这组指令的作用是把所指的寄存器内容减 1,结果送回原寄存器,若原寄存器的内容为 00H,减 1后即为 FFH,运算结果不影响任何标志位,
这组指令共有直接、寄存器、寄存器间址等寻址方式,当直接地址是
I/O口锁存器时,“读 — 修改 — 写”操作与加 1指令类似。
DEC A ;( A) -1→ ( A)累加器 A中的内容减 1,结果送回累加器 A中
DEC data ;( data) -1→ ( data)直接地址单元中的内容减 1,结果送回直接地址单元中
DEC @Ri ;(( Ri)) -1→ (( Ri))寄存器 Ri指向的地址单元中的内容减 1,结果送回原地址单元中
DEC Rn ;( Rn) -1→ ( Rn)寄存器 Rn中的内容减 1,结果送回寄存器 Rn中
3,2 任务三 单片机做加、减、乘、除运算
3.2.4 相关知识
1、什么是算术运算指令? MCS-51单片机有哪些算术运算指令?
十进制调整指令( 1条)
在进行 BCD码运算时,这条指令总是跟在 ADD或 ADDC指令之后,
其功能是将执行加法运算后存于累加器 A中的结果进行调整和修正。
DA A
3,2 任务三 单片机做加、减、乘、除运算
3.2.4 相关知识
2、算术运算指令应用举例
【 例 3.4】 双字节无符号数加法 ( R0R1) + ( R2R3) → ( R4R5)
R0,R2,R4中存放 16位数的高字节,R1,R3,R5中存放低字节 。 由于不存在 16位数加法指令,所以只能先加低 8位,而在加高 8位时要连低 8沉位相加时产生的进位一起相加 。 假设其和不超过 16位,其编程如下:
MOV A,R1 ;取被加数低字节
ADD A,R3 ;低字节相加
MOV R5,A ;保存和低字节
MOV A,R0 ;取高字节被加数
ADDC A,R2 ;两高字节之和加低位进位
MOV R4,A ;保存和高字节
3,2 任务三 单片机做加、减、乘、除运算
3.2.4 相关知识
2、算术运算指令应用举例
【 例 3.5】 双字节无符号数相减 ( R0R1) - ( R2R3) → ( R4R5)
R0,R2,R4存放 16位数的高字节,R1,R3,R5存放低字节 。 先减低 8位,
后减高 8位和低位减借位,所以要先清零 。 其编程如下:
MOV A,R1 ;取被减数低字节
CLR C ;清借位位
SUBB A,R3 ;低字节相减
MOV R5,A ;保存差低字节
MOV A,R0 ;取被减法高字节
SUBB A,R2 ;两高字节之差减低位借位
MOV R4,A ;保存差高字节
3,2 任务三 单片机做加、减、乘、除运算
3.2.4 相关知识
2、算术运算指令应用举例
【 例 3.6】 利用除法指令把累加器A中的 8位二进制转换为 3位 BCD数,并以压缩形式存放在地址 M1,M2单元中 。
解:累加器A中的 8位二进制数,先对其除以 100( 64H),商数即为十进制的百位数;余数部分再除以 10( 0AH),所得商数和余数分别为十进制和个位数,
即得到 3位 BCD数的存放 是通过 SWAP和 ADD指令实现的 。 参考程序如下:
MOV B,#64H ;除数 100送 B
DIV AB ;得 8位数
MOV M1,A ;百位数存于 M1中
MOV A #0AH ;取除数 10
XCH A,B ;上述余数与除数交换
XCH AB ;得十位数和个位数
SWAP A ;十位数存于 A的高 4位
ADD A,B ;组成压缩 BCD数
MOV M2,A ;十?个位压缩 BCD数存 M2
若上述程序执行前,( A) =A8H( 168),则执行后,( M 1) =( 01) BCD,
( M 2) ( 68) BCD 。
课堂小结:
1、任务三的硬件电路与工作原理
2、单片机是怎样做加、减、乘、除运算的?
3,MCS-51单片机有哪些算术指令?
作业:
1、预习算术运算实验实训项目,完成实验预习报告,编写控制程序
2,P71 3.14 3.15