第一范文网 - 专业文章范例文档资料分享平台

单元3 MCS-51单片机指令系统

来源:用户分享 时间:2025/7/8 22:34:16 本文由闂佸搫顦弲鐐存叏閵堝鐒婚柨鐕傛嫹 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

DJNZ Rn, rel ; (Rn)-1→(Rn),(Rn)≠0,(PC)+ 2 + rel→(PC)工作寄存器Rn减1不等于0,则转移到偏移量所指向的地址,否则程序往下执行。

DJNZ data, rel ; (Rn)-1→(Rn),(Rn)≠0,(PC)+ 2 + rel→(PC)直接地址单元中的内容减1不等于0,则转移到偏移量所指向的地址,否则程序往下执行。

在上面任务中就有此类指令,大家找一找,并且分析他们的功能。 (3)子程序调用指令(1条)

子程序是为了便于程序编写,减少那些需反复执行的程序占用多余的地址空间而引入的程序分支,从而有了主程序和子程序的概念,需要反复执行的一些程序,我们在编程时一般都把它们编写成子程序,当需要用它们时,就用一个调用命令使程序按调用的地址去执行,这就需要子程序的调用指令和返回指令。

LCALL addr16 ; 长调用指令,可在64kB空间调用子程序。此时(PC)+ 3→(PC),(SP)+ 1→(SP),(PC7-0)→(SP),(SP)+ 1→(SP),(PC15-8)→(SP),addr16→(PC),即分别从堆栈中弹出调用子程序时压入的返回地址。

ACALL addr11 ; 绝对调用指令,可在2kB空间调用子程序,此时(PC)+ 2→(PC),(SP)+ 1→(SP),(PC7-0)→(SP),(SP)+ 1→(SP),(PC15-8)→(SP),addr11→(PC10-0)。

RET ; 子程序返回指令。此时(SP)→(PC15-8),(SP)- 1→(SP),(SP)→(PC7-0),(SP)- 1→(SP)。

RETI ; 中断返回指令,除具有RET功能外,还具有恢复中断逻辑的功能,需注意的是,RETI指令不能用RET代替。

如:任务中的 LCALL DELAY 指令,请你分析这条指令的执行过程。 (4) 空操作指令(1条) 这条指令将累加器中的内容清0。

NOP ; 这条指令除了使PC加1,消耗一个机器周期外,没有执行任何操作。可用于短时间的延时。

3. 控制转移指令应用举例

【例3.10】 将外部数据RAM的一个数据块传送到内部数据RAM,两者的首址分别为DATA1和DATA2,遇到传送的数据为零时停止。

解:外部RAM的数据传送一定要以累加器A作为过渡,利用判零条件转移正好可以判别是否要继续传送或者终止。完成数据传送的参考程序如下:

MOV R0,#DATA1 ;外部数据块首址送R0 MOV R1,#DATA2 ;内部数据块首址送R1 LOOP:MOV A,@ R0 ;取外部RAM数据入A

HERE: JZ HERE ;数据为零则终止传送

MOV @ R1, A ;数据传送至内部RAM单元

INC R0 ;修改地址指针,指向下一数据地址 INC R1

SJMP LOOP ;循环取数

注意:以上程序中,写在指令SJMP LOOP 中的LOOP处的8位相对转移偏移量rel,而地址标号LOOP 表示MOVX指令的16位单元地址。

【例3.11】 将内部数据RAM中从 DATA单元开始的10个无符号数相加,相加结果送SUM单元保存。

解:设相加结果不超过8位二进制数,则相应的程序如下: MOV R0,#0AH ;给R0置计数器初值 MOV R1,#DATA ;数据块首址送R1 CLR A ;A清零 LOOP:ADD A,@ R1 ;加1个数

INC R1 ;修改地址,指向下一个数 DJNZ R0,LOOP ;R0减1,不为零循环 MOV SUM,A ;存10个数相加和

3.5 LED显示电路

〖学习目标〗: 通过学习任务六的完成方法,学习MCS-51单片机的位操作指令。 〖任务描述〗: LED显示电路从P1口输出段控制信号,从P3.0、端口输出位控制信号,将累加器A的中的BCD码显示出来(假设A中内容小于9,数码管共阳极)。

