📄 dpjjx26.htm
字号:
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">	MOV	SP,#5FH		;</font><FONT FACE="宋体" LANG="ZH-CN">设置堆栈</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">	</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV	P1,#0FFH</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">	MOV	P0,#0FFH</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">	MOV	P2,#0FFH	;</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">	</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV	TMOD,#00000001B	;</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">	</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV	TH0,#HIGH(65536-2000)</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">	MOV	TL0,#LOW(65536-2000)</P>
<P ALIGN="JUSTIFY">	SETB	TR0</P>
<P ALIGN="JUSTIFY">	SETB	EA</P>
<P ALIGN="JUSTIFY">	SETB	ET0</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">	MOV	Counter,#0	;</font><FONT FACE="宋体" LANG="ZH-CN">计数器初始化</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">	</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV	DISPBUFF,#0	;</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">	MOV	A,#0</P>
<P ALIGN="JUSTIFY">LOOP:	</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">	MOV	DISPBUFF+1,A	;</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">	INC	A</P>
<P ALIGN="JUSTIFY">	LCALL	DELAY</P>
<P ALIGN="JUSTIFY">	CJNE	A,#10,LOOP</P>
<P ALIGN="JUSTIFY">	MOV	A,#0</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">	AJMP	LOOP</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="System,黑体" LANG="ZH-CN">;</font><FONT FACE="宋体" LANG="ZH-CN">主程序到此结束</font></P>
<P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">DISP:		;</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">	</font><FONT FACE="System,黑体" LANG="ZH-CN">PUSH	ACC		;ACC</FONT><FONT FACE="宋体" LANG="ZH-CN">入栈</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">	</font><FONT FACE="System,黑体" LANG="ZH-CN">PUSH	PSW		;PSW</FONT><FONT FACE="宋体" LANG="ZH-CN">入栈</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">	</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV	TH0,#HIGH(65536-2000)	;</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">	</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV	TL0,#LOW(65536-2000)</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">	SETB	FIRST</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">	SETB	SECOND		;</font><FONT FACE="宋体" LANG="ZH-CN">关显示</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">	</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV	A,#DISPBUFF	;</FONT><FONT FACE="宋体" LANG="ZH-CN">显示缓冲区首地址</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">	</font><FONT FACE="System,黑体" LANG="ZH-CN">ADD	A,Counter	</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">	MOV	R0,A</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">	MOV	A,@R0		;</font><FONT FACE="宋体" LANG="ZH-CN">根据计数器的值取相应的显示缓冲区的值</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">	</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV	DPTR,#DISPTAB	;</FONT><FONT FACE="宋体" LANG="ZH-CN">字形表首地址</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">	</font><FONT FACE="System,黑体" LANG="ZH-CN">MOVC	A,@A+DPTR	;</FONT><FONT FACE="宋体" LANG="ZH-CN">取字形码</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">	</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV	P0,A		;</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">	</font><FONT FACE="System,黑体" LANG="ZH-CN">MOV	A,Counter	;</FONT><FONT FACE="宋体" LANG="ZH-CN">取计数器的值</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">	</font><FONT FACE="System,黑体" LANG="ZH-CN">JZ	DISPFIRST	;</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">	</font><FONT FACE="System,黑体" LANG="ZH-CN">CLR	SECOND		;</FONT><FONT FACE="宋体" LANG="ZH-CN">否则显示第二位</font></P><P ALIGN="JUSTIFY">
<FONT FACE="宋体" LANG="ZH-CN">	</font><FONT FACE="System,黑体" LANG="ZH-CN">AJMP	DISPNEXT</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">DISPFIRST:</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">	CLR	FIRST		;</font><FONT FACE="宋体" LANG="ZH-CN">显示第一位		</font></P>
<FONT FACE="System,黑体" LANG="ZH-CN"><P ALIGN="JUSTIFY">DISPNEXT:</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">	INC	Counter		;</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">	MOV	A,Counter	</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">	DEC	A		;</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">	DEC	A		</P>
<P ALIGN="JUSTIFY">	JZ	RSTCOUNT	</P>
<P ALIGN="JUSTIFY">	AJMP	DISPEXIT</P>
<P ALIGN="JUSTIFY">RSTCOUNT:</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">	MOV	Counter,#0	;</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">	POP	PSW</P>
<P ALIGN="JUSTIFY">	POP	ACC</P>
<P ALIGN="JUSTIFY">	RETI</P>
</FONT><P ALIGN="JUSTIFY"><FONT FACE="System,黑体" LANG="ZH-CN">DELAY:			;</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">	</font><FONT FACE="System,黑体" LANG="ZH-CN">PUSH	PSW</font></P><FONT FACE="System,黑体" LANG="ZH-CN">
<P ALIGN="JUSTIFY">	SETB	RS0</P>
<P ALIGN="JUSTIFY">	MOV	R7,#255</P>
<P ALIGN="JUSTIFY">D1:	MOV	R6,#255</P>
<P ALIGN="JUSTIFY">D2:	NOP</P>
<P ALIGN="JUSTIFY">	NOP</P>
<P ALIGN="JUSTIFY">	NOP</P>
<P ALIGN="JUSTIFY">	NOP</P>
<P ALIGN="JUSTIFY">	DJNZ	R6,D2</P>
<P ALIGN="JUSTIFY">	DJNZ	R7,D1</P>
<P ALIGN="JUSTIFY">	POP	PSW</P>
<P ALIGN="JUSTIFY">	RET</P>
<P ALIGN="JUSTIFY">DISPTAB:DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H	</P>
<P ALIGN="JUSTIFY">	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 + -