51单片机无条件转移类指令简介及举例

发布者:数据小巨人最新更新时间:2017-10-18 来源: eefocus关键字:51单片机  无条件转移类指令 手机看文章 扫描二维码
随时随地手机看文章

无条件转移类指令 

(1) 短转移类指令 

AJMP addr11 

(2) 长转移类指令 

LJMP addr16 

(3)相对转移指令 

SJMP rel 

上面的三条指令,如果要仔细分析的话,区别较大,但开始学习时,可不理会这么多,统统理解成:JMP 标号,也就是跳转到一个标号处。事实上,LJMP 标号,在前面的例程中我们已接触过,并且也知道如何来使用了。而AJMP和SJMP也是一样。那么他们的区别何在呢?在于跳转的范围不一样。好比跳远,LJMP一下就能跳64K这么远(当然近了更没关系了)。而AJMP 最多只能跳2K距离,而SJMP则最多只能跳256这么远。原则上,所有用SJMP或AJMP的地方都能用LJMP来替代。因此在开始学习时,需要跳转时能全用LJMP,除了一个场合。什么场合呢?先了解一下AJMP,AJMP是一条双字节指令,也就说这条指令本身占用存储器(ROM)的两个单元。而LJMP则是三字节指令,即这条指令占用存储器(ROM)的三个单元。下面是第四条跳转指令。 

(4)间接转移指令 

JMP @A+DPTR

 

(5)编程实例

这条指令的用途也是跳转,转到什么地方去呢?这可不能由标号简单地决定了。让我们从一个实际的例程入手吧。 

MOV DPTR,#TAB ;将TAB所代表的地址送入DPTR 

MOV A,R0 ;从R0中取数(详见下面说明) 

MOV B,#2 

MUL A,B ;A中的值乘2(详见下面的说明) 

JMP A,@A+DPTR ;跳转 

TAB: AJMP S1 ;跳转表格 

AJMP S2 

AJMP S3




  应用背景介绍:在单片机开发中,经常要用到键盘,见上面的9个按钮的键盘。我们的要求是:当按下功能键A………..G时去完成不一样的功能。这用程序设计的语言来表达的话,就是:按下不一样的键去执行不一样的程序段,以完成不一样的功能。怎么样来实现呢? 

  前面的程序读入的是按钮的值,如按下'A'键后获得的键值是0,按下'B'键后获得的值是'1'等等,然后根据不一样的值进行跳转,如键值为0就转到S1执行,为1就转到S2执行。。。。如何来实现这一功能呢? 

  先从程序的下面看起,是若干个AJMP语句,这若干个AJMP语句最后在存储器中是这样存放的,也就是每个AJMP语句都占用了两个存储器的空间,并且是连续存放的。而AJMP S1存放的地址是TAB,到底TAB等于多少,我们不需要知道,把它留给汇编程序来算好了。 

  下面我们来看这段程序的执行过程:第一句MOV DPTR,#TAB执行完了之后,DPTR中的值就是TAB,第二句是MOV A,R0,我们假设R0是由按钮处理程序获得的键值,比如按下A键,R0中的值是0,按下B键,R0中的值是1,以此类推,现在我们假设按下的是B键,则执行完第二条指令后,A中的值就是1。并且按我们的分析,按下B后应当执行S2这段程序,让我们来看一看是否是这样呢?第三条、第四条指令是将A中的值乘2,即执行完第4条指令后A中的值是2。下面就执行JMP @A+DPTR了,现在DPTR中的值是TAB,而A+DPTR后就是TAB+2,因此,执行此句程序后,将会跳到TAB+2这个地址继续执行。看一看在TAB+2这个地址里面放的是什么?就是AJMP S2这条指令。因此,马上又执行AJMP S2指令,程序将跳到S2处往下执行,这与我们的要求相符合。 


关键字:51单片机  无条件转移类指令 引用地址:51单片机无条件转移类指令简介及举例

上一篇:51单片机判A内容是否为0转移指令JZ JNZ简介及实例
下一篇:51单片机逻辑指令编程举例

推荐阅读最新更新时间:2024-03-16 15:40

