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

📄 dpjjx10.htm

📁 本单片机教程是平凡老师花了大量时间
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<TITLE>单片机第八课</TITLE>
<style type="text/css">
td {font-family: "宋体"; font-size: 9pt; font-weight: normal}
a:link {color: #000099;font-size: 9pt; text-decoration: none}
a:visited {color: #65038e; font-size: 9pt; text-decoration: none}
a:hover {color: red; text-decoration: none}
</style>
</HEAD>
<BODY LINK="#0000ff" VLINK="#800080" bgcolor="#ffffff" background="../back.jpg">
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT LANG="ZH-CN" size="2">单片机第八课(寻址方式与指令系统)</FONT></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2" LANG="ZH-CN">通过前面的学习,我们已经了解了单片机内部的结构,并且也已经知道,要控制单片机,让它为我们干学,要用指令,我们已学了几条指令,但很零散,从现在开始,我们将要系统地学习8051的指令部份。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT LANG="ZH-CN" size="2">一、概述</FONT></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2">1、指令的格式</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2">我们已知,要让计算机做事,就得给计算机以指令,并且我们已知,计算机很“笨”,只能懂得数字,如前面我们写进机器的75H,90H,00H等等,所以指令的第一种格式就是机器码格式,也说是数字的形式。但这种形式实在是为难我们人了,太难记了,于是有另一种格式,助记符格式,如MOV  
  P1,#0FFH,这样就好记了。 这两种格式之间的关系呢,我们不难理解,本质上它们完全等价,只是形式不一样而已。</font></P> 
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2">2、汇编</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2">我们写指令使用汇编格式,而计算机只懂机器码格式,所以要将我们写的汇编格式的指令转换为机器码格式,这种转换有两种方法:手工汇编和机器汇编。手工汇编实际上就是查表,因为这两种格式纯粹是格式不同,所以是一一对应的,查一张表格就行了。不过手工查表总是嫌麻烦,所以就有了计算机软件,用计算机软件来替代手工查表,这就是机器汇编。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2">二、寻址</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font size="2" LANG="ZH-CN">让我们先来复习一下我们学过的一些指令:MOV  
  P1,#0FFH,MOV  
  R7,#0FFH这些指令都是将一些数据送到相应的位置中去,为什么要送数据呢?第一个因为送入的数可以让灯全灭掉,第二个是为了要实现延时,从这里我们可以看出来,在用单片机的编程语言编程时,经常要用到数据的传递,事实上数据传递是单片机编程时的一项重要工作,一共有28条指令(单片机共111条指令)。下面我们就从数据传递类指令开始吧。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> 
<font size="2" LANG="ZH-CN">分析一下MOV  
  P1,#0FFH这条指令,我们不难得出结论,第一个词MOV是命令动词,也就是决定做什么事情的,MOV是MOVE少写了一个E,所以就是“传递”,这就是指令,规定做什么事情,后面还有一些参数,分析一下,数据传递必须要有一个“源”也就是你要送什么数,必须要有一个“目的”,也就是你这个数要送到什么地方去,显然在上面那条指令中,要送的数(源)就是0FFH,而要送达的地方(目的地)就是P1这个寄存器。在数据传递类指令中,均将目的地写在指令的后面,而将源写在最后。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> 
<font size="2" LANG="ZH-CN">这条指令中,送给P1是这个数本身,换言之,做完这条指令后,我们可以明确地知道,P1中的值是0FFH,但是并不是任何时候都可以直接给出数本身的。例如,在我们前面给出的延时程序例是这样写的:</font></P>
<TABLE BORDER CELLSPACING=1 CELLPADDING=7 WIDTH=607>
  <TR> 
    <TD WIDTH="50%" VALIGN="TOP" HEIGHT=84> 
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
      <font size="2" LANG="ZH-CN">MAIN</font><font size="2"><FONT FACE="宋体" LANG="ZH-CN">: 
      </FONT> 
        <FONT LANG="ZH-CN">SETB P1.0 </FONT></font>
      <font size="2" FACE="宋体" LANG="ZH-CN">    ;(1)</font></P>
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> 
      <font size="2" FACE="宋体" LANG="ZH-CN">   </font><FONT LANG="ZH-CN" size="2">LCALL  
        DELAY </FONT><font size="2" FACE="宋体" LANG="ZH-CN">;(2)</font></P> 
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> 
      <font size="2" FACE="宋体" LANG="ZH-CN">    </font><font size="2"><FONT LANG="ZH-CN">CLR  
        P1.0 </FONT><FONT FACE="宋体" LANG="ZH-CN">    </FONT> </font>
      <font size="2" FACE="宋体" LANG="ZH-CN">;(3)</font></P> 
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> 
      <font size="2" FACE="宋体" LANG="ZH-CN">   </font><FONT LANG="ZH-CN" size="2">LCALL  
        DELAY </FONT><font size="2" FACE="宋体" LANG="ZH-CN">  ;(4)</font></P>
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> 
      <font size="2" FACE="宋体" LANG="ZH-CN">    </font><FONT LANG="ZH-CN" size="2">AJMP  
        MAIN </FONT><font size="2" FACE="宋体" LANG="ZH-CN">   ;(5)</font></P>
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
      <FONT FACE="宋体" LANG="ZH-CN" size="2">;以下子程序</FONT></P>
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
      <font size="2" LANG="ZH-CN">DELAY</font><font size="2"><FONT FACE="宋体" LANG="ZH-CN">:</FONT> 
        <FONT LANG="ZH-CN">MOV R7</FONT><FONT FACE="宋体" LANG="ZH-CN">,</FONT><FONT LANG="ZH-CN">#250</FONT><FONT FACE="宋体" LANG="ZH-CN"> </FONT>
      </font><font size="2" FACE="宋体" LANG="ZH-CN"> ;(6)</font></P> 
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
      <font size="2" LANG="ZH-CN">D1</font><font size="2"><FONT FACE="宋体" LANG="ZH-CN">:</FONT> 
        <FONT LANG="ZH-CN">MOV R6</FONT><FONT FACE="宋体" LANG="ZH-CN">,</FONT><FONT LANG="ZH-CN">#250  
        </FONT></font><font size="2" FACE="宋体" LANG="ZH-CN">  ;(7)</font></P>
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
      <font size="2" LANG="ZH-CN">D2</font><font size="2"><FONT FACE="宋体" LANG="ZH-CN">:</FONT> 
        <FONT LANG="ZH-CN">DJNZ R6</FONT><FONT FACE="宋体" LANG="ZH-CN">,</FONT><FONT LANG="ZH-CN">D2  
        </FONT></font><font size="2" FACE="宋体" LANG="ZH-CN">   ;(8)</font></P>
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> 
      <font size="2" FACE="宋体" LANG="ZH-CN">  </font><font size="2"> 
      <FONT LANG="ZH-CN">DJNZ  
        R7</FONT><FONT FACE="宋体" LANG="ZH-CN">,</FONT><FONT LANG="ZH-CN">D1</FONT></font><font size="2" FACE="宋体" LANG="ZH-CN">   ;(9)</font></P>
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> 
      <font size="2" FACE="宋体" LANG="ZH-CN"> </font><font size="2"> <FONT FACE="宋体" LANG="ZH-CN"> </FONT><FONT LANG="ZH-CN">RET  
        </FONT></font><font size="2" FACE="宋体" LANG="ZH-CN">       ;(10)</font></P>
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> 
      <font size="2" FACE="宋体" LANG="ZH-CN">  </font><font size="2"> 
      <FONT LANG="ZH-CN">END  
        </FONT><FONT FACE="宋体" LANG="ZH-CN">    </FONT> <FONT FACE="宋体" LANG="ZH-CN">  ;(11)</FONT>
      </font>  
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> 
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
      <font size="2">&nbsp; </font> 
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> 
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
      <font size="2">&nbsp; </font> 
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
      <font size="2" FACE="宋体" LANG="ZH-CN">表1</font><font size="2"> </font> 
    </TD>
    <TD WIDTH="50%" VALIGN="TOP" HEIGHT=84> 
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
      <font size="2" LANG="ZH-CN">MAIN</font><font size="2"><FONT FACE="宋体" LANG="ZH-CN">:</FONT> 
        <FONT LANG="ZH-CN">SETB P1.0 </FONT></font>
      <font size="2" FACE="宋体" LANG="ZH-CN">    ;(1)</font></P>
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
      <font size="2" face="宋体" lang="ZH-CN">   </font><font size="2"><FONT LANG="ZH-CN">MOV  
        30H</font><FONT FACE="宋体" LANG="ZH-CN">,</FONT></font><font size="2" LANG="ZH-CN">#255</font></P>
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
      <font size="2" FACE="宋体" LANG="ZH-CN">    </font>
      <FONT LANG="ZH-CN" size="2">LCALL  
        DELAY </FONT><font size="2" FACE="宋体" LANG="ZH-CN">;</font></P> 
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> 
      <font size="2" FACE="宋体" LANG="ZH-CN">    </font><font size="2">
      <FONT LANG="ZH-CN">CLR  
        P1.0 </FONT><FONT FACE="宋体" LANG="ZH-CN">    </FONT> </font>
      <font size="2" FACE="宋体" LANG="ZH-CN">;(3)</font></P> 
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
      <font size="2" face="宋体" lang="ZH-CN">   </font><font size="2"> </font>
      <font size="2" LANG="ZH-CN">MOV 30H,#200</font></P> 
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
      <font size="2" FACE="宋体" LANG="ZH-CN">    </font>
      <FONT LANG="ZH-CN" size="2">LCALL  
        DELAY </FONT><font size="2" FACE="宋体" LANG="ZH-CN">  ;(4)</font></P>
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> 
      <font size="2" FACE="宋体" LANG="ZH-CN">    </font>
      <FONT LANG="ZH-CN" size="2">AJMP  
        MAIN </FONT><font size="2" FACE="宋体" LANG="ZH-CN">   ;(5)</font></P>
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
      <FONT FACE="宋体" LANG="ZH-CN" size="2">;以下子程序</FONT></P>
      <P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
      <font size="2" LANG="ZH-CN">DELAY</font><font size="2"><FONT FACE="宋体" LANG="ZH-CN">:</FONT> 
        <FONT LANG="ZH-CN">MOV R7</FONT><FONT FACE="宋体" LANG="ZH-CN">,</FONT><FONT LANG="ZH-CN">30H</FONT><FONT FACE="宋体" LANG="ZH-CN"> </FONT>
      </font><font size="2" FACE="宋体" LANG="ZH-CN"> ;(6)</font></P> 

⌨️ 快捷键说明

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