单片机教案2Word文档下载推荐.doc
- 文档编号:6861843
- 上传时间:2023-05-07
- 格式:DOC
- 页数:12
- 大小:208KB
单片机教案2Word文档下载推荐.doc
《单片机教案2Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《单片机教案2Word文档下载推荐.doc(12页珍藏版)》请在冰点文库上搜索。
表示参与指令操作的数据或数据所在的地址。
为可选项。
有两个操作数时,前一个为目的操作数,后一个为源操作数。
三.指令中有关操作数符号的说明
Rn——工作寄存器R0~R7(n=0、1、2…7)。
Ri——工作寄存器R0和R1(i=0或1)。
Direct——内部RAM的单元地址,地址范围为00~FFH。
#data——8位立即数,即常数。
#data16——16位立即数。
addr16——16位目的地址。
Addrll——11位目的地址。
四.MCS-51单片机指令系统
MCS—51的指令按功能分为五大类:
数据传送、算术运算、逻辑运算、控制转移和位操作指令。
(一)数据传送类指令
注意:
源操作数在传送前后保持不变。
1.内部数据传送指令
【例2-1】设(30H)=40H,(40H)=10H,(P1)=0CAH,试判断下列程序执行后的结果。
MOVR0,#30H;
R0←#30H
MOVA,@R0;
A←(30H),(A)=40H
MOVR1,A;
R1←(A),(R1)=40H
MOVB,@R1;
B←(40H),(B)=10H
MOV@R1,P1;
(R1)←(P1),(40H)=0CAH
MOVP2,P1;
P2←(P1),(P2)=0CAH
结果是:
(A)=40H,(B)=10H,(40H)=0CAH,(P2)=0CAH
2.外部数据传送指令
此类指令完成对片外RAM单元中数据的读/写操作。
注意:
用R0和R1间接寻址时,要占用P2寄存器放外部RAM的高8位地址,R0和R1放低8位地址。
使用时,要先将低8位地址送入Ri(R0或R1),高8位地址送入P2寄存器,然后再用上述指令。
【例2-2】将片外RAM1000H单元中的内容送到2000H单元。
方法一MOVDPTR,#1000H;
DPTR←#1000H
MOVXA,@DPTR;
A←((DPTR))
MOVDPTR,#2000H;
DPTR←#2000H
MOVX@DPTR,A;
(DPTR)←(A)
方法二MOVP2,#10H;
P2←#10H
MOVR0,#00H;
R0←#00H
MOVXA,@R0;
A←((R0))
MOVP2,#20H;
P2←#20H
MOVX@R0,A;
(R0)←(A)
在两个片外RAM单元之间是不能直接进行数据的传送的,必须经过片内的累加器A来间接地传送。
3.访问程序存储器的传送指令(查表指令)
MOVCA,@A+PC;
PC←(PC)+1,A←((A)+(PC))
MOVCA,@A+DPTR;
A←((A)+(DPTR))
其功能是到程序存储器中查表格数据送入累加器A。
程序存储器中除了存放程序之外,还会放一些表格数据,又称查表指令。
指令中的操作数为表格数据。
前一条指令将A中的内容与PC的内容相加得到16位表格地址;
后一条指令是将A中的内容与DPTR中的内容相加得到16位表格地址。
4.数据交换指令
数据交换是在内部RAM单元与累加器之间进行,有字节和半字节交换两种。
(1)字节交换指令
XCHA,Rn
XCHA,direct
XCHA,@Ri
(2)半字节交换指令
XCHDA,@Ri
5.堆栈操作指令
在片内RAM的00H~7FH地址区域中,可设置一个堆栈区,主要用于保护和恢复CPU的工作现场。
(1)进栈指令
PUSHdirect;
SP←(SP)+1;
(SP)←(direct);
(2)出栈指令
POPdirect;
direct←((SP));
SP←(SP)-1;
二、算术运算类指令
注意大部分指令的执行结果将影响程序状态字PSW的有关标志位。
如果把参加运算的两个操作数看作是无符号数(0~255),加法运算对CY标志位的影响如下:
(1)若结果的第7位向前有进位(C7’=1),CY=1
(2)若结果的第7位向前无进位(C7’=0),CY=0
【例2-3】设有两个无符号数放在A和R2中,设(A)=0C6H(198),(R2)=68H(104),
执行指令:
ADDA,R2
试分析运算结果及对标志位的影响。
解:
写成竖式
(A)11000110198
(R2)+01101000+104
(A)100101110302
结果是:
(A)=2EH,CY=1。
【例2-4】设有两个16位无符号数,被加数存放在内部RAM的30H(低位字节)和31H(高位字节)中,加数存放在40H(低位字节)和41H(高位字节)中。
试写出求两数之和,并把结果存放在30H和31H单元中的程序。
参考程序为:
MOVR0,#30H;
地址指针R0赋值
MOVR1,#40H;
地址指针R1赋值
MOVA,@R0;
被加数的低8位送A
ADDA,@R1;
被加数与加数的低8位相加,和送A,并影响CY标志
MOV@R0,A;
和的低8位存30H单元
INCR0;
修改地址指针R0
INCR1;
修改地址指针R1
被加数的高8位送A
ADDCA,@R1;
被加数和加数的高8位与CY相加,和送A
和的高8位存31H单元
(二)减法指令
1、带借位减法指令
该组指令的功能是从累加器A减去源操作数及标志位CY,其结果再送累加器A。
CY位在减法运算中是作借位标志。
SUBB指令对标志位的影响如下:
(1)若第7位向前有借位(C7’=1),则CY=1;
(2)若第7位向前无借位(C7’=0),则CY=0,
【例2-5】在A和R3中存有两个无符号数,设(A)=98H,(R3)=6AH,CY=1,执行指令:
SUBBA,R3
分析执行结果及对标志位的影响
解:
(A)1001100098H
(R3)–011010106AH
CY–1–1
(A)001011012DH
(A)=2DH,CY=0
2、减1指令
指令操作机器码
DECA;
A←(A)-100010100
DECRn;
Rn←(Rn)-100011rrr
DECdirect;
direct←(direct)-100010101direct
DEC@Ri;
(Ri)←((Ri))-10001011i
(四)乘法指令
指令操作机器码
MULAB;
BA←(A)Х(B)10100100
指令的功能是把累加器A和寄存器B中两个8位无符号整数相乘,并把乘积的高8位存于寄存器B中,低8位存于累加器A中。
乘法运算指令执行时会对标志位产生影响:
CY标志总是被清0,即CY=0;
OV标志则反映乘积的位数,若OV=1,表示乘积为16位数;
若OV=0,表示乘积为8位数。
(五)除法指令
指令操作机器码
DIVAB;
A商,B余←(A)÷
(B)10000100
指令的功能是把累加器A和寄存器B中的两个8位无符号整数相除,所得商的整数部分存于累加器A中,余数存于B中。
除法指令执行过程对标志位的影响:
CY位总是被清0,OV标志位的状态反映寄存器B中的除数情况,若除数为0,则OV=1,表示本次运算无意义,否则,OV=0。
三、逻辑运算类指令
在MCS—51指令系统中,逻辑运算类指令有25条,可实现与、或、异或等逻辑运算操作。
这类指令有可能会影响CY和P标志位的状态。
(一)累加器A的逻辑操作指令
1、累加器A清0
CLRA;
A←00H
2、累加器A取反
D7←D0
CPLA;
A←()
3、累加器A循环左移
RLA
利用左移指令,可实现对A中的无符号数乘2的目的。
4、累加器A带进位循环左移
CY
RLCA
D7~D4D3~D0
7、累加器A半字节交换
SWAPA
(二)逻辑指令
【例2-10】将工作寄存器R2中数据的高4位和R3中的低4位拼成一个数,并将该数存入30H。
MOVRO,#30H;
R0作地址指针
MOVA,R2
ANLA,#OFOH;
屏蔽低4位
MOVB,A;
中间结果存B寄存器
MOVA,R3
ANLA,#OFH;
屏蔽高4位
ORLA,B;
组合数据
MOV@RO,A;
结果存30H单元。
【例2-11】分析下列程序的执行结果。
MOVA,#77H;
(A)=77H
XRLA,#0FFH;
(A)=77H⊕FFH=88H
ANLA,#0FH;
(A)=88H∧0FH=08H
MOVP1,#64H;
(P1)=64H
ANLP1,#0F0H;
(P1)=64H∧F0H=60H
ORLA,P1;
(A)=08H∨60H=68H
指令系统简介
讲解
板书
举例讲解
举例
课
后
小
记
授课教师
常州轻工职业技术学院
单片机原理及应用课程授课教案NO4
15分钟
四、控制转移类指令
转移指令的功能是通过修改程序计数器PC的值,使程序执行的顺序发生变化,从而改变程序执行的方向。
1.无条件转移指令
无条件转移指令是使程序无条件转移到指定的地址去执行。
LJMPaddr16;
PC←addr1600000010a15~a8a7~a0
AJMPaddr11;
PC←(PC)+2a10a9a800001a7~a0
PC10~0←addr11
SJMPrel;
PC←(PC)+2+rel10000000rel
JMP@A+DPTR;
PC←(A)+(DPTR)01110011
2.条件转移指令
条件转移指令要求对某一特定条件进行判断,当满足给定的条件,程序就转移到目标地址去执行,条件不满足则顺序执行下一条指令。
可用于实现分支结构的程序。
这类指令中操作数都为相对寻址方式,目标地址的形成与SJMP指令相类似。
当满足转移范围的条件下,均可用“addr16”代替“rel”。
【例2-17】将片内RAM的40H单元开始的数据块传送到片外RAM的1000H开始的单元中,当遇到传送的数据为零则停止传送。
START:
MOVR0,#40H;
片内RAM数据块首址
MOVDPTR,#1000H;
片外RAM数据块首址
LOOP:
MOVA,@R0;
取数
JZABD;
等于零,结束
MOVX@DPTR,A;
不为零,送数
INCR0;
地址指针加1
INCDPTR;
SJMPLOOP;
转LOOP,继续取数
ABD:
SJMPABD;
踏步
2、比较转移指令
【例2-13】当Pl口输入数据为55H时,程序继续运行,若不为55H则程序进入等待状态。
程序如下:
WAIT:
MOVA,P1;
A←(P1)
CJNEA,#55H,WAIT;
(A)≠55H,转向WAIT;
(A)=55H,则顺序执行
……
【例2-17】某温度控制系统中,温度的测量值T存在累加器A,温度的给定值Tg存在60H单元。
要求:
T=Tg时,程序返回(符号地址为FH);
T>
Tg时,程序转向降温处理程序(符号地址为JW);
T<Tg时,程序转向升温处理程序(符号地址为SW),试编制程序。
相应的程序如下:
CJNEA,60H,L00P;
T≠Tg,转向L00P
AJMPFH;
T=Tg,转向FH
LOOP:
JCSW;
T<
Tg,转向SW
AJMPJW;
T>
Tg,转向JW
3、循环转移指令
【例2-15】将片内RAM的30H~39H单元置初值00H~09H。
MOVR0,#30H;
设定地址指针
MOVR2,#0AH;
数据区长度设定
MOVA,#00H;
初值装入A
LOOP:
MOV@R0,A;
送数
INCR0;
修改地址指针
INCA;
修改待传送的数据
DJNZR2,LOOP;
未送完,转LOOP地址继续送,否则传送结束
HERE:
SJMPHERE;
(三)子程序调用和返回指令
1、调用指令
LCALLaddr16;
addr16:
子程序入口地址
ACALLaddr11
RET;
从子程序返回到主程序的断点地址。
RETI;
从中断服务程序返回到主程序的断点地址。
NOP;
PC←(PC)+100000000
空操作指令是单字节指令。
该指令执行时不进行任何有效的操作,但需要消耗一个机器周期的时间,所以在程序设计中可用于短暂的延时。
五、位操作指令
在MCS-51存储器中有两个可位寻址的区域,可利用位操作指令对这些位进行单独的操作。
存储器中的两个位寻址区的分布是:
(1)片内RAM的20H~2FH区域;
(2)特殊功能寄存器中地址可被8整除的单元。
位操作指令中,bit是位变量的位地址,可使用四种不同的表示方法,下面以CY位为例进行说明。
(1)位地址(如:
D7H)
(2)位定义名(如:
CY)
(3)寄存器名.位(如:
PSW.7)
累加器必须表示成:
ACC.0~ACC.7。
(4)字节地址.位(如:
D0H.7)
标志位CY在位操作指令中称作位累加器,用符号C表示。
1.位传送指令
MOVC,bit;
CY←(bit)
MOVbit,C ;
bit←(CY)
2.置位和清零指令
CLRC;
CY←0
CLRbit;
bit←0
SETBC;
CY←1
SETBbit;
bit←1
【例2-15】SETBRS1
CLRRS0;
设定工作寄存器2区为当前工作区
3.位逻辑运算指令
ANLC,bit;
CY←(CY)∧(bit)
ANLC,/bit;
CY←(CY)∧()
ORLC,bit;
CY←(CY)∨(bit)
ORLC,/bit;
CY←(CY)∨()
CPLC;
CY←()
CPLbit;
bit←()
【例2-17】用编程的方法实现图2-2所示电路的功能。
图2-2
程序清单:
MOVC,P1.1
ORLC,P1.2
ANLC,P1.0
MOVP1.3,C
简单讲解
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 教案
![提示](https://static.bingdoc.com/images/bang_tan.gif)