51单片机驱动能力(拉电流_灌电流)及上拉电阻
看来很多网友都搞不清灌电流和拉电流的概念,下面就此解释一下,希望看过本文后不再就此困扰。 一个重要的前提:灌电流和拉电流是针对端口而言的。 名词解释 灌:注入、填充,由外向内、由虚而实。渴了,来一大杯鲜榨橙汁,一饮而尽,饱了,这叫 灌 。 灌电流(sink current) ,对一个端口而言,如果电流方向是向其内部流动的则是 灌电流 ,比如一个IO通过一个电阻和一个LED连接至VCC,当该IO输出为逻辑0时能不能点亮LED,去查该器件手册中sink current参数。 名词解释 拉:流出、排空,由内向外,由实而虚。一大杯鲜橙汁喝了,过会儿,憋的慌,赶紧找卫生间,一阵 大雨 ,舒
[单片机]
<font color='red'>51单片机</font>驱动能力(拉电流_灌电流)及上拉电阻
51单片机音乐万年历制作
一、电源电压4.8V—5.2V,可以直接用电脑USB供电。 二、程序修改说明 1、如果你编译通不过,就是你用的KEIL库文件不全,请换个完整版本的KEIL,或到我店铺购买,本程序是完全编译通过,且没有1个警告; 2、本程序由于农历,节气等数据很占空间,编译后有19K多,请使用程序存储器20K以上的51单片机,比如STC89C55、STC89C58,STC89C516,AT89C55,AT89S54,SST89C58等; 3、如果你的汉字显示不全或乱码,比如“三“显示不了,那是你的KEIL没有打补丁,并不是程序问题,至于什么补丁你可以网上搜或向我索要; 4、在修改位定义的时候需要将Soundplay.h文件下的sbit BeepI
[单片机]
<font color='red'>51单片机</font>音乐万年历制作
80C51单片机定时计数器的功能详解
单片机结构是什么样的,由什么模块组成 单片机(Micro Control Unit)全称微型控制单元,简称单片机(MCU),从字面意思可以了解到它其实就是一个微型的计算机系统,51单片机包含CPU(8051内核),SRAM(内存)惨不忍睹的1K,闪存(硬盘)也只有可怜的几十K,然后外围的模块基本就是下载代码用的ISP,中断模块,基本输入输出I/O模块,复位模块,串口模块,EEPROM,看门狗。单片机种类比较多,51是我们常用的单片机型号,主要应用的场合有数码家电(洗衣机,电饭锅,电磁炉,微波炉),工业现场数据采集与传输等。 80C51定时计数器有两个功能,定时功能和计数功能,定时计数器实质是一个加一计数器,无论做定时还是做
[单片机]
80C<font color='red'>51单片机</font>定时计数器的功能详解
51单片机如何实现对CF卡的读写
  引言   由于CF卡(Compact Flash Card)具有容量大、体积小、高性能、携带方便等优点,而且读写速度快,可与多种电脑操作系统平台兼容,因此在数据采集系统中的数据记录或与PC机之间的数据转存多采用CF卡。为了在PC机中能方便地进行数据处理,在下位机端必须采用一种标准的格式组织数据,即将数据按照Windows标准文件格式写入,在PC机端通过读卡器将写入CF的内容以标准文件形式读出。Windows标准文件格式有FAT、FAT32和NTFS。考虑到广泛使用的Windows 98系统的CF卡的容量等因素,通常采用FAT(File Allocation Table)文件系统。单片机系统对CF卡的读写,就是从底层对它进行直接操
[单片机]
12-基于51单片机的温度控制恒温箱设计
具体实现功能 系统由STC89C52单片机+DS18B20温度传感器+LCD1602液晶显示屏+5V继电器+5V风扇+加热膜+按键+蜂鸣器+电源构成。 具体功能: 1、LCD1602液晶实时显示测得的温度; 2、可以设置温度报警上下限值;按键功能:加键,减键,设置键; 3、超过设定的报警上下限值则开始声光报警; 4、测得的温度超过上限值,继电器吸合,电风扇开始工作;测得的温度低于下限值,继电器吸合,加热膜开始工作。 设计背景 二十一世纪是科技高速发展的信息时代,电子技术、微型单片机技术的应用更是空前广泛,伴随着科学技术和生产的不断发展,需要对各种参数进行温度测量。因此温度一词在生产生活之中出现的频率日益增多
[单片机]
12-基于<font color='red'>51单片机</font>的温度控制恒温箱设计
51单片机总线与非总线的程序对比
简介:三总线简称ADC,这总是让我想起ADC的芯片,A是地址总线,D是数据总线,C是控制总线,是控制片外ROM、RAM和I/O的。 #include #include #define uchar unsigned char #define uint unsigned int uchar code table = The distance is ; uchar code table1 = 00.0cm ; sbit shuru=P1^0; sbit yidianling=P1^0; sbit yidianyi=P1^3;//延时 void delay(uint z) { uint x,y;
[单片机]
<font color='red'>51单片机</font>总线与非总线的程序对比
基于C51单片机中的通信协议分享
一、基本格式: 通信头-》巴克码-》地址字-》长度字-》命令字-》信息位-》校准字 1.通信头:占1~8个字节,表通信开始(0x00、0xff不能用作通信头); 2.巴克码:占1字节,一般为0x72,表通信头结束; 3.地址字:表终端的地址,占1字节(0x00作为广播地址); 4.长度字:占1字节,表示从地址字到信息位之间的字节数; 5.命令字:占1字节,指示终端的不同操作; 6.信息位:不定长,从0~252字节; 7.校验位:两个字节,采用和校验及CRC校验。 二、应答 1.如果终端接收正确,则应答ACK;如果终端接收错误,则应答NAK; 2.发送方收到ACK,此次通信结束; 3.发送方收到NAK,重发刚才的命令字(最多7次
[单片机]
基于C<font color='red'>51单片机</font>中的通信协议分享
基于8051单片机和SJAl000芯片实现智能传感器网络的设计
前 言 随着自动化程度的提高和信息的网络化进程, 所需要的测控点和测控参量越来越多, 使得一个自动控制系统日益庞大而复杂。对于一个系统来说, 需要的传感器数目成倍增加。为了使各智能仪表与上位机能实时、高速、准确地通信, 选择较理想的现场总线则是很关键的。现场总线是开放型控制系统, 是用于现场总线仪表与控制室之间的一种全数字化、串行、双向、多站的通讯网络 。CAN 是其中很有发展前景的一种现场总线。在网络化的系统中, 每只传感器作为一个智能节点挂接在CAN 总线上, 整个系统如图1所示。 1、 CAN 总线的技术特点 a) CAN 通信速率为(5kB/s)/10km、(1MB/s)/40m ,其节点数可达110 个, 传输介质采
[单片机]
基于80<font color='red'>51单片机</font>和SJAl000芯片实现智能传感器网络的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved