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

📄 dpjjx12.htm

📁 单片机讲义
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<META NAME="Generator" CONTENT="Microsoft Word 97">
<TITLE>单片机指令(三)</TITLE>
</HEAD>
<BODY bgcolor="#CCFFCC" background="../back.jpg">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3> 
<P ALIGN="JUSTIFY">单片机指令(三)</P>
</FONT><P ALIGN="JUSTIFY"><FONT SIZE=3>2</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>、累加器</FONT><FONT SIZE=3>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>与片外</FONT><FONT SIZE=3>RAM</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>之间的数据传递类指令</font></P>
<FONT SIZE=3><P ALIGN="JUSTIFY">MOVX   A,@Ri</P>
<P ALIGN="JUSTIFY">MOVX   @Ri,A</P>
<P ALIGN="JUSTIFY">MOVX&#9; A,@DPTR</P>
<P ALIGN="JUSTIFY">MOVX   @DPTR,A</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">说明:</P>
</FONT><P ALIGN="JUSTIFY"><FONT SIZE=3>1</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)在</FONT><FONT SIZE=3>51</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中,与外部存储器</FONT><FONT SIZE=3>RAM</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>打交道的只可以是</FONT><FONT SIZE=3>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>累加器。所有需要送入外部</FONT><FONT SIZE=3>RAM</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>的数据必需要通过</FONT><FONT SIZE=3>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>送去,而所有要读入的外部</FONT><FONT SIZE=3>RAM</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的数据也必需通过</FONT><FONT SIZE=3>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>读入。在此我们可以看出内外部</FONT><FONT SIZE=3>RAM</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>的区别了,内部</FONT><FONT SIZE=3>RAM</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>间可以直接进行数据的传递,而外部则不行,比如,要将外部</FONT><FONT SIZE=3>RAM</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中某一单元(设为</FONT><FONT SIZE=3>0100H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>单元的数据)送入另一个单元(设为</FONT><FONT SIZE=3>0200H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>单元),也必须先将</FONT><FONT SIZE=3>0100H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>单元中的内容读入</FONT><FONT SIZE=3>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,然后再送到</FONT><FONT SIZE=3>0200H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>单元中去。</font></P><OL START=2>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>

<P ALIGN="JUSTIFY"></font><LI><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>要读或写外部的</font><FONT SIZE=3>RAM</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,当然也必须要知道</FONT><FONT SIZE=3>RAM</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>的地址,在后两条指令中,地址是被直接放在</FONT><FONT SIZE=3>DPTR</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的。而前两条指令,由于</FONT><FONT SIZE=3>Ri</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>(即</FONT><FONT SIZE=3>R0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>或</FONT><FONT SIZE=3>R1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)只是一个</FONT><FONT SIZE=3>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>位的寄存器,所以只提供低</FONT><FONT SIZE=3>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>位地址。因为有时扩展的外部</FONT><FONT SIZE=3>RAM</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>的数量比较少,少于或等于</FONT><FONT SIZE=3>256</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>个,就只需要提供</FONT><FONT SIZE=3>8</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>位地址就够了。</font></LI><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><p></P>
<P ALIGN="JUSTIFY"></FONT><LI><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>使用时应当首先将要读或写的地址送入</font><FONT SIZE=3>DPTR</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>或</FONT><FONT SIZE=3>Ri</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中,然后再用读写命令。</font></LI><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><p></P></font></OL><P ALIGN="JUSTIFY">

<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>例:将外部</font><FONT SIZE=3>RAM</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中</FONT><FONT SIZE=3>100H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>单元中的内容送入外部</FONT><FONT SIZE=3>RAM</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中</FONT><FONT SIZE=3>200H</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>单元中。</font></P>
<P ALIGN="JUSTIFY"><FONT SIZE=3>MOV    DPTR</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>#0100H</font></P><P ALIGN="JUSTIFY">
<FONT SIZE=3>MOVX   A</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>@DPTR</font></P><FONT SIZE=3>
<P ALIGN="JUSTIFY">MOV    DPTR,#0200H</P>
<P ALIGN="JUSTIFY">MOVX   @DPTR,A</P>
</FONT><OL START=3><FONT SIZE=3>

</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"></FONT><LI><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>程序存储器向累加器</font><FONT SIZE=3>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>传送指令</font></LI><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><p></P></font></OL><DIR>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>

</font><P ALIGN="JUSTIFY"><FONT SIZE=3>MOVC     A</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>@A+DPTR</font></P>
<P ALIGN="JUSTIFY"><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>本指令是将</font><B><I><FONT SIZE=3>ROM</font></i></B><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的数送入</FONT><FONT SIZE=3>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中。本指令也被称为查表指令,常用此指令来查一个已做好在</FONT><B><I><FONT SIZE=3>ROM</font></i></B><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的表格</font></P><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>
<P ALIGN="JUSTIFY">说明:</P></font></DIR><OL>

<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>

<P ALIGN="JUSTIFY"></font><LI><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>此条指令引出一个新的寻址方法:变址寻址。本指令是要在</font><FONT SIZE=3>ROM</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>的一个地址单元中找出数据,显然必须知道这个单元的地址,这个单元的地址是这样确定的:在执行本指令立脚点</FONT><FONT SIZE=3>DPTR</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中有一个数,</FONT><FONT SIZE=3>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中有一个数,执行指令时,将</FONT><FONT SIZE=3>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>和</FONT><FONT SIZE=3>DPTR</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的数加起为,就成为要查找的单元的地址。</font></LI><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><p></P>
<P ALIGN="JUSTIFY"></FONT><LI><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>查找到的结果被放在</font><FONT SIZE=3>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中,因此,本条指令执行前后,</FONT><FONT SIZE=3>A</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的值不一定相同。</font></LI><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><p></P></font></OL><DIR>
<P ALIGN="JUSTIFY">

<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>例:有一个数在</font><FONT SIZE=3>R0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中,要求用查表的方法确定它的平方值(此数的取值范围是</FONT><FONT SIZE=3>0-5</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)</font></P>
<P ALIGN="JUSTIFY"><FONT SIZE=3>MOV     DPTR</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>#TABLE</font></P><P ALIGN="JUSTIFY">
<FONT SIZE=3>MOV     A</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>R0</font></P><P ALIGN="JUSTIFY">
<FONT SIZE=3>MOVC    A</font><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>@A+DPTR</font></P><FONT SIZE=3>
<P ALIGN="JUSTIFY">.</P>

⌨️ 快捷键说明

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