3.5.1 硬件电路 硬件电路如图3.7所示。

图3.7 LED显示电路

工作原理

我们在电子技术中学过,七段LED共阳极数码管在段码加低电平和位控制信号加高电平后就可以点亮。所以,要显示某个字符只要将对应字段点亮即可。

3.5.2 程序设计

ORG 0000H LJMP MAIN ORG 0030H MIAN: MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P1,A CLR P3.0

TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H ;0-6 DB 82H,0F8H,80H,90H ; 7-9 END 3.5.3 源程序的编辑、编译、下载

打开“伟福”模拟仿真软件进行程序的编辑、编译。

打开“ISP下载软件”将目标文件下载到ISP-4实验开发板上的AT89S51单片机芯片,观察程序运行结果。

3.5.4 相关知识

1.单片机如何控制单根I/O口线?

我们在上面任务中看到,P3口共有8根口线,现在我们只要控制其中一根线,在单片机中能不能实现?答案是肯定的。因为单片机中有一类位操作指令。

2.MCS-51单片机有哪些位操作指令?

位处理功能是MCS-51系列单片机的一个重要特征,这是出于实际应用需要而设置的。位变量也即开关变量,它是以位(bit)为单位进行操作的。

在物理结构上,MCS-51单片机有一个位处理机,它以进位标志做为位累加器,以内部RAM可寻址的128个为存储位。

既然有位处理机功能,所以也就有相应的位操作指令集,下面我们分别谈论。 (1) 位传送指令(2条)

位传送指令就是可寻址位与累加位CY之间的传送,指令有两条。 MOV C,bit ;bit→CY,某位数据送CY。 MOV bit,C ;CY→bit,CY数据送某位 (2) 位置位复位指令(4条)

这些指令对CY及可寻址位进行置位或复位操作,共有四条指令。

CLR C ; 0→CY,清CY。 CLR bit ; 0→bit,清某一位。 SETB C ; 1→CY,置位CY。 SETB bit ; 1→bit,置位某一位。 如:任务中的 CLR P3.0 指令,就是将P3.0清零。 (3) 位运算指令(6条)

位运算都是逻辑运算,有与、或、非三种指令,共六条。 ANL C,bit ;(CY)∧(bit)→CY。 ANL C,/bit ;(CY)∧(/bit)→CY。 ORL C,bit ;(CY)∨(bit)→CY。 ORL C,/bit ;(CY)∧(/bit)→CY。 CPL C ;(/CY)→CY。 CPL bit ;(/bit)→bir。 (4) 位控制转移指令(5条)

位控制转移指令是以位的状态作为实现程序转移的判断条件,介绍如下:

JC rel ; (CY)=1转移,(PC)+2+rel→PC,否则程序往下执行,(PC)+2→PC。

JNC rel ; (CY)=0转移,(PC)+2+rel→PC,否则程序往下执行,(PC)+2→PC。

JB bit, rel ; 位状态为1转移。 JNB bit, rel ; 位状态为0转移。

JBC bit, rel ; 位状态为1转移,并使该位清“0”。

后三条指令都是三字节指令,如果条件满足,(PC)+3+rel→PC,否则程序往下执行,(PC)+3→PC。

3. 位操作指令应用举例

【例3.12】 完成(Z)=(X)⊕(Y)异或运算,其中:X、Y、Z表示位地址。 解:异或运算可表示为(Z)=(X)(/Y)+(/X )(Y),参考子程序如下: PR!:MOV C,X ;(CY)←(X)

ANL C,/Y ;(CY)←(X)∧/(Y) MOV Z,C ;暂存Z中 MOV C,X ;(CY)←(X)

ANL C,/X ;(CY)←(X)∧/(X)

ORL C,Z ;(CY)←(X)∧/(X)+(X)∧/(Y) MOV Z,C ;保存异或结果

搜索更多关于: 单元3 MCS-51单片机指令系统 的文档
单元3 MCS-51单片机指令系统.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c6oqa79ul8q7b8vd53zhd_7.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top