2情景指令系统1.docx

上传人:b****6 文档编号:5607705 上传时间:2022-12-29 格式:DOCX 页数:15 大小:67.71KB
下载 相关 举报
2情景指令系统1.docx_第1页
第1页 / 共15页
2情景指令系统1.docx_第2页
第2页 / 共15页
2情景指令系统1.docx_第3页
第3页 / 共15页
2情景指令系统1.docx_第4页
第4页 / 共15页
2情景指令系统1.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

2情景指令系统1.docx

《2情景指令系统1.docx》由会员分享,可在线阅读,更多相关《2情景指令系统1.docx(15页珍藏版)》请在冰豆网上搜索。

2情景指令系统1.docx

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单元或专用寄存器。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1