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

📄 dpjjx26.htm

📁 单片机入门教程.rar
💻 HTM
📖 第 1 页 / 共 2 页
字号:
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">&#9;MOV&#9;SP,#5FH&#9;&#9;;</font><FONT FACE="宋体" LANG="ZH-CN">设置堆栈</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV&#9;P1,#0FFH</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">&#9;MOV&#9;P0,#0FFH</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">&#9;MOV&#9;P2,#0FFH&#9;;</font><FONT FACE="宋体" LANG="ZH-CN">初始化,所显示器,</FONT><FONT FACE="System,黑体" LANG="ZH-CN">LED</FONT><FONT FACE="宋体" LANG="ZH-CN">灭</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV&#9;TMOD,#00000001B&#9;;</FONT><FONT FACE="宋体" LANG="ZH-CN">定时器</FONT><FONT FACE="System,黑体" LANG="ZH-CN">T0</FONT><FONT FACE="宋体" LANG="ZH-CN">工作于模式</FONT><FONT FACE="System,黑体" LANG="ZH-CN">1</FONT><FONT FACE="宋体" LANG="ZH-CN">(</FONT><FONT FACE="System,黑体" LANG="ZH-CN">16</FONT><FONT FACE="宋体" LANG="ZH-CN">位定时</FONT><FONT FACE="System,黑体" LANG="ZH-CN">/</FONT><FONT FACE="宋体" LANG="ZH-CN">计数模式)</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV&#9;TH0,#HIGH(65536-2000)</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">&#9;MOV&#9;TL0,#LOW(65536-2000)</P>
<P ALIGN="JUSTIFY">&#9;SETB&#9;TR0</P>
<P ALIGN="JUSTIFY">&#9;SETB&#9;EA</P>
<P ALIGN="JUSTIFY">&#9;SETB&#9;ET0</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">&#9;MOV&#9;Counter,#0&#9;;</font><FONT FACE="宋体" LANG="ZH-CN">计数器初始化</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV&#9;DISPBUFF,#0&#9;;</FONT><FONT FACE="宋体" LANG="ZH-CN">第一位始终显示</FONT><FONT FACE="System,黑体" LANG="ZH-CN">0</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">&#9;MOV&#9;A,#0</P>
<P ALIGN="JUSTIFY">LOOP:&#9;</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">&#9;MOV&#9;DISPBUFF+1,A&#9;;</font><FONT FACE="宋体" LANG="ZH-CN">第二位轮流显示</FONT><FONT FACE="System,黑体" LANG="ZH-CN">0-9</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">&#9;INC&#9;A</P>
<P ALIGN="JUSTIFY">&#9;LCALL&#9;DELAY</P>
<P ALIGN="JUSTIFY">&#9;CJNE&#9;A,#10,LOOP</P>
<P ALIGN="JUSTIFY">&#9;MOV&#9;A,#0</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">&#9;AJMP&#9;LOOP</font><FONT FACE="宋体" LANG="ZH-CN">&#9;</FONT><FONT FACE="System,黑体" LANG="ZH-CN">;</FONT><FONT FACE="宋体" LANG="ZH-CN">在此中间可以按排任意程序,这里仅作示范。</font></P>
<P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">;</font><FONT FACE="宋体" LANG="ZH-CN">主程序到此结束</font></P>
<P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">DISP:&#9;&#9;;</font><FONT FACE="宋体" LANG="ZH-CN">定时器</FONT><FONT FACE="System,黑体" LANG="ZH-CN">T0</FONT><FONT FACE="宋体" LANG="ZH-CN">的中断响应程序</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">PUSH&#9;ACC&#9;&#9;;ACC</FONT><FONT FACE="宋体" LANG="ZH-CN">入栈</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">PUSH&#9;PSW&#9;&#9;;PSW</FONT><FONT FACE="宋体" LANG="ZH-CN">入栈</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV&#9;TH0,#HIGH(65536-2000)&#9;;</FONT><FONT FACE="宋体" LANG="ZH-CN">定时时间为</FONT><FONT FACE="System,黑体" LANG="ZH-CN">2000</FONT><FONT FACE="宋体" LANG="ZH-CN">个周期,约</FONT><FONT FACE="System,黑体" LANG="ZH-CN">2170</FONT><FONT FACE="宋体" LANG="ZH-CN">微秒(</FONT><FONT FACE="System,黑体" LANG="ZH-CN">11.0592M</FONT><FONT FACE="宋体" LANG="ZH-CN">)</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV&#9;TL0,#LOW(65536-2000)</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">&#9;SETB&#9;FIRST</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">&#9;SETB&#9;SECOND&#9;&#9;;</font><FONT FACE="宋体" LANG="ZH-CN">关显示</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV&#9;A,#DISPBUFF&#9;;</FONT><FONT FACE="宋体" LANG="ZH-CN">显示缓冲区首地址</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">ADD&#9;A,Counter&#9;</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">&#9;MOV&#9;R0,A</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">&#9;MOV&#9;A,@R0&#9;&#9;;</font><FONT FACE="宋体" LANG="ZH-CN">根据计数器的值取相应的显示缓冲区的值</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV&#9;DPTR,#DISPTAB&#9;;</FONT><FONT FACE="宋体" LANG="ZH-CN">字形表首地址</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">MOVC&#9;A,@A+DPTR&#9;;</FONT><FONT FACE="宋体" LANG="ZH-CN">取字形码</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV&#9;P0,A&#9;&#9;;</FONT><FONT FACE="宋体" LANG="ZH-CN">将字形码送</FONT><FONT FACE="System,黑体" LANG="ZH-CN">P0</FONT><FONT FACE="宋体" LANG="ZH-CN">位(段口)</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV&#9;A,Counter&#9;;</FONT><FONT FACE="宋体" LANG="ZH-CN">取计数器的值</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">JZ&#9;DISPFIRST&#9;;</FONT><FONT FACE="宋体" LANG="ZH-CN">如果是</FONT><FONT FACE="System,黑体" LANG="ZH-CN">0</FONT><FONT FACE="宋体" LANG="ZH-CN">则显示第一位</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">CLR&#9;SECOND&#9;&#9;;</FONT><FONT FACE="宋体" LANG="ZH-CN">否则显示第二位</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">AJMP&#9;DISPNEXT</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">DISPFIRST:</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">&#9;CLR&#9;FIRST&#9;&#9;;</font><FONT FACE="宋体" LANG="ZH-CN">显示第一位&#9;&#9;</font></P>
<FONT FACE="System,黑体" LANG="ZH-CN"><P ALIGN="JUSTIFY">DISPNEXT:</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">&#9;INC&#9;Counter&#9;&#9;;</font><FONT FACE="宋体" LANG="ZH-CN">计数器加</FONT><FONT FACE="System,黑体" LANG="ZH-CN">1</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">&#9;MOV&#9;A,Counter&#9;</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">&#9;DEC&#9;A&#9;&#9;;</font><FONT FACE="宋体" LANG="ZH-CN">如果计数器计到</FONT><FONT FACE="System,黑体" LANG="ZH-CN">2</FONT><FONT FACE="宋体" LANG="ZH-CN">,则让它回</FONT><FONT FACE="System,黑体" LANG="ZH-CN">0</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">&#9;DEC&#9;A&#9;&#9;</P>
<P ALIGN="JUSTIFY">&#9;JZ&#9;RSTCOUNT&#9;</P>
<P ALIGN="JUSTIFY">&#9;AJMP&#9;DISPEXIT</P>
<P ALIGN="JUSTIFY">RSTCOUNT:</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">&#9;MOV&#9;Counter,#0&#9;;</font><FONT FACE="宋体" LANG="ZH-CN">计数器的值只能是</FONT><FONT FACE="System,黑体" LANG="ZH-CN">0</FONT><FONT FACE="宋体" LANG="ZH-CN">或</FONT><FONT FACE="System,黑体" LANG="ZH-CN">1</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">DISPEXIT:</P>
<P ALIGN="JUSTIFY">&#9;POP&#9;PSW</P>
<P ALIGN="JUSTIFY">&#9;POP&#9;ACC</P>
<P ALIGN="JUSTIFY">&#9;RETI</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">DELAY:&#9;&#9;&#9;;</font><FONT FACE="宋体" LANG="ZH-CN">延时</FONT><FONT FACE="System,黑体" LANG="ZH-CN">130</FONT><FONT FACE="宋体" LANG="ZH-CN">毫秒</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">&#9;</font><FONT FACE="System,黑体" LANG="ZH-CN">PUSH&#9;PSW</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">&#9;SETB&#9;RS0</P>
<P ALIGN="JUSTIFY">&#9;MOV&#9;R7,#255</P>
<P ALIGN="JUSTIFY">D1:&#9;MOV&#9;R6,#255</P>
<P ALIGN="JUSTIFY">D2:&#9;NOP</P>
<P ALIGN="JUSTIFY">&#9;NOP</P>
<P ALIGN="JUSTIFY">&#9;NOP</P>
<P ALIGN="JUSTIFY">&#9;NOP</P>
<P ALIGN="JUSTIFY">&#9;DJNZ&#9;R6,D2</P>
<P ALIGN="JUSTIFY">&#9;DJNZ&#9;R7,D1</P>
<P ALIGN="JUSTIFY">&#9;POP&#9;PSW</P>
<P ALIGN="JUSTIFY">&#9;RET</P>
<P ALIGN="JUSTIFY">DISPTAB:DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H&#9;</P>
<P ALIGN="JUSTIFY">&#9;END</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">从上面的程序可以看出,和静态显示相比,动态扫描的程序稍有点复杂,不过,这是值得的。这个程序有一定的通用性,只要改变端口的值及计数器的值就可以显示更多位数了。下面给出显示程序的流程图。</P>
</FONT><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY"> <IMG SRC="dpj261.gif" WIDTH=398 HEIGHT=409><IMG SRC="dpj262.gif" WIDTH=410 HEIGHT=273></P>
<P ALIGN="JUSTIFY"><a href="down/exec81.asm">程序一</a> <a href="down/exec81.hex">程序一之代码</a> 
  <a href="down/exec82.asm">程序二 </a><a href="down/exec82.hex"> 程序二之代码</a></P>
</FONT></BODY>
</HTML>

⌨️ 快捷键说明

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