⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 单片机第十四课.htm

📁 单片机快速入门
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0047)http://www.onestudy.net/download/elec/dpj14.htm -->
<!-- saved from url=(0048)http://www.21icsearch.com/pmcu/dpjjx/dpjjx16.htm --><HTML><HEAD><TITLE>单片机第十四课</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb_2312-80">
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY background=""><FONT lang=ZH-CN face=宋体 size=3>
<P align=justify>单片机第十三课</P>
<P align=justify>条件转移指令:</P>
<P align=justify>条件转移指令是指在满足一定条件时进行相对转移。</P></FONT>
<OL><FONT lang=ZH-CN face=宋体 size=3>
  <P align=justify></FONT>
  <LI><FONT lang=ZH-CN face=宋体 size=3>判</FONT><FONT size=3>A</FONT><FONT 
  lang=ZH-CN face=宋体 size=3>内容是否为</FONT><FONT size=3>0</FONT><FONT lang=ZH-CN 
  face=宋体 size=3>转移指令</FONT> <FONT lang=ZH-CN face=宋体 size=3>
  <P></P></FONT><FONT size=3>
  <P align=justify>JZ rel</P>
  <P align=justify>JNZ rel</P></FONT>
  <P align=justify><FONT lang=ZH-CN face=宋体 size=3>第一指令的功能是:如果</FONT><FONT 
  size=3>(A)=0</FONT><FONT lang=ZH-CN face=宋体 
  size=3>,则转移,否则顺序执行(执行本指令的下一条指令)。转移到什么地方去呢?如果按照传统的方法,就要算偏移量,很麻烦,好在现在我们可以借助于机器汇编了。因此这第指令我们可以这样理解:</FONT><FONT 
  size=3>JZ </FONT><FONT lang=ZH-CN face=宋体 
  size=3>标号。即转移到标号处。下面举一例说明:</FONT></P><FONT size=3>
  <P align=justify>MOV A,R0</P>
  <P align=justify>JZ L1</P>
  <P align=justify>MOV R1,#00H</P>
  <P align=justify>AJMP L2</P>
  <P align=justify>L1: MOV R1,#0FFH</P>
  <P align=justify>L2: SJMP L2</P></FONT>
  <P align=justify><FONT lang=ZH-CN face=宋体 size=3></FONT><FONT 
  size=3>END</FONT></P>
  <P align=justify><FONT lang=ZH-CN face=宋体 size=3>在执行上面这段程序前如果</FONT><FONT 
  size=3>R0</FONT><FONT lang=ZH-CN face=宋体 size=3>中的值是</FONT><FONT 
  size=3>0</FONT><FONT lang=ZH-CN face=宋体 size=3>的话,就转移到</FONT><FONT 
  size=3>L1</FONT><FONT lang=ZH-CN face=宋体 size=3>执行,因此最终的执行结果是</FONT><FONT 
  size=3>R1</FONT><FONT lang=ZH-CN face=宋体 size=3>中的值为</FONT><FONT 
  size=3>0FFH</FONT><FONT lang=ZH-CN face=宋体 size=3>。而如果</FONT><FONT 
  size=3>R0</FONT><FONT lang=ZH-CN face=宋体 size=3>中的值不等于</FONT><FONT 
  size=3>0</FONT><FONT lang=ZH-CN face=宋体 size=3>,则顺序执行,也就是执行</FONT><FONT 
  size=3> MOV R1</FONT><FONT lang=ZH-CN face=宋体 size=3>,</FONT><FONT 
  size=3>#00H</FONT><FONT lang=ZH-CN face=宋体 size=3>指令。最终的执行结果是</FONT><FONT 
  size=3>R1</FONT><FONT lang=ZH-CN face=宋体 size=3>中的值等于</FONT><FONT 
  size=3>0</FONT><FONT lang=ZH-CN face=宋体 size=3>。</FONT></P>
  <P align=justify><FONT lang=ZH-CN face=宋体 
  size=3>第一条指令的功能清楚了,第二条当然就好理解了,如果</FONT><FONT size=3>A</FONT><FONT lang=ZH-CN 
  face=宋体 size=3>中的值不等于</FONT><FONT size=3>0</FONT><FONT lang=ZH-CN face=宋体 
  size=3>,就转移。把上面的那个例子中的</FONT><FONT size=3>JZ</FONT><FONT lang=ZH-CN face=宋体 
  size=3>改成</FONT><FONT size=3>JNZ</FONT><FONT lang=ZH-CN face=宋体 
  size=3>试试吧,看看程序执行的结果是什么</FONT><FONT size=3>?</FONT></P><FONT lang=ZH-CN 
  face=宋体 size=3>
  <P align=justify></P>
  <LI>比较转移指令 
  <P></P></FONT><FONT size=3>
  <P align=justify>CJNE A,#data,rel </P>
  <P align=justify>CJNE A,direct,rel</P>
  <P align=justify>CJNE Rn,#data,rel</P>
  <P align=justify>CJNE @Ri,#data,rel</P></FONT>
  <P align=justify><FONT lang=ZH-CN face=宋体 size=3>第一条指令的功能是将</FONT><FONT 
  size=3>A</FONT><FONT lang=ZH-CN face=宋体 size=3>中的值和立即数</FONT><FONT 
  size=3>data</FONT><FONT lang=ZH-CN face=宋体 
  size=3>比较,如果两者相等,就顺序执行(执行本指令的下一条指令),如果不相等,就转移,同样地,我们可以将</FONT><FONT 
  size=3>rel</FONT><FONT lang=ZH-CN face=宋体 size=3>理解成标号,即:</FONT><FONT 
  size=3>CJNE A</FONT><FONT lang=ZH-CN face=宋体 size=3>,</FONT><FONT 
  size=3>#data,</FONT><FONT lang=ZH-CN face=宋体 
  size=3>标号。这样利用这条指令,我们就可以判断两数是否相等,这在很多场合是非常有用的。但有时还想得知两数比较之后哪个大,哪个小,本条指令也具有这样的功能,如果两数不相等,则</FONT><FONT 
  size=3>CPU</FONT><FONT lang=ZH-CN face=宋体 
  size=3>还会反映出哪个数大,哪个数小,这是用</FONT><FONT size=3>CY</FONT><FONT lang=ZH-CN face=宋体 
  size=3>(进位位)来实现的。如果前面的数(</FONT><FONT size=3>A</FONT><FONT lang=ZH-CN face=宋体 
  size=3>中的)大,则</FONT><FONT size=3>CY=0</FONT><FONT lang=ZH-CN face=宋体 
  size=3>,否则</FONT><FONT size=3>CY=1</FONT><FONT lang=ZH-CN face=宋体 
  size=3>,因此在程序转移后再次利用</FONT><FONT size=3>CY</FONT><FONT lang=ZH-CN face=宋体 
  size=3>就可判断出</FONT><FONT size=3>A</FONT><FONT lang=ZH-CN face=宋体 
  size=3>中的数比</FONT><FONT size=3>data</FONT><FONT lang=ZH-CN face=宋体 
  size=3>大还是小了。</FONT></P><FONT lang=ZH-CN face=宋体 size=3>
  <P align=justify>例:</P></FONT>
  <P align=justify><FONT lang=ZH-CN face=宋体 size=3></FONT><FONT size=3>MOV 
  A,R0</FONT></P>
  <P align=justify><FONT lang=ZH-CN face=宋体 size=3></FONT><FONT size=3>CJNE 
  A,#10H,L1</FONT></P><FONT size=3>
  <P align=justify>MOV R1,#0FFH</P>
  <P align=justify>AJMP L3</P>
  <P align=justify>L1: JC L2</P>
  <P align=justify>MOV R1,#0AAH</P>
  <P align=justify>AJMP L3</P>
  <P align=justify>L2: MOV R1,#0FFH</P>
  <P align=justify>L3: SJMP L3</P></FONT>
  <P align=justify><FONT lang=ZH-CN face=宋体 
  size=3>上面的程序中有一条指令我们还没学过,即</FONT><FONT size=3>JC</FONT><FONT lang=ZH-CN 
  face=宋体 size=3>,这条指令的原型是</FONT><FONT size=3>JC rel,</FONT><FONT lang=ZH-CN 
  face=宋体 size=3>作用和上面的</FONT><FONT size=3>JZ</FONT><FONT lang=ZH-CN face=宋体 
  size=3>类似,但是它是判</FONT><FONT size=3>CY</FONT><FONT lang=ZH-CN face=宋体 
  size=3>是</FONT><FONT size=3>0</FONT><FONT lang=ZH-CN face=宋体 
  size=3>,还是</FONT><FONT size=3>1</FONT><FONT lang=ZH-CN face=宋体 
  size=3>进行转移,如果</FONT><FONT size=3>CY=1</FONT><FONT lang=ZH-CN face=宋体 
  size=3>,则转移到</FONT><FONT size=3>JC</FONT><FONT lang=ZH-CN face=宋体 
  size=3>后面的标号处执行,如果</FONT><FONT size=3>CY=0</FONT><FONT lang=ZH-CN face=宋体 
  size=3>则顺序执行(执行它的下面一条指令)。</FONT></P>
  <P align=justify><FONT lang=ZH-CN face=宋体 size=3>分析一下上面的程序,如果(</FONT><FONT 
  size=3>A</FONT><FONT lang=ZH-CN face=宋体 size=3>)</FONT><FONT 
  size=3>=10H</FONT><FONT lang=ZH-CN face=宋体 size=3>,则顺序执行,即</FONT><FONT 
  size=3>R1=0</FONT><FONT lang=ZH-CN face=宋体 size=3>。如果(</FONT><FONT 
  size=3>A</FONT><FONT lang=ZH-CN face=宋体 size=3>)不等于</FONT><FONT 
  size=3>10H</FONT><FONT lang=ZH-CN face=宋体 size=3>,则转到</FONT><FONT 
  size=3>L1</FONT><FONT lang=ZH-CN face=宋体 size=3>处继续执行,在</FONT><FONT 
  size=3>L1</FONT><FONT lang=ZH-CN face=宋体 size=3>处,再次进行判断,如果(</FONT><FONT 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -