2情景指令系统1.docx
《2情景指令系统1.docx》由会员分享,可在线阅读,更多相关《2情景指令系统1.docx(15页珍藏版)》请在冰豆网上搜索。
2情景指令系统1
学习情境设计之二:
学习
情境
2、P1口外接8只LED发光二极管模拟彩灯
建议
学时
6(10)学时
学习目标
1.掌握MCS-51单片机的数据传送指令的功能;
2.掌握MCS-51单片机的寻址方式;
学习内容
1.MCS-51单片机指令系统的数据传送指令
2、指令的寻址方式
3、指令在CPU内部的执行过程
教学方法
建议
基于任务驱动的引导文教学法
DVCC仿真实验系统
工作步骤
1、明确任务
教师提出任务:
利用P1口外接的8只LED发光二极管模拟彩灯。
2、设计过程(2学时)
学生借助于资料、材料和教师提出的引导问题,自己做一个工作计划,并拟定出检查、评价工作成果的标准要求。
教师提出问题:
单片机内部数据是怎样传送到端口使二极管发亮的?
什么是数据传送操作与数据传送指令?
MCS-51单片机有哪些数据传递指令?
什么是指令的寻址方式?
MCS-51单片机指令系统采用了哪几种寻址方式?
指令在CPU内部的执行过程是怎样的?
3、决定阶段(1学时)
学生将自己独立设计的工作计划及成果评价要求向教师进行介绍,师生共同做出开展工作的决定。
4、具体实施阶段(2学时)
学生学生可独立开展工作,教师发现学生存在严重错误时,提供必要的指导。
5、检查阶段(0.5学时)
在整个过程中学生依据拟定的评价标准,检查是否符合要求地完成了工作任务。
6、评价阶段(0.5学时)
由教师参与,与老师进行专业对话,评价学生的工作情况,给出建议。
考核标准
标准要求
评价
1、设计文档按任务要求独立正确完成,情景知识掌握熟练娴熟
优秀
2、设计文档按任务要求独立良好的完成,情景知识掌握较好
良好
3、设计文档按任务要求基本独立的完成,情景专业知识基本掌握
中等
4、设计电子文档按任务要求基本完成,情景专业知识基本掌握
及格
5、未能完成任务
不及格
P1口外接8只LED发光二极管模拟彩灯
❑学习目标:
通过学习情境2的完成方法,掌握MCS-51单片机的数据传送指令的功能及MCS-51单片机的寻址方式。
❑任务描述:
利用P1口外接的8只LED发光二极管模拟彩灯。
常见的彩灯模式有:
流水式彩灯、追逐式彩灯、累积式彩灯、开幕式与闭幕式彩灯以及将上述模式组合而成的复合式彩灯。
大多数的彩灯都是采用单片机控制的,简单的彩灯单片机的控制程序也较为简单,复杂的彩灯单片机控制程序也较为复杂。
]硬件电路与工作原理
硬件电路与工作原理
当P1.0~P1.7中的某端口为低电平时,对应的发光二极管亮,为高电平灭。
只要控制P1口各位的电平状态,就可以控制8只LED的亮与灭。
例如使(P1)=01010101B=55H,D7、D5、D3、D1四只LED亮,D6、D4、D2、D0四只LED灭,从效果上看亮与灭是相间隔的;反之,使(P1)=10101010B=AAH,则另外四只LED亮,若反复以一定时间间隔不断从P1口轮流输出55H和AAH,则P1口上八只LED会呈现流水彩灯的效果。
]控制程序
1)将立即数送P1口的程序
ORG0000H;定义程序从程序存贮器0000H单元开始存放
LOOP:
MOVP1,#55H;立即数55H送P1口,4只LED亮
SJMPLOOP;原地踏步
END;程序结束
2)通过累加器A控制P1口的程序
ORG0000H
LOOP:
MOVA,#0AAH;将立即数AAH送累加器A
MOVP1,A;累加器A中的数送P1端口
SJMPLOOP;转移到LOOP
END
3)流水式彩灯程序
ORG0000H
LOOP:
MOVP1,#55H
;将立即数55H送P1端口
LCALLTIME;调延时子程序TIME
MOVP1,#0AAH
;将立即数AAH送P1端口
LCALLTIME;调延时子程序TIME
SJMPLOOP;转移到LOOP
TIME:
MOVR6,#200;延时子程序TIME
TIME1:
MOVR7,#200
TIME2:
NOP
NOP
NOP
DJNZR7,TIME2
DJNZR6,TIME1
RET
END
4)开幕式与闭幕式彩灯程序
ORG0000H
LJMPMAIN;跳转到主程序
ORG0030H
MAIN:
MOVR0,#8;R0送循环次数8
MOVDPTR,#TAB;给数据指针赋值
LOOP:
MOVA,#00H;
MOVCA,@A+DPTR
MOVP1,A
LCALLTIME
INCDPL
DJNZR0,LOOP
SJMPMAIN
TIME:
MOVR6,#200
TIME1:
MOVR7,#200
TIME2:
NOP
NOP
NOP
DJNZR7,TIME2
DJNZR6,TIME1
RET
TAB:
DB81H,0C3H,0E7H,0FFH,18H,3CH,7EH,0FFHEND
思考问题
1.什么是数据传送操作与数据传送指令?
MCS-51单片机有哪些数据传递指令?
2.什么是指令的寻址方式?
MCS-51单片机指令系统采用了哪几种寻址方式?
3.指令在CPU内部的执行过程?
学习内容
1.MCS-51指令格式
2.MCS-51寻址方式
3.数据传送类指令
学习资料,拟定工作计划及评价标准
汇报计划,核准后实施
实施计划,教师现场指导
自查任务完成情况,提交设计结果
教师评价
知识资料
MCS-51指令系统
一台计算机所具有的所有指令的集合就是它的指令系统。
MCS-51系列单片机指令系统一共有111条,其中单字节指令有49条,双字节指令有45条,三字节指令有17条。
在这111条指令中,一共使用了7种寻址方式、42种助记符来说明33种功能。
一般把MCS-51系列单片机指令系统中的共111条指令,分为如下五大类:
(1)数据传送类指令(29条)
(2)算术运算类指令(24条)
(3)逻辑运算及移位类指令(24条)
(4)控制转移类指令(17条)
(5)位操作类指令(17条)
MCS-51指令格式
MCS-51指令系统的典型指令格式为:
[标号:
]操作码[目的操作数,][源操作数][;注释]
其中,标号是该语句的符号地址,可根据需要而设置。
标号通常用于转移指令所需的转移地址。
标号一般由1~8个字符组成,但第一个字符必须是字母,其余的可以是字母也可以是其他符号或数字。
标号和操作码之间用冒号“:
”分开。
操作码和操作数(源操作数和目的操作数)是指令的核心部分。
操作码告诉单片机的CPU做何种操作。
操作数分为目的操作数和源操作数,采用符号(如寄存器、标号等)或者常量(如立即数、地址值等)表示。
注释是对指令的功能或作用的说明,但是注释不是一个指令的必要组成部分,可有可无。
MCS-51寻址方式
“寻址”是指寻找操作数所在地址的方式.
MCS-51指令系统共使用了7种寻址方式,包括寄存器寻址、直接寻址、寄存器间接寻址、立即数寻址、位寻址、变址寻址、相对寻址等。
❶寄存器寻址方式
寄存器寻址就是操作数在寄存器中,因此指定了寄存器就能得到操作数。
例如指令:
MOVA,R0;机器码E8H
寄存器寻址方式的寻址范围包括:
(1)四个寄存器组共32个通用寄存器。
但在指令中只能使用当前寄存器组,因此在使用前,常需通过对PSW中RS1,RS0位的状态设置,来进行当前寄存器组的选择。
(2)部分专用寄存器。
例如累加器A,B寄存器对以及数据指针DPTR等。
❶寄存器寻址方式
如果程序状态寄存器PSW的RS1RS0=10(选中第二组工作寄存器,对应地址为10H~17H),设累加器A的内容为4AH,则执行MOVR1,A指令后,内部RAM11H单元的值就变为4AH。
❷直接寻址方式
指令中操作数直接以单元地址的形式给出,就称之为直接寻址。
例如指令:
MOVA,3AH
因为直接寻址方式只能使用8位二进制地址,因此这种寻址方式的寻址范围只限于内部RAM,具体说就是:
(1)低128单元。
在指令中直接以单元地址形式给出。
(2)专用寄存器。
直接寻址是访问专用寄存器的惟一方法。
❷直接寻址方式
指令:
MOVA,2BH执行的操作是将内部RAM中地址为2BH的单元内容传送到累加器A中,其操作数2BH就是存放数据的单元地址,因此该指令是直接寻址。
❸寄存器间接寻址方式
寄存器寻址方式,寄存器中存放的是操作数。
而寄存器间接寻址方式,寄存器中存放的则是操作数的地址,即操作数是通过寄存器间接得到的,因此称之为寄存器间接寻址。
例如指令:
MOVA,@R0的功能是以R0寄存器内容3AH为地址,把该地址单元的内容65H送累加器A。
寄存器间接寻址方式的寻址范围:
(1)内部RAM低128单元
对内部RAM低128单元的间接寻址,应使用R0或R1作间址寄存器,其通用形式为@Ri(i=0或1)。
(2)外部RAM64KB
对外部RAM64KB的间接寻址应使用DPTR作间址寄存器,其形式为@DPTR。
例如:
MOVXA,@DPTR,其功能是把DPTR指定的外部RAM单元的内容送累加器A。
外部RAM的低256单元是一个特殊的寻址区,除可以使用DPTR作间址寄存器寻址外,还可使用R0或R1作间址寄存器寻址。
例如MOVXA,@R0,即把R0指定的外部RAM单元的内容送累加器A。
此外对于堆栈操作指令(PUSH和POP)也应算作是寄存器间接寻址,即以堆栈指针(SP)作间址寄存器的间接寻址方式。
❹立即寻址方式
所谓立即寻址就是操作数在指令中直接给出。
在立即数前面加“#”标志。
例如:
MOVA,#2BH;机器码742BH
其中2BH就是立即数,指令功能是把数据2BH送累加器A。
除8位立即数外,MCS-51指令系统中还有一条16位立即寻址指令,即:
MOVDPTR,#data16其功能是把16位立即数送数据指针DPTR。
❺位寻址方式
MCS-51有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式。
例如,指令SETB3DH执行的操作是将内部RAM位寻址区中的3DH位置1。
设内部RAM27H单元的内容是00H,执行SETB3DH后,由于3DH对应内部
RAM27H的第6位,因此该位变为1,也就是27H单元的内容变为20H。
❺位寻址方式
位寻址的寻址范围:
(1)内部RAM中的位寻址区。
例如:
MOVC,2BH指令功能是把位寻址区的2BH位状态送累加位。
(2)专用寄存器的可寻址位。
可供位寻址的专用寄存器共有11个,实有寻址位83位。
对这些寻址位在指令中有如下四种表示方法:
·直接使用位地址:
例如PSW寄存器位5地址为D5H。
·位名称表示方法:
例如PSW寄存器位5是F0标志位,则可使用F0表示该位。
·单元地址加位的表示方法:
例如D0H单元(即PSW寄存器)位5,表示为D0.5。
·专用寄存器符号加位的表示方法:
例如PSW寄存器的位5,表示为PSW.5。
❻变址寻址方式
MCS-51的变址寻址是以DPTR或PC作基址寄存器,以累加器A作变址寄存器,并以两者内容相加形成的16位地址作为操作数地址。
例如指令:
MOVCA,@A+DPTR
其功能是把DPTR和A的内容相加,再把所得到的程序存储器地址单元的内容送A。
假定指令执行前A=02H,DPTR=1110H,外部ROM中,1112H单元的内容是AAH,则指令MOVCA,@A+DPTR的执行结果是累加器A的内容为AAH。
❻变址寻址方式
对MCS-51指令系统的变址寻址方式作如下说明:
(1)变址寻址方式只能对程序存储器进行寻址,或者说它是专门针对程序存储器的寻址方式。
(2)变址寻址的指令只有三条:
MOVCA,@A+DPTR
MOVCA,@A+PC
JMP@A+DPTR
其中前两条是程序存储器读指令,后一条是无条件转移指令。
(3)尽管变址寻址方式较为复杂,但变址寻址的指令却都是一字节指令。
❼相对寻址方式
相对寻址方式是为实现程序的相对转移而设计的,为相对转移指令所采用。
在相对寻址的转移指令中,给出了地址偏移量(在MCS-51指令系统中以“rel”表示),把PC的当前值加上偏移量就构成了程序转移的目的地址。
但这里的PC当前值是指执行完该转移指令后的PC值,即转移指令的PC值加上它的字节数。
因此转移的目的地址可用如下公式表示;
目的地址=转移指令地址+转移指令字节数+rel
在MCS-51指令系统中,有多条相对转移指令,这些指令多数为二字节指令,但也有个别为三字节的。
偏移量rel是一个带符号的8位二进制补码数,所能表示的数的范围是-128~+127,因此相对转移是以转移指令所在地址为基点,向前最大可转移(127+转移指令字节数)个单元地址,向后最大可转移(128-转移指令字节数)个单元地址。
例如,指令SJMP54H执行的操作是将PC当前的内容与54H相加,结果再送回PC中,成为下一条将要执行指令的地址。
设指令SJMP54H的机器码80H54H存放在2000H处,当执行到该指令时,先从2000H和2001H单元取出指令,PC自动变为2002H;再把PC的内容与操作数54H相加,形成目标地址2056H,再送回PC,使得程序跳转到2056H单元继续执行。
数据传送类指令
内部RAM数据传送指令组
1.立即数传送指令
8位立即数传送指令共四条:
MOVA,#data;A←data
MOVdirect,#data;direct←data
MOVRn,#data;Rn←data
MOV@Ri,#data;(Ri)←data
16位立即数传送指令一条:
MOVDPTR,#data16;DPTR←data16
2.内部RAM单元之间的数据传送指令
内部RAM单元之间的数据传送指令共有五条:
MOVdirect2,direct1;direct2←(direct1)
MOVdirect,Rn;direct←(Rn)
MOVRn,direct;Rn←(direct)
MOVdirect,@Ri;direct←((Ri))
MOV@Ri,direct;(Ri)←(direct)
3.累加器的数据传送指令
与累加器有关的数据传送指令共有六条:
MOVA,Rn;A←(Rn)
MOVRn,A;Rn←(A)
MOVA,direct;A←(direct)
MOVdirect,A;direct←(A)
MOVA,@Ri;A←((Ri))
MOV@Ri,A;(Ri)←(A)
外部RAM数据传送指令组
对外部RAM单元只能使用间接寻址方法,但可以分别使用DPTR和Ri作间址寄存器,因此相应地就有两组指令:
1.使用DPTR进行间接寻址
MOVXA,@DPTR;A←((DPTR))
MOVX@DPTR,A;(DPTR)←(A)
由于DPTR是16位地址指针,因此指令的寻址范围为64KB。
2.使用Ri进行间接寻址
MOVXA,@Ri;A←((Ri))
MOVX@Ri,A;(Ri)←(A)
i=(0,1),由于R0和R1是8位地址指针,因此指令的寻址范围只限于外部RAM的低256个单元。
✌外部RAM数据传送指令组
对外部RAM数据传送指令作如下说明:
(1)MCS-51指令系统中没有专用的存储器读写指令,实际上外部数据存储器数据传送指令就是外部RAM的读写指令。
(2)外部RAM数据传送指令与内部RAM数据传送指令相比,在指令助记符中增加了“X”,“X”是代表外部之意。
(3)外部RAM的数据传送,只能通过累加器A进行。
程序存储器数据传送指令组
这里所说的程序存储器既包括内部程序存储器,也包括外部程序存储器。
由于对程序存储器只能读而不能写,因此其数据传送都是单向的,即从程序存储器读出数据,并且只能向累加器A传送。
这类指令共两条:
MOVCA,@A+DPTR;A←((A)+(DPTR))
MOVCA,@A+PC;A←((A)+(PC))
这两条指令都是一字节指令,并且都为变址寻址方式,其寻址范围为64KB。
这两条指令通常用于查表操作,因此可以看成是查表专用指令。
数据交换指令组
1.整字节交换指令
地址单元与累加器A进行8位数据交换,共有如下三条指令:
XCHA,Rn;(A)(Rn)
XCHA,direct;(A)(direct)
XCHA,@Ri;(A)((Ri))
2.半字节交换指令
地址单元与累加器A进行低4位的半字节数据交换。
只有一条指令:
XCHDA,@Ri;(A)3~0((Ri))3~0
3.累加器高低半字节交换指令
只有一条指令:
SWAPA;(A)3~0(A)7~4
堆栈操作指令组
堆栈操作有进栈和出栈两种,因此相应有两条指令:
进栈指令:
PUSHdirect;SP←(SP)+1,(SP)←(direct)
其功能为内部RAM低128单元或专用寄存器内容送栈顶单元。
出栈指令:
POPdirect;direct←((SP)),SP←(SP)-1
其功能为栈顶单元内容送内部RAM低128单元或专用寄存器。