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

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

来源:用户分享 时间:2025/7/19 14:32:13 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

XRL data,#data ;直接地址单元中的内容和立即数执行逻辑异或操作。结果存在直接地址单元中。

XRL A,#data ;累加器A的内容和立即数执行逻辑异或操作。结果存在累加器A中。

XRL A,Rn ;累加器A的内容和寄存器Rn中的内容执行逻辑异或操作。结果存在累加器A中。

XRL data,A ;直接地址单元中的内容和累加器A的内容执行逻辑异或操作。结果存在直接地址单元中。

XRL A,@Ri ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行

逻辑异或操作。结果存在累加器A中。

如任务中的 XRL A,P2 指令。 3. 逻辑运算指令应用举例

【例3.9】 16位数的算术左移。16位数在内存中低8位存放在M1单元,高8位存放在M1+1单元。

解:所谓算术左移就是将操作数左移一位,并使最低位补充0,相当于完成 16位数的乘务员操作,故称算术左移。参考程序如下:

CLR C ;进位CY清零 MOV R1,#M1 ;操作数地址M1送R1 MOV A,@ R1 ;低8位数送A

RLC A, ;低8位左移,最低位补0 MOV @ R1 ,A ;低8位左移后,回送M1存放 INC R1 ;指向16位高8位地址M1+1 MOV A,@ R1 ;低8位送A

RLC A, ;高8位带低8位进位左移 MOV @ R1 ,A ;高8位左移后回送M1+1存放

若要对16位数进行循环移位,则应首先设法把最高位(D15)的值置入CY,然后再参照以上程序编写即可。利用以后介绍的位操作指令可以很容易地实现将某一位的值置入CY。

3.4 按键控制灯

〖学习目标〗: 通过学习任务五的完成方法,掌握MCS-51单片机的控制转移指令的功能。

123〖任务描述〗: 用S1~S4组成的键盘分别控制P1口发光二极管发光,按住S1键红色发光二极管(假定为P1.0)亮,按住S2键黄色发光二极(P1.1)管亮,按住S3键绿色发光二极管(假定为P1.2)亮。S4 用于控制三组灯之间的切换。 3.4.1 硬件电路 硬件电路采用实验开发板上的电路,如图3.6所示。用S1~S4组成的键盘分别控制P1口发光二极管发光。 VCCRP1VCC1D112345678S2S1S4R56D5S3XTAL11.0592MS2S1S4S313121514VCC31191891716P10P11P12P13P14P15P16P17INT1INT0T1T0EA/VPX1X2RESETRDWRRXDTXDALE/PPSEN10113029U3P00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P273938373635343332212223242526272812345678SD1R12R23D2R34D3R45D4R67D612345678SD2R78D7C133PC233PR89D8 图3.6 AT89S51单片机P1口外接8只LED发光二极管 3.4.2 程序设计 ORG 0000H LJMP MAIN ORG 0030H MAIN: ORL P3,#3CH MOV A,P3 Title ANL A,#3CH SizeNumber MOV R0,A 12 CJNE A,#3CH,MAIN1 3LetterDate:File:15-Jul-2005C:\\Documents and S SJMP MAIN MAIN1: MOV R1,#10 PDO: LCALL DELAY DJNZ R1,PDO MOV A,P3 CJNE A,R0,DODO K_S1: JB P3.2,K_S2 LJMP KEY_1 K_S2: JB P3.3,K_S3

LJMP KEY_2 K_S3: JB P3.4,K_S4 LJMP KEY_3 K_S4: JB P3.5,DODO LJMP KEY_4 DODO: SJMP MAIN KEY_1: MOV P1,#0FDH SJMP MAIN

KEY_2: MOV P1,#0FBH SJMP MAIN

KEY_3: MOV P1,#0FEH SJMP MAIN KEY_4: MOV R1,#10 SPK2: MOV R2,#50H SPK1: CPL P3.2

LCALL DELAY ;调用延时程序 DJNZ R2,SPK1 DJNZ R1,SPK2 SJMP MAIN DELAY: MOV R3,#10 DEL: MOV R4,#50 DJNZ R4,$ DJNZ R3,DEL END

3.4.3 源程序的编辑、编译、下载

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

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

3.4.4 相关知识 1. 如何用按键控制灯?

按键是单片机常用的输人控制设备,用于信息和命令的输人,当按键与灯的对应关系建立后,单片机程序不断轮流检测S1~S4按键是否有键按下,当有某键按下时,单片机点亮相应的灯。也就是说,每个按键都对应了一个程序段,按下不同按键,程序就执行相应程序段,怎样才能实现这种转移呢?原来单片机中专门有一类控制转移类指令。

2. MCS-51单片机有哪些控制转移指令?

控制转移指令用于控制程序的流向,所控制的范围即为程序存储器区间,MCS-51系列单片机的控制转移指令相对丰富,有可对64kB程序空间地址单元进行访问的长调用、长转移指令,也有可对2kB字节进行访问的绝对调用和绝对转移指令,还有在一页范围内短相对转移及其它无条件转移指令,这些指令的执行一般都不会对标志位有影响。

(1)无条件转移指令(4条)

这组指令执行完后,程序就会无条件转移到指令所指向的地址上去。长转移指令访问的程序存储器空间为16地址64kB,绝对转移指令访问的程序存储器空间为11位地址2kB空间。

LJMP addr16 ;addr16→(PC),给程序计数器赋予新值的16位地址。 AJMP addr11 ;(PC)+2→(PC),addr11→(PC10-0)程序计数器赋予新值(11位地址),(PC15-11)不改变。

SJMP rel ;(PC)+ 2 + rel→(PC)当前程序计数器先加上2再加上偏移量给程序计数器赋予新值。

JMP @A+DPTR ;(A)+ (DPTR)→(PC),累加器所指向地址单元的值加上数

据指针的值给程序计数器赋予新值。

如:任务中的 LJMP MAIN 指令,就属无条件转移指令。 (2)条件转移指令(8条)

程序可利用这组丰富的指令根据当前的条件进行判断,看是否满足某种特定的条件,从而控制程序的转向。

JZ rel ; A=0,(PC)+ 2 + rel→(PC),累加器中的内容为0,则转移到偏移量所指向的地址,否则程序往下执行。

JNZ rel ; A≠0,(PC)+ 2 + rel→(PC),累加器中的内容不为0,则转移到偏移量所指向的地址,否则程序往下执行。

CJNE A, data, rel ; A≠(data),(PC)+ 3 + rel→(PC),累加器中的内容不等于直接地址单元的内容,则转移到偏移量所指向的地址,否则程序往下执行。

CJNE A, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),累加器中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行。

CJNE Rn, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Rn中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行。

CJNE @Ri, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Ri指向地址单元中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行。